 Hey everybody, I'm super happy to be back here in Amsterdam and glad that I have some little technical tips to share with you guys Let's see So we're talking about game development with Blender and Unreal and how do you how do you use both these things together? How do you get things back and forth? And I'm focusing on technical things today But I think no matter whether you're just getting started with this or if you're doing this professionally I think there's something to learn from this because Let's see. There we go. All right, so pipelines pipelines, so You can think of a pipeline is as All the tools that all your various people on your team Whether those be storytellers or 3d artists sound designers gameplay people All the tools that they bring together and also the paths between these tools and another part of the pipeline is the process as you use to be able to Work together collaboratively and not step on each other's toes So when you get started on a project, there are a lot of things to decide. There's a lot of things you want you need to get Right, you know, well first off when you're making a game. What kind of games this what genre is this? also, what's the art style and based on that What is the what are the technical requirements for your art? You decide that up front say, you know, our models are gonna be this dense this poly count This textile density things like that so you can stay consistent throughout your game and there there's tons of decisions to make and big ones on those are what tools you're going to use for your game and Some of these questions don't need an exact answer from the beginning You just pick a direction and you you watch it develop and you guide it along But other things including what tools to use You should really decide that up front and have those ready on day one So I'm ahead of myself here. All right, so Yeah, so so some questions you want to answer right at the beginning some you just kind of go with it so blender and All right, so blender and unreal. These are not just tools. These are more like each one is like its own workshop full of awesome things and What I love about both of these is that they're both free for anybody to use you just download it and you get going and there's no professional version that that where they They tuck away all the the shiniest and the sharpest tools And keep that away from hobbyists or students or indie game developers Basically, we all get to go into the workshop and and get started just like anybody else So on the blender side of these things, I mean with the Blender conference So some preaching here, but but you can do everything from your modeling UV unwrapping You can do a high-poly sculpt you can bake that down to a normal map and apply it to your thing You can take a 3d scan and decimate that down to a game ready model. You do all these things and That's great for environments and props and items in your game but Blender is also really great at rigging and animating so you can get your characters and your creatures going to and With a new EV system You can basically see what it's going to look like in game or get a very decent approximation of that While you're working on it and not have to wait until you after you export to see what it's going to look like So it really helps iteration times Let's see and on the unreal side. This is where your game comes to life you bring in all your assets that you've created elsewhere and You plug them on into world you build out this world and you bring it to life with a C++ or blueprints scripting and It handles everything from from player control The physics the lighting of your world all the rendering and optimized for your target devices Because one of those decisions at the very beginning is you know, what does this game going to go on? Is this a mobile game as the Android iOS? Is this a console game? Is this going on the switch? Is it PC only and so unreal is good for getting it onto these devices during development for play testing and once you're done with it to get it out to your players and I think of these two is really the power couple of tools in a pipeline because Basically with both of these in place you have a complete 3d art pipeline for game development Okay, so Textures so we're gonna get into we're gonna cover go in depth on a couple of things here one of those is textures for your games and the other one is 3d models and Different formats in different ways that you can work together with a blender and unreal so for textures, they really add a lot of visual interest to your world and Unreal Engine puts the focus on runtime performance It's trying to feed the renderer as fast as possible and it recruits your help to do that it makes you think about things like mit mapping and powers of two and GPU compression formats Whereas over on the blender side it keeps the images in their original form so they're really easy to manipulate and you can really focus on You know getting the look right and you don't have to think about how is this going to run on the GPU? so for different game texture formats you can kind of break it down into how many channels do you need for whatever you're doing and You could have single channel textures that could be something from a grayscale ramp or a mask or a roughness layer You know we got full color images here the RGB very familiar And those are those are common for lots of things opaque surfaces basically and then For four channel images you can have opaque surfaces with with transparent cutouts which is Which is great So But these aren't just basic things like you can break down the three channel image you can say okay This isn't color. This is a normal map. These are the vectors xyz or you can take three single channel textures and pack them into one texture and it's more efficient when you draw on the GPU and in gain development Really when you're making the art the convenience of the artist is the most important thing But really once you get into the game The renderer is what you need to feed So let's talk about texture formats and compatibility between these what can you use to get things from one to the other and There's tons. Here's all the ones that are supported by by Each package and then we we start losing some Unreal doesn't support tiff images blender does and you start losing some on the other end The blender doesn't support and then there's even ones that both support But they're basically not they're only used for specialty items like skyboxes and things and for textures We're left with some pretty basic file formats that you can use in both of these So let's look at a Couple of those in depth The ones that support the different channels. I mean you can read the slide up here, but They're different formats and so let's dive into JPEG and it's common knowledge that JPEG is you know Don't use JPEG for games or for real-time graphics but I think it really helps to look at why that is instead of just taking that as a fact and Because JPEG is pretty amazing actually It was designed to take a color photo and to display it on a screen and to shoot that light directly into a human eyeball And it's it's really good at that It's heavily optimized for this image screen. I Pipeline the mini pipeline and it's able to throw out most of the data in the original image Because of that and this works because our vision. It's sensitive to things like light versus dark you can fudge colors a little bit and we won't even notice and When there's details missing in the world our brain fills in those gaps and so really what you see is more than what's in the image itself and And it ends up looking fine even though 90% of the information as far as bits isn't even there anymore and so Why doesn't this work for game development? It's because in games game textures are not just colors They're not displayed directly onto the screen where they can take advantage of these optimizations that JPEG did and it only works in that When it's displayed directly and so you can pack a normal texture into here And it's going to contaminate those you're not going to get normal vectors out of there And the the things that are not apparent when you look at a color photo They stand right out when you put those in a normal map and you can also When you're packing multiple textures into a into a three component format You can't treat that as a color anymore because those are supposed to be independent from each other and JPEG just messes all of that up and the real thing is Since textures are compressed for the GPU by the game engine We lose all the file side the file size savings from JPEG anyway And so anything you you might have in your repo or on your computer It's just going to expand anyway, just like it was any other format and all that data is just gone so Let's look at ping now ping is a really versatile format It's the only one up here that can handle all basically however many channels he needs to do and it can do those as 8-bit 16-bit It all just works or it all should just work and here's an example of when tools They try to be helpful that actually make things worse because Photoshop has had Let's call it a bug Since I can remember that when you save a ping with alpha channel It goes in there and says well these particular pixels are transparent so it doesn't matter what the color is in there Let me just put one in there, and so you lose all your other your color channel data that way and It's helpful in some cases, but for us it's it's not and But when you use this like this game texture on real engine says oh, here's a ping I'm pulling in with transparency. Let me scan for transparent pixels and undo what Photoshop probably did and so you end up in the texture in game is not the texture that you made and The thing is the format itself can handle all these things fine It the format has no problems the transparency is the tools around it and the workarounds because the tools that try to help out that give us problems and So really of I would recommend for any kind of textures you're going to use Try to use paying as much as possible. You can get the you know, you're not gonna lose any data You're not going to lose any pixels all your colors are going to be there all your values are going to be correct Except in the case of if you have our GBA with that alpha channel Then Targa is a much safer option. It's an old-school format, but it works in both packages and all your All your data is going to be there. It's not going to mess that up. So on the 3d model formats FBX is the de facto standard for for Enterchanging 3d models, you know between any any 3d packages game engines Blender's got good fbx support. I heard several people say that today GLTF is kind of a new thing. It's been around a few years since in development. We have really good GLTF support in blender And it's built into 2.8 and then there's the old standard OBJ or standard OBJ for simple models and things like that And all three of these work in both packages so with fbx there's a few problems with it and One is that it is it's so powerful and flexible that it's hard to get right I mean even packages from Autodesk that that control the fbx format. It's hard to get models of accurately between those two without fudging with settings and And oh my are there settings on the left here? You can see the the Blender export settings it asks you tons of questions And that's just one of four pages of the questions when you export a model And you have to do the same thing when you import this model back into unreal it asks you all these questions and you have to get all these answers right and And match up between the two things or your model will come in sideways or a hundred times too big and and you have to redo a lot of work and Really what you want to do is you just want to get a model from here to there and so all these questions of you know, they just slow you down and Another thing is I talked about you know coming on on the wrong side of The different 3d packages have different definitions of what is up or what is forward or what is the scale of the world and And that's why there are so many questions like this to get all these these inconsistencies right and A lot of this is fixed with the the open format gltf because right there in the standard they say okay everything is a meter and This is up and this is forward and it's a right-handed coordinate system And the exporter has to take care of all that and so you export something from Blender And then you pull it into unreal and it basically just works it asks you a couple of questions Maybe but but it's nothing like the screen we saw before and so this is a great way to get your models in there And this this comes across with the the models the textures the materials all of it just Comes in But there's one thing missing right now the format itself can handle static models and animated characters But right now on the unreal side. They're still working on the animation part and so for animated characters You still need to stick to fbx for now Until the gltf stuff is finished Alright alright collaboration. This is the big one because you know you have a group of people working on this this common project and Yeah, how do you all work together on separate things and coordinate your activities and not block each other and The simplest project layout that I like to work with Basically has three sections The art where you keep your blend files and your your photoshop documents and things like that Your original working files and then on the other side you have a game folder that has your game project And all the files in there are managed by unreal engine And then you have an intermediate area that basically you export to from blender and you import from into the game And that has all your intermediate files like fbx is gltf's pings things like that and Another important thing at the beginning of the project is to just have a consistent naming system It doesn't matter what it is I know on the unreal engine website they give recommendations for you know If you have a material started with m underscore prefixes But those don't really have any meaning in the game Those are just for us to be able to keep track of things and search for things easily And if you keep a consistent naming convention between your entire project not just in the on the blend side Not just on the unreal side It really helps to find out You know when you're in game and you have a model and you say okay Well, where did this model come from you can trace it back based on that name To the original art files, and you find out who worked on that when was it last updated all of that so if you have a naming system, please use it everywhere throughout your whole system and For version control it's really great. It's like file sharing but it has a complete history of who did what to which files and when and I Would recommend just putting all of this in one repo because that makes it a lot easier to say You know what was the status of my project two weeks ago and you you set that point and you get everything from two weeks ago You don't have to keep the game project and the art files and everything in sync manually And what's nice about this is you can you can grab certain parts of it like an artist That's not working on gameplay things They can just grab the art folder in the intermediate folder and say okay I'm working on my blend files, and I'm exporting to this folder, and my job is done Versus something like a build server. That's getting play tests ready. That's getting things packaged up for deployment All it has to check out is the game folder because everything all the dependencies of the game project itself are in there already and And when you import something into Unreal Engine The assets will have a link back to the file it came from but it's basically just a file path It no longer depends on that file and if the file is missing it just means you can't re-import that file again But if you're doing something just like I want to build the game and play it you don't need those files anymore. All right, and Another thing I would recommend is is Basically making your changes really granular so anybody can understand exactly what changed So instead of just saying the blend file changed on this date and somebody changed it. Well, that doesn't tell us a whole lot Versus if you export a GLTF and you keep it in text format, and it has external images right there You can say okay Well the normal map changed on this one or the model changed and it was this many verts And now it's this many and so you can get a lot more information versus just having these binary blobs that say it changed and relying on the commit message And on the blender side what you can do to help this out is Blender has the ability to pack all your dependencies into the file like all your image sources and things like that You put those right in the blend file Which is great if you want to send it out to a render farm, but if you want to work collaboratively It's actually not good at all So it's best to keep all those files external so you can edit those in Photoshop or some other program while somebody else is working on working in blender and you can take this a step further and use Blender's library and linking features To basically break up your blend files And so somebody can be working on materials while somebody else is animating a character that uses those materials and So that lets people not block each other they can they can lock a file work on it and Everybody else can go about their business and also gives you really good changes in version control So you can see exactly what changed and by who and when so I Wanted to close this out by by saying there's a lot of anecdotal wisdom and game development just like in any trade and Some people will say well use technology X because the the big successful studios use X or avoid Certain file formats because they're problematic and I've heard that with JPEG which is true and I've heard that with paying which is often not true and Other things like you know well when I export you always check this specific checkbox and things will go well and It doesn't take long for these habits to become truth or to at least start sounding like truth And it's really good to examine. What are the benefits and drawbacks? What are the strengths and weaknesses of your tools? What's actually there instead of relying on habits and Because as artistic and technical people we're all creating something and creative people will use any tools that are within reach we'll use or misuse just to get our work done and Really sometimes the studio that you admire they use technology X because the studio that they admired Uses technology X and that studio's founders. We're just kind of winging it just like we all are Anyway, that's all I got