 Okay Yeah So hello everybody and welcome to my presentation At the beginning just some words to myself My name is pausiedler and I work for the independent game studio master brain bites in Germany SS3d environment artists and Beside that I walk as teacher in a film school there I have around 80 students and I teach them the magic of blender after fact and Photoshop When people ask me what my profession is and I tell them I'm a game artist the reactions usually Oh, you are a game artist. What kinds of game you are making do you make games with dragons guns and big explosions? And my answer usually is yeah kind of We are making a farming simulator game With With tractors cows and corn yeah, and maybe a space deal see some day, but it's a thing for the future So yeah, this is cattle and crops farming simulator with the goal to achieve a realistic farming experience in terms of fruit behavior crowned and machines in this presentation I will give you a short overview about some workflows and how we use blender for this So I will start with the machines Farming simulator of course need a lot of machines like tractors harvesters and trailers So our machines are very complex and detailed. So we need an efficient workflow for them We have over 20 machines and more than 30 implements and trailers. You can see a small selection and Now I tell you a little bit about our workflow at the beginning We start with a photo scan from the real machine or we ask For the cat data from the producers of the machine We also make a lot of photos to have good references and to see all the small details Also the real-world size is important as well So we use scale bars for the scans or we measure the size of the wheels and put the machines into relation to them So we have the the right size for the machines At the beginning or when we have the the photo scan and all that stuff we start to build the high-poly Most of the time the high-poly consists of more than thousand single pieces Because a lot of objects are move-able and have to have to be separated for a clean normal bake and so on so very often we Bring Blender to the limits of a performance with sometimes Thousands of objects and more than 40 million polygons and just one blend file Because of that we work a lot with instances so we have full control over that huge amount of objects because Oh, sorry Forgot some line here as I mentioned before we have also a lot of move-able parts so it's very important for us to have the pivot points always at the right position and to keep the transformation data, so we are able to make quick changes and Yeah, to to keep the whole workflow Destructive yeah, this is the key word for this This is also the reason why we do not use any array or mirror modifier because The mirror modifier for example don't respect the pivot point for the duplicated object So if we want to mirror for example, we Mirror all the objects we want to mirror to a helper object. We link duplicate all of them so and Then we mirror all the objects with control m to the other side and as you can see we now have the right pivot points also for the duplicates and They are all instances from each other here So it's still the same like the mirror modifier, but we have the right pivot points So on the other hand here, you can see if we use a Mirror modifier the pivot point will be destroyed so We also work a lot with layer management for example to Separate different kind of objects like the high-poly Inside the high-poly outside low-poly inside low-poly outside and so on and but 20 layers are Not enough for us. So we expand this by using a lot of different materials for different kind of objects So for example every mirrored objects get their own material like here or every instance object So we can select all of them with just two clicks So yeah, we are really looking forward to planner 2.8 with the new layer system So we don't have to do this Okay, so after we Have our high-poly finished we use this simple material here to check the mesh for Holes or inward faces as you can see it just gives front and back face a different color pretty easy In this example here blue is good and red is bad here. You can see some small red spots and so we can are there is Inward face or there is a hole And so we check the whole high-poly before start before we start with the low-poly When All the thing the stuff is done with the high-poly we can go on with the low-poly and The low-poly for the low-poly is of course very important that we have a good a good poly count. It's always a Hot thing and big machines like this tractor here is have around 60,000 polygons for the inside and the outside together. We have here the inside of the tractor a lot of polygons there But after a certain distance the inside will be hidden anyway So we are left with around 40,000 triangles and yeah, that's that's okay It's also important to keep in mind of course that we want to bake a clean normal map So if we have an object like here like this here, it has Be separate be separate of course or we will get ugly bait bake results Very often it is also a problem in game engines to get the smoothing troops right There are a lot of different ways to create and export smoothing groups in blender like sharp edges or split the normals or There are some other ways and we are always Work with auto smooths at 180 degree. I cannot see here and a sharp edges. This is in our workflow and You should not mix different techniques Like sometimes use the sharp edges sometimes split the normals Sometimes use the shade flat command in the edit mode. For example, it will work perfectly Inside of blender, it's okay. It will look good But if you export it to a game engine, you will get really bad errors with the smoothing groups But there is a little workaround of for you guys if you did so You can export the whole mesh as fbx and Imported back to blender and then every kind of smoothing group you did will be stored as sharps as sharps as sharp edges and So now you can export it again as colada or whatever and you will have good smoothing groups in the engine So let's drink After the low pulley inclusive the UV map is finished the mesh go over to I pegged that To optimize the UV layout for that we joined the mesh the whole mesh with the texture atlas add-on and blender and Export that to I pegged that let the program do its thing bring the mesh back to blender and copy the UVs to the To the texture atlas mesh in blender and finish the manual unwrap So now we have all our instances back But with the optimized UV layout for from I pegged that and that's great and From from this mesh we now have from blender. We create basically three meshes The first mesh is this nice thing here That's the the explode mesh for for the normal map for a normal bake that means that every High-poly with his associated low-poly object will move with key from animation somewhere into the space To avoid wrong normal interaction the second mesh is the Ambient occlusion combine that means that the whole mesh Accept all the moveable parts is joined together to get a clean ambient occlusion bake The third mesh is the complete mesh which will be Imported to the game engine for that we just link duplicate all objects a last time put them on a separate layer I have an image for that Put them on a separate layer make them single users and join all objects which belong together for animation And now we have no longer thousands of objects Instead we have just all the small moveable parts and the big static parts for example here big static parts Here big static parts and here a lot of moveable parts in this area Yeah For the for the engine ready object or mesh we export a lot of separate files like as you can see here like one for The inside one for the inside decals outside outside decals tires and so on Okay, so But before we export anything it's essential To check the scale. Yeah The scale needs to be one if the scale is for example 1.3 and blender. Yeah Then the the tangent space and the UV map will be scaled by 30% in the engine and this is this is really bad You should not do this After the bake ready meshes or after that the bake ready meshes come over to a substance painter and There they get all their textures and We are creating complete we are created completely PBR materials and substance and All the PBR passes are saved in three textures as you can see here We have the albedo map with the RGB channel for the color information of course and And The alpha channel for the transparency We have the the normal map with the RGB channel for the color and for air for the for the normal information, sorry And we have the roughness map with the red channel for the roughness the green channel for the metal nest the blue channel for the Ampion occlusion and the alpha channel for the dirt mask the that's looks like this year really nice colored image and at after this all the The textures and the mesh come over to our game engine and There the textures and the mesh will come together and the machine also will get All the controllers and the lights as you can see here Yeah chaos poor Yeah, so we now have our ready our machine ready here in our game engine so now I show you some machine in action. I hope the video will play Or not that's not good Sorry Okay, okay. Oh, okay. Just one more click so Here you can see the first run of the field work field work It's about cultivating and loosening up the ground you can see I lower my cultivating a cultivator attachment and Now I try over the fields no no no Just one second So and here you can see that our crowned not very good in this example You can see the ground is dynamic. We have dynamic tire tracks and also the crown will change depending on the attachment you use and By the by the way, this is here not our our final map. This is our debugging and testing a map Tech demo map. We also released for testing and debugging So here is the the second step. It's called plowing Yeah, so I changed my attachment and I create the lines where the seed later will be and here you can see the dynamic Crown a little bit better Yeah Okay, after we blow the field we can bring out the seed in this example It's may see it and yeah, I I know I blow the field a little bit quick and dirty before in the perfect world There should be equal lines, but okay It's just for the example so Here we can see in just one second How the seed will come to the field of course in the game you have to go to the city first by the seeds Or use the reserves from your farm But in this example, yeah, we have our seeds here Okay So here you can see all small movable parts So after a while the mace will grow but only if you take good care of it That means that you have bring a fertilizer from time to time or water if it's not raining Also the values of the crown are very important But in this example, I skip all that and come directly to the harvesting Here you can see one of our harvesters and you also can see There's a I help of following me with a tractor and the trailer to catch the harvest If the if the trailer is full he will automatically return to the farm and bring the harvest to the silo You can also enter the tractor on yourself and later. It will also be possible to play this with a friend. Yay one can Drive the tractor and won the harvesters. Yeah farming together is great So oh, yeah next one Look take a look at the inside of one tractor here We can activate the cap controls so we can now use the mouse to adjust the mirrors for example here Yeah We can open the door and we can close it. It's also possible. Yeah And we can start and stop the engine and yeah, I do a lot of other stuff. It's great. It's great So Yeah, you can adjust the The real and yeah, okay, that's it so Next I tell you a little bit more about our environment, especially about modular buildings Here you can see some of the buildings we built for the game and no building is built unique They are built from a set of modular pieces. Here's a small example That are the buildings here and here you can see some modular parts I have another example here with some industrial buildings and also the set here and For this we started with a plane three by three meters And every other element is oriented by the size our texture scale for environment objects is 1024 pixels on three meters. So to make sure that every element is compatible and And also walk well with the with the tiling texture. We can now create elements with the three meters six meters nine meters and 1.5 meters four edge elements like this here and so on here 12 meters whatever so The right part and this is also the same with the roofing we have a roof with Different angles, but all of them fit into the three meter rule. So theoretically every building can get every roof So on this base we can now create a more complex building parts like a windows and door elements and as As long they followed this rule this three meter rule and with the depth space So the space in the depth there. We are completely free So we can create whatever we want as you can see here some bigger parts or whatever and this are some Or a lot of variations We are created very quick on the base of this three by three meter wall element all this Is just on on this base so At the next step is we can put put the buildings together by snapping the single elements to each other Yeah, and that we can do very quick So we can create now big buildings small buildings whatever we want this is just the example here You can also see we have some special pieces here and here Which work as a fill elements for corners or between walls and roofs so we can create much more details and variations One important thing When putting all the buildings together is to keep the single modular parts always as instances from each other So when we want to update one part it will be a change on every building we created Yeah, can you see a little example for this? This is the same model apart here and we want to change something and it will change on every building so Okay, now is the time to talk about our level of detail system We have three levels to the LOD zero LOD one after two hundred and fifty meters and LOD two after five hundred meters and LOD Zero is just what we created here the detailed building with all the small Things here like mailboxes water pipes door handles and so on For LOD one we dismiss a lot of these small details details I can switch over here again can see And because we had keep the instances before we can do it this now very quick by just reducing The single modular parts and it will be updated on every building So we can do this very very quick of course it's important to save a different blend fiber for this So you can keep the LOD zero Yeah, so After joining each building to one mesh We can now create the LOD two for this we created just a simple box shape for every building as you can see here And then we baked the whole village with over 60 different buildings on one on just one single texture at last with just a resolution of 1024 by 1024 There's something missing here Okay, just a little bit of text Yeah, so this is the whole village with over a 60 different buildings in just a 1k resolution And this is completely fine for the wider distance and as you can see we still have some space left here for additional buildings So yeah, we can do much more So here you can see screenshot from the engine from a Part of the village with some of the different buildings By the way, the village isn't inspired by Villages in northern Germany there we have a lot this this redstone buildings Okay To fill this village we also need a lot of different environment objects beside the buildings. So Here you can see some of Yeah, little environment objects we created for the game Like the buildings all of them have been textured and blended or not in substance this time and For the most of the objects we create the high pulley at first are still text missing here. Why? Okay, this this is the high pole. It is the low pole. Okay Here you can see much more details in this area for example, and here's just a flat plain Yeah, so we create the high pulley and the low pulley then we text shot the high pulley mostly with the help of Generated and box mapping. Yeah created all the PBR passes and Because at this time the principle shader was not included in blender and Yeah, we needed Our main programmer created a little shader node group that gives us accurate PBR Look that behaves exactly like substance painter and Unreal Engine 4. So we have a good material base and Then we baked all the textures the PBR passes Over to our low pulley object save them into the three textures as I showed you before with the machines and now we have here our ready-mesh in our game engine and With the help of vertex color. We are also able to To change the color of one object so we can create. Yeah a lot of color variations of one object as you can see here for this containers Important to note at this point is that we use Albedo maps and no diffuse maps and there is text missing again diffuse map Albedo map Okay In the past I noticed a lot of people in the internet who thought it's the it's the same it's the same thing abido and diffuse and I oh No This is completely wrong and I try to explain to you The fuse map contains shading information as you can see here like ambient occlusion or Glossy or stuff like that. It's a just like you take a photo from whatever in the real world And that's very bad for texturing because this informations are not dynamic and Albedo map on the other hand is completely free from this information as you can see here It contains just the flat color information. So the advantage of this is that we can now use a different ambient occlusion map Which will Interact with the light in the game engine So for example, if the light shines directly on a corner where the ambient occlusion should be the ambient occlusion will fade away And that will not happen if you just bake your ambient occlusion into your color map And so in conclusion, Albedo maps behave much more realistic. That's the thing so Now I proceed over to how our world was built you can see a screenshot from our map At first I need to say that we evolve our own engine on the base of the C4 engine The foundation of the engine is really really old But it has the advantage that we have the full access to the source code So our programmers implemented a lot of cool features in the past like tessellation like dynamic crowned and a voxel based filling for trailers and silos and stuff like that and The disadvantage that disadvantage is that we still missing a lot of features like good world building tools So to have more control over this we decided after a lot of testing to build the map completely in blender and also place the buildings there But with this technique we also had a lot of problem problems in blender So for example, we created a new plan file where the where the whole map will come together And there we imported all the buildings But a big problem in blender when you import a lot of objects with shared materials They will get numbered so you now have every material exactly as often as you have buildings in this example and The solution for this will be to select every building and replace material by hand go to the next one and the problem was that some building shared the same material and some not so we cannot just automatically link all the materials together and To to get rid of this our our main programmer and created a little Python script Yeah called removed duplicated materials catch your name for this yeah, and What this does what this does is it just search for materials that have point zero zero one point zero zero two and so on after the after his name as you can see here and Replace it with the same material with without the suffix so as you can see here Yeah, so every duplicated material is now gone So this The terrain of our first main map is two kilometers by two kilometers big and was completely a create created in blender and We create we create the map and then we placed all the the streets the village and The rivers and so on after planning at very long. Yeah for a very long time. We're just doing planning stuff and think about it and after that we create a Much bigger world around our play able ground here where the player can't go That's called the debug forest and it's just for the for the wide view. Yeah to let the player think the world is much much bigger We don't like the idea of big mountains surrounding a small valley to set the borders of the world so We tried to to make the borders very natural by sometimes using a construction site on the street or a dense forest dense forest not on the street about on the fields and so You like this much much more Our world also has a level of detail so we cut the the whole map into several pieces at natural borders like streets or rivers or Also on So we can now switch to the to the low-poly terrain pieces after a certain distance What I forgot before When we built Or a second reason why we built the map completely in blender is also a performance reason because you can I What is the word The word the word the word for this As optimized optimized odd you can optimize everything individually. Yeah So we tried to import the map as as a height map in the engine and but with this we have a Reaction time of I guess 3.5 milliseconds per frame and with the static world from blender We have just 0.5 milliseconds per frame and the reason for this is that The height map is equally subdivided and for the for the static mesh we can Make much less polygons in flat areas for example, so it's much more optimized Okay So after the world with all the streets Where where was finished we're finished we placed all the buildings and the the fans is in blender and Exported to the game engine after that all the LUDs We are parented directly to the main object. So we also have them into the right place and Yeah, then we exported to the game engine in the game engine we added all this the small objects like lambs garbage cans cars and so on because for them we can use Instances in the engine and this that is makes much more sense. So Here you can now see some screenshots again from our village here Wide charge and some more Some more images from the village the village and the whole map is not completely finished yet yet We will hopefully finished it in the next weeks So here some nice little streets Okay, and a screenshot at night, but it's very Not good to see here Can you lower the lights maybe okay, it's a little bit better. Yeah, okay, it's the village at night. Yeah, thank you So here some final landscape shots Okay That's it. I want to thank you and give credit to my colleagues at master plan bites and also my boss and Also the more than 40,000 supporters Who made this company and our jobs possible with? Over 650,000 euros of crowdfunding right now. This is this really awesome And I thank you for your attention if you want to learn more You can go to cattle and crops comm we released a small tech demo so far you can Try it out and we hopefully will start with the early access very soon and if you don't like farming feel free to dive into my private portfolio and At art station and there you can also find dragons. So thank you