How to make video games for beginners - Q&A - Live

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
all right hello out there everybody we're gonna get started in just a second just letting everything catch up so this stream is gonna be just about how to get started making video games so I'm really gonna target this just for people who are getting started or haven't even started yet and it just kind of curious about how to start making your own games or maybe I've just kind of started and trying to figure it out and going through that process I'm taking questions on this kind of subject so if you've got questions about how to make games there's a link in the description below that just goes straight to a Google Form so that I don't miss your questions and chat they tend to just fly by if I take them in chat but in that form I can just go through and usually answer every single one of them so if you got questions you want to ask just click on that form and submit them and then yeah I think that's about it we're just gonna kind of get going so I've been building games for I don't know 15 20 years somewhere around there Oh somebody's asking about more microphone volume I can turn that up let me see let me just crank that up a little bit let's see how's this it sound okay it's going into the yellow now switched to stream Labs OBS from OBS so I'm not sure if everything sounds and looks right I'm hoping that everything's good if it's still low let me know though and I can crank it up more anyway so like I've said I've been building games for 15 to 20 years somewhere around there and lately I've just been teaching people how to make games and working on MMOs and I felt like it'd just be an interesting thing to do to talk about how to get started for anybody who's just maybe never built a game before or just been thinking about building games and wanting to figure it out and do all that so I'm gonna switch back and forth between desktop and the camera quite a bit and we are gonna use unity I'm gonna go through the process of just how to get it set up how to download it talked a little bit about what the different parts of the editor mean like what all these different sections are cuz when you first get in there it can be kind of confusing and overwhelming I think even for me coming from working on other games before when I first jumped in it seemed really really confusing and I was just kind of lost so I try to help people get a little bit past that and then show how to do some things like reading input moving things around and kind of get into the idea of making your own game so if you want to get started the first thing you got to do is grab a unity installer I use the unity hub which you just search for unity hub download you can grab the unity hub or you can grab a specific version the hub just kind of is a project management little tool I'm gonna pop it up right here it just lets you manage all of your different projects and your different unity install versions you can see I've got a bunch of them here I've got beta versions and other previous versions just for different projects sometimes to start a big project and that project will stay on a version for a while and they won't constantly upgrade every single time so the hub just lets me have all of these installs and kind of manage it easier and then I can go into my projects and just pick what version of unity I'm going to open the project with usually you don't want to go backwards in versions though so if you pick a version you want to go that one or forward going back can cause weird problems or inconsistencies or things that just um that don't work with the older version that you've used in the newer one but I would recommend just grabbing the latest one so you install the hub and then you go to installs and just grab the latest which right now is twenty nineteen point three there's no real reason not to go with the latest version like I said when you're doing a big project you might not want to just constantly upgrade because things can change and possibly break it's pretty rare that they break though but when you're building something new we're just getting started just grab the latest and go through and yeah that's all you really need so once you have unity installed or you have the hub installed to get going the first thing you do is just hit the little new button and then pick what type of project you want to build let me get rid of this browser window real quick so when you're picking the project type there are a lot of options I mean there's five options now which can be a little bit confusing we can go between 2d and 3d pretty easily what really happens here when you switch or when you choose one of these it's just setting up a couple of defaults like it's setting up the way that your camera in your main scene is set up it like the new scene that you'll create and it's setting up the way that the there's a little button that it's toggling on and off it's not doing much different between these two so if you pick one and you're like oh no I picked the wrong one I want to switch it's easy to switch in fact let's do that I'll start with just a 3d project I'm just going to throw this into a temp folder so give it a folder and I'll say like a new a new unity project was probably fine right but as a new beginner project there you go and then hit the create button and what will happen is it'll just launch up an instance of unity and we'll be right in there we'll look at the editor by the way see a lot of questions coming in just if you can please click on the link in the description there's a link to a Google Form just submit them in there because otherwise I'm just gonna miss them in chat they're gonna go by so they'll be gone and scrolling up and down and there's just too hard to do while I'm talking and going through stuff but if you get them into the forum it'll show up and it'll be in this right here and then I can just go through them once I've gone through a couple basic set up stuff a little bit of the basic set up stuff and all that then I'm gonna just go through this forum and take everybody's questions and see if I can answer all of them so if you want to make sure that I don't miss your question just yacón that link and go right to the forum all right let me see so unity is starting up it's also running a little bit slow just because I got a bunch of other stuff going on my system right now normally this is relatively quick it's actually going dramatically slower than normal again I think it's just because of some of the other things that are beating up my CPU you can see my CPUs at 96% right now so give it a second and there we got plus streaming tends to tends to beat things up a little bit more all right so here we are we're in unity and I've got the entire editor up and open there's brett-o I actually opened in a beta version so if you're wondering why yours might look light or dark instead of dark in the beta versions the dark themes kind of automatically there or if you have a paid license to unity the dark theme is there but if you don't it should look like let me just switch it over so for it looks like what it looks like for everybody else let's see general and then editor theme it looks like this personal theme I'm gonna switch it I think anybody that's getting started out might be a little bit confused and it really doesn't make a difference it's just a visual change on how the editor looks or the color scheme there okay so there are a couple important things here since we started it off in a 3d project we have this 3d scene view right here and then we have a game view right here and these are just tabs and windows that you can drag-and-drop around so you can grab it you can draw and kind of dock them in different spots if you've ever used any kind of development environment they're mostly like this or art environment so a lot of tools that do this where you can take any of these tabs and just kind of move them around to different weird positions and if you mess them up you can go to window and layout and there are a bunch of different pre-built ones like a four-way split for looking at things in a weird mode I almost always just stick with the default so I'm almost always just in the default mode except I take my game view and I pull it over here side by side so that I can see what it looks like in game versus what it looks like in my scene and the scene by the way is just like a level when you're getting started out with unity you can literally just think of a scene as a level in your game when you get a little bit more complicated you can do weird stuff like loading in multiple scenes and loading them asynchronously swapping around you can do a lot with them but at the basic level it's really just like a level in your game so the scene view you can right hold down the right mouse button and just turn around to look all around the scene view you can also use WASD to move around just like you would in an FPS you got to be holding down that right mouse button though if you're holding that down you can move around just like an FPS and you can even hold shift to sprint just like you wouldn't an FPS you can also click on things in the scene view like the camera or here's the light if I click on the camera and I have my mouse over the scene view I can hit the F key on the keyboard it has to be over the scene view though and it'll focus right on that I can also use the mouse wheel to zoom in and zoom out I can click on this thing and hit F and focus that and zoom in so on but notice if I click on this and I go over here and I hit F oh it actually still works now it didn't used to work that way so that's nice and it's actually a new thing I just learned something new awesome so the scene view shows me everything in the level and it's showing me that I have a camera and a light and I also have this scene hierarchy it's just called hierarchy but it's really a list of everything that's in the scene like I said we could have multiple scenes here so if you see multiple of these black top-level things these are just that we have multiple levels loaded at once which again is a bit more of an advanced thing that we're not going to really dive into today but you can see underneath it I've got a main camera and a directional light I can also double click on these to select them and focus them so to get started I mean one thing we can do is just go into game object menu right here and this allows us to create all kinds of different things we can create 3d objects 2d objects particle effects lights audio sources video players some UI stuff there's there's a lot of things in this section for creating new game objects and a game object is kind of the base level thing that's in your scene or in your level so I'm gonna start with just creating a 3d object and picking a cube and what's gonna happen is it's gonna create the cube right in the center of my scene view so if I turned over here and I hit game object 3d objects and cube I'm gonna get one right here kind of right in the center it just assumes that that's where you want it because you're not really telling it where to go and I've got two cubes here and I can grab these little tools here remember right hold down the right mouse button WASD to move around but I can move around the object just by clicking and dragging on one of these tools and here you can see I'm dragging it in front of the camera and it's showing up in the game view that's the camera right there if I its behind there I don't see it if I drag it right out in front I see it and if I drag it the other way along this x-axis which if you look up here you'll see the x-value is changing in the position if I drag it here far enough away you see it kind of goes off the screen just like that other Cupid oh and I'm getting skype messages so I'm gonna close out Skype let's see close Skype and hopefully that's enough Skype closing all right so drag over these two cubes you can see I just got to game object cube things here they also show up in my scene or in my scene hierarchy as cube and cube one and I can create new cubes just by hitting game object 3d object and cube again all right um let me see sorry bunch of questions popped up and a bunch of noise just appeared all right so let's take a look at the camera real quick I want to show what that looks like and how we can move that around and how we can adjust that so if I select the camera you can actually see a camera preview that shows exactly what my game view showing and if I go down here behind it you can see that it's showing me the area of things that are inside the camera view so everything that's in here in this box is going to be rendered by our camera now when I said that switching but or making a 2-d game versus a 3d game really just change the settings on the camera what it's changing here is this projection option from perspective to orthographic so if I go to make a 2-d game notice how this thing just got really really flat and the Box just became kind of a box instead of a frustum that we can see out of where it's kind of scaled and doing perspective so if I switch back to a perspective I see that it's um back to that other view let me switch one other thing though I'm gonna switch to orthographic again and then this little button right here switches to 2d scene View mode it doesn't look like a button it's really confusing and kind of hidden but if I click on it you see that everything just kind of flattened out so when I'm working on a 2-d game what I usually do is switch to this mode and then I can work with objects and move them around kind of in a 2d plane so here I've selected a cube and I'm just dragging around I showed before dragging by these arrows but you can also grab these little boxes and drag them on both axes at the same time also to switch between moving things and rotating things and scaling things there's a little menu up here so right now I'm on move mode which is this one right here the move tool if I hit E it's gonna switch over to rotate or I could just click on it and then I can drag one of these and start spinning it around I've grabbed the yellow one there and grab the red one let's see maybe I can grab the red one I'm not very good at let me switch to 3d mode switch to 3d mode you can see I'll grab the red one or and grab this green one maybe okay apparently I'm gonna be terrible at grabbing things but I can grab there we go and rotate it along any one of these axes I'm gonna do it on one of these objects here if I go over here select one of these cubes and switch to the rotate mode which again was e this is basically Q wer T Y to go through all of these different options so they're just nice hotkeys when I'm moving with WASD and remember to hold down right button to move with the W okay so I've got one of those selected and I can rotate it and you can see it looks kind of weird because we're in that orthographic mode and which is really meant for mostly for 2d stuff you can do some 3d stuff in there but usually that's a mode that we use for 2d but if I switch back over here to perspective you'll see that the cube now looks kind of normal and when I rotate it it looks I'd say more like you would expect it to look when we rotate things a couple other things in the scene view you can select things and just hit delete to delete them you can also right-click on them and hit delete to delete them or you get right click on them and hit duplicate to make a copy or hit ctrl or command if you're on a Mac and D to duplicate and just make more of them now I made three of them but they're all at the exact same position so I could just grab one with the W and move it out click on another one stay in W mode and move them out and I got three cubes again all pretty exciting stuff right I mean really it's not very much exciting stuff yet because we're not getting into game stuff but again I wanted to show how to do the basic navigation of this system and how to run through the editor and kind of understand what's going on a couple other areas that are important the inspector over here shows info about whatever thing is selected so if I select cube one you see that cube one is selected here it says the name of it says its untagged don't worry about tags tags are generally something that I try to avoid it's got layers here layers are used for rendering things and for collisions so sometimes we want a camera to only render things that are like on the UI layer or we might want collisions to only work with things that are on the enemy layer and we can just select a layer right here or you can hit add layer and go create your own so I could say like I want players and enemies and when you make this change by the way it doesn't just change the one that you had selected so you got a save or click off of it and then those options will be there so I said hey these cubes are enemies well right now I've only made that one cube enemy so if I select this other cube you see that it's still on the default layer it's not an enemy yet but I could select both of these by holding shift or you can hold ctrl and just click on and off to select things a lot like you would in Explorer or I think it's the same in finder and then you can go and select a layer and set them all so now they're all set to enemies and I can click on each one and see that they're all enemies the only thing that's different is the position for them that's because I moved them around there are a couple other things that are on this cube by default there's this mesh filter which is just saying how to draw a mesh or what the shape of the mesh is it's not so much how to draw it I guess it's really what the shape is so that we can use that for collision and for rendering then there's the renderer which is thing that draws it so if I turn this off you see that we just have that green outline and the green outline is actually showing the collider so the collider and the renderer are totally separate we can control those separately toggle them on and off separately so we could have an invisible imagine you've got a game where you have invisible walls the way you do that is you make your cube scale it up and then turn off the renderer now you've got a wall that's got a Collider here and you can't walk past it but you can or you can't see it but you can't walk past it either I guess yeah you can't do either right so it blocks you and stops you but it's not visible or we want a visible while we turn it on or maybe we want something that doesn't collide we can uncheck the box Collider and now we can go right through it with our player but we can still see it so maybe we have like a bush or something that we want to walk through oh excuse me that's kind of an easy way although I wouldn't necessarily use a block or a cube or a bush okay so let me turn both those on and go to the scale tool real quick scale tool is this one right here and it's got little blocks on the end here let me move over here oh I switch tools there we go back to the scale tool which is our on the keyboard and then grab any one of these blocks and scale it along that axis I can also grab the center block and scale along all the axes so I can get a nice big or small block and shrink it way down you can even go to negative scales don't do that there's really not a good reason to do that most of the time and sometimes people do it and accidentally cause weird problems so if you see your scale value right here going to negative like that drag it back up whoops Oh No now I've messed it up there we go got it back to positive also these numbers are adjustable so you can earn editable in the inspector I mean so you could just type in a 5 there and now it's 5 meters long on that x-axis and that's what these values are in there in meters so this is how many meters wide it is how many meters tall it is so now it's 1 meter tall change it to 0.5 it's half a meter tall and I make it like 5x5 by half a meter that's what I've done right there just by playing around with that scale okay so I hope that was a good really quick little intro but I'm gonna I guess keep going a little bit more and then I'm going to jump over to some questions may all kind of go back and forth a little bit I want to show one last or two Sections real quick there's the console down here which has some invalid errors because I'm in a beta version you can just hit the Clear button and those will go away but one thing that's important to have here is the I like to have clear on build selected or am clear on play so that when I run my game I get whatever new errors are there if there are any errors but it's not just for errors you can show warnings and login trees and stuff like that so you can go through and see what happened in your game track down what happened and you can even double click to go to the code and we'll talk about the code in just a little bit don't worry the code part's relatively easy when you get started the last tab is this project tab so remember these are just tabs we can always drag them around and rearrange them and stuff I usually have the console tab down here with the project tab in the default mode though and the project tab shows everything that's in our project so it's not just the things that are in the level that's loaded it's the things that are in our entire games this could include all of the art in our game all of the code in our game all of the scenes or levels in our game and everything else the audio all of that is going to be right in here and we usually have that in subfolder so the root folder is going to be this assets folder and then underneath it it starts with a scenes folder by default and then double click on it or just select it here and go back and forth and you can see here we've got sample scene which is actually the scene that we have loaded so I'm gonna save my scene just hit ctrl s and then I'm going to select for these cubes and delete them out and then just double click on the scene to reload it and it's gonna say hey you made changes since you last saved because I just deleted all those things right after I save I just hit don't save and I got right back to my cubes by the way it's ctrl s to save it's right here there's a save right here ctrl s and that just saves off whatever level you have open another important thing down here is this slider so this also works with the mouse wheel or controlling the mouse wheel and you can zoom in and out between a ListView and a big icon view the reason that that's there so that when you're looking at art you can see big visuals of them you can see like the model what the character looks like or what the texture looks like whatever the piece of art is but when you're all looking at things that are like a large list of stuff like code files there's really no reason or scene files so you'll want to be in more of a list view so you can view them a little bit easier and kind of scroll through them and I think find things easier than you can with big icons some people just stay in big icon mode some people stay in a little mode I just kind of bounce back and forth between them again it was controlling the mouse wheel to scroll up and down there's also a packages folder we're really not gonna talk much about that today it's for pulling in other assets or other parts of the engine recently there's been a big push to separate things out in the engine so that you can make your game only support 2d and not have 3d stuff or only support 3d and not have 2d and pull in all kinds of different parts and a lot of that is surround performance and build size so you can kind of shrink things down and get updates to systems outside of the whole thing updating I wouldn't worry about that too much though if you're just getting started it's not a super super important thing let's talk real quickly about physics and moving things though so I'm gonna take this cube right here and I'm gonna move it right up here over this platform I'm actually gonna move this platform down so you can kind of see it on our game view see this is why I like having them side-by-side so I can move them along also it's worth noting you can take these things and just drag them off here I just dragged it over to my other screen over there you can have it on the separate screen if you want if you've got multiple monitors that's a great use for having a second monitor you just kind of move your game view off you can see it and then solve lots of room to work on your level design and your code and stuff alright so there we go we've got a cube sitting above this little platform and if I hit play it let me delete this extra cube I don't want that extra one I've got a cube 1 and cube 3 actually let's rename something real quick let's name this one floor so I've got it selected and then go right up here in the inspector and just type the word floor and now it's named floor and I can go over here too and just hit f2 to go to rename mode and I can rename it either in one of these spots and I'm just gonna call this a following box terrible casing on that though I named it with a lowercase F what am i doing right okay anyway so let's hit play and see what happens so if I hit play well pretty much nothing happens because so far all I've done is say we need these two cubes they both render and they both have colliders there's absolutely nothing physics related there's no code nothing else it's not really much of a game it's more of just like a drawing right so let's stop playing and let's look at this little button down here called add component this allows us to add different components to our game object so I have the following box selected and if I hit add component and let's get rid of that I had a filter type in there if you look here you'll see that there are a lot of components that come with the engine by default so we have a our stuff audio stuff likes a particle effect stuff I'm not even sure what's an event anymore layout is for UI stuff mesh o has our mesh renderers or some text stuff and then miscellaneous what's in miscellaneous o okay all kinds of interesting things I usually don't dig through these menus I usually have an idea of what I want and I just start typing it in like I'll type in RI GI because I know I want a rigidbody that's what we're gonna grab but I want to show you how to get to that first so let me clear out the filter and if you look right here in physics and expand it out you see there are a lot of physics options we have a box Collider which we already have on here because we created a cube and it automatically gives us that we have joints which are for no setting-up joints and interactions between objects so that could be anything from like a hinge or part of a chain or even a character's joint on their body we have mesh colliders which for when we pull in a character model or just a model that's not a cube or a sphere or a capsule or something and then the one that I want to talk about right now is the rigid body this thing I just clicked on it to add it allows us to have physics kind of work out of the box it uses the Unity physics system it's built in and if I hit play because it has a mass and it has the use gravity option checked which are on by default it should just use some gravity and fall right down BAM so now we've got a box that falls down by the way I do not have like a game design in mind here or a plan for a game that we're gonna build really just gonna go through all of these little fundamentals take questions and then see where we go from there so we've got a box now that falls down and if I turn off this cube right here this floor if I even just turn off the box Collider now the thing just falls right through this is the kind of thing that I could do at runtime I could make or act like wall our player is playing we could make this cube or this floor piece turn off its box Collider and things suddenly fall through it we can make it so that we click on it and things fall through it or whatever we want right well let's um stop playing I'm gonna look quickly at the questions and then we'll dive into how to write some very basic code how to hook up your code to game objects and make your own components which is again really simple to do but I think it's also pretty fun and just interesting if you're getting started okay let me check the stream stream looks like it's going good everything seems alright and then I'm gonna jump over to question mode and pull over the questions real quick and see what's going on here alright first I'm gonna take a drink alright umm go to individual responses okay the first question they came up was oh here let me let me go to desktop mode and show it developing indie games will pay your bills at best-case do you agree with the previous statement no I mean developing indie games at best case will make you like notch and you sell it for 2 billion dollars to Microsoft right I'd say the best case is always going to be something crazy and way out there though there's always options for best case scenarios where things just go crazy I think that um developing indie games does a couple things first you can generate good enough money to pay your bills and I'd say have a pretty healthy living it's not automatically easy you've got to build something that is unique and interesting and that people care about and it really making money off of games all comes down to did you make something that people want to buy if you didn't if you just make a game just to make a game and think that people are gonna give you money and buy it just because it's a game obviously that's not gonna work there's thousands of games released every day you have to make something that's interesting and unique and I wouldn't expect to do that on your first try right you're gonna be building games for a while before you get a big hit or something that I'd say is relatively a hit but another good benefit though of building indie games is that you get a lot of experience and you'll you'll learn how to make games and do things that other people don't do so I guess like if you're thinking of you know going to school and learning game development versus building your own you're gonna learn I think a lot more just building your own game going through that process because you have to do it you have to actually solve the problems it's good to learn from other people don't get me wrong but I think that building games is by far the best way to learn how to make games better and you can get jobs after that you know you work on games you make a couple little things yourself it's relatively easy to get into the industry there are a lot of companies hiring they just want experience they want people who've made a game before who've made a couple games before I know whenever I was looking at resumes I'd always look at and see what have they built like have they built any games before if all they've done is study and talk about games they've never actually built anything way less inclined to want to hire them over somebody who's built a couple games on their own because they've been through it they know what the problems are they've struggled with the things and they've solved the problems and they also had a mindset where they got things done and finished them so if you want to get into game development I'd recommend building some games finishing them they don't have to be perfect right do you build little things at first start with games that take you know a week or two something super super small scale I always recommend when people want to start out in game development pick a couple mobile games that you like and pick the simplest one that has one core simple mechanic and build that and simplify it down don't do the Facebook integration and the high scores and the leaderboards and all that just build the core gameplay and get that working and then do that multiple times just rinse and repeat try to keep them down to under two weeks so that you're going really really fast and just building little things because you're going to learn a lot from building different games and you want to get into the habit of trying out all of the different things and learning what's there because if you just stick with one thing and you stay with one problem it's really easy to get stuck on stuff and just kind of not progress or to not learn about all of the different things that are in the editor because while I showed a little bit of the basic stuff so far there's a ton of stuff in there there are a ton of things in the packages there's a lot that's available to you in the editor by default and if you don't know about it you'll end up trying to recreate those things I've seen a lot of people struggle with that too let me go into the next question I'm currently learning C++ through the creator of C++ his book and I've been trailing off and learning C++ through game making as a creative outlet and learning method I found a course on unreal by udemy Oh trust them's course it looks really good do you know anything about his background over the course perhaps a recommendation yourself um no I don't I I mean I've seen Ben's stuff it all seemed cool to me like I've no issues there I think I'd recommend checking it out and grabbing it udemy courses are also pretty cheap and pretty um pretty easy to get into so I'd say definitely try it out C++ is a little bit harder to get started with and c-sharp but if you like C++ and unreal it's definitely a great way to go there are a lot of jobs there and a lot of opportunity there it's also very easy to switch back and forth between engines especially if you know some c++ and you know unreal it's really easy I think to transition to any of the other engines and back and forth and it's kind of a nice valuable skill but I really like the idea of making games though as a way to learn because it's just a bit more engaging I think than just writing code when I learned how to code I also did the same but I was like on a Commodore 64 way back in the olden days writing my own little mini games and basic right and that was what got me going on if I just was writing things to print stuff or you know a calculator app or something like that I would have been bored to tears really quick I was just kind of forced into it because there weren't a lot of games available and I owned three so when I wanted to make some or play something new I had to try to figure out how to make it and I made terrible terrible stuff but I had a lot of fun and I learned a lot about programming and just the process and the thought process involved there let me jump onto the next one do you use programming patterns and if so which ones do you use the most I use a lot of patterns in programming it kind of happens naturally as you start coding I would say look at the game programming patterns book it's free available online and you can also grab it on Amazon for relatively cheap depending on how you like to learn I've got both looked online and grabbed a copy just because I thought the book was cool it's important to understand the patterns but it's not something that you need to worry about on day one it's more of a thing that you start thinking about and realizing maybe six months or a year into development where you think okay how do I make this easier and that's what patterns do they really just define a way to build things or a way to do your game that's well known and it kind of explained it shows you some cool tricks and just cool ways to keep your code clean and consistent again it's a little bit more advanced not the kind of thing I would worry about when you're just getting started but you definitely will be using a lot of game programming patterns as you get further and just code patterns and design patterns in general okay let's go on to the next one does getting unif unit certified unity associate help with getting a job I don't know I mean I'm sure it helps some places I haven't really done much hiring since they offered it and it's not the kind of thing that really entices me I'm much more interested in what people have built in their portfolio than anything else I'm sure it helps at some places I just um I don't know how much it helps it's probably a good way to learn though and test your learning skills to know kind of where you're at and if you can pass those tests or not if you can't pass them then it's probably you know time to do a little bit more studying but I've never seen anybody personally get hired just because of that or even get bumped to the top because of any special certification it's not just unity ones but any certification or degree or anything that almost never has an impact in anything I've seen for hiring game developers people want to know what they've built what they've shipped and what it's like to work with them you really want to get an idea of those skills because it's easy to pass aizen it's easy it's not difficult to pass tests or even get degrees and not know how to do anything I've interviewed and met plenty of people who went through that and even had master's degrees and development or programming and couldn't write code I couldn't write a simple little bit of code so it's not a not a big thing for me at least okay let's go on to the next one how many and what level of quality games would you recommend on a junior dev portfolio before applying to any jobs I would say get one or two games that are interesting they don't have to be big I would say keep them small and simple but kind of unique and interesting the best is when it's like a simple game that looks like a clone and then like twenty seconds and you have this weird interest twist to it I think that's really neat a neat way to go because then people get in they understand how to play it don't don't give them something that they're not going to know how to play that you have to explain or they have to read instructions or they have to read a wall of text I give it some give them something that's easy to get into that you can deploy to a WebGL build and just host on your webpage on your portfolio and then have it do like some weird little twist 20 or 30 seconds and don't expect that they're gonna play for five minutes or even three minutes expect that they're going through portfolios quick and you got to kind of wow them relatively quick now that said I wouldn't necessarily even wait to have those before applying to jobs I would start applying as soon as you feel like you can contribute at all to the thing so I start applying early and then work on that portfolio while you're applying also really important when you're applying for jobs make sure that you tailor your resume to the job make sure that you point out the things that you know and that you're good at that the job is looking for first excuse me also um one really important thing that a lot of people mess up don't have like crappy messy formatting misspellings and stuff like that check that your resume looks good in a PDF viewer like Stan you know if you open it with Acrobat or Acrobat Reader well in that it looks good in Word and you know ideally even just have it on a web page and have it available there and it looks good in all the browsers it's really easy to just kind of Auto disqualify yourself by misspelling things you know putting I worked on you night 3 or whatever instead of unity3d anything like that is gonna just drop your resume down to the bottom of the list people are gonna think if you're not willing to you know double check to this one little piece of paper that you're sending out why would they expect you to double check your code and make sure that those things are right so make sure that the the resume and the portfolio is both clean and accurate and also again tailored to the job that you're that you're working on so that it's not just um like if you're applying for a unity job don't put unreal right at the top you know have that down lower and move the unity part up and same the other way if working on you know you're applying for an unreal job make sure that that's the thing at the top of your skills not the unity stuff and that the things that are important to them are at the top that you that you have okay let's go on to the next one Oh same question okay I feel like I'm stuck in a rut with game development and more specifically c-sharp coding I'm gonna jump back to desktop code for a second I've become comfortable with a lot of beginner and intermediate concepts but can't seem to apply my knowledge practically what tips could you give to progress so that I can start creating my own games I would say start with an idea of a very simple game that you want to make and just build it like I said before I try picking mobile clones first just because it's relatively easy to do and you can focus on just like a one one gameplay mechanic right so figure out like hey I like this little game I always recommend people build like a flappy bird clone first because it's just it's a really really simple straightforward game to build and if you get your head around the concepts involved there you can kind of get used to that that whole flow and start building up more and more complex things but it's start by just building out a couple of those things without tutorials don't I mean obviously start with tutorials at first go through guides and tutorials and get used to it but then when you feel like you've gotten I'd say to this point then pick one of those games and just see if you can figure out how to recreate it and again don't pick something that has like some weird complex stuff like you're chopping up meshes and doing all kinds of other weird things pick something that's got a simple mechanic and build it and then repeat that process a couple times and go through the process of building your game figuring out how you want to do game flow like you're gonna have a game manager that's managing what's going on or you just need some simple game objects that have a single scripts on them and you reload your level when you die or something which is kind of what I do with a flappy bird clone and that's kind of I guess the way that I would start and just build up from there a lot of people tend to pick like this giant project they want to build they're like you know obviously the cliche one is people like oh I'm gonna go build an MMO and they never built a game before at all they haven't built flappy bird and they're just going on to build the biggest craziest thing right it'd be like you know I've never built a car before I've never built a bicycle and maybe put one together I certainly wouldn't go try to build a Ferrari right I might start with a Power Wheels first or something simple to start small and start building up and just get into the habit also make sure that you're coding every day or at least as close to every day as possible for a little bit of time even if it's just an hour a day but I'd say get used to the process of just building stuff a little bit every day and every day you can't obviously sometimes things happen but you get the idea okay after getting a navmesh set up with point-and-click style like a classic MMO how can you add extra functionality to use WASD keys as well that's a good question it's a little bit more advanced than beginner level stuff but what I like to do there and what I'd recommend is having your character or the thing that's moving around it I assume it's just like a character having it have a controller for movement that's swappable so it's set up like a navmesh moving controller and a WASD moving controller and then you can just toggle which one of those is on or off you could also do it in code and do it a little bit more complex where you're passing in the movement system which is kind of thing I do it like in architecture course but at a beginner level I would say just have two different components on there like a navmesh click and point mover and a WASD mover and then just enable and disable them based on what movement mode you want to be on if you want to have both of them I'm not sure exactly how that would work because the navmesh one would constantly be moving you and the WASD one would be trying to move and navmesh is just kind of taken over but I think what you really want there's just like a toggle assuming I'm understanding the question right you'd set up a toggle so that it switches between the move modes just by toggling a component on and off we're talking two components on and off ok let's go onto the next one by the way anybody who's got questions remember there's a forum in the description just click on it the questions will pop up here and I'll go through them and try to read them all if they're in chat I just end up missing them all so alright thanks for the super chat that's awesome appreciate it ok next question from dev edy nice okay okay next question was what's your opinion on visual scripting using something like both I'm currently going through unity tutorials using c-sharp and bolt doing it once using Visual Studio and again in bolt and although it takes a little longer I prefer being able to see the code in action with bolt while using bolt over traditional c-sharp would be detrimental to me in the long run if you want to be a game programmer or like solo developer then yes it will be detrimental in the long run I usually stick with visual scripting systems for building things that I want to allow game designers to customize and modify not so much for entire game flow it's an interesting way to kind of get your head wrapped around the logic of how games are working though and how things are kind of flowing it's also an interesting way I think to start off as a beginner but learning the c-sharp side it has a ton of benefits and it'll pay off a lot more in the long run because what boats doing essentially calling into the c-sharp functions it's just kind of hiding it and showing it in a visual editor or what happens is when the game gets bigger and more complex it suddenly gets a lot harder to follow with really easy games something like bolt is or any visual scripting system is really easy to manage you can tell what's going on but you can imagine as the game grows and gets more and more complex those those graphs get huge and then it gets really hard to understand where things are going where in code you can just hit some little hotkeys and bounce around and I mean I'm also pretty biased towards just writing code because they've been doing it for so long but I would recommend understanding bolt playing with it for sure but definitely diving a lot more into the c-sharp stuff as soon as you can or as much as you can jump back over to camera mode for a moment okay I just don't know real quick check here good okay and go back and I'm gonna take a drink also um while I'm at it and taking a breath for a second don't forget to hit the like button and the share and all that stuff so we can get it out to more people and get more questions in here then I got 22 and I'm gonna be able to tear through those pretty quick I think alright let's go back to desktop mode so it says I'm working on a game that requires a section with short turfgrass think grass like a soccer field I'm pretty sure that billboarding is the way to go but how'd it go create required grass density without killing performance right of shader HDR PS so yeah billboards are pretty much the easiest and simplest way this is definitely a more complex question but I'd say you're gonna want to do some billboarding and depending on how big this is you might not need to worry too much about performance you know if it's a huge area with a ton of density it could be an issue and you may need to do some custom shader work or something a little bit more complicated but billboards are generally the fastest and easiest way to get going with that I'd also just look up some tutorials on high performance graphs cuz you're gonna find a lot of detailed info on how to do that stuff if you just start looking online way more than I could give in a quick answer here okay I'm going to apply for a junior game play engineer position that lists knowledge of network programming considerations as one of the requirements what's a quick way to get that kind of training within the context of an MMORPG they list fluency and c-sharp or C++ as a requirement and they're using a proprietary engine if they're using a proprietary engine they're probably using C++ and you're probably gonna have some C++ tests I would double-check but that's what I would expect to happen I'd also figure out what networking libraries are using so there are a lot of them out there that exists so you could just grab some documentation and examples for the specific low-level networking system that they're using if it's a custom engine they probably built something custom on top of one of the UDP libraries but you never know depending on it could even be a TCP library so you're gonna want to look at that and figure it out um and then I think you really need to look into a lot of stuff on I'd say MMO networking and MMO programming there's a lot that goes into it where you really need to think about everything that comes from the client is really just a request it's like other than movement which is usually handled a little bit differently everything else it nothing is done really on the client you're saying like hey I want to use this attack I want to hit number four and it uses this attack you're really sending a message to the server you're saying you hit forward and says hey this player wants to use whatever their fourth ability is whatever ability is in hotkey slot number four and then the server decides what happens does all of the work maybe deals the damage starts the ability or the attacker or whatever it is and then sends back messages to all of the clients saying hey this player just did this thing which could involve everything from like playing a particle effect playing an animation on on that character remember for everybody in the area and this all has to be very server authoritative you have to remember when you're building an MMO that um the client always lies and the network stream always lies you can't trust the either of them because it's very very easy to hack it's super simple to say hey I used the ability for 3,000 times and if your server isn't the one that's authoritative and it isn't doing the checks then hey that player used that ability of 400 times or 3,000 times or whatever do they sent from their client so you need to make sure that you're getting used to the idea of requests and then actions being sent out from the server thanks again for the another super chat it's awesome and Adams oh wait oh thank you but yeah that's kind of the gist of it I've done a couple videos on MMO development and actually did a stream with my buddy Kyle yesterday or the day before on networking stuff and I would go check that out he has a lot of great networking knowledge and then check out the one that I did on MMO development specifically because I think that will hopefully answer some of these questions about just things you got to watch out for in an MMO but again if they're using a proprietary engine it's probably gonna be C++ T they're gonna want to know okay I'm making a 3d top-down game using only character assets purchased from the asset store no art experience that's cool I got no art experience either I'm terrible artist and I'm a little worried the game might be considered slash called an asset flip the characters do fit the style of the game and it saves me time and money to focus on core mechanics but is it a legitimate concern I see it opening up as a toy box as a kit oh I see it as opening up a toy box as a kid and using whatever is available to make your own adventure but I don't think others will see it that way I think you're fine usually using art on the asset store is usually totally fine and combining stuff in making an interesting game the bigger thing that gets called out is when people take a starter kit so there's like I remember one there was a bowling game it was this bowling starter kit and somebody put it in VR and then sold it on the ass on Steam and they got a lot of flack for that I don't know what ended up happening with it I'm sure you know they're not breaking any rules or laws or anything so I'm sure it was fine but it was still um those are the kind of things that tend to get called out more when you're just taking a starter pack and then changing it a tiny bit and then submitting it when you're building things up from all the characters and assets on the store I think that's totally fine way to go I built plenty of games like that and even triple-a games will start off using a lot of those things and they'll begin with asset store assets and then start swapping things out and they'll even keep something right like nobody needs to go create their own rocks and their own walls and buildings and huts like if they fit in your art style you really don't need to be making more of them and it's a lot better to focus on the things that make your game unique and interesting and not just trying to remake art for the for the sake of making the art so I think you're totally fine there as long as you're not just taking packs that are pre-built games and then shipping them out alright well next one how do you move past the tutorial phase and structure creating your own project I'm struggling to move past working on tutorials to working on my own ideas yeah this is where I again recommend picking something to clone and not doing it from a tutorial once you've done a couple tutorials and you feel comfortable with it pick something that you want to try to clone without following a tutorial and go through that process a couple times and again keep these focus - like I'd say generally about two weeks due to week projects where you're like hey I want to make whatever this mobile game is in mobile games because they tend to be relatively easy don't pick something complicated pick something that you can think in your head of how you might do it where it's not gonna be like a I have no idea how to do this I gotta go search and figure it out think of something like what was that that little dart game I remember I made one of those not too long ago where it's like you click and the dart flies onto the circle and if it hits one of the other darts it's gone like that kind of thing where you're just like hey go when it hits collision becomes a child and suddenly it works and then you just keep going until you hit one of the other darts right pick something like that and figure out that process and then build it up and if you want to go through like once you get used to it go through that whole process of building the menu for it and building the level saving or whatever you're gonna do that are making multiple levels and get used to that but I'd say start by just making one or two probably three of those and do that first without a tutorial again so that you're getting used to the idea of figuring out how to do things without being guided so much okay let's go the next one okay I feel like I'm a good unity beginner but stuck I was just the beginner should I focus on something more specific inside of unity and master that or maybe advanced c-sharp what do you recommend anything I'm worried about going on the wrong path and that's demotivating to me no I would say pick a project and start building it that's generally the best way to learn at least in my experience I it could just be me but picking a project and just building it up yourself tends to be a really good way to learn also if you can work with other people and stuff you can learn really really fast just working on a project with other people who are at around your same skill level but you got to make sure that they're also very interested or at the same level of interest that you have so that you're working together but I'd say picking projects and just building those is a good way to go and then once you feel a bit more comfortable start looking into things like the game programming patterns that we talked about a little bit earlier and design patterns and stuff like that where you're thinking about things at a slightly higher level but I wouldn't worry too much about that I'd say it probably takes a couple years before you're gonna feel like you're not a beginner anymore just as a unity developer I mean I felt like I was new to it for a couple years after I had been working in unreal for many years so I I wouldn't say that it's not something that you're gonna be able to rush but the more that you code and the more projects you work on the more things that you try the faster you're gonna get get through that process and definitely don't get demotivated and also don't sit like focusing on one problem and one thing for too long if something gets she's stuck and you're just dying with it then switch over and start doing something else like don't don't sit there and just stagnate and give up because of it sometimes there are problems out there that you think should be easy and they're actually extremely hard I've had this quite a few times where a junior developer is like hey I want to do this thing and they explained it to me and I'm like holy crap like I might know one guy that knows how to do that and you're trying to do it no wonder you're struggling so I'd say I started asking questions and talking to people too because sometimes it's hard to know what's gonna be easy and what's gonna be hard and you may just you know get yourself stuck on something that's extremely difficult and extremely advanced without realizing it and thinking that it's easy because it just looks easy in the editor or in the code and I've done that myself too don't get me wrong it happens to all of us okay Jason have you ever tried VR development if so what engine would you recommend unity or unreal yep I released six VR games all built in unity the first one was actually just something I built over a weekend I was gonna make a tutorial on how to make a VR game and my wife started playing it and it was the only time my wife's ever played one of my games and kept playing it you know where I didn't have to just bribe her and beg her to keep playing it so I turned it into a real game released it on Steam as a launch title and it did great and it was a lot of fun so I would i would recommend unity just because i'm comfortable with it i think that you could build a VR game and either now but i my my default still is unity with steamvr although I think oculus has kind of taken off now so maybe kind of pick which platform you want to use and then go with it but you could use either engine but I would stick with unity just because it's my favorite could you explain interpolate and collision detection mode on a rigidbody component the unity documentation confuses me even more let's pull up the unity documentation on that let's see it's been a little while since I looked at it and saw what it actually said I'm pulling it up now let's see switch desktop mode and take a drink real quick and I think in just a couple more questions I'm gonna jump over and show how to write a little bit of code for anybody who's interested and how to how to set up your code okay so the collision detection mode by the way let me let me show it in unity to show everybody what it's talking about real quick and then we'll read through it and talk about it so we got the falling box here and it's got a rigidbody it's got an interpolate option and a collision detection option so there's discrete continuous continuous dynamic and continuous speculative now we'll read the docs and then I'll kind of explain kind of the differences oh I'm just kind of curious what it says in here now let's zoom this oh not that much there we go zoom it up so says use this to set up a rigidbody for continuous collision detection which is used to prevent fast-moving objects from passing through other objects without detecting collisions so it says for best results set this to continuous dynamic for fast-moving objects and for other objects which these need to collide with set it to continuous so what what they're saying here is if you have things that are moving fast now our cube that I showed dropping at the beginning I was not moving fast think of something moving fast as like a rocket or a player running really fast or a bullet something like that then you're gonna want to go to a continuous dynamic for that fast-moving object and then the things that it's going to hit and it should be set to continuous so let's read the rest of it but because this is the important part it says these two options have a big impact on performance physics performance alternatively you can use the continuous speculative which is generally cheaper and can be used on kinematic objects let's talk about kinematic objects in a second if you don't have issues with collisions of fast objects then leave them set to discrete the collision detection is only supported for rigid bodies with spheres capsules and box fighters or continuous is only supported for rigid bodies with the spear capsule box Collider which means that this option here this continuous option doesn't work if you have a mesh Collider so say you've got like a building set up and it's a mesh that you imported from the asset store or Amaya or somewhere then that's not gonna be an option you'll have to select something else like discrete or continuous I don't even know if you can pick any of the continuous ones you might just be stuck on discrete usually though what happens is with when we have something shooting out fast I use like I'm going to use a rocket as an example so say we're shooting out a rocket that's flying fast out of my handheld rocket launcher you set that rocket to continuous dynamic and you use a capsule Collider you won't use a mesh Collider because you don't care about like exactly when the dot the tip of the rocket you just care that the rocket has hit and it's close enough it's close enough that nobody's gonna notice and then you set the terrain and stuff to be discrete so that because those things aren't moving and they're generally gonna be fine what happens though is if your object is going too fast and it's going through something and you're not getting the collision like you shoot and you see your rocket go right through the wall then you might want to change that wall to be continuous now let's go back to the question what was the other part of it oh the interpolate option let's pull that up in the documentation too so just go unity3d interpolate rigidbody see if that brings up the docs first there we go we'll read this off and then explain it okay so it says interpolation allows you to smooth out the effect of running physics at a fixed frame rate so for anybody that doesn't know when you're running your game at you know a 300 frames a second or 100 frames a second your physics isn't running at that speed your physics is running out a fixed frame rate that you can actually set in the editor let's let's go take a peek at that if you go to edit and then I believe it's under project settings and physics to notice there's the physics and a physics 2d sitting here and I'm trying to remember it's the editor has been moved around a little bit there's a time step option maybe it's in where's that at Oh time here it is in time so there's a fixed time step and this is how often physics is gener or calculated so right now it's 50 times a second right so you just divide one by that and give you the frame rate or the physics frame rate so we're going at 50 times per second right here or every 20 milliseconds we're calculating physics let's jump back over to the page and it says by default interpolation is turned off commonly a rigid body interpolation is used on the players character physics is running at discrete time steps while graphics is rendered at variable frame rates that's we're saying there the physics runs at 50 frames a second by default you can adjust that if you need to crank it up but usually we leave it around the default and then graphics go as fast as your video card can render and it says that this can lead to jittery looking objects because physics and graphics are not completely in sync the effect is often subtle but visible on the player character especially if the camera follows the character it can be recommended to turn on interpolation for the main character but disable it for everything else so here it's just kind of what's happening is say you're moving your character and you're doing that with the physics system so you're moving it you know however whatever distance every twenty milliseconds the interpolation is gonna make it move smoothly across your actual frames instead of just moving in that fixed update if I'm understanding what they're saying here right and I that's pretty much how I've always understood it so that it's just kind of smoothing that out and interpolating just means like taking one position and another position and then smoothly going in between those positions for like 0% here to 100% there I don't know if I'm doing a good job of answering that question though hopefully that made some sense though let's go on hi Jason what do you think about using system similar to Ryan Hippos game architecture using scriptable objects and moving away from singleton based code I'm a good big fan of not using Singleton's I think that the scriptable object system still is basically Singleton's though that that whole architecture is built around having Singleton's that are just objects that you're referencing in this in the project view instead of in your code I've tried building some stuff with this before and the idea here is that instead of writing a lot of code you're building these reusable components and then you're hooking everything up through these reusable scriptable object components I just wasn't a huge fan of it I think it's interesting and it's neat and it makes a lot of sense if you're building a lot of very similar games where you have like maybe you've got card games that you're building and you're gonna build dozens of card games and you want to set up this system so that you can customize and change those card games however you like and you can kind of build it all up in there if you haven't seen the talk though this doesn't make any sense so I'd say go check out his talk for anybody who's confused on what the hell I'm talking about and then you'll kind of understand but he set up a system where you can essentially do all of your code in a visual scripting type of way it's kind of similar to using bolt a little bit different but somewhat similar and it's just been yeah I haven't seen a lot of payoff trying to do it that way so I just don't anymore I tried it a couple of times I said but it just didn't didn't make a lot of sense for any of the things I was working on plus when I work on games they tend to be very different like from one game to the next there's very little similarity and the things just don't become very reusable and the patterns don't really line up very well ok what's your thought plan when it comes to making new game ideas what slash where do you go to create a game slash idea how do you come up with game ideas I usually ask my friends who are game designers cuz they have much better ideas than me usually my ideas get inspired by like I just watch Star Wars so I want to build a space game or let's see I just watched The Witcher I almost finished watching The Witcher on Netflix which is great by the way if you guys haven't seen it and you like um fantasy stuff or Skyrim or The Witcher game or anything like that and just know it's not PG it's very very rated R it was really good and it made me want to build a fantasy RPG again luckily I'm working on a fantasy RPG but I just kind of like got me excited about that genre again so I I'm terrible at coming up with new game ideas I just asked game design friends who have really good ideas and then kind of build on that most of the time or all like said see something randomly and think hey I want to make that what are the benefits of unreal considering its extra difficulty required for it um I think there are some interesting benefits unreal the biggest one is that a lot of the bigger studios use unreal just because they've been using it for a very long time and they're very used to C++ I don't know all of the benefits they also have a really nice visual scripting system the blueprint system is great so if you want to do visual scripting unreal is still probably the best option for that other than that it's hard for me to say just because I don't work in unreal day-to-day and I just kind of play around in it every now and then I used to work in unreal a lot but it's changed dramatically since I was using it day-to-day so it's hard for me to say but it's a the biggest benefits that are just that um there are a lot of companies using it if you want to work on a big triple-a game and they're using unreal then unreal is definitely the thing you want to learn basically if you have a dream job at some company on some project then you want to understand and know what they're working on because that's what's gonna get you hired and then again their visual scripting system is great and their rendering system is great like things just kind of look pretty out of the box you don't have to do much work to make things look really nice the also is a really nice art pipeline I don't know how exactly different it is now but I every artist I've talked to always loves using the Unreal pipeline ok I'm gonna take another drink real quick by the way if you guys can hit like when I take a drink that'd be great alright and also um for anybody who wants to ask questions I have mentioned a couple times but there's a link in the description that just goes to this forum so you can submit questions and I won't miss them if they're in chat it just flies by and I have to not watch it or else I get distracted and lose my train of thought constantly so just drop them in here and we'll just go through them and try to get to a mall and then again I'll jump back over and do some coding and in just a few minutes and then jump back to questions okay hey Jason I always get stuck whenever I try to build a character controller for any type of 3d game and get some basic movement down applying forces but it doesn't feel natural or good also since I'm working alone I feel like I have to handle modeling and animating well which always makes me feel stuck any tips for solo dev to get past this play okay character controllers are a tough one right there it's easy to use like the built-in character controller and move stuff around but if you want things to feel a specific way what I'd recommend is finding the game that you want them to feel like and then searching for tutorials on how to make them feel like that game every game does it slightly differently and it all comes down to how that character's movement feels and in place when it comes to modeling and animating I would say if you want to just be a developer and you just want to code and make games skip that and stop wasting your time and just get on to the actual gameplay stuff if you really like making art and that's like the thing you want to do then consider just doing that as the primary thing almost nobody does their own art and their own code there are some people that do but it's it's relatively rare and it's usually not like they're making super high-end art and super high-end code they're usually kind of making relatively basic art but there it works well in their game also when it comes to grabbing characters there's the site that I really like if you go to mix omocha it's still totally free Adobe bottom a long time ago and you can grab Oh apparently I'm logged out but you can grab a ton of characters here for free let me see if I just log in and you can get animations for them you can download them pull them right in so you just go in pick a character you want and you can see they've got lots and lots of cool stuff here it's all pretty mostly pretty much humanoids but there are some weird ones too like this mouse then you can go to animations and there are I don't know how many thousands of animations but you can just pick like the animation you want now I've got a dancing mouse I can hit download pic FBX for unity grab the whole thing and pull it right in and get the animation you can also just grab a bunch of animations and kind of skip that step or to just grab art on the asset store - you can grab characters and animations on there or grab characters in you can hit upload and put the animations on them and it works out really well so I would say get to the coding part and unless you really want to be an artist you know jump over to just coding somebody noticed the password sure I think it's just last passes kind of hiding all of that what's in there is LastPass for everything how do I know if my code is efficient and not a mess oh one easy way is can you read through it and could a normal person read through it and kind of discern what it's doing if your code is really clean that you should be able to say hey look at this 10 year old can you read this do what do you think this does and they should be able to tell you like hey I think this moves a character when you push a button if they can't then it's probably not super clean now for efficiency it's all about looking in the profiler which let's pull that up real quick so let's go in here and go to window and let's see where's it at under analysis now things keep moving around there's a profiler window in here it's available for free in the editor and you can see what's going on in your code and there's a lot going on here ignore the rendering ignore the memory section for now and let's change this from timeline to just hierarchy because it makes it a little bit easier to understand this right here is showing us how much time is being spent in our stuff and right now we're running at a thousand frames a second because we're really not doing anything at all if we look in here at the player loop we can actually see how much time everything is taking and right now it's not doing anything special let's write a little bit of code real quick and I'll show you what that looks like and show you how to see things in the profiler and how to write a little code and then we'll jump back over to questions so one take the profiler and again just dock it down there and then we'll go to the project view I'm gonna create a new folder under assets let's remember the control in the mouse wheel to zoom and we'll just create another folder and call it scripts and then go into that just hit enter to go right into the folder by the way and then in this folder here let me stop playing generally don't want to be working on the game while we're playing so just hit it again to stop by the way that's pause button so you can pause if you want okay so go in here and right I right clicked on scripts hit create nope not show an Explorer one right click and I'll hit the right button this time and hit create a c-sharp script I'm gonna call this like a cube mover and just type it out and again with c-sharp development you usually want to use this casing it's pascal case where you just capitalize every word for your class types so when you're creating a new c-sharp script you'll make it you know uppercase whatever uppercase whatever no spaces or anything just all uppercase the first letter of each word now if I hit enter it should open up in my editor and I use a slightly different editor than the default by default it comes with Visual Studio which I've used for I don't know well over a decade ever since 2003 now I use writer which is not free but they have a free trial and if you're in school they have a free version for that too you can get like a free 30-day trial it works pretty much the same I just like it because it makes me a better programmer it gives me a little tips along the way if I do something dumb in unity it'll call it out right here and say hey you did something dumb and it'll explain why I did something dumb and tell me how to fix it so I'll zoom this in real quick and I'll talk real quickly about the parts of the script and what all of this means we'll write something in here and then I'll show in the profile or how you can tell when something's really bad will make something bad and then try to clean it up and then we'll jump back over to questions so if you guys have questions um submit them in that form and then when we finish this part up I'll jump back to the forum and we'll go back through the questions and kind of wrap those up okay Oh Google is talking and saying something let's mute it okay I don't want to send a reply Google thank you okay so here's the code editor and you can see writer just shows all of the line numbers right here some line 1 all the way to 19 and it starts off with this default script whenever we create a new script it just gives us this thing where it says public class and then the name of the script that we made and then a colon and a monobehaviour and up above it has these using statements so it says using system collections it's actually a light-gray because we're not really using it it's just there because a lot of the time you might want to use something in this and what this really is like a set of it's essentially it's a set of libraries for code that we could reuse or we could use in our script so there's a collections which is for handling things like lists of things or queues of things with lookups of different things and then the generic version of that we can do we can do those in a even cleaner way we're not gonna do any of those though so I'm just gonna delete both those lines so just hold shift and hit delete and delete both of those lines out and we just have the one for using unity engine that's required because we're using things that are built into the engine so sometimes you'll have a using statement to use different parts of the engine that aren't built-in that are in those packages and those will show up there but writer will automatically tell us when we need to add one so I just delete those out and call it good then the next important part here so we have this public class a class is just like a definition for a set of code and then we have this colon and monobehaviour so what that means is that there's already a class called monobehaviour and we want our cuba mover class to have all of the stuff that a monobehaviour class house which is like a whole bunch of code that we don't need to see fact if i go here and i hit f12 we can see it writer will actually D compile it and show us some of the stuff in there so it has all of these things in here lots and lots of stuff and then it actually has layers and layers of stuff so monobehaviour which gets stuff from behavior and it all goes down into the C++ version or the C++ layer of unity so we've got this class here and it's saying hey I want to have all of the things that a monobehaviour has because I want it to be a component that we can add to our game so that's what's gonna make it so that when I let's see if I jump back over here it's recompiling by the way whenever you add scripts or change scripts it'll recompile and you see a little spinner that appeared here oh you might not because I'm right in front of it but if I wasn't right in front of it in the bottom right corner let's see it would be right about let's see if I can get it onto the screen right about here you'll see a little spinner going when it's recompiling okay so what was I saying okay so to be able to add it to a game object as a component it has to have that model behavior as the what's called a base class that's what that component that : and the model behavior means so I've selected my following box and I hit add component and if I look down in scripts here I'll actually see my cube and mover they're assuming that I don't have any errors if I have errors in the console after I hit clear cuz skin that's a beta version so showing some spammy errors but if I messed it up like let's let's go back in the show okay so if I go back over to Ryder and I said like hey I accidentally added another bracket there and now it's red in here saying there's an error something's wrong and if I go back over to unity and look at it and hit clear you see that now that says there's an error and invalid token which just means there's an invalid character there and if I go to add component and I go to scripts my script oh well it actually let me out it that's weird I'm surprised it doesn't usually let you add it so that's an interesting thing that it did that there it must have just not that's because it didn't recompile but if you see the error where you can't add it and there's an error here it means that we need to go fix it so I can double-click on this though and go directly to the error and I can see the little red lines here and just kind of clean that up so what happens next well related to these brackets is that everything that's in between a opening bracket here and the closing bracket that's related to it is the code for our class or our script and then inside of that we have a couple of these event functions which are just code that gets called at specific times and this gets automatically done because it's a mono behavior if it's not a mono behavior if we didn't have this here these methods wouldn't do anything and notice that writers little hints saying these are unity events would go away I hit control Z to undo by the way so here it gives a little description too and these are kind of like a beginner descriptions to remind people of how things work in house that where stuff is called and wind stuff is called so the code that's inside this little start function is called before the first frame update what that means is when the object is first created before it ever does its update which is called once per frame it calls the start and runs whatever code is there so if I write in like debug dot log and then put in a message in quotes like cube mover started and save now it's really important that you get the casing right here because if you put a lowercase D it's not gonna work or if you put a lowercase L it's not gonna work also important that we get the parentheses around it and then the message needs to be in quotes if we're just writing the string we can also use a variable we'll talk a little bit but if we just use a string it has to be in quotation marks from beginning the end and it's the double quotes not the weird single quotes or anything like that or the whatever that one is by one I always forget the name of it so now if I save this off just ctrl s and jump back over to unity and I'll clear my log again sorry about the the spam from the the beta version I should have opened this in a new one maybe I'll do that it will restart it in the new version in a moment but if I hit play you'll see that the cube is it has the script on it and we see that it was a message saying the cube and mover started so that means that our code in here was running I just double click on it to go right back through the code or right back to the code and then there's this update method here it says update is called once per frame so I'm going to copy this message just select it all control C click down here control V and I'll say cube mover update and if you're new to this just kind of take a quick guess on what you think is gonna happen we're gonna remember this is gonna call it once per frame so let's go back over to unity I'll stop playing and then we'll start playing again and we should see our cube mover started happened once and then this number here is actually the number of times that that happened there's this collapse option here that takes it so that all of our log messages that are the same message now it's spamming by will get collapsed into one entry so now I'm just seeing this one entry and the number of times it was called instead of a giant spam of entries going on there so if I collapse at the end double click on this you see that this code is just getting called every frame so let's say I wanted to do something well actually let's say I wanted to look at let's move it first let's make the thing move and then we'll look at the profile order again so in here to move an object around all we have to do is say transform which is that component that's on the game object let's go take a quick peek there we go so this transform component this gets added automatically every time we create a game object I'm gonna stop playing in here too so what we need to do is access this with that transform keyword and it's a lowercase T if there's an uppercase one which is the type and then the lowercase is the instance of it that's related to this cube so if we did an uppercase one we're gonna see totally different things on it it's not what we want we went to lowercase one let me say transform dot position and then we can just move it to a new position now we can do it that like saying equals and we could say new vector3 and give it a hard-coded position like 1 comma 2 comma 1 or let's say 1 comma 1 comma 1 yes yeah and then what we do is just move to that position every frame so let's go check it out hit play and watch the position of our box it's at 1 comma 1 comma 1 and it's right here it's in the spot and if I try to move it it's actually moving itself back to that spot every time but I can pause it and move it over unpause and it's gonna bounce back to that 1 comma 1 comma 1 position so my code right now is kind of stupid it's just moving it to the same position every time well the other thing that we can do by the way a vector3 is just the XY and z coordinates that you're seeing here so when I look right here at the XYZ and if i zoom this over or scroll this over you see that those are the parameters that I'm passing in XY and Z that I want to move to but another thing I can do that is a little bit more interesting is make this a plus so instead of setting it to that position we're going to move it by that much we're gonna add the position so we're take the current position and we're gonna add one on the x one on the Z and one on the Y save that off and it'll just shrink that down and go back in and stop playing and play again it's spinning down there again kind of behind my head and we play and watch what happens to that cube BAM see it kind of flew off the screen if i zoom out here you can kind of watch as it's flying away and if you look at the position you see it's going very very very far away not super useful again but you know hopefully you get the idea of how we're moving the thing just by changing the position it's also following though because we have the rigidbody on here and we have used gravity on its falling that's why the Y position is going down if I turn that off and make it stop you hear let's stop playing if I just remove this or here let's check the is kinematic option so what that does is it makes it so that it doesn't fall with physics it doesn't move with physics we can move it around and it can be hit but it won't move from the physics systems now if I hit play it's actually just gonna increment everything by one and it's not gonna fall anymore there we go now it's just kind of flying off and going super super high in the sky again not super useful but hopefully you're getting the idea now if we wanted to move it a smaller amount we could put like 0.01 or we can do this we can actually multiply this vector three by the amount of time that has passed in our frame and we can do that with this let's uh let's cut this little chunk of code let's say vector three movement amount equals and we'll pass in this new vector three 1 comma 1 comma 1 and we multiply that by a special variable called time dot delta time let's get this a little bit bigger on the screen and then we put a semicolon at the end that's something I think I might have skipped over at the end of every line of code or every statement of code really not necessarily every line because we can split a statement into multiple lines we have to have a semicolon at the end if we don't we're gonna see something weird like this or here let's uh get rid of it and you'll see this little underlined right here saying that hey if I put my mouse over it even says it expects a semicolon that just means that this is the end of the line the reason for that is really because sometimes we want our statement to go on multiple lines so it allows us to put our statement on however many lines we want and then just end it with the semicolon in this case it's nice and small it fits on the screen so we just do it in the one line and put the semicolon at the end so now we're creating this movement amount vector which is gonna be one on each axis times the amount of time that has passed and this amount of time that's passed is the amount of time between the last frame in the current frame and that time is going to be tiny it's gonna be milliseconds or even microseconds depending on how fast our stuff is probably it is a low number of milliseconds in 60 frames per second you can figure that out just by going here let's go calc if you want to figure out what that time is so say we've got 60 frames a second we can do 1 divided by 60 and that is the value that we're gonna get 16 here or 16 milliseconds this would be 100 milliseconds the tenths of milliseconds and then the ones digit of milliseconds so we're multiplying it by point one six so essentially at 60 frames a second we'd be putting in a point zero one six but this allows us to be variable based on our frame rate so that it's gonna move the same amount no matter what our frame rate is so now I'm putting that into this vector three variable and I can copy that and just paste it right here and now it's gonna move at one meter per second so that's essentially what we're getting here one meter per second movement if we jump back over here we should see it and you can just kind of watch the position here and notice that it's moving about one meter a second okay just kind of count in your head the count time the timer should pretty much match that whole number value is going up by one every second and that's how we can just move something along a new position at a fixed rate no matter what our frame rate is so if we were running at one frame a second that Delta time would be one and we would still move the same amount now normally when we're moving things we want to do it in this special fixed update method but I think that that's um not it's not super necessary when you're just getting started out and you do that in fixed update and we do it with the rigid body or the character controller to move it but for just moving a game object around if we're not worried about the physics part of it too much we can just do that in the update and have it move along and it's totally fine if it's not a physics related thing but we want to move it I guess for physics so let's talk about moving it with input and well actually here let's uh let's let's do a little bit of profiling first because I said I would do the profiling part and it kind of skipped over that so let's go back in here hit play and make this profile or window bigger remember if you didn't find this by the way it's under window and analysis and profiler and then I just docked it down here just remember to just pop up and you can drag them around float them whatever I'm gonna dock it right down here on the bottom and watch let's hit play and see what it does okay so now we've just got some numbers down here and a bunch of blue bars and if I click here it automatically pauses the game what I want to do though is expand out this player loop part and it's gonna show me what code is running and how much time that code is taking actually I'm gonna move the profiler up so that it's not cut off by by my head or something on the stream there you go it's gonna move this up and make it a little bit more visible hopefully you guys can all see that so I've expanded out the player loop by the way it's switched from timeline to a hierarchy it makes it a lot easier to understand when you're getting started at the timeline that's showing like everything that's happening in a frame and seeing exactly a lot of details about it that I don't think are super useful when you're just getting started it can be really confusing so if we expand out this player loop section I see right here we have update script run behavior update this is actually saying this is where all of the code that's in our updates loops or our update methods is getting profiled this is showing us all of that code and if you look at the time here it's saying that we're spending 50 or was this 0.5 1 milliseconds in update so not a lot of time we're not doing anything really big we're just kind of moving an object and writing out a log but we're also allocating some garbage which is not a good thing to do but it's not something you need to worry about too much when you're starting out and if we expand this out though we can actually see that it's going into our behavior update and then we're seeing that it's cube move or update so if I had two scripts here we could we'd see both of them going on see that it's getting called one time a second or one call per frame not per second sorry and it's taking up 4.7% of our time and look here the actual slow part here the thing that stands out is actually this logging the string to the console so writing this log entry is taking point for eight milliseconds and the rest of it is the whatever the remaining point two so our moving is actually really fast but writing out a log entry is actually extremely slow which is why we don't write out log entries on a release build of stuff we make sure that we get all of that out or comment it out or something you set up away so that you're not writing out log entries when you do a release we could also go in here and make it do something really slow like if we went back into writer and maybe in our let's add a fixed update let's do that so we'll add this other method if I start typing in writer again this is more of a writer specific thing but you can just type it out completely in Visual Studio so I start typing fi X and I get a little pop-up of options here and I just picked the fixedupdate one and this is usually how I write my code because I like to be lazy and make it easy and fast so I start typing that out and I get the unity event function automatically added so it just knows that fixedupdate is a part of monobehaviour and that it's gonna be called essentially once per physics frame not once per frame and then let's say I was in here and I just made a loop so I can write a simple loop just by saying for and hitting tab a couple times and what's gonna happen is we'll get a counter that's in the variable named I and then we give it a maximum value I'm just hitting tab by the way to bounce over here and say like I went into one to a thousand so I'm gonna loop over some code a thousand times I hit tab again to go right down here and maybe here I say hey cube I'm gonna copy this cube mover update and I'll change this to fixed update I'm out of space here and then this is and Oh actually yeah let's do this string concatenation trick so what I can do at the beginning of a string here is at a dollar sign this is a c-sharp not a percent a dollar sign this is a c-sharp feature and then once I've done that it let's see it says redundant string interpolation because I don't have a string in here yet what I can do is add in these squiggly braces inside the quotes and I can actually use variables like I and it'll replace the message so it's gonna debug log cube mover fixedupdate zero through 1000 here every fixed update this is gonna be slow and it's gonna show something in the profiler so that we have a good idea of what's in the profiler and how to fix it real quick so stop come back in here we'll play one more time and let's see see if we get our we should get log spam look at we're getting messages to 99 or 999 oh man has everything totally frozen oh look how slow it's going really really really slow I'm getting less than a frame a second because I'm writing so many log messages out and if I go to the profiler and let's see let it pause I'm actually having to click pause right now it's killing my system so much in writing out log entries is slow and I expand out play or loop and then expand out fixed update where's it at here let's find an entry here we need one where we actually have oh they're way over here so my profile is so bad at my stuff so bad that it's right here where I'm actually getting the frames so it's right on the end you can see that little spike of blue I think a thousand might have been too big of a number okay so I kick it all the way over here and let's see if I can find one of those frames and I've got my script run behavior fixed update and you can see here that this is now taking six thousand one hundred and twenty seven milliseconds or six seconds so my my tick there or my fixed update is taking six seconds for every single one so I'm went running away less than one frame a second and I can spanned it out here and see that it's getting called sixteen times and a frame because it's so slow and that what's actually going slow is this logging the string so I could stop playing and jump back over to writer and just get rid of this terrible terrible thing and now my code will run nice and fast cuz it wouldn't be doing anything in here at all so you can do a lot of things in a frame but you don't want to do a ton of logging like that right okay now let's talk about moving this thing around so I want to move my cube and maybe control it with WASD and once we get it moving we'll jump back into questions again if you have questions and you wanted to ask them just drop them in the forum that's in the description I'll be jumping back over to it it looks like where's that format it looks like this and we'll be going through oh looks like we're up to 58 so we'll have a lot of good questions but I want to show how to set up input and move a thing around real quick okay so say we want to move our object around again normally we'd move something in fixedupdate and I have videos on exactly why we would do that the physics side of it and explaining that but usually what we want to do is read in in our update method and then move it in our fixed update method when you're just getting started though that can be a little bit confusing and a little bit overkill so we're just gonna read input and move it in update for now and then you can go watch one of those videos on exactly excuse me on exactly how and why we separate those out in a in a normal scenario okay so let's see let's do it let's get rid of this cut this line here debug log cube mover update and we can do that also by adding it to ticks like this two of the forward slashes that actually means that whatever's here is just a comment that's why this right here has the two slashes you're saying that's a code comment that just says hey this is usually it's an explanation of why you're doing something weird or something like that or it can be a little hint like this or it can also just be that hey I don't want this code to run right now but I don't really want to delete it just yet most of the time though it's probably better to just hold shift and delete so actually I'll just do that because why not do the right thing right okay so say we want to move our player around or our cube around left and right we can do that by reading the input system so we say input.getaxis and then put in a quote and it'll actually in write or give us the options that are available so I'll just pick horizontal you can think of horizontal is left and right along the horizon of something and we put a semicolon there and what this does it actually returns back a value if I put my mouse over get access you see it returns the value of the virtual axis and it's a float so it says method float I'm pointing at the screen kind of weird right but it says method float and then takes the access name so to put that into a variable or add a space here and I'll say float horizontal I like to name my float for the axis value after the axis that I'm reading and I say it equals the get axis horizontal so this is gonna read my horizontal input which could be it's gonna be by default a and D so I think of W a s and B or if I had a controller like an Xbox controller it's gonna be that left thumbsticks left and right value so I'm reading that horizontal value and it's going into a number and let's just log it out real quick so it's a debug log I think I spelled it wrong and writer for me already and I'll just pass in that value horizontal and what it's going to do is automatically convert that to a string and it's just gonna write it out and I'm gonna comment out these two lines here so select them both and there's actually a hotkey in writer and Visual Studio ctrl K ctrl C comments out the whole selection so I'll just do that and comment them out for just a moment because I don't want it moving I just want to see what that horizontal value looks like so I'll minimize this back down go back into unity I'm gonna close the profiler so I felt right click on the tab I can just a close tab and make it go away remember though that's just available in your window animator window analysis profiler and all of these windows are like that if you lose one of them you can't find it you can always reopen it in that window section or just go to the default layout which was under window actually let me do that layout default it's gonna reset everything and then I'm gonna move that game view over here so it's back to the default view okay so if I hit play and I put my mouse over the game view I need to click on the game view make sure that it's focused yeah well actually I need to get my console at first you can see that right now it's just logging out a zero and it's logged it out 500 600 times so if I click here and I hit D see that number went up and now it's spamming out a one what's happening here is that the axis is gonna go from negative one in fact if I release it's going back down to zero and let me turn off collapse because I think it makes it a little easier and if I hit a it's gonna go towards oh I gotta select the game view and hold a it's gonna go towards negative one and eventually get from negative one release it goes back to zero hold D it goes towards 1 and then stays at 1 what's happening is it's slowly going up to that value so that it feels more like a controller and it's not instantly going all the way up to the full value let me show you where that set up if we go to edit and project settings and input input manager and go to axis what you'll see is that there are a whole bunch of preset up axes for it you can actually create your own you can just type in like 20 and you'll get two more copies of canceled down there you can go in and modify them can modify them later you just expand them out and you can see a couple things here first is the name that's what we're using in the code just reading horizontal and then it's got the positive and negative button which is actually left and right so that's the arrows on your keyboard it also has the alternate button a and B which is what I was using and then it's got a sensitivity a snap option and other stuff there's also a way to if I scroll down to this other horizontal the reason that r2 because this one is set up instead of the type being keys or mouse button it's set up to use joystick access there's a whole new input system coming I don't use it for anything yet but I've done some videos on it and it's changing a bit it's a little bit more confusing and complicated if you're getting started but it's built for like making really complex input setups but for basic stuff like this you can just add in the name I could call this like horizontal joystick and have it be completely different and it wouldn't show up with the joystick unless I was actually reading that specific one but I just leave them as the default when we're getting started because there's no real reason to go in and modify them too much okay so we're reading that we're getting that value again from negative 1 when we hold a to positive 1 when we hold d or nothing when we hit zero and let's expand out my scene view by the way if you see everything disappeared this little button right here it's just a collapsing tree option okay so we'll go back to let's see where do we want to go to the cube mover so I want to look at my script again I could jump back over to writer finding it down here or I can just double click on the script right here and it's gonna pop right up so say I want to move left or right I can actually do that just by commenting this out or uncommenting that part or let's uncomment all of these so I'm going to hold alt click and drag to select both of those and then hit delete just another little writer and visual studio trick works in both and what I can do is multiply this by horizontal so what's gonna happen now is if I have 0 if I'm not touching the keyboard at all our movement amount is gonna get multiplied by 0 and it's not gonna move at all if I'm holding right it's gonna get modified or multiplied by 1 so it's just gonna be what it normally was and if I hold left it's gonna move it's gonna make it all negative so it's gonna move the opposite direction one thing I want to do though is I'm gonna get rid of this Y value and I'm gonna get rid of the Z value because I just want it to move along that x-axis so I said them both to 0 another little trick that I could use by the way instead of using new vector3 1 comma 0 comma 0 I can also do this little pre-built shortcut vector 3 vector 3 dot right which is if I put the mouse over it I think it's going to show well it's not going to show us but what it is is it's a one for the X 0 for the Y and a zero for the Z and look at this Reiter is even telling to say the order of multiplication operations is inefficient if I hit alt enter I can hit enter and it's gonna do this reorder and like that now it's sped things up it's just done a little bit of extra work here to make it simpler and what it's really saying is that we're multiplying a vector three by time.deltatime and by horizontal so we're multiplying a vector by two numbers and it's a little bit faster and a little bit more efficient to multiply those two numbers first together and then multiply the vector once because multiplying a vector is a little bit slower than multiplying a float so that just again writer just makes it easier for us so now if I save this off and go back into unity and press play select my game view and I hit a we should end up going left and I hit D and we go right and if I uncheck this is kinematic option oh look we fall and we can move left and right there we go some just real simple code hopefully that helps for anybody who's not used to code and doesn't understand if you have questions about the code side of stuff feel free to ask it if you want to get into more complex stuff I got a ton of videos that kind of go into more complex code and how to turn things into games and go through that whole process but I want to get back to questions and make sure that we can answer as many of those as possible so let's go back to the question form go up to 61 so let's see we answered this I hope on the efficiency side and we'll go to the next one okay I'm currently trying to build an inventory but I can't really wrap my head around it and how to approach the problem can you give a quick rundown of what components you would use and how you would use scriptable objects loving these streams okay it depends a little bit on what your inventory is of I may or may not use scriptable objects I might just use prefabs if they're um if they're all items that are rendered in game that have a game object in game I might just use a prefab with the prefab variant system and have like a base item and then have variants of it on top of that now for keeping track of the inventory there are a couple options you can have just a list of all of your items that then renders in a UI element or you could have like a dictionary of them that stores them all um it's a little bit complex though to to talk about in just a quick stream and a quick answer but I think there are a couple videos out there right now it's one of the things to talk about in one of my courses two on how to build more complex inventory systems cuz a lot of it just depends on the type of game that you want to build and the type of inventory that you're trying to build if you have specific questions about it though feel free to just send me an email and I can take a look and see if I can help you out a little bit there shouldn't we support split-screen game mode for multi players such as minecraft did in the past on xbox I think it totally depends on your game I would say that local multiplayer games are fun but it just depends on if you want to make a that kind of game or not I wouldn't say do split screen and online because it's just gonna get more complicated and people generally when they're playing an online game want the whole screen and they want to play on their own system so I'd say go with either split-screen or online mode if you're doing a multiplayer but don't do I wouldn't necessarily go with both unless it really makes sense for your game type I'm far more intrigued by the game designer role than the programming aspect on a deeper level at least what would you suggest doing and/or are the most important steps to start off as a game designer an easy way in is to go in through the testing department go in through the QA Department because those people tend to eventually move up into game design jobs I've seen dozens of almost every developed game designer I know started off as a tester slash QA person I even started off doing QA stuff QA code development and it's an easy way to get your foot in the door meet designers talk to designers constantly I get in be in the QA department and talk to the designers go to lunch with the game designers as much as you can obviously be nice and get along with them and don't say you want to watch out like don't be constantly criticizing and saying bad things about them but know listen for what they're doing understand what they're trying to do and then give them some advice and tips and the better you are at that the quicker you'll get moved up to a game design position I haven't met many people who just kind of went out and got a game design job with no previous game development it's or no like QA experience I think it's possible but it's a lot easier if you go in through the QA Department and it kind of sucks is you're gonna go in with a relatively low paying position but it's um it's definitely a good way to get into game design in general and learn a lot from other game designers and see what they're doing see what kind of problems that run into and mistakes they make and you know you'll learn from them and you get better at it I'd say that's by far the easiest and fastest way and almost everybody I've met who was in the QA department had aspirations of going into some other department either programming community management type stuff or game design and a lot of the game designers came straight out of QA Department I wanted to ask if you could give me a place to work or a point me where to look what give me a place to look for work okay sorry I've misread that one of the places that I liked looking for unity Jobs was the cyber coder site it's full of different c-sharp and unity jobs to cyber coders net another good place is the Gama Sutra job board or the unity connect forms I think have quite a few positions on there too you can also find unity jobs on all of the other sites but I would say also look for indie companies in your area if you're looking for something regional just start searching for companies in your area there's a couple websites out there that list all of the game companies in the world it's obviously not completely comprehensive but you can find them and see what's in the area and start looking on their individual pages as well sometimes people post jobs and they don't you know none of them post all the sites you gotta kind of browse around all of them how would we create a roadmap for development for our games that is not something I'm good at I usually don't have much of a roadmap I just have a high-level idea high level set of things that I'm doing and build from there you know I've talked to somebody who's much better at project management than I am how can I extrude a face from unity by clicking on it or how to recognize clique basis ah that's actually an easy one to do now there's a package in unity if you go to general or no let's go to package manager I show this real quick and I'll pull over I talked about packages and said I wasn't gonna dive into them but let's do it if you search here for why is it not showing up the default so let's just search for ok it's just taking a moment to load up if you look through here these are all of the packages that are available and there's one called pro builder if I select it and hit install Pro builder actually allows us to do some geometry creation and texturing UV mapping a lot of stuff that I'm not very good at but it does allow you to do some face extruding which I can do really really well so I hit install we'll give it a second to install and then we can actually go in and modify meshes change them make weird shapes and stuff I'll show you real quick by the way don't forget to hit the like button while I'm taking drinks and again if you have questions there in the forum in the description just go click on it put your question in there and then we'll go through as quick as possible and try to read them all off and answer them so let's see it's loading up come on pro builder it's importing now let me go into the next question real quick while that imports and we'll go back to it is it a bad thing to use store-bought assets or free ones when you're just starting definitely not you should definitely use store-bought assets especially art and the free stuff because I actually have attempted to buy custom made assets and just don't have a budget yeah it's expensive and you're not gonna know exactly what you want you're not gonna be able to communicate that to the artists very well and it's a lot harder to do so I'd say don't worry about the asset flip stuff unless you're just like buying a package and trying to resell that pack as a game where it's like a prebuilt like tutorial game or something that's really what gets kind of termed as an asset flip it's totally fine to use assets that are available free assets and other stuff in fact if you go play a lot of games you'll see all kinds of games out there that you'll start to recognize assets from the asset store when you're playing them I've seen that many many times and I've used assets from the asset store plenty of times totally fine ok so pro builder has finished importing let's close this and then if I go to window and let's see where is it at now somewhere in here there's a pro builder window maybe I need hit play and let it compile alright O'Toole so sorry I'm blind as in tools and then pro builder pro builder window this gives me a new window that lets me do some interesting things there are a whole bunch of options I'm just gonna show the extrude so if I hit the plus it actually pops up a shape tool it allows me to make a shape and you can see here it made a little cube because that's what it's set to here I go - like cylinder or even a there's like a staircase one so I can make a staircase here with some number of steps and a width and a curvature even so that it bends around here let's make like lots of steps and make a curved staircase or something I'm gonna make whatever weird shapes I want and I just hit build and it creates this pro builder mesh that I can then modify if I want to do some different stuff to it I can go to these different modes here so when you have Pro builder setup and you click on a pro builder mesh here you can click on this object selection vertex selection edge selection or face selection so you asked about face selection specifically I can select a face right here and I can move it out if I want and just kind of adjust where that face is I'm gonna hit control Z the other option to do is hit ctrl e which is extrude I forget where that is in here there's one of the options you can see it if you search around and then we can like do an extrusion out of there and I could be like go over here select this face hit extra and make another one that comes out and I don't think I hit it X oh I hit ctrl D sorry let's delete delete let's go select this face one more time there we go and ctrl e and now I've extra did another face out and here it go ctrl e extra again maybe we call ctrl e make another face that goes up and so on so if you're wondering how to do that kind of stuff just jump in grab Pro build or find one of the video tutorials on pro builder and it's a really easy way to build up really fast levels I know some artists that can make amazing things with it I can make rooms and cubes and stairs and stuff so it's all about artistic ability when it get when to get beyond the basics of just using the extrude and the there's some there's different tools for everything you make all kinds of different weird shapes and stuff and I think if you're not an artist and you just to make some weird rooms and shapes and things it's a whole lot easier than trying to learn Maya or 3d studio or something like that alright let's jump back into questions we answered that one would you consider doing a video on quaternions or just handling rotations in unity yeah definitely um I think there are a lot of them out there but it probably do something on it and it's just one of those where I think you have to do a really good video editing and visual stuff for it to make sure that it makes sense give me one second I just wanted to do a quick spot check of all the rest of these ok looks good ok so let's jump back over to questions what's your recommendation for save a saving system for an RPG not sure how to structure it this is a context where you keep updating the game I want saves to be readable on newer versions with newer features ok so it depends on how you can save this data out of a bunch of different ways there's a player preface is obviously the easiest one and if you're not sure what that is there's essentially this player preface method where you can say let's let's go into code real quick and it's just where's my following box and my cube mover so you can do something like player prefs dot you get float or get string and so I get the string called name and then this would give me like as your string name equals that I'm gonna do like int level equals player prefs get int and get the level and what this is gonna do is like save that data off locally on your system this is a little bit it's it lower than what you're asking here we'll talk about that in just a moment but just as a base level you can write data by doing set int or set and then you can read it with git so if you like set int and set them to like level one and then maybe every update or every time they do something we increment their level and we could set it and then when they reload oh well we can't set that to value so like the set could be setting it here and then we could do let's let's actually do it real quick so let's say player prefs that I'm gonna just write this out copy it I'll say player press dot get int level I'm gonna put that into a variable so we'll say int level equals that and actually let's make a variable that's saved throughout our entire game or our entire lifetime of this cube mover so to do that I can hit alt enter and oh it's not gonna hear well split it and do another thing what I do is cut this and move it outside of that start method it's not have int level and it added the private key word automatically it just means that it can't be read outside of this this class here to this cube mover so I have this integer named level and in start we're gonna set it to whatever the value is that's stored there the level and then in update will say that will write the level out to that player Braff's and right before that was a level that's level + + which just means increment it by one so every frame will update it by one and then when we when we after we do that we'll save that value off and then last thing I want to do is say in our debug log let's get rid of Q mover and say level equals and then I use the braces and use our variable there and I need to add that dollar sign to the beginning so now we'll write out our level when we start off and then every frame we'll increment our level and then when we start again we should see that our level has gone up to whatever that value is let's try it let me close these out but when it comes to RPG stuff what you'd want to do is a couple of things so what while I'm running this and I'll talk a little bit about it but you'll want to set up a migration setup so that you're saving off the version of the level okay so let's see we're spamming out oh I'm still spamming out the location but you can imagine our levels going up and now you might want to like hey where can we see that level there's actually an option here if we select this little drop down and hit debug it's gonna change all of our view which is kind of confusing and off-putting when you're getting started but it's also going to show me that private variable that level and I can see it went up to like whatever 1500 and I can hit it again and go back to normal so if your view ever looks weird there and you're not sure what's going on just click for this little three dot thing up here click on it and then switch back to normal so let's stop playing and go back into the code I'm just going to double click and I'm going to delete this spammy log I don't want to log my horizontal stuff anymore and I'd go back in and I'm going to hit play and watch what level is when we start it should be whatever it was when we last saw or update her it's gonna be a little higher sit turned off so our level is 1975 it's been going up and up and up and if I hit play again our levels gonna be whatever 22 89 so anyway that's just how you can write and read stuff really easily for anybody getting started you can also serialize it out to a file locally if you want this works kind of on every platform automatically I'll save to the registry or to the file system based on the mobile device or whatever system you're on it'll kind of handle that a little bit kind of magically but when you're doing an RPG setup where you're gonna be changing the data constantly you'll want to write a little migration setup so you'll want to when you save off their data save off the version of the character or the version of the save game and then you'll have to write a method that does a migration to change the data if you're changing the data between versions if you're just adding data it's usually really simple because we can read in data and if it's not there it's not there it's fine we just use whatever the default is or if we use the JSON serialization stuff it'll just put all of the values to default if you're interesting that just go look at jason utility it's json utility and you can see exactly how you can save off all of the data for an object into a file it really saves it off into a string and then you can write that player perhaps or whatever I'm starting to lose my voice all right let's go through these questions before I totally lose my voice all right I'm an Android developer trying to make my first game in unity I made some tutorials so far including the flappy bird tutorial from your channel Thanks but I have no art and animation skills what kind of game would you recommend for me to make with only programming skills say whatever you want as long as art isn't the key focus some games art is like the entirety of the focus of the game if that's not the key thing there and you're working on something that's more gameplay related you should be fine just grab art online Android stuff you know it's most of the time it's gonna be relatively simple art it's not gonna be super high poly models they're super crazy for most of those games just say whatever you think is fun and interesting and unique if it depends on if you're just trying to learn trying to learn then pick something you think would be interesting to learn how to do if you're trying to make money then you got find something that is unique enough that people will want to play it and buy it that's a lot harder guess and figure out what those are gonna be though all right is it bad relying on tutorials too much I can implement some things in my project but sometimes I just have to look for at Oriel we all do everybody searches for code and answers to how to do things when they're working on a new problem you're never gonna know everything and how to do everything out of the box even most senior developers are constantly looking at Google looking at not just tutorials but documentation examples and other stuff to figure out how to do stuff nobody knows at all and it reminds me of this was some funny reddit post that I that I saw I can't remember what it said exactly but it was like my girlfriend I just started CS class and she sent me a message saying that she finished her project but she cheated because she used Google and Stack Overflow and it's like when should I tell her the truth right cuz everybody's doing it all the time the resources exist for a reason because everybody likes them and uses them and they really help so don't expect to know everything game engines are super complicated there's a lot going on so just um yeah don't worry about that at all I'd say just start building things and try to figure out things on your own to just try to figure out how to make a game and when you get stuck look for the answers okay do you have a discord server available for the community to penisula get together and build projects um yes there is a discord server sign up for my email list you get a link to it I think someone automatically I can put it into the description though I'm done actually let me see if I maybe I can just do that now where's that discord let's I've got a lot of a lot of discord stuff in here including my failure to fix one of my unit tests that just popped up let's see if go in here and do an invite and let's see send a server sorry I just pulling it up okay I don't change it so that it's not one that expires after one day okay generate a new link copy I'll paste it in chat there you go there's a link in chat now to join the discord server alright next up I've been modding Kerbal space program for a few years and I played with played a part in some fairly well-known mods nice I've been moving forward on creating my own games from the ground up and I'm wondering about the complications involved with publishing my creations and where would actually publish them steam etc and the pros and cons of each thanks for amazing videos and steam is really easy now steam used to be very difficult to publish to you had to go through the greenlight process now you pay 100 bucks and you can publish right out to Steam and it's a good place to get started because they handle the distribution and make things easy they take a 30% cut and it cost 100 bucks but if you're making a game that shouldn't be a big deal at all don't expect to necessarily make a ton of money out there just by putting it on Steam it's definitely not an advertising or marketing platform you have to advertise your game on your own but I think it's a great way to just push a game out and get it out there very simply and easily because there's the barrier to entry is almost zero now and system and the setup for doing updates and everything is kind of built in and makes it really easy to distribute so that's kind of what I would default to there are other options out there if you want to do a web and game or something but if you're trying to do something closer to Kerbal or you're pushing out executables I'd say just go Steam definitely a good start how do you use static objects um no static stuff is a little bit different than what we were doing in the examples a static method or a static class just means that you don't have an instance of it so there's only ever this one set of code or this one object there and you don't have other instances of it that exists like we could do a well I'm just going down to the bottom of this class and write public static class Jason's a writer and we'd make this class and now I can't add this class as a component to anything not just because it's not a monobehaviour but I can't instantiate it but I can add public static methods or even private static methods usually they're public though they can do public static void which means that it's not going to return anything I don't know if I mentioned that this right here just means that the method doesn't return anything in fact let's make it return something let's make it return inte and what's call it I get or let's call it increment counter just because I want to show a return type at the same time and then we could say that we want to increment our counter by let's even add a parameter so say in amount to how much we want to increment our counter by now add a counter so say counter plus equals amount now counter doesn't exist so I just hit home on my keyboard and hit alt enter and create a other I don't want to create a local variable create a field so that way it's putting it outside of this method and now I have an integer named counter and a method called increment counter and I could even in here say debug log incremented counter too and I've used string interpolation for everything else so here I'm going to show that you can also do plus and the value and it will actually combine those it'll concatenate those together and make it into one string and then we could just return the counter so this is gonna say hey whatever you do here actually no I'm gonna take this I'm gonna take this line of code cut it I'm gonna move it somewhere else so we're gonna increment the counter by the amount and then return back that value because int is our return type it's now in our update here I'll just go to the bottom and we could say Jason's writer I don't know why I called it writer it's not a writer it's a counter thingy dot increment counter by two and now this if I put my mouse here you see that it returns an int it says method int so we could say int current counter value equals that and then I can say debug log and I'm gonna copy this and paste it right here so we say we incremented the counter to whatever so now I have this static class that doesn't have an instance but it can be called from just about anything and it'll usually with the case for these is some sort of either some really generic state management thing here or we've got one thing and we just want to keep track of it or where it's doing something weird like we could have a multiply amount where we take two things and we multiply them and return back the product I think that's that's not super useful it's usually more complicate stuff like figure out if this thing can be used or if this item can be worn by this player and you give it the player and the item and it returned back a boolean that's true or false like can ya where the item but here we just got a thing that likes Pam's out it would increment a counter by 2 and then say hey we've incrementing the counter to whatever this value is because we're returning that value back I hope that made sense I'm gonna just jump back into the questions I don't think I need to run it hopefully everybody understands what that means if not I think I have some videos on static stuff too what's the best practice to do pathfinding using unities built-in or making your own I'd say you can use the unity built-in stuff now it used to be back in the day relatively slow and there were some other options that were faster now the built-in stuff is pretty versatile pretty strong and relatively fast so you can definitely use it yourself you can even use the nav mesh agents when you build stuff up too much um you get thousands of nav mesh agents or something and it becomes a blip on your profiler then you want to maybe move the object so long on your own but you still use their built-in pathfinding to generate the path and it works really well and it's also it's got a lot of new functionality and features you can look they have a github page that has the new system and stuff though it's definitely worth it ok it's about multiplayer not sure if it's loud right now it's okay oh check it out what do you think about TCP punch hole technique how good is it for multiplayer what kind of service would you recommend I honestly couldn't give you a good answer there it's been a long time since I had to do any TCP stuff on mobile where I had to worry about that so I'm not sure what what a good answer is for that there was a stream and did on multiplayer stuff with my buddy Kyle he talked a little bit about that but I don't know if he even had a good idea for that because we just don't do that much mobile stuff anymore sorry what are some of your games you made using unity oh the one I'm working on right now is here Pantheon which is a really fun one it's a MMORPG just like world of warcraft EverQuest style my buddy Brad started off he was the guy who made her one of the main guys who made a request and it's totally fun and you know easy to build in unity way easier than it was trying to build stuff of custom engines for sure other than that lots of little mobile games I can mention before a bunch of VR games I think some of those are on my website too I see what are your thoughts on VR development in just VR platform in general I was really really big and heavy into VR for quite a while since I moved to haven't really pulled out my VR headset so it's just one of those things where I get into it a lot and then I kind of fall off and then I get back into it and they fall off so I think it's really neat it's fun and it's interesting to build stuff but I also just get lazy about standing up and putting on headsets so it's definitely fun it's cool it's worth looking into if you're interested in VR and it's really easy to make stuff in VR that seems really cool and has it's fun fun to play with do you recommend any messageformat for client / server communications ie encoding/decoding json or allocating buffer space for different parts of the message I would say generally don't want a JSON encode it you want to use a binary encoding you want to pack the message down as small as possible there's usually a message header with like a message ID that says what type of message it is and then the data that's inside that message and you want to pack that down into as small as possible size so you can minimize your bandwidth and minimize the serialization and deserialization a lot of time we're set up is a way to swap out the serializer so you can do JSON serialization for debugging stuff if you need to and then switch back to binary for that I'd check out the stream that we did a couple days ago though on networking stuff talked a lot about that well rate acing save time devs time and effort no it will take more time and take more effort what role would somebody play in game development company who has project management development design and art / experience that sounds like producer associate producer is one of those jobs in game development that's really important it's not I'd say super sought after a lot of people don't know the position exists but they're essentially the people that are running and managing the project there's usually like an executive producer who's like the top level and managing those associate producers and kind of setting the the general idea for the game what's going to happen and then the associate producers are doing all of the work of making sure that the project staying on task and it's good for them to understand a lot about all of the different parts of the pipeline the design side the art side if they understand a little bit about code it helps a lot and because then they can you know be realistic with their expectations and communicate with the team a lot better got any tips for building large games in unity I read that floating and accuracy is a problem with large worlds seems doable with origin shifting in single player but multiplayer in multiplayer it's just it's hard it's um I don't have any good tips that I could just spew off right here but I'd say it's a it's a problem that you have to worry about a lot if you have a big here it's not it's big big games like in the size of the world that's what you're talking about so the floating point accuracy is fine when your your numbers are relatively low but floats are fast because they're not super accurate and as the numbers get larger and larger you'll see in accuracy and the movement and the collision detection and stuff so you need to worry about that there are a lot of solutions to it but I don't know that I could give any real quickly here I'd say just start searching and start looking at it it was one of the problems that they worked through on planetside and I remember they spent a lot of time trying to figure out the best way to do it and I don't even remember what they ended up with would you generally believe the level of fluidity in which you solve problems could be achieved by anyone or is there indeed a mental booster prerequisite this is my biggest concern as a developer oh no it's just all practice it's literally all practice and going through and doing these things time after time after time and then you can get good at just about anything if you can understand the code a little bit you're not gonna be good at it at first I've been doing for a very very long time so it's just gotten a lot easier and I still get lost all the time still gets off to search and ask questions and talk to friends all the time to figure out how to do things so if I make something look easy it's just because it's something that I happen to have done many many times or a practice to end he'll especially in a YouTube video I've practiced I screwed it up and then I stopped went back my tile has got all out of sync because something went wrong and a good sign a good tell that I messed up when those things suddenly jump right I'm like oh Jason mess that up forgot something or whatever so yeah it's just practice can you please do a tutorial on how to port your game to steam you really don't have to do anything to port it you just take a game and deploy the steam there's a process that you have to go through when you get approved for steam and you set up your thing they send you a full Docs it's really not too hard setting up a couple files and then running a batch file it uploads and then you basically flip on the build there's really not much to it at all it just takes your executable folder like your build and you take that and you're publishing that up there currently making a racing game about stuck with a simple thing current position relative to other cars let's say first out of six right now I'm doing triple comparison to make an order lists comparing the number of completed laps number of checkpoints in the laps are equal to and then a time when the checkpoint was reached if the number of checkpoints are equal this works when there are a lot of checkpoints on a track but my list only updates on collision with a checkpoint oh okay I see what you're saying there so what was happening is you're only detect determining that somebody's ahead of somebody else when they've actually passed that checkpoint what you generally want is like a spline or a line that's along there and you'll check the distance along that line or spline that the player has moved so you check like the nearest point on that spline and see which just imagine it's just think of it as a line from four starting right so say you've got like your checkpoint one and checkpoint two and you've got a line here between them and you just check the nearest point on the line for each of those cars and see which one has which ones further along that line and you can do that with inverse lerp so you can take you can take the two positions and you can find out what percent along they are based on that and you can do like I don't even remember the thing but there's a git nearest point on line that you can use to just figure out where they are along that line and figure out who's the farthest along it any oh I'd love to give it a job as a game producer junior assistant whatever and the advice what about portfolio how should it differ from programmers you definitely want to be good at project management you want to understand the game and the projects that people are working on I like I said I always recommend people going in through QA that's an easy kind of shortcut into the game industry and into professional jobs because there's just a lot of positions open and they're not as hard to get into also to start applying for game producer positions talk about your project management skills look at what tools that are using for project management everybody uses different things and read a lot of books and info about how to manage projects and keep them on task but just start applying to freelance 3d artists here learning how to code in c-sharp not sure which one to fully pursue as a career or is it better to be solo as a game developer if you're good at 3d art it's a great job I find that most artists don't like to do code and most coders don't like to do art since they pick the one that you like the most and that you feel more comfortable with if you're really good at both that's awesome it's just really really rare so is it pick one or the other and then you want to learn like one good option there too if you're interested a little bit in both is becoming a technical artist or technical art lead where you're managing not just the art but the pipeline a little bit of tooling that goes into getting the game or the art in the game and all that stuff it's a really well-paying job it's like the highest paying art job that you're gonna get for a game development and it's a pretty well sought-after position if you can do good technical art stuff it's it's huge so I maybe consider looking at that too I'm gonna take another drink so everybody can hit the like button real quick all right which IDE is best for beginners and why writer I like writer just because it tells you it tells you when you mess up and it tells you how to fix it and it gives you tips on like you're doing this wrong you should do it somewhere else it has really really good unity integration I think like if you're doing something else that's not unity specific I don't know it could be any any one of them but when you're doing unity specific stuff writers just really good at telling you what to do why to do it like I've learned a lot of things just from writer just tell me hey you know you shouldn't do this or you can use this new feature try it out and I hit the button it does it and it will even take you to an article to explain why it recommends things shader graphing he already has an easier workflow I'm focused on learning it could I achieve good graphics without learning how to code shaders in c-sharp yeah I don't know a lot of shader developers that just do all their stuff in something like shader graph so I think you could yeah I'm terrible at shader development myselfi about optimization and done door in unite talks keeps talking about telling not to use animators for canvases how do you handle animation for UI I still do use a little bit of animation in UI sometimes just depending on the specific scenario a lot of the time we'll do some tweening though and use either a tweening library or build our own stuff so that it it does the movement in code and not through the animation system but sometimes it still use animations for things that are just easier to animate there when it doesn't make a difference for performance I think it depends a lot on the performance characteristics of your game sometimes it's a huge thing and like animating than the UI is a big big issue other times it's like tiny blip on and stuff and it's not the thing to worry about I actually have a video on tweeting and all that stuff which talks a little bit about moving UI stuff that I come out today or tomorrow or something like that remote viewer application code are looking to transition to gameplay coding okay I used to I used to code small clone games in the mid-90s and C C++ done a lot of non code things since then but over the last five years been coding again most of my recent code is for unity BR applications which is also a really good thing to get into there's a lot of application development that you can do in unity especially with VR that pays really well and there's a lot of demand and not a lot of supplies not only people thinking about those positions or trying to apply it on there not a lot of connections near me and most of the code work comes from people I've worked with in the past that's pretty normal is there a good way to transition to more game focused remote work um I don't know I like the best way to do that for remote stuff I would just start applying and start looking at stuff look for contracts look for meetups and groups especially if you have meetups in the area where you can go there a lot of places have unity meetups every month you can just go attend and meet developers and they're always people hiring at those I'd try looking at those it doesn't help so much with the remote stuff if you're really remote and you just gotta say start applying start talking to people online there's a meetup that we have every week probably won't be this week it's on Christmas but every Wednesday if you search for unity architecture meetup we meet and talk about stuff like that talk about just general more advanced game development stuff and job stuff and all that just a relatively freeform just chat and meetup where we talk about things like that but I start just applying for stuff and start looking at it there are lots of things out there you just got a I said dig in and search and the experience for doing VR stuff is pretty easy to translate over is it worth it to pay for unity I'd say if you're making money off of it yes if you're not then there's not really a benefit hey there's a legal requirement if you're making I think it's like a hundred thousand to be using the plus or pro version I just use the pro version because they've been using it forever so if you're there's not a huge like there it's not gonna make a difference if you're starting out though I would say you don't need to you can use the free version when you're starting out and until you start using it professionally and making money off of it you don't need to worry about it is it better to start with a 2d game versus a 3d game a lot of the time yeah I'd say 2d games just tend to be a little bit easier to build into scope with 3d games it's very easy to overwhelm yourself and build things that are more complex but it's not it's not any harder technically like there's not anything special about 3d games that makes them harder it's just the scope of the game to make something interesting in 3d tends to be a lot bigger ok I understand how objects work but I still don't get how game objects and vectors work not what they do but how to get a reference from them like in vector3 vector3 variable equals new vector3 I don't understand new same as for game objects ok let's talk about that real quick let me jump back over to Ryder so when we use the new keyword let's I'm gonna get rid of this Jason Ryder actually you know I'm gonna leave it here and just collapse it because I think that's an interesting thing which oh so say I've got a new class like I have a public class and it's a Jason's thing and it has a public integer int called number I don't know getting pretty bad at this right and I want to make a new Jason's thing that has a number on it I can do that just in my code in any one of these methods by saying Jason's thing which is the type and then I give it a variable name it's usually the name matches but I could just name it blob I know most the time I'll name it the same thing but lower case so to say Jason's thing in fact Ryder just kind of automatically recommends that and it's really just a naming convention thing there's nothing that forces you to name these things this way it's just the standard for c-sharp so I say Jason's thing Jason's thing equals new Jason's thing what this is saying is create a new one of these and put it into this variable I could copy this and paste it and I could say Jason's other things so now I have two instances of this Jason's thing and they both have their own different name and then I could reference these things they have a number on them which really should be a capital N so let's make up capital I could say like a Jason's thing dot number equals one so now I'm setting the value of the number on this object that I've created here I say Jason's other thing dot number equals two or whatever number I want so essentially what we're doing is we're creating a new instance of this object and assigning it to a variable now with a game object you can't do that there's a special type of object in unity and we can't just new them up like this instead we have to do something like game object or well I take them back we can but we can't do it with a component we can't do cube and move or equals new cube and mover so I can't say like cute Jason's cube mover equals new cube a mover because it's a component but instead what we want to do is say game object dot add component here I can type that in right and we give it the type in these little greater than less than brackets and what this will do is add a cube mover to our current game object that we're on we can also create a game object by saying game object game object equals new game object and give it a name like game object created by start yeah let's even put a space in there so I'm gonna delete all the rest of that and if I run this what's gonna happen is when this thing starts it's gonna make a new game object in my scene so let's let's do it I'll just uh oh I wanted to show real quickly though with a static class like this we can't do it so I can't go Jason's Rider Jason's Rider equals new Jason's Rider and I'll get an error here saying hey where does it say cannot create an instance of a static class or of the static class so if I save this off go back into unity let's see if I can get unity open again and clear this out and I hit play we should see a new game object appear as soon as my falling box with the Q mover script starts play and there we got the game object created by start and in fact if you want to see that again in another way we could go to our cube mover and let's change the start we're gonna actually just replace it with a different method called on enable which just gets called every time the game object gets enabled I'm gonna get rid of this comment because now that comments a liar it's saying something about start but we're using on enable so every time I enable this we're actually going to read out the level debug log it and create another game object so minimize this I'm gonna get rid of these stairs to this because they're they're distracting me all right so I hit play and if we watch the log let's see okay let's oh I want to get rid of this incremented counter thing to shift delete to get rid of it yeah I'm gonna get rid of that line too just so I can get rid of the spam and the log real quick and show this then we'll jump onto the next question by the way again if you have questions drop them in the description there's a link in the description just click on it drop them in and I would probably get to them just make sure you hit like before you do okay so we have the one here Oh spam still going which means thing didn't finish we compiling I could see the little spinner there okay so clear the log hit play and we've got our box there and see it was that level whatever 5230 from the stuff we were talking about earlier now if I disable this game object so the cube disappeared you can even see it turned grey here because it's not enabled and then when I rename it that on enable is going to call again and we got another game object created and we saw that we loaded up the new value for the level so I hope that makes a little bit of sense and clarifies it just a little bit there okay let's go to the next one really enjoying your channel my question doesn't really fit the stream but I hope you could answer it in the future I'm working with two engines about two months ago and I started a few tutorials and tried to change and expand them now I'm trying to start on something from scratch but it gets tough when I try to plan for future game systems yep that that tends to be the case just feels hard to wrap my head around everything and choose an implementation method so I wanted to get some tips on initial planning for game systems I'd say start just start small if it's getting too complicated the project scope for the first ones that you're doing is probably too complicated if you're building your first project from scratch that's not from a tutorial make it simple make it something that you think you could do in a week or two if you think that it would take you a month it's way too out of scope if you think it's take you two weeks it's probably still out of scope shrink it down and make a bunch of little projects first you got to get used to that that process of just building a lot of little things on your own without tutorials before you try to build things that are bigger if you try to build bigger projects what tends to happen is people start going they get a couple things done something gets hard gets confusing they get demotivated and quit so you want to I'd say build a lot of little things finish them ship them well they say ship them I mean just publish them to WebGL put them on each tayo or similar dot IO or put them on your phone and show your your friends or whatever but don't don't try to build something too big let's go on next one adequate PC specs / setup for beginners doing both 2d and 3d I'd say whatever you have just go with whatever the best thing you have is solid-state drives can make a huge difference if you're building is something that's a big project video card if you're doing something super 3d heavy but if you're just doing beginner stuff you do it on just about any system I use an old laptop to teach kids and we can build anything we want and I wouldn't worry too much about it I would say don't don't let hardware stop you you can definitely build stuff on just about anything you build stuff on I got an old MacBook that I don't even know if it starts to heck probably build game on that okay should I use public or serialized field private if my goal is only to expose them in the inspector always serialize feel private let me show what that means too so if we're creating a field on our game object like this cube maneuver say we wanted to modify the level in the inspector or see it in the inspector one way we can do it is make this public or here let's let's change that let's make a new one so say we wanted a max level public and max level and we want to be able to modify this in the inspector this will allow us to modify it in the inspector so I go back into unity and I go select my falling box I don't have a max level field then I can drag up and down or I can go type in like a 300 right but if you only want the thing to be modified in the inspector or really if you ever want it to be modified in the inspector it's the best way and the cleanest way to do it again this doesn't matter too much if you're just starting out but when you get to things when your projects a little confusing or harder you want this to be private and you want to add this serialized field attribute I always do this for everything that goes in the inspector the reason for that is that I don't want other classes and other code changing this value because it's really easy for me to mess up and misuse this max level and have something else that's changing it so if I do it like this save I can still modify it but my other code in other classes can't access it and can't change the value of it the code inside the cube mover can but nothing else can and I did a tutorial and a blog post and a video about this with an example of a car and how you can break your prefabs and break your data by making things public accidentally and misusing them the main reason for it is again just to avoid accidental misuse which happens as your project gets bigger and more people get on it okay I'm building a game that only has one scene and nothing inside it except for the camera and a direct flight it spawns instances a prefab in time gradually using address both nice is it overkill to use address pools in my situation my prefabs do not have any high-res textures or audio no it's not necessarily I mean the benefit of addressable is that you can then unload them and remove them from memory or you can load them asynchronously from another source so if you're never unloading them and you're not streaming them down from something else it may be overkill but it's also an interesting and useful skill to have knowing how to use the addressable system so if you're not doing any of that though and it's really simple then you it may be overkill it doesn't sound like that's the case so it sounds like you probably want to be unloading prefabs removing them from memory as you're going along how does a beginner move to intermediate level of making videogames what's best way to start practice just making games keep going at it and keep practicing and building different stuff there's no like quick shortcut there of courses you can take and stuff but you definitely have to just be you have to be working on it and going through that process I got some courses on it but I'd say like practice and time are the biggest things that'll help you there okay hi Jason what's the best way to go about creating a UI menu system that works with a controller or keyboard keys as well as a mouse and what's a good way to make highlighted option in a menu do you do something simple like change size and color there's actually um in the default system there's a highlighted option or a focused option and you can make it change the color and the size and stuff right in there on those buttons and the navigation system is in the UI is built for that may I'll do a video on that actually was planning on doing UI video soon so might just do a full video that kind of explains this and some of the other UI stuff like using a separate scene for your UI which is the little bit more advanced of a topic but certainly works but just look at the buttons in the unity UI and you'll see there's some highlighted and focused options in there or you can do it different ways the other colors or scales or animation or even changing the texture now the question your awesome thank you have a problem randomizing my money in my game it won't spawn I'm not sure how to answer that need more info sorry I thought your thoughts on building apps assets tour packages tools for unity instead of games for beginners to gain general programming skills apps sure asset store packages and tools no because you really need to know what problems you have to solve or that people need solved and have a good way to solve those for the asset store packs and tools apps though are an easy thing to build and they tend to pay really well so you can get a job doing any kind of 3d visualization app that is for non game stuff and it's really easy to do impressive things in there with unity because you have the particle system the rendering system you can do really cool stuff so I would say apps are a good way the other ones are probably not the best option what's the right way to structure a game with story beats and scripted sequences depending on player progression voices coding and scene management wise um that's a really tough one I don't know if I have a good answer to that it might just because I'm running out of breath and in brain power right now sorry I tried to use photon pun to it by the way if you want more about that shoot me an email and remind me and moving talk later and I can send you some info there send you some advice there a used photon pun to to make a simple game I ran two standalone versions on my PC and it does work but when I try to send a copy to my friend we can connect to each other just photon pun to require IP setting UDP TCP it's been a while since I used pun it's probably a firewall issue though you have to open up those firewall ports to be able to connect to the thing so just look at how to open up a firewall port on your router and then you should be good I mean usually the connections are gonna be blocked by default coming in so whoever's the host has to open up that port on the firewall that'll probably solved the issue if you have any links available for your previously developed games um I don't have any right now but I could probably put one in the description that links to a bunch of them since you know it's being deprecated or what replacement would you use especially for land thank you I'm not sure for land we did a stream on this a couple days ago I'd watch it was like two or three hours of just talking about kind of this and networking in general with my buddy Kyle who's really good at the stuff he was recommending mirror so I checked that out and then just go watch that stream it's hours of content on exactly this kind of thing why do static classes seem to be more popular than Singleton's is dependency injection not a pattern in game development static classes are kind of Singleton's they're just another way to do Singleton's a lot of single things are just a object with a static reference or static field that references that game object dependency injection is very very rare in game development especially like dependency injection frameworks if you do web stuff or enterprise stuff you'll use a DI framework almost all the time out of the box from the start when you're doing game stuff I still use a lot of constructor injection but it's manual it's not using one of the frameworks I find that the frameworks just kind of fight against the engine a little bit too much and make it more complicated and harder for a lot of developers the scene system and the prefab system somewhat addresses a lot of what dependency injection is trying to solve for me at least so I still use constructor injection especially so I can do unit tests but yeah you you're not gonna see much in the line of dependency injection frameworks in game development and I've tried multiple times and every time just kind of switched away please discuss techniques for unity use reusable assets to speed up game development I almost never do I'll reuse a couple little scripts every now and then but unless you're building a lot of the same kind of game you have to make things too generic to make them reusable so I tried that for a while try to have some libraries of reusable stuff found that I always had to change them and modify them and just rewriting them made it faster anyway it made me get better at it and there we usually weren't solving big problems and they'd be I'd be pulling in a bunch of stuff I didn't need and then changing it and then the versions are out of sync so I just stopped doing it what do you think about learning game dev with a JavaScript library I don't know much about it I would say do it in unity in c-sharp instead yeah if there are very little bit of game development that's done in JavaScript I mean I'm sure there's some out there there's probably some people that really love doing game dev in JavaScript but I wouldn't recommend it as the way to go how to raycast to a face find the angle of the face and spawn some new snails on an angle I need to spawn my snails at an angle on terrain and follow the terrain I can do it on a flat surface but my snail characters need to follow contours so when you do the raycast there and a raycast is like um for anybody doesn't notice you're shooting an invisible line into the scene from your camera or from somewhere in this case it's probably from the bottom of the snail what you want to do then is look at what's on the raycast hit that you get back there's a normal and that tells you the kind of the angle you can use that normal to determine what angle to rotate the snail to I can do a video on that or something if you're interested just send me an email I can give you some examples of that I'm trying to go fast cuz I'm just running out of breath here I seen post about using the animator to control animations instead of using the tool from the asset store oh and instead either use a tool from the asset store or make your own script controlling animations to avoid potential bugs what's your thoughts on this what games would you consider safe or unsafe to have extensive use of the animator um I say you can use it for just about anything I wouldn't worry about it until you run into problems with it use it in most games and sometimes we'll do some custom stuff on top of the animator system but the animator system is used in just about all of them for something at least so I wouldn't worry too much about it unless you have really specific problems that you're running into so I'd say you're free to use it feel safe with it it's it's not that bad it's not I mean you might be looking at some really old articles too or maybe these are specific issues that people ran into is there a good way to create reusable unity packages yes you can right-click and you can actually export again I don't really reuse things often but you can right click export where's that option at export package right here pick that and you can export out a unity package from a folder that you have and then you can just pull that in and import it into stuff I use it mostly for art though not for code do you teach C sharp in your unity course uh yeah yeah that's one of the things in the one that's linked in the description there's a lot of c-sharp basics and fundamentals in the beginning at least you ever feel like you've become good at a certain skill that after a while you lost motivation to pursue it anymore if so how do you keep motivation yes I just jump around to something else if I get demotivated and something I'll try doing something else learning something new and switching switching course a little bit I even jumped out of game development a couple times for short little periods and then just kind of realized that I like game development a lot more and went right back into it so yeah I'd say yes just just try other things and try new things to get your motivation back I don't have any really good tips beyond that though where can I find data that's passed to a shader I'm terrible at shader development so I don't know if I could give you good answers for this sorry is there a quick correct way to credit took I'm losing my voice is there a correct way to credit creators of the assets that you purchased from the asset store um I don't know you could just put it in credits page it's not really required for stuff in the asset store the whole Licensing at least from my understanding the licensing just allows you to use it however you want in your games but you can always just add add them into the credits page or something what do game employers what do game employers look for in resumes or cover letters ah this is a good one I'm gonna take another drink while everybody hits like alright I'm gonna cut this in like 15 minutes by the way if I if I had don't in before then I could hear people coming in and out okay so things that employers look for in resumes and cover letters um the first I talked about a little bit be utterly err which is just having things be clean and accurate like don't misspell things don't have screwed up formatting don't everything look weird when you open it in Word or a web browser or PDF viewer that's like an automatic way to just screw yourself out of getting even looked at right the number one thing that I look for and a lot of people I know look for is a portfolio link so people want to see what have you built what kind of stuff is out there what can I look at and what can i play ideally so if you have little games that you've made that you can play that people you can share and people can look at and try out that's a good way to go just make those available on each or symbiote and embed them into your portfolio page because that's when I when I look at resumes I just give through and always look at the ones with the portfolio first sets go load up that portfolio and check it out also if you have a link to something like you're sending something with a link make sure the link works right don't send battle links don't send people code that you want them to go look through don't send like just your github repo and be like hey go read this code and figure out what it does and see if you want to hire me because nobody wants to do that they want to see what you've built when they get further along they might want to see some examples of your code but nobody wants to really just sit there and read through your code when they're comparing you know dozens or hundreds of applicants the other thing I'd say is customize the resume and cover letter to the position talk about the position don't talk about what you want from the job talk about what you think you can contribute to the job nobody cares that you want to learn something or that you want to get better at something and that you want this job because you want to live in whatever city it is or whatever talk about the things that you can provide I mean really you're trying to sell yourself to the company you want to make sure that you're explaining how you're going to be helpful and how having you on their team is gonna be beneficial talk about the skills that you have that are relevant and put those at the top so if you've got a list of skills on your thing and like you're really good at Excel nobody cares right like unless it's project management job put the things that people care about put the specific things for that job if it's a 3d job you know and they're working on a 3d project put the things related to 3d at the top you know put the engine that you're working with they're that they're working with at the top of your skills don't leave that down buried in the bottom you know if you've worked in unreal game maker and unity and you're applying for an unreal job don't put the unity in game maker stuff and then have unreal down at the bottom move unreal at the top reorganize it and make sure that the things that people care about are at the top because that way those are gonna catch the eye they don't have to go dig through and see like okay because people generally just think that the thing at the top is the thing you're best at and then it kind of goes in order just a natural thing you're gonna get when you're reading these things so good portfolio with ideally a game that you can play in 20 to 30 seconds and get a good idea of how it works where you don't have to read a lot of text you don't have to understand like instructions you don't have to give out big instructions and a sheet on how to play it and it's not confusing and then just a really clean resume that explains what you're good at and the skills that you can bring to the table can you do a tutorial on procedural generation yeah I could do that sometime what's a quaternion rotation hierarchy and local versus global space I read global it's Y X Z and Z X Y for local space can you explain why I can't explain why no I'll do a full video on quaternions like the second the question on quaternion so you know just do a video that explains how they work and does it very visually it's not the kind of thing I can explain in words I don't think I'm terrible at that how to access game objects that are not active like find with tag for example I would say don't use find with tag I hate find with tag I hate tags in general because it's really easy to mess up and break things people create copy game objects missed the tag designers work on game objects missed the tag it's just too easy to screw up so I would say find object of type and use the generic type with the greater-than less-than that can find it and there's a get component in children or just setting up those references as a serialized field or something in the on validate where you're setting up a sterilised field and using on validate to grab them as a child or something like that I generally avoid find with tag at almost all costs how do dev kit work I'm not sure what what you mean there sorry you elaborate and I'd be happy to answer though unless you mean like PlayStation dev kits and Xbox dev kits those are kind of a pain to work with and they're pricey and you have to get approved for them they're interesting though it's fun but it's not not an easy thing to jump into are there differences limitations to altering prefab variants using code versus normal game objects no cuz you're just spent essentially just work they work just like a prefab they just the parent prefab or the base prefab if you make changes to that it applies down to all of the other prefabs which makes it really really nice it's a really awesome system how to create a simple performant or a circle with particle systems like a tube circle of glowing neon around a character's foot to indicate character selection I don't want to be a 2-d decal on the ground yeah and just make a particle system that follows the transform position I forget the there's a simulation space and change it to local instead of world and then it'll just follow around the parent object that it's on if you release a game on Steam and start making money off it do you have to give unity a cut nope you just have to buy Pro if you're starting to make I think it's over a hundred thousand dollars MMO with 100 plus players think about adding a system similar to reputation reputation system will keep the player updated the reputation status in real-time their status is affected by monster / player skills is fine to store an update this in my sequel how would you go about it yeah I'd say you store that in in whatever your data store is for the rest of your player data just be a field on the player so it'd be same as you're storing the level or something else is stored in my sequel um or whatever database you're using and just obviously you should only be writing that when the players like logging out or on specific time intervals you don't want to be saving it every time it changes you don't want to keep the database constantly and have that be a bottleneck I've been trying to make goal oriented planning AI for my games a couple of times and I always end up buried and convoluted mess of code that doesn't really work how do i tackle complex stuff like that should I try figuring out someone else's code or maybe wait until I have more experience I would say look at a bunch of examples on how to do that it's essentially you need an AI system that's controlling and setting goals for other AI systems it depends and also sometimes is overkill for what people want sometimes they they think they need that but they really just want a simple state machine that handles all this stuff so I'd say look at some examples of it it's one of the things I was gonna do in the architecture course which is not the course link there it's on all the other videos so and we're it was a question that came up a lot of time people were interested in that or didn't do AI controlling and other controlling other AI state machines what's going the next one is there any way to modify vertices at run time such as waves of an ocean and have the player move up and down with waves yes I've done it with a shader but the player doesn't remain on search yeah you can do it with with the mesh too it's just much slower doing it with a shader is the faster way I'm not sure what the best way to move a player with it if you're doing with the shader you may it may just be easier to do smaller or bigger lower precision changes at the mesh level to better than moving the player but I'm not I'm not sure of a good trick to do that just isn't a problem I've had to solve yet have you considered making a solo game project long term in a few years if so how do you make it work with a family yeah I just do it I do it as your full-time job if you can then you can make it work with families and you're just doing the same amount of work that you would do at a normal job of course you got to save up for that and to make it possible I'd say it's also hard to know whether or not the projects gonna be successful or not right it's a big gamble they say just start working on it in your spare time and if it takes off and become something that you can do um do it you just got to cut out all the other stuff right I think of game development as a hobby as just one of those things that you have to you have to prioritize if you want to do game development as a hobby you got to cut out no TV or whatever other things there are taking a lot of time and start doing the game development side for fun I mean and for me it's just a blast I love doing it and I have fun with it so I could easily sit and just code all day long if my wife didn't pull me away and last one is easy to port games from unity to Mac and consoles to Mac yes the console is not so much the porting to consoles requires a lot because they have very specific requirements and rules on what you can and cannot do they have very specific performance requirements and you have to use special versions of unity to do your deployments out to those things so console deployments are not easy Mac deployments and Mac ports are relatively easy but relatively low payoff because there's just not a lot of game playing on Macs yeah if your game is a huge hit though and you'll prioritize that but I wouldn't worry about it until you're at that point where you know you've saturated the PC market where most the gaming happens well I think we're at the end of questions and I'm exhausted people are asking if this will be published it'll just be in there under the live streams like all the rest of them so you should be able to go back and just watch this whenever you want I think it usually takes YouTube like 15 to 20 minutes to update it so that you can you can re-watch it so it should just be there but you can also rewind and stuff and go back through if you guys like this thing just remember to hit like and share it and all that and we'll do some more of these sometime in the future I have a lot of fun doing them and answering questions so again thanks everybody for coming out and asking lots of good questions and I hope you guys have fun I had a blast all right
Info
Channel: Jason Weimann
Views: 46,234
Rating: undefined out of 5
Keywords: unity 3d, game dev, unity multiplayer, unity multiplayer tutorial, game development, unity (game engine), unity tutorial, unity3d, unity, unet, mmorpg, unity networking, unity networking tutorial, unity networking 2019, enet, pantheonmmo, unity mmorpg, unity fps, unity multiplayer 2019, unity multiplayer game tutorial, unity multiplayer photon, unity photon, unity mirror, unity multiplayer server, unity3d college, pantheon rise of the fallen, photon unity networking
Id: 1p5nT2PAOr8
Channel Id: undefined
Length: 165min 56sec (9956 seconds)
Published: Mon Dec 23 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.