Crunching and building AAA MMOs - Live

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
what's up everybody just getting set up we'll go start in just a second scene if I could get chat to show up in here look at that hopefully that doesn't go terribly wrong all right I'm gonna give a couple people or keep people just a second to hop in and I'm gonna take a drink and then we'll get started hello out there everybody let's see that's weird white in my chat disappear Wow there goes all right I just need to pull up one more thing so I set up a forum where you can just press submit some questions if anybody has questions and talk about crunching and building mmo's today so if you guys have questions specifically about those I'm gonna try to hit those first kind of the biggest thing and I'll probably be on for I don't know maybe an hour or so we'll just chat about these things but first I wanted to talk about crunching once I pull up my crunching Google spreadsheet that I've put together or it's the form actually I don't have my spreadsheet ready whatever we're just gonna go through it because I was kind of curious to see what people replied to in the forum so here let's switch to a desktop view for a moment by the way I see people talking about the panels in the background if you're curious about them they're just lifx panels multiple people have asked about them in the past they're really cool they're on sale for Black Friday so I got two packs of them and they do all kinds of cool little different animations so you can see right now they're in that a morph mode and if I go into the little app on the phone we can change them to see if they get fire to work fire mode so that you see the bottom one now is like a supposed to look like a fire and you can adjust this and all that yeah this will be recorded so if you're curious you're watching it now and you just don't have time you gotta go watch the Super Bowl or something else feel free if you able to come back and check it later if you have questions just drop them in that form down below and go I feel like a color cycle mode they're a bunch of different cool things you can do with these things didn't work right at all the app is a little bit confusing they've changed it stuff but let's just put it back on more for now there we go so anyway yeah if you're interested in those they're just lifx panels you can find them on the internet everywhere we turned down the brightness of that one cuz it cranked up way too high that's this one I think and turn it way way down that's a weird thing with these panels I have to turn them to like 30 for 30 percent or less usually to get him to show up here otherwise they wash out all right so let's talk about crunching and get started so I sent out a survey a couple days ago just trying to get an idea of how many people crunch and how bad it is for everyone else because in my experience crunching has been somewhat of an optional thing 95 percent of the time so most of the time when I see people crunching or I've known people who were crunching it was because either they wanted to improve the quality of something that they didn't feel they had enough time to improve the quality of or they just had fallen way behind on their work on rare occasions though which is interesting here because that's what I see right here the rare occasion one got fifty four percent for how often people have to crunch on rare occasions like the entire team or subsets of the team would need to do some sort of crunching and it would usually be a short time short term this would be like you know a day two days maybe even like a week right before we're doing a big launch a big demo or something else and everybody's just kind of working hardcore crazy overtime because they're going towards something that they consider to be a make-or-break type event right it's a thing where if this goes wrong it's gonna cause long-term problems for everybody so we want to all make sure that it doesn't go wrong the interesting part for me was the 10 percentage of people who marked all the time or 9.4% that sounds miserable and like something that I don't personally know anybody who's been in that scenario for very long I've heard some horror stories from maybe 20 20 plus years ago where people were working nonstop 7080 hours a week trying to get a game released again I think that some of them might have put that into the on rare occasions because they're like oh it's just during the last three months or the last six months but I think that if you're working all the time crunch time there are probably some serious structural issues going on there the biggest issue that I have with working this much crunch time is that just end up well you end up doing bad things right especially as a programmer the more you work or spending more time on stuff doesn't necessarily mean you're going to get better results I've had plenty of times where people just keep coding and coding and coding and then they're working crazy nonstop hours and you have to delete all of the stuff that they did anyway because they were so busy just trying to get a thing done nothing was getting done right so things were getting done sloppily and quickly just to try to get you know meet some deadline and then you find out like okay well we actually need to go back through and delete and redo all of this so a lot of the crunching ends up being for nothing again unless it's for these emergencies like right at the right of right before release you got to go do something it tends to be wasted time at least from what I've seen there probably some scenarios for people crunch and it makes a huge difference and they don't end up deleting everything but most of the time would have seen is when people are working way too many hours they're not doing their best work they're not doing very good stuff and we ended up having to kill it all so I wanted to go down and just kind of scroll through this and look at some of these other data points and then talk about mmo's so the how many hours do you work weekly or did you at the last game job I thought this part was interesting and I felt like maybe I should have changed the green part to be like 41 to 45 because I feel like a lot of us probably work a little bit more than 40 hours a week on our games but not too much more and that's probably largely driven by passion at least it is for me like I'm probably more on that purple line of the 51 to 80 in fact I know I'm on that purple line of the 51 to 80 maybe even on the blue one sometimes but it's good to see that most people aren't right most people are not working more than 50 hours a week I know that might seem like an odd point like an odd breaking point like why is why is it okay up to 50 but I think that for the kind of job that we're doing here making games it's hard to not go above 40 just because most of us get really into it and really passionate about it and it's hard to just kind of like okay I'm done with my eight hours or four of my 40 hours for the week I'm not gonna work on this thing anymore I'm gonna wait until Monday or whatever a lot of the time for me and a lot of people I know like we're working on stuff and then we get home we just want to finish it right we want to see it in action and I think a lot of that is just from that visceral feel of like we've done something and now we can see it in-game and we can show it to people and it's just really exciting um but I was pretty happy to see that you know this basically looks like a big old pac-man for the two smaller numbers which I thought was pretty nice and it showed that there is still a little bit of this area where people are working crazy amounts but the amount of people working more than 80 hours is tiny one person put that in that's good okay and then this was the I'd say the the next most interesting thing I saw about the crunch crunch data was how people felt about it most of them didn't like it but felt it was necessary and I'm somewhat in the same boat when I've had to work crunch time myself again it's usually and as it's really only been in the case where something was about to release or about to give a big demo that was gonna maybe make or break with investors or something else who's gonna have a really big impact or we're going to a show and we need to get something ready for this show because it's got a very hard deadline and we don't have you know we can't push back you know III or some other big event we have to go we have to be there on time so I in those cases I would say I felt it was necessary I also never really had to do it enough where I felt like it was a big deal and the percent of people who really didn't like it really hate it it was small - those are probably I need to do the data pull out but I bet that those are probably a lot of the same people who hated or who are working the crazy crazy amounts and then yeah almost about half the people are not compensated more than half the people are not compensated I've seen this quite a few times where people say hey yeah we're gonna we're gonna work crunch but then you'll have this extra time off that you can take whenever but it's like the time off isn't no when it's kind of like when you have unlimited PTO at a company like you have this time off but nobody is taking it and there's never a time that's good to take it so it's pretty common to get into that scenario of you're working overtime and you're expecting that you're gonna get the time back off later and you never do I just kind of expect it now like if I'm working overtime be honest I just assumed that I'm not being compensated for it in the u.s. that's relatively common to work overtime on games or even any software and it's very rare to be compensated for it on the upside the salaries are usually good enough and the benefits and bonuses are good enough that it doesn't make a huge difference also if I work crazy amounts of overtime I just consciously take some time off you know here and there later on but when you're working full-time at a company it can be it's a bit harder to do that anyway I was interest so probably see that 20 percent said yes and 25 percent were actually paid overtime in cash I assume most of them are not in the US and there's some legal reason for it okay oh you said it in chat you don't think working 80 plus hour weeks results in a better game no I would say it definitely does not probably results in a longer release cycle and a lot more bugs and have you ever been threatened over crunching this one was good too because it was relatively small right like most people never felt at risk and a large chunk earth I guess our reasonable percent of people felt like they might have maybe had a problem and then the percent of people who were actually threatened with it or no in the boat where they're pretty sure they're gonna get fired is relatively small 14 percent if you're in one of those positions to where you're having to do a ton of crunching it's not paid and it's a common thing and you're at risk of getting fired I'd start looking for any job just look for a better place to work you don't have to work crazy hours to get a project done or to do a good job at it in fact like I've said a couple times already if you're working crazy amounts of time and stuff you're probably doing the opposite of getting things done you're probably just causing more problems and slowing down because of it and then a breakdown of what people were working on a lot of people independent only twelve and a half percent on in a triple a studio and the rest in Indy and it was mostly programmers and some designers the other thing I wanted to point out to you is that when I said that I've seen people crunch a lot almost always it wasn't the programmers it was the designers it was just the the design and content team working crazy hours to put things into the games to tweak them and tune them and make them interesting and fun to play so it's not just like a programmer thing a lot of time it was designers or even artists I feel like they had to crunch more than any programmer in any of the places I've ever been all right I want to talk about um mmo's too though so I'm gonna do a full video on crunching you know once I get all of my thoughts kind of together and I think break this data down a little bit more but I just wanted to talk through it real quick and I really want to talk about mmo's and just building games in general so I want to see did anybody submit questions like yeah let's pull over the little question form I get seven of them so let's just go through them real quick and see what we got here first question is well what are your PC specs um let's see we're right now we can just pull it up and check it's an i7 7700 K I believe and 32 gigs and Ramsey's 720 X board pretty sure was a 77 X yeah 70 70 700k sorry so 70 700 K and 32 gigs ram and 1070 is actually looking into getting a thread Ripper though because they look so much faster I don't know if you guys have seen these but if you're building games if you go to CPU benchmark net and just look at high-end CPUs the thread rippers now like where's this one right here 3900 X is insanely fast it's about three times faster than the one I'm currently using so if you've got that at thirty-one 9:54 compared to this one at eleven so it's close to three times faster funny thing is the CPU price is the same right 459 although I'm sure that's probably an outdated price because I've had this thing for quite a while but the new one there I think they were 470 on Amazon or something where was that one yeah 470 right here so if you're looking at buying a process or I would definitely look into these this one's not even the thread Ripper right this is just the 3900 X there's the 3960 that's way too expensive though but yeah I would look at some of these AMD processors now if you're looking at something new they just seem to have caught up and surpassed Intel performance wise and way ahead on the prices so it's a quick question let's go into the next one what's the best way to make a single-player RPG should it be from the ground up or made on another package /set slash library who depends a lot on your skill and experience level so if you're just starting out I would say use a pre-built package like if you're new to game development you've never even thought about building a game before or you've never built something similar to an RPG before I would start with grabbing a package on the asset store and use that as kind of your beginning point I think eventually you'll run into problems and find things that are hard to do but then on version to build it from scratch yourself I wouldn't necessarily try to build a single-player RPG unless you've got some game dev experience before and you have a good idea of how you want to put it together there's just a lot of systems involved in building a single-player RPG you've got to do everything from AI NPC's inventory character set up possibly character customization it abilities Lieut probably some sort of questing system there's a lot and that's all on top of all of the the base stuff and then the combat system that makes your game interesting and unique assuming its combat based RPG it's actually something working on in the architecture of course you're actually building out a single-player RPG and there are just a ton of things to do there's a lot of stuff to do in there a lot of different components and they all need to interact together and not turn into a mess so I would say start with a library or a package or something if you haven't built something like this before and then maybe try on version 2 to build it from the ground up is there's just so many things that you have to come across or that you have to put together to make it work that I wouldn't just yeah I wouldn't just try to start it with no plan and no idea at all all right how would you go about setting up a server for a smaller low budget multiplayer game um in this case I think I would go with the mirror system so just set that up and then run a but it depends I said but that's if you want to do like a real time live multiplayer where you're running around and it's asynchronous or synchronous sorry where the players can see each other moving and stuff if you're doing something where it's a multiplayer game but it's kind of turn-based or asynchronous I'd do a completely different system and maybe set up something with lambdas and AWS where we handle the events or the data through some sort of a web requester or just a direct connection there instead of building up a server just mostly cos you're saying low budget so assuming you're trying to keep that budget down really low you might want to avoid running a dedicated server but it depends a lot on the type of the type of game that you're trying to build there let me pull up chat I can't see chat on here on top of what I'm reading here let's see I'm making a top-down shooter and I'm at the AI part in your opinion how complex should AI be I would say only as complex as it needs to be don't over complicate it and overthink it I've seen a lot of people and companies and companies that I've worked at come up with these insanely advanced or supposed to be advanced complex AI systems where the AI is trying to figure things out and you're building out these giant graphs of stuff that the AI can do and figure out and they end up just never releasing never shipping or just not being interesting and fun I read a post it was just maybe just a couple days ago about how the dumber and AI is the smarter it seems and that's just because when you make AI I'd say smart it tends to just over complicate things and confuse things and make it not feel natural and good I would make the AI just good enough to trick the players into thinking that they're at that smartness level that you want and nothing beyond that over complicating the AI tends to just lead to they said mostly just what I've seen is people are just not shipping or they end up just stripping it down and going back to something simple I think a basic state machine can handle most AI stuff that you want to do a behavior tree can work well too although I generally prefer state machine because I find that they're just easier to understand and debug and go through the flow and kind of get them set up the way that you want behavior trees work well but I'm just not a huge fan of the way that the way that they describe things at least not when it comes to more complex interactions I want to know your thoughts on why big studios are not making games like god of war for mobiles or Uncharted but with mobile compatible graphics um I don't know my guess is that they just don't see it as a market where they're gonna make money a game like got a war they sell for $60 and if they try to do that on mobile they're gonna sell it for five dollars maybe ten at most probably get less sales and make a whole lot less money that's my guess and plus when they target things like a console it's really it's it's a it's quite a bit easier than targeting mobile because you just have this one set of hardware you don't have well now it's not really once there's a six or seven different Xbox or something ridiculous multiple Playstations but you have at least a base level you don't have hundreds of new devices and hundreds of different devices that all act differently targeting consoles easier and I think probably just more profitable as the reason by the way can you guys you guys can all see my screen yeah so if you have more questions I put the link to submit questions just in the description just go ahead and submit them and I'll try to read chat once I get through all of these - so what kind of architecture design pattern is the best for a side scroller game with 30 levels and which one for an RPG in MMO is too difficult for me thanks in advance oh that's so there's it's not like a single design pattern here when it comes to building out a game or a single like just wide it'd be nice if there were just some big architecture names that just kind of represented things look into that but I can't give just like a single thing for this for a side scroller with 30 levels the basic architecture for that I'd say well the basic project structure for that you're probably just gonna end up with depending on the how long these levels are and how they're set up assuming that they're customized so that each level is different you've got different stuff going on they're different objects and they're different assets in there so that you're changing out the theme thinking of like a like a Mario game where you're running around and you're in the ice level and you're in the desert and whatever those would probably just be separate scenes set up and then you'd have a single game state management system or game state control earth that's taking the player through those different scenes loading those different scenes up trying to think of the best way to explain this as a with with a design pattern because it really isn't just like a single pattern it'd just be a game setup I'd set up a single scene for your I guess your general game state related stuff another scene for your you stuff that's gonna pop on top of that so you're not gonna have all of that in all of these levels the levels themselves should be should probably just include a spawning point for your character again just thinking a Mario system there because your characters state could change like from one level to the next right like you get into level 5 you may or may not be the big fire dude or if it's a spaceship you may or may not have these upgrades on your spaceship so you'd have a spawn point in each of those levels you'd load up the level and then initialize the player to that spawn point with whatever their current data is and you keep that current data around in another scene or in some static instance of an object or a scriptable object that's keeping track of the actual player data and then drop the player game object there and the game object itself that I think could probably end up just recreating it when you go into the level but creating it from the data at that spawn point I don't know if that helps a lot with your question but it was an interesting one to talk about I guess let's see how do you go about where answered that yes that is that all right how long would it take for a beginner to developer to make a story based offline game that would take around 20 hours of gameplay I don't know I mean hundreds or thousands of hours possibly if you already have a system for your story based game and it's really just about plugging in the story then it'd be a lot faster but if you're just trying like it's such an open-ended question that like that could be you know you're building something super complex with all kinds of different things in it or you're just building a story let me go to individual mode the questions just popping all around here so I don't know that I could give a good answer for that one on how long it would take I would expect it to take a very long time but I would build out the entire story system first and then dive into actually filling it out so just do like a little chunk try to build out like a half-hour slice of it first and I think that a lot of people should do that for their games if you're building something you're building a big game do try to build the entire thing first build out a little chunk of it just a little vertical slice get a 15 20 30 minute slice of it build that and see what it feels like and not just for the whether or not this game is gonna be fun and people are gonna like it and play it because that's important you want to get it out there and have people do it but you also want to see the types of problems that you run into the code problems the architecture problems the things that break along the way so you can fix them early instead of later don't try to build out the entire thing just get that little chunk let's go onto the next one c-sharp actions good or not for loading and unloading methods into action like current player action sorry just on my wife at the window so c-sharp actions are they good yes I use c-sharp actions in the type of like the event action I use them all the time now for current player action I'm not sure exactly what you're doing here I think what you're talking about is putting a delegate into the action and then invoking that action that's not something that I generally do if that's what you're talking about is essentially like you would say hey I have this action and I'm just assigning it here maybe pull up a bit of code and just write out what that would look like so you'd had like a public action do thing whatever or let's call this current player action and we'll make it private right and then we had a void activate current action and then what we're doing is saying like current action dot invoke right and then having a way to set the action so you'd have like a void set action action new player action and then here you could say current player action equals new player action let me maximize this and hopefully it's readable so assuming that you're asking it like this where you're like hey I've got this action and I set the action here and then whenever I tell them to activate their action they do it so like maybe this is bound to if the player presses left click right so they hit input mouse down and it calls this activate current action I don't necessarily do this because I find it just a little bit harder to debug and to tell what's going on instead I would pass in a class for this so it would be more like a I action maybe I don't like I action I think you do or let's see me like I player action right so and make an interface like this and have an AI player action and then I would set the I player action to this thing and then the this would have its own implementation and it'd be I guess it's you're ending up doing something kind of the same but you're wrapping it and making it a bit more specific to the type of thing that you're doing so it's not just any old event action we're actually pass again we'd be set in some implementation here so you'd have like an action hopefully this is making sense that everybody following along but it'd have like a public class jump action and and then what I could do is say hey set the action to the jump action then whenever they do the jump action it does the thing now invoke wouldn't be the action call it like act and we'd add it on there and then we'd add this to go at implement the interface here and then this would like do the jumping so we'd be able to set an action here we'd pass that in on our player right now we're in an inventory script just ignore that it's opened up an existing project so say we're on a player and we said hey the new player action is jump so whenever they hit the button they jump we'd pass in the jump action and then our acts activate current action would just do the jump action instead of whatever the other action is so I do that instead of just the generic again mostly just so that my code is easier for me to understand and I know what types of actions these are and I'm not just passing in arbitrary delegates or methods that we're calling let's jump up in the next question someone's kind of complex is it a good idea to use who do you need to make procedural house or VFX for unity please tell me your best idea so I haven't used to Dini personally in any projects yet but we are I think going to be using it for pantheon stuff some be diving into it hopefully quite a bit pretty soon I would say it seems like a good idea I have not heard a good argument against it so if you're looking at it if you haven't used to Dini let's just pull it up real quick it's a procedural generation system let's see that's it I'm not sure where their main page yeah Houdini Ford Games so it's a tough to pull up a good example of it I haven't seen too many of mix I like said we just kind of made the decision that I think we're gonna be doing it but it's a procedural generation system for generating world's content all kinds of stuff and it makes it so that you can pre generate big large areas and then go in and change them and modify them and do all kinds of cool things it seems like it's a big hit with everybody who's used it so I can't see a reason to say no I would say if you're looking into it definitely look closer look further and give it a try can you do a or plan a tutorial on how to add bought a is to a multiplayer game possibly I need to do a video on how to set up a multiplayer game so maybe do that as a follow up to that so bought a is and a multiplayer game aren't really too much different than bots in a single-player game it's more just the multiplayer part of how to replicate those and get those moving around and how to run them on the server if we're just running in a like a client-server architecture or we don't have any clients that are authoritative by the way if you guys don't mind hitting like really appreciate it number up like over a hundred it's like everybody that's in here head it would go way up fast okay let's go on to the next question how to build a game studio when I'm 15 I'm already working as a unity3d developer more in terms of creating the team and making it all work not just making random things taking a lot of time that's interesting so building a game studio is a lot different from building a game it's much more of a managerial type experience and job it's a lot more about managing interpersonal relationships and keeping people on task and keeping everybody working on the same thing I wouldn't necessarily start with building a game studio until you're building a game I'd start building the game first and then work on a studio especially when you're at the age at fifteen or you're not at a point where you're gonna just come in with a bunch of money where you can hire people because getting people to work on a project at for a studio or even outside of a studio where it's all like essentially no money up front where you're not getting paid is extremely hard and managing that is way harder than managing the studio where you're actually paying people so I would start with just going really small you know just find one other person that wants to work with you on projects maybe two other people and start working with them and collaborating with them as much as possible if you can if you're gonna work with other programmers to try doing some pair programming just do it online and work together on writing some code and building some stuff together and get used to that process of seeing each other's code working on each other's code and editing it the one thing you really want to avoid when you get into this scaling up where you're not just yourself but you've got other people there is silos where you end up with one person wrote one system and knows that system nobody else knows it nobody else touches it because they're afraid it'll break or they don't understand it and then you have another system that one person worked on and nobody else touches and everybody is afraid and it'll break so nobody improves it nobody makes modifications there anything that's wrong with it people just continue to do and this this doesn't just happen with small companies or small people starting up this happens at big studios all the time I've seen this many many times where there's like one guy that does Network stuff and that's it nobody else understands the network when that guy leaves if there's debug stuff in the network code that debug stuff stays in the network code because nobody understood that's what it was therefore that's what it was and it kills performance for years to come literally a true story we've had situations where one person knows the database stuff and that's it they leave and suddenly it's just nobody knows how to do anything with the database or one person knows the rendering pipeline and nobody else so you really want to avoid that at all cost and pairing is a great way to minimize the risk of that and kind of break down those silos I'm gonna go on to the next one I made software using unity and sold it in a thumb drive about sixty thumb drive sold when do I reach point of having to pay for unity I think that's when you hit a hundred thousand dollars in sales so unless you're selling those for you know $1,500 a piece I think you're good when asked where to learn you often direct to video tutorials would you recommend any books about unity slash c-sharp programming for unity and design none that I can think of any more and there were some but they all just get out of date so fast right the the language changes and the engine changes so much it's really hard to keep keep things in print that are updated I don't know of any that are super up-to-date to be honest that's why I like to do videos my navmesh component works well in the editor but when I add a few more a is using the navmesh component and made a level with occlusion culling on it works fine in the editor but when I port to mobile some agents won't work and some don't Oh some work and some don't um I don't know the answer to that I would say try attaching to your attaching when you're running in mobile and doing a little debugging and see if you can figure out what's going on but I'm not that's not a problem that I could got any thoughts or insight into immediately if anybody in chat has an idea of why that might happen though please just drop drop a message and let us know I just can't think of anything offhand oh you know what let me go into stream labs and see if I can add chat onto here too people can see there let's see how that works okay I don't know if it's gonna show up or not okay um how to write a story for the game um you gotta get good at writing I'm terrible at it myself I I've tried multiple times I gave up on trying to be a game writer slash designer I'm not that good at it um I have a discord server somebody asked why don't you start one I have one I just don't talk in there very often there are quite a few people in there all the time though I will link the server down in chat in just a moment let's go do that now so invite and we'll set this up here we go copy it and I'll paste it into chat is unit testing worth the time and effort if you're the only programmer on this project and more or less know where to expect your code to change yes if you're going to keep the project around so if the project is gonna last more than maybe three months I would say yes unit testing is worth your time and effort because while you know it now in two years you're going to forget it right you're gonna change you're gonna be a different programmer and you're not gonna remember how everything works and eventually if you're still working on the project making active changes you're going to break something you're gonna break something unexpected and it's gonna be painful and a problem right so you want to really assuming that you care about minimizing breaking things in production and you don't want live or bugs going live you definitely want to test as much as possible a test ideally everything I've been come a convert somewhat recently to the idea of testing as much as I possibly can in automating all that testing so that things don't break in the future every time I write tests I discover something new I find a bug in existing stuff just accidentally while I'm writing tests and it prevents the newt the bugs from reappearing later and I think about working on triple-a mmo's like we had literally we had three buildings that Sony one entire building was dedicated to QA QA his job is literally just to make sure that the programming and design teams did their jobs properly I guess so a lot of the time people say that QA is there just to make sure that programming did their job correctly but in games it's really programming design and art so we can't necessarily get rid of the need for QA completely because there's design stuff and we don't have a good way to automate testing of whether or not designers designs are good or they work or they make sense and we don't necessarily have a good way of automating all of the art testing we can set up some tools to make it easier to test art but testing art still requires at least some level of visual inspection the code side though theoretically if we're if we're doing our jobs right we shouldn't be sending any bugs to QA right we should be sending code to QA that is bug free that's automatically tested and we should know when we send the code in when we commit it that it works and there are no issues a unit tests are really the only way for us to know that otherwise we're just guessing it and assuming that everything's good we don't know it for sure if we've tested all of our project and we can run those tests we have verification that hey what we did works and not only that it didn't break other things so I'd say yes test test test again if you're doing a quick throwaway project you're doing a hackathon doing some little thing that's gonna last for three months you're never gonna touch it again it's much less of an issue on those bigger projects where they're gonna stay around though tests like crazy how to mmo's handle all the armor sets for different race character proportions very differently I've seen them do it in quite a few different ways sometimes there are different versions of the actual models a lot of the time what would do is make the the armors actually scale and adjust to the characters or to their characters race essentially so the race will have some markers on there or I have some markers on the character for where the pieces are going to snap to and what they're gonna scale to it's actually kind of a big pain in the ass to be honest getting the armor sets and items to show especially armor sets to show up correctly on different races and different characters can be a lot of work a lot of time again you'll have to do custom versions of them or modified versions of the models too I've seen like some games I've seen that's literally what they do exactly every race has its own version of the model that's a lot more artwork though it's a lot heavier on the art pipeline so what we can do is make those things scale based on the race with some vegetables I haven't done a lot of it myself so I don't want to dive into the real details of it but it might be something we talk about in a separate video just on how to set up our more characters is not just mmm oh it's gonna be the same for single-player games where you can change your race or modify your character dramatically alright this question okay let me see if this is all showing up right okay so it says this question is a bit off-topic but you talked about game dev opportunities in a previous livestream and something that did not make a lot of sense to me well he said that a lot of game dev companies pay quite a lot 100k plus the question is why aren't you working in those companies being is being indie more profitable for you or did you make enough money with these companies that you don't have to worry about your financial situation in the future oh you can skip this if it was too personal um no so it's a good question right there are a lot of opportunities that pay well over 100k right the more senior advanced game dev jobs can pay into the low twos sometimes even higher than that most of the time though they also require you to be on site all the time and you got to work with large groups of people and a lot of time manage things or mentor people while you're there when you're at that level working on site is not something I have any interest in anymore I've gotten to the point where working indie totally supports my lifestyle and allows me to work from home and record YouTube videos courses and all kinds of other things as much as I want and I really personally like the freedom of it and I don't have to worry about the money side at all I want to talk about game salaries though so let's briefly talk about these so when you're starting off like an entry-level game dev job depending on the area is gonna pay dramatically different but in the area that I'm in in Southern California you can probably expect to make anywhere between it's a fifty and ninety thousand as a starting game programmer based on your experience the exact area and just how much that company really wants to hire you or how much that company has available all kinds of random little pop-ups appearing so that's just when you're starting out though after a couple years you should be able to make quite a bit more than that but when I started out programming okay let's see my first actual programming job in the triple-a industry was only making I said well they better still decent mine is fifty-five thousand right when I came down to work at Sony as a programmer and I didn't realize it at the time but that was actually pretty low compared to everybody else there and just the standard so it took a little bit of time to build that up and it'll take that I think for anybody to build up you're gonna be able to I don't even know like I feel like I'm just kind of rambling now but over time you're gonna be able to build up the amount that you're worth and the amount that you can make in the game industry pretty dramatically and once you hit like that I'd say a five-year mark if you're at least again in this area specifically you should be over a hundred thousand get as a programmer in Southern California or probably anywhere in California at least as game program again that cost of living is dramatically higher here so those those rates are gonna be higher but if you're in the Bay Area 100k is probably around a starting entry salary again because the cost of living is higher but again to why I'm not working for those it's mostly just I really like the freedom of what I do I work I get to work on triple a MMO from home and do all of these other things and have a blast with it so that's why I don't work at any other company but again also for anybody it's not sure I am working actively on a triple-a MMO - it's just um I do it from home know and I get a lot more done this way it's surprising - because you know a lot of times people think that if you work from home you know you're just not doing things and I've seen that in the past I've been the companies where people worked from home that really just meant that they had their laptop around and the answered Skype if somebody sent him a message maybe they spent 20 30 minutes during the day working but when you work from home full-time and your job is just or from home one or two things happen either you get super productive and you realize that you're constantly at work and you're always able to get things done and you feel like you're not wasting time or you waste a lot of time burn out fast and that job disappears so if you don't do that if you don't do the whole like I'm gonna sit around and do nothing and just randomly respond to Skype what what I found and what I think a lot of people find is that you just you end up getting a lot more done right you get more stuff done in less time I think part of that too is just the whole idea of going into an office right when you go into work even if you're not doing anything you're still at work so it still counts and you can still kind of I think psychologically trick yourself and your whole team into thinking that hey they were at work no five days this week so they obviously worked five days worth the stuff a lot of time that's not the case though I mean how many times you go to work and you see people just standing around hanging out in their offices talking talking about random stuff going for two-hour walks in the middle of the day or they just go blab about some random non-work-related stuff right and I mean sure sometimes you need breaks but a lot of the time that just becomes the norm where you know in an eight-hour day you're working two or three hours and the rest of the day is just wasted in either meetings or preparing for meetings or waiting for meetings or going to talk to somebody real quick or somebody coming to talk to you or hey we need to have a real quick team huddle and chat about something like all of those things kind of disappear when you're working from home and when you're working kind of on your own and you have to manage your own time and it really just becomes about what did they commit doesn't work does it get the job done doesn't meet what we wanted to get done this week and you can really focus on that but again you might end up doing what I do and just working a ton - yes when you work from home only work from home you're kind of always at work and my wife tells me that all the times I work way too much but you know every time I wake up I walk down I'm in my office and like it's just there all right yep it's interesting Ben just commented in chat there have been days at work and he has not been able to muster construction code and just watched YouTube were gone 34 35 minute tea breaks I is the same man we do go for like hour-long Starbucks breaks or to walk down to Starbucks and go get coffee and hang out and have some pizza and just chill because yeah I'm just not not ready to code so I don't know I feel like when you're working from home that time doesn't just automatically get counted towards your productivity and you can't trick yourself into thinking that hey just because I drove to work today and sat in the office I did something valuable right you actually have to do something valuable to to get that feeling so I feel like if you if you can be motivated from home and you can avoid the distractions and not have too many of them going on you can get a lot more done in the same amount of time or in less time okay do you know the cat like coding blog what do you think about his tutorials I do know it I love it they're great they're usually really in-depth about specific topics and I find them pretty damn interesting you like the picture of vanguard on the wall I love that to you it's up there in the corner by the way for anybody who doesn't know it's a MMO is actually the first triple-a project I got to work on it was a lot of fun it was one of my favorite games and had a lot of really cool features in it and pulling a lot of the really cool features from that game into Pantheon the new game that I'm working on - what is my go-to IDE that would be writer jetbrains writer this one right here I really love this IDE this editor I was a big giant visual studio nut as you can see here's my my visual studio love here this is a WPF project it's not unity stuff but I used to use Visual Studio I don't know since 2005 all the way up until 2019 as giant fan I still use it a little bit for some things but if I'm building a Unity game writer is by far my default choice and there are a lot of reasons for it the biggest just that it encourages you to do good things it encourages you to refactor your code and make cleaner it gives you hints on when you do things bad here it's just telling us hey you're accessing the transform component twice you could make that more efficient I don't care about it in this very specific case but a lot of the time when we're accessing things I do care about it because we're doing it in an update loop and I want to optimize these things or to tell me to use expression body properties or expression body members all kinds of things I really like it so I'd say writer by far go for writer never free trial available - why are using phpstorm ID instead of it's writer why don't you make a vlog or something chilling out with friends and family in addition to just making educational videos uh-huh maybe I will sounds like fun just kind of chat and talk about game stuff or talk about game development and yeah I was working on Pantheon somebody mentioned in chat oh people can't see my screen I'm sitting here blabbing and showing off my screen and oh goodness okay let me go back that was my fault so when I was talking about writer this is what I was showing so Shannon here's the little tip that it's given saying hey repeated property access or the expression body properties I do like get returned items the correct way so you can do that and if I just put my mouse over here and hit enter you can see it's recommending to cutting these four lines down into one so because hey you should do that and then when you do something wrong it'll tell you hey this is what's wrong with it so you know and it gives you like a full document or web page that explains why it recommends certain things so I really like it for that okay let's go on ways to fake shadows yes the easiest thing I've done for that is just throw a like a little circle underneath them so like a flat quad underneath them that just is black circle and does like a real quick fake shadow there are a bunch of people have done similar things to this where you do these little cutout shadows below I'm not sure of other really good ways to fake shadows I think I can't think of anything else that's that's the one that I've done the most though or just put it like a little shadow underneath the dude basically game ideas for portfolios I always recommend go with something that people will understand so something that's a take on an existing game so people can get in there and play it but add in your own twist make it unique and slightly different because you know it starts off one way and then jumps into something totally different or somewhat different one of the good examples I saw of this was an asteroids game so it's like starts off like asteroids and then 20 seconds and you start getting upgrades that shoot out different directions and suddenly it becomes like hey it's like asteroids but it's got these extra interesting new mechanics in it so I'd go with something like that something where it's a well enough known that you don't have to explain it to people how to play they can get in and play it right away but has your own special take on it so it doesn't just feel like a flat straight rip of a game or like you followed a tutorial also make sure that you can play them online so that people can actually get in and play a WebGL version of it they don't have to download it or anything else thing you want to make sure that it's as accessible as possible otherwise people just aren't gonna play it if you're applying for jobs and you're sending out and executable you're probably ruling out 75% of those automatically because people don't want to risk running it on their work system and getting some random virus okay I'm looking at making a complex interaction system when a single NPC or something else has different possible interactions like dialog training quests etc thinking of making an interaction class that inherits from a scriptable object but I'm not sure how it would update it accordingly to story ideally NPCs would offer different dialog depending on progress but if the player has an active quest they would default to their dialogue in the quest dialogue my only idea was to dump everything on one character but I'm guessing main characters would end up with thousands of ifs to check every quest and world state okay let me think so single sin PC could interact differently depending on what your characters current state is so we check to see if you're on a specific quest and maybe do something specific for that quest let me see the default so if they're on an active quest for that NPC they would go to the quest dialogue form otherwise they would show some default stuff so I think what I would have here is a I would have two separate systems here there'd be a state machine for well let me think because it's not it's really just like a single interaction system on this guy like a dialogues it's really just like a dialogue system and maybe a training system and what you want to do is control what thing pops up based on their quest state I think of how I would set that up so I don't know that I would necessarily you shouldn't have to check every quest in worlds date or anything like that you should be able to just check whether or not the character is on a quest for that specific NPC in which case you probably have a set like there would be some sort of quest data for your character right this is I assume for your player assuming a single-player game and just be some single singleton or static object there or it could be something that's related to the character if it's multiplayer but you'll have a quest object a request data object that has all of your quest info for that character and you would check that on the NPC interaction I think I would pass and the thing that so you want to interact with an NPC I'd say hey NPC dot interact and pass in my character if there are multiple characters otherwise maybe it just reference it inside there and then have it check to see if you have a quest with that specific NPC so I guess the quest system would say hey am I on this quest and then the NPC could just check to see if you're on any of its quests I'm going to just be like a dictionary lookup of the quests that you're on so I guess like you'd have a quests object on the character have a dictionary of the quests and then their current state or state data it could also just be like a list of them or a hash set of them of those quests like the quest so sort of like a quest data object that's got the quest info in the current state of the quest maybe not even the definition of the quest right it just has like the current state of it and then you check against that on the NPC when they interact to see if you're already on it and then in their decide whether to show the new quest available dialog or to jump to a specific point in the dialogue I think it would be like a dialog controller on the NPC that determines what dialogue to show because you're assuming that you either want to show like the Welcome dialogue or the here quest info like here's some stuff about your quest dialogue and thinking of this more than like a World of Warcraft like you run up you say hit Hale to this dude and he says hey I'm water for some random gnome I want you to go kill these things here's a question right and you get it you accept it and that's all through a dialogue so there's like a dialogue system that at the end adds a quest so you've got this dialogue state machine essentially that you're running through and then adds the quests at the end and then the entry point for that on the entry we could have just a simple check that says hey in this dialogue when you go into it if you're already at this point like you're not so much at this point but if you have this specific quest flag then jump over to this point and that's I think I would set up some flags as well as the quests and then have those flags be getting flipped on as players progress through the quest and then have those flags be input points in the dialogue system so if you have a specific flag instead of going on the entry right to the beginning we'll go over to whatever point it is that you want to go to with that flag and you'll end up with a lot more control so that way you can go okay the flag is a they've killed one guy all right you can go into one sub subset so say you've killed some but not enough or you've killed all ten you go into this other point and then it says hey you finished it here's the next piece of the dialogue blah blah blah and here's the thing to finish your quest so I think I would set up a full state machine for the dialogue a flagging system that your quests are checking for for their current state as they're checking to see whether or not you've passed some flags not necessarily storing all of that state in the quest but storing it in like a flag system for your character and then having that quest checking its update state based on those flags I think that's the most robust way to do it so that you have full control over that flow full control over where things go in and out of the dialog and the way that the quest updates in and around so you can have just anything can set a flag and progress the state of that quest along I hope that kind of makes sense I'm just thinking of how I would end up setting it up in a bigger scenario there but yeah essentially a big dialogue system a big state machine there that has entry points that are reliant on a flag so that whenever you hail the NPC or walk up and start interacting with the NPC it goes in checks the flags finds the the one that matches and then goes into that entry point have you had to handle a lot of data for users and cloud databases eg stats items Bank quest progress everything else you need to store or how do you handle a lot of that so I haven't I wouldn't say I've done it much in what you would call a cloud database but I mean in a database in general I've done a ton of and then those are you know they just run in the cloud right they run on AWS or something and really a cloud database is just a database that's running somewhere else where you're not managing it so how do you handle that I would say you store it you break it down into well you have two options for it you can either take the character and take all of their info serialized it out drop it into a big JSON blob and then pull that back in whenever you need to that can work fine as a good starting point there's no reason not to necessarily start there and tell things get too complex then when things do get more complex though and you know that you're gonna need a database you get to the point where you actually need the database and you need to store all of these items off and you need to be able to query em and do other things that databases are good at that's when you start just creating separate tables for a lot of these things so items for instance would just be a table of like so you have like a character table right so you've got lots of characters in there if a character table that's got your character ID it should just be like an auto incrementing integer and in a standard database a name maybe a user account ID if you have multiple characters per user and then maybe a little bit of extra data on the character but not much then the items table would just be a table that has character ID and item ID and maybe nothing else you might not need any item specific data beyond that then you just load the character you load all of their items just by ID and then instantiate all of those items on the player when they actually log in and spawn you just create all of those items from that that link right there you don't want to store off all of the item data essentially and that's how you can handle saving off a ton of them you could also do something like that in JSON scenario or some other non database system we're just saving off the item IDs instead of the entire item what happens or gets more complex those when you want to start customizing items because then you're gonna need another set of info either in the item probably not in the item table but probably more in like an item table that then allows you to set up with the customizations to that item our the main reason I wouldn't necessarily put it into an item table if you're using a standard relational database so you could end up with just a lot of columns that are unused for things like you might want to be able to modify anything on the item like the strength the damage the health or whatever you don't want to add a column for all of this so having an item mods table that just has the item ID the mod type ID and the mod amount makes it I'd say a lot easier to manage where you're not having to make those changes and you just go in and add in a new mod for the item you just add those as objects on the item right you're spawning when you spawn the item you load up all the mods and then you instantiate one for everything in the database yeah and then it's also easy to save off and pretty easy to query all right let's jump around looking just taking a quick peek at the chat some news asking again if this will stay on the channel yeah this will still be available so you'll be able to watch it later and let's go to the next question for the server side of an MMO what kind of architecture is best suited for them CQRS MVC a hybrid our most servers handling event sourcing when a request is made on the client side does the request get offered to synchronize queue and then pulled for handling how do you determine what type of action should be handled in a synchronous versus synchronous etc Thanks okay it's a big big question so CQRS by the way is the command Kure query response what is the S stand for again that's just segregation Oh command query responsibility segregation it's essentially what happens is you're sending out a command and then you're getting a response back are you getting a query back or not really a query but you're getting a response back from the service a send out a message and then something comes back to tell you whether or not um yeah whether or not it happened but you're not getting back the same object is if you read right here says it's a different model to update the info then you get to read the info or MVC or a hybrid so most of the time it's I'd say it kind of does fit into that CQRS but not completely what happens with mmo's is everything needs to be a request from the client almost everything I shouldn't say everything because some things we just want to cache client side for performance right we don't want to necessarily make a request to the server if we already know what the response is going to be and there's no I guess cheating implications right like if we want to open up our inventory we had I we don't send a message down to the server saying hey a player wants to open their inventory can they open their inventory just pop that open immediately it's when we want to do things that should be a server authoritative which is most actual interactions not moving moving is one where we do things a little bit different but attacking things or toggling on an often attack replacing an item looting an item even setting a target is one of those things where sometimes we just don't want the client to be able to do it but what we do on that in that case really is we allow the client decide it then we send it down to the server and then the server then can send back a message and say hey no that's invalid and then clear that clear that out but we also cache on the client whether or not they're allowed to target a thing right so let's see how does it so what what generally happens is that all of these messages get sent in from all of the clients they're pulled on an X on another thread that's reading in the network traffic and then they get queued up to their very specific objects right so the player whatever player is making the request their player object on the server is going to handle that event it's gonna get the event that this player wants to do this thing it's gonna run through whatever it needs to do to make them do or not do that thing like they want to loot an item or they want to send an invite to somebody else in the area to join their group it's gonna do that work they're usually on on that next tick and then it's going to respond back to the client immediately so usually what happens I would say almost nothing is really async when it comes to handling these other than the fact that we're reading in the messages asynchronously everything else is pretty much synchronous so we're only running one player action at a time we're only responding to one yeah one player thing at a time so they have to be fast they have to be almost instant there are a couple cases where we might start something off and then send out a message later like we start to cast an ability we might kick off a process that says hey start this and then we have a timer go that's watching for when that timer ends and it's got a callback to actually finish the ability but we're also listening to see if they've moved or anything seized I hope that kind of helps I don't know if that really makes a lot of sense there are some alternative ways to do this the problem that you can run into when you make these things asynchronous so like multiple players can do things on separate threads that interact with the same item for example you're gonna run into problems where you can deal with it but it gets a lot more complex and you don't necessarily need to make the player interactions asynchronous to be fast you can make it fast without that asynchronous part on just the server reactions but you have to be I guess just really disciplined on keeping things clean and keeping them optimized you can't sit around and do slow things you can't be allocating a lot of memory in there or looping over big things you have to keep things fast and quick which is generally where things kind of fall apart this is why mmo's get hard because you can't just make them asynchronous easily um it causes all kinds of problems causes bugs and it works fine when you're playing a single-player and then suddenly everything breaks and you're spending years or months trying to figure out why things are busted I'm gonna go onto the next one this is a big one when did you start making games I think the first time I tried to make a game I was like seven but it wasn't because like I was some game making genius or anything I was just really desperate I was seven or eight years old and I had two games for my old Commodore I think was like a vic-20 or Commodore 64 which when I was on first and I just didn't have any other game so if I wanted games I had to figure it out and then I had these little magazines that had games that you could type in at the back of the book so I'd be like three or four pages of code you could just type in and it would you know suddenly run you'd have to type it every time you turn the computer off because it would lose it didn't save anything didn't have a floppy disk back in the day or a hard disk for that matter so yeah started early out of necessity and it kind of led and down an unexpected path Oh see if I can get this to work again okay so here's a follow-up to the question earlier about actions on to go over this she said a previous action question was talking about this so he's got a scenario with an action current player action and an update that runs the current player action okay oh okay I see it so then there's a move player and aim and current player action is changing from aim to move player and then when we switch to stop moving we're switching from move player to aim so essentially this unregistering aim and registering move player and here unregistering move player but registering aim so if you have to remove everything from current player action you can so yeah I would say I would have avoid this in general for a state machine instead because I think that with a state machine you get the same level of control probably a little bit more control and it's a bit easier to understand and follow so I would say go with instead of switching from a move player to an aim in an action I would switch from a moving state to a naming State and then do the code in there mostly just because I think it's a little bit easier to understand and probably a little bit easier to unit test as well this is an interesting way to set it up though but um yeah I think it would just scare me a little bit too much is it you to not pay for a unity license once you've reached the requirement I would assume so but I am NOT a lawyer I have no idea I think that once you hit the hundred thousand it should be pretty easy to pay for for unity it's not too expensive especially not if you're making a hundred thousand on it how to make a nobility system slash skill system like a MOBA I think you should make a series on that perhaps I should as a MOBAs ability system is pretty different from a lot of other games so a MOBA which is that mobile online battle arena kind of like a legal legends right it's the number one example there the skill system or abilities for that are all very it's a specific to the character because each character is getting like for the turnaround time on adding those in is weeks like they're not coming up with an ability adding it instantly and then implementing or like their turnaround times they design it long before they probably come close to coding it and then they start figuring out how they're gonna set up the art how they're gonna make it work how they're gonna set up the actual ability and my guess is that in something like League they're probably very customized but through some sort of a little mini scripting system by now I think when they started they probably worked all hard-coded in they probably by now moved into something where they can script them up a little bit but do a lot of custom work for them I think it'd be an interesting series to do it's definitely very different from how I would build and mmo's ability system though because those when you're building out an MMO you might think like okay there are like a dozen maybe there are ten classes right and each class has 50 abilities just picking some semi random numbers and you're thinking okay we got about 500 abilities and then you're like yeah there's probably like another 100 more on clickable items right and you might think I okay maybe we're like 600 abilities in in a MOBA type system a system where you're scripting these up I think it's not too unreasonable to do that you could probably get away with it you could write them up and create relatively timely and timely matter when it comes to an MMO though it's the player abilities are a tiny portion right it's like this small little chunk of it I think to just ban Guard Vanguard last time I looked it was a long time ago it probably I don't know the exact numbers now in fact the game is dead now but last time I looked there were over 30,000 or 35,000 abilities in there very small percentage of them are player character abilities almost all of them tend to be NPC related abilities because with an MMO you're building up all this content and it has to be the NPC's that you're putting together and these encounters that you're putting together need to have custom abilities they need to be able to do all kinds of different things and things that are slightly different from you know the frog locks and the other zone over there or the merfolk there they need to all have these different abilities that just do different things not only do they look different but they have different components to them in different ways that they act so but gets much more complicated when you get into an MMO I think an ability system one would be fun though because most people aren't building MMS right they're building smaller things like this where you're gonna end up with maybe a couple dozen abilities where can I see all the games that you worked on there's some on Steam search for rank 17 on Steam you see a lot of the VR games that are made don't own them anymore EverQuest to go look that up Vanguard you can go look that up there's some mobile ones they're all lot smaller and less exciting though is it wise to make a single-player game RPG first to test the people like it and after that an MMO if there are enough players I would say that don't make a single-player game thinking that you're going to just convert it to an MMO you can make a single-player game first see if people like it and then use what you've learned there to start building an MMO but just don't expect that it's gonna be like a transition where you take your single-player code and it becomes MMO code it's going to be very very different the way to do things is very different and not just to an MMO but like going from single player to multiplayer it's a huge jump right it's a total mindset and a paradigm shift so yes I would say make a single player first probably before building an MMO it's gonna take you a tenth the amount of time and you're gonna be a lot more likely to finish it and be able to get a lot more of the story and interesting stuff in if that becomes popular and you like it and you really want to do an MMO then build an MMO after that what are good resources about making an MMO I don't know I don't know very many which is one of the reasons I like doing these talks and just ask answering questions about MMO stuff because I haven't found a lot of good info on making them about myself I'm halfway done with a modular character pack that was originally going to be for personal use but now I'm considering selling it on the asset store the thing is I originally was gonna use shape keys to prevent clipping but all the modular characters I see in the asset store made of separate pieces my problem with those is that unity light kind of makes it obvious who will wear the body part starts and where the other begins so I don't know what to do to prevent this any tips also any recommendations for must-have modular character Tam painted post-apocalyptic survivor if that matters well I'm it's pretty exciting I like the idea of the modular character pack that you're putting together I don't know if I have any good tips on how to make them look better though it sounds like the lighting issue is causing the lighting issue it makes it obvious where one body part starts and the other begins it's not something I'm good at good at building neither I don't know if anybody has a good answer in chat please drop it in there because I've got nothing for this on how to how to get these to look right when you're putting together these modular bodies I just somebody else has always done these for me so I haven't had a chance to do it what kind of spatial partitioning data structure would use for an MMO server-side code usually a quadtree sometimes an octree if we're gonna go three dimensions so if you haven't used a quadtree just definitely look it up for everybody who's watching doesn't know what a quadtree is I would say just go hop onto Google here look up a c-sharp quadtree example maybe one of these oh here we go yeah so maybe check out like this little c-sharp example that explains it and shows what it's doing and or some visualization for it but that's essentially what we end up using usually it's just a quadtree you start off though with a simple just grid alright start with a grid like no every everything is the same size grid and then switch over to a quadtree once you start to see the performance problems there and then if you go three dimensional go to an octree that's what I would do Pantheon or other projects when are they going to release I wish I knew I don't know if I'd if I did know I probably wouldn't be allowed to say either but I don't know do you have a streaming schedule I want to know how often you'll be doing YouTube conferences I don't now but I might end up putting together one it's been a little while since I did the last stream and I'd like to get these going regularly it's just life and other things getting in the way preventing me from being somewhat consistent on these but if I do end up with a consistent schedule I'll put it in the YouTube channel maybe I'll put it up on the little banner there you know they a lot of people do that but what what times and days are alive so I don't know I like to do this lot though as a new game dev should I be actively avoiding a remote or solo work project so I can be in a team with more experienced programmers and ask and learn faster no I would say remote and solo or I would try not to do too many solo projects remote stuff especially remote stuff where you can pair online would be great I wouldn't the problem the main reason I would say don't avoid them is that just because you're on a team and person does not mean that the other programmers that are necessarily going to be very helpful or help you learn so when I wouldn't expect that to be automatic some places are really great at that you're gonna learn a lot from the other developers you'll be working actively with them a lot of places will just take you in and shove you into a corner and you're essentially working solo or just like your remote but you're in the office and talking to people every now and then so I would say no just look for remote jobs too and try to do some pairing just working with other people as much as possible okay after I start trying to implement solid principles things become way more complicated any ideas or advice to make this practice less painful I'm actually going to do a video about that pretty soon so I did the beginner video it shows how to do Angry Birds the whole point of that was so that I could do another video that goes into how to implement solid principles and how and why they help it's very easy I think to implement principles from the solid without thinking about the benefits and the reason that you're doing it and then do it in a way that does make things not only more complicated but has zero payoff and if you're not getting a payoff you're obviously not gonna continue to do it right so I'd say don't just try to shove them in wherever you can look for the pain points when you have a problem with your project when you have something that you have to do a change that you have to make that's suddenly not easy to make look at perhaps one of those principles that you might be violating in a way to adhere to that principle and that makes it easier to work with your code and makes your thing more sustainable again I'm gonna do a project or it's gonna be one or maybe more videos on implementing solid into an existing project I'll probably just do one big long video on it or just go through all of the principles and show how to put them into that angry bird project in a way that makes sense and is giving us benefit not making things just more confusing I had the same problem though when I first got into solid stuff I would over I would say I would kind of overdo it and try to abstract away too many things and make things less solid not more solid on accident did you know that you're the best person teacher I've ever seen and I did not but thank you for that can you explain why Pantheon is using zone las' and seamless zones and explain pros and cons to the technical side versus why it was brought but the decision was brought back I think the really the primary reason was that Brad wanted to do zoning so Brad McQuaid was the guy who came up with the project I remember when we first talked about it he said he wasn't completely sure but he thought he wanted to go with a zone based game just because he tended to like them more wasn't a huge fan of big open world stuff and I don't think he had any real technical reasons other than he just kind of liked his owning more I guess theory one thing he did mention though was it he liked the the fact that doing it with zones removed a lot of complexity it removed a lot of design complexity and just programmatic complexity because if you have simple zone a zoning system you can just connect to that zone you don't need to know about anything else other than that zone and the system for doing that is all very very straightforward with a seamless or streaming system things definitely get a little bit more complex but you do get some benefits and I don't know that Pantheon like there's there's really no reason that it couldn't switch to a seamless system if we wanted to I just don't know that that's that's really more of a design decision than a technical one it is more work to do streaming stuff streaming seamless zones or you can just run across but it's not an unbearable amount of work now one thing Bhangarh did that was kind of interesting is it it kind of mixed and matched both of those so we had these zones but then we had it kind of faked a seamlessness so you would once you got to the edge of his own you would transition over to another zone and then it would kind of just pass all of your stuff along it wasn't a great implementation though because it caused a lot of problems with crosses own fighting so you could attack a thing on one's own line like a cross his own line have it come over to the others online things would get weird and buggy because we'd be sending essentially sending an NPC over from one zone to another zone or sending a player from one zone to another zone and having that become the authoritative part for that entity the player or the NPC but then it would just get out of sync NPCs would bug out sometimes you'd end up with duplicate NPCs and it both ways to cheat and exploit NPCs there ended up being a lot of issues there so it if you're gonna do a seamless system you need to really think it through and make sure that the entities that you have there if they're going to be allowed to cross these zone lines they need to probably not be necessarily directly tied to that zone they need to be able to move across the entire world really and cause some other issues too but there's really again it's mostly just a design decision at this point um hello is your master architect's course for beginners no it's definitely more advanced it's focused on you primarily on my big obsession now of unit testing and writing big projects that are unit testable the other course that I have is much more for beginners the game too of course where to go over a lot of the beginner stuff and kind of lead up to a point where you'd be able to handle the dark texture course are you self-taught or university trained and why unity so I got a degree in electronics I used it to build some car stereos and a car alarm that's about it and yeah I really decided I liked the software side I'd done software before a little bit and just kind of learned from there I've done almost all I would say self-taught but it's really like essentially learning from other people I take a lot of online courses watch ton of online videos just people talking about it and I used to read a lot of books on software now it's almost all video content now as for why unity actually did a video about why I switch to unity but what happened was I was working on I was working on Vanguard which was built and unreal then working on EQ 2 which is all a custom system and got recruited to build mobile games and at the time unity was really the only option about the unity or going native were the only options unreal hadn't got their mobile builds working yet yeah you can unity was like a year ahead of everybody on that and nobody else was really coming close so I started with unity and I just really loved it so before I had done unity stuff I'd also had done a lot of C++ and a lot of c-sharp because they used to do a lot of MMO tools when I was working on games to it do server code and tools and I really liked c-sharp so when I found out I could build these games in unity and c-sharp avoid some of the pain points that had hit with C++ all the time I was kind of hooked and then they've just made the engine better and better and better so I kind of fallen in love with it and it's my favorite by far I would say if you're curious though I did a whole like I don't know half hour long video where I blabbed about why I like unity so much though I learned Python in a class and have begun to learn C sharp on my own what are some things I probably learned in Python that will be useful information that transfers to c-sharp because the idea of making public or private something confuses me and classes seem completely different well it's a good question my Python skills are totally terrible so I don't know what Python stuff would necessarily translate yeah my Python is really really really bad it's been a long time I've written it a little bit for some lambdas and that's about it other than that like late 90s last time I really got into Python maybe was early 2000 somewhere around there the public and private stuff so let me just talk about that and clarify it real quick so when we have a public class or a pub let's say we have a class with a public let's just show the code let's just write a little bit of code let's jump into writer and let's show what public versus private means let's make a new class so we're gonna make an example class I'm just gonna move it to its own file real quick Oh Ben was asking about course links here I think they're both linked at the bottom of that page Ben okay let's dive into the example so we've got this public class called example and it has a public void which just means it doesn't return anything do a thing it's got this method that's gonna do something for now it's just gonna log did a thing so a public method on here can be called by any other class outside of this so say I've got a public class player guy I probably have a player in here already so just putting the word guy there and I want him to do something with this example right so I've got this um let's say this is a monobehaviour okay so this is a game object that's out there in my scene somewhere and I say hey let's make our player guy a monobehaviour - because I think it makes the example easier so in our awake we go hey we want our example to do a thing so you say find object to type example put that into an example variable so we've got example here we're finding the example and putting it right here that's just finding the instance of this class and assigning it to the variable and then we say example dot do a thing and this is just gonna execute this code on our example if we make this private suddenly it's not accessible anymore and the reason for that is we might have our example doing things that we don't want other classes to cause to happen right we don't want like we might have internal things that are going on with this object right like examples kind of a bad thing let's call this like NPC let's change this using a slightly better and we'll rename this NPC and we'll call this like die what's that so say we've got our NPC can die and we say hey we want our player when it does it's awake it can tell an NPC to die oh let's replace that okay that's fine but maybe we don't want our player to necessarily be able to say hey this NPC should die we just want them to tell the NPC to take damage and we want the NPC to deal with whether or not it dies so like this like say like I died right so instead what we would do is make this private because we don't want our player to say hey kill this thing and imagine this isn't awake but this is like shoot the bad guy right there shoot and shoot oh just call shoot so they shoot and we find the NPC and tell them that we don't want him to die though we wanted to take damage so what we do is add a public method here and maybe it would pass in some amount of damage maybe not let me sound like health - - so we're gonna create a health field that's just like an int like we start off at five health and then it's a if health is less than or equal to zero die so what we're doing here is we're making sure that the player can only use the NPC in the way that we want only calling this take damage method not calling the die method so you can say take damage and it can tell the player to take damage but it can't actually kill them I hope this makes sense so that's essentially the the reason that we use public versus private keywords on these things so that we don't accidentally misuse things and that we only make public the things that we want to other classes to use and we never make public anything that we don't want other classes to use I don't know hopefully that that clarifies things a little bit let's jump back over to questions and take a couple more and then I take a break because I'm getting really thirsty what's the best way to create a best program to create gear and mmo's from simple to fancy detailed high fantasy can look really realistic for quality I have no idea for like an actual tool to create it I'm terrible as an artist and I just leave that up to the artists it's a good question now I'm kind of curious to know the answer though so I'm gonna ask some and see if I can find out okay how do you update yourself with technology and game engines and programming language etc or how do you keep updated I constantly watch new videos on not just game programming but just programming in general clean code related stuff all that kind of stuff I just I'd say I watched you know 1 or 2 hours worth a day just almost obsessively I don't know that it's an easy thing to do but I would say just do that another thing is talking to people so I have a weekly meet ups where to talk to people and we ask each other questions we run through things there are a lot of fun the architecture made up that we do every Wednesday at 8 o'clock Pacific you can find it on Meetup just search for unity architecture meetup and we just talk about stuff we answer each other's questions and help and I learned things from other developers you know at places like that and at meetups so it's been a little while since I got to go to some meetups basically since I moved so I'm trying to get back into those pretty pretty soon right they're a good place to like learn about new things that you wouldn't think to ask about and to just talk to people all right next up good evening sorry about English don't worry about it what do what to do in situations when the data structure begins to grow and contain not all the necessary fields for example a file of settings for weapons with typical fields but due to homing missiles the rotation speed field appears add this field to the structure but then the guns all have it and will be oh and it's only used by missiles yes that seems like a good time to split things out and abstract them a bit so your guns and your homing missiles probably should not be sharing a data structure they should probably be sharing some perhaps some little bit of data like a base structure for that data maybe not even that and they should hit share some interfaces on how they're used and how they're interacted with but I wouldn't have them sharing the data themselves because like you mentioned here the data doesn't match right I got guns data is gonna be quite a bit different from a homing missiles data in fact I would say the gun is closer to the launcher for the homing data or the homing missile than the actual missile itself so it'd be closer to maybe sharing some data with a missile launcher but not with the missile itself that missile should yeah I'd say it should have its own separate data structure and the same for when you have different weapons so you it's generally a bad idea to have unused fields in your data for your your objects like this because it just leads to confusion and it leads to that bloat that you're seeing right there so I'd split it off into its own its own data structure for these homing missile settings and if you want to have a shared set of settings you could have that as a second object on there like common settings or a base class for it but I wouldn't share like having rotation speed on your guns so they say yeah definitely just split off into something separate another data structure do you have any suggestions on how to prevent duping in my sequel if you're talking about item duping it's not really a thing that's database specific the one thing I were to avoid for items in an MMO so for anybody that doesn't know like my sequel is just a relational database and say you've got a player who's got an item and they want to give their they want to duplicate their item I think we've got this magic sword and they want to make two swords of it the easiest way to do it is to somehow trick the server into writing another insert into my sequel so that the item goes into another entry and you still have the item somewhere else like maybe if you've got two entries of the item in the database I say the easiest way but I mean that's kind of like the the backend trick what you're doing all of the problem occurs in the server code right what happens is we do weird things like I've seen systems where you take an item out of your inventory you literally click on it and it destroys that item in your inventory creates a new item on your mouse cursor and that item is not related to persistence at all so unless your character has saved you can do weird things with these items like drop them pass them around on the ground trade them to people and cancel out these trades while like one does I think one of the first Vanguard dupes I found was you'd open up a trade you'd put the item in the trade you would hit the cancel button and then owned away at the exact same time so the player would get a message saying hey add this item and then it would persist that I'm trying to remember the exact details but it would it would persist that item and then you would get you would get a second copy I'm trying to remember where you get the second copy of the item I think it was on the same player so oh yeah that's right you would come across the zone and you would have the item on your cursor again so you'd get the item on your cursor it would because it would bounce it back to your cursor and it would put it back in your inventory because you don't so it reloaded it from your inventory but you'd still have this other copy on your cursor you'd set that down and suddenly you've got another valid instance of the item so what I would generally avoid do is in your game code don't destroy and create items at all except for at load time or when the item actually needs to get created have a single spot for creating items don't do it kind of throughout your code don't have different parts of your code that are newing up or instantiating items only do it in one spot and when you want to transition an item don't do a database insert at all make sure that you're not doing a delete and update an answer just doing update and change the owner of that item and that's it so that you don't end up running into these problems these happen a lot with items because we just get loose and wild with the item creation code oh hey I need an item but I need it over in this spot now and I can't use that one so I'll delete that one I'll add one here it turns into just a giant mess so avoid recreating items at all cost and have a single factory a single place where you do the item creation and be very strict about why that's called and when it's called should only be called when we actually want to add a new item to the world not when we want to move an item around or put an item from one spot to another don't don't ever create items that way it'll just cause problems it caused oops it always causes dupes do you recommend any specific file types to store game data such as XML etc for storing enemy resource and counter types I'm currently writing my own as well as parsing methods Oh as well as my own parsing methods in hopes that I can make my game moddable and/or extendable with updates and DLC so I usually go with just JSON instead of XML just because it's more popular now and I think a little bit easier to read but I also don't often store my data externally like that just because I find out that I have to then build in all these extra tools and I have to update those tools and keep them up to date whenever we make changes to the game so I generally don't store a lot of stuff in external files like that databases are another scenario though so I do save a lot of stuff in databases for MMO specifically because I want people to be able to see those changes immediately I want multiple designers to be able to go in and work on something against a shared database and then see each other's changes right away without having to send files back and forth or sync files or diff or merge or any of the other things that game designers hate and will struggle with and make you do for them so just have them work directly into a database instead for modding you can also you can make it model with well with them going into unity and creating mods - it's not quite as simple to do but it's definitely possible but also storing out your data like that I can see it depending on the type of game like it's very popular for RTS games especially because then you can just go in modify the tanks and the vehicles and stuff without having to know too much about the actual like engine or how anything works you're just gonna go in there and start changing data and it just kind of works so if you're gonna do that that I'd go with the JSON files if you're doing fine files though alright let's go on when is Pantheon releasing again I don't know I can't tell you what should the roadmap be the roadmap for game development mm-hmm that's kind of a broad question so just make a plan for your game and start pushing forward and make sure that you're seeing measurable forward progress constantly how do I start networking for getting an audience for my game I'm start putting it out there just start showing people even way before it's ready like a long long before it's ready when it looks like crap and you don't think anybody's gonna be interested start then start getting feedback and start paying attention to that feedback don't just ignore the feedback all right can I give you an example oh can you give an example of all design patterns how and well where it's useful in an MMO I don't think I can today because I'm running out of breath already and I don't know there are a lot of different scenarios where different design patterns pop in so I it's a little too broad right now though sorry as a solo developer should I stick with smaller games eg three-month projects rather than my dream projects starting out definitely if you haven't done a bunch of three-month projects don't jump in the one year one do the three-month ones first build up a little bit of practice and get used to creating things that you can then delete and destroy and learn from so that you're not coding yourself into a corner constantly just starting with your one big project is a good way to never finish your big project they start with a couple small ones and then build up if you've already done a bunch of small ones then they jump into your dream project but if you haven't done that yet I'd go with a bunch of small ones first its Pantheon using dots not really it's using some of the job system stuff there's some dot stuff that may or may not get integrated in some time soon and we're definitely looking at it heavily for areas where there's a good performance benefit for it it's definitely not built like dots from the foundation obviously dot hasn't existed as long as the game release hasn't been public as long as the game and it does I don't think that we see a big benefit or reason to do a full conversion but there are some areas where we can get huge performance benefits and we're looking at those and trying to pull those in how do you backup your projects get I use I get for source control for just about everything I'm using something like source tree here like this source tree to just modify them order to manage them or on smaller projects I'll use the collaborate system if it's not a project that I'm sharing with other people then I use collaborate but generally use get some projects are still using SVN I forget generally but they both work fine but definitely use some source control don't use anything other than a source control system do all game world objects have a pub/sub for example an area management when entering an area do the objects subscribe to a player and vice versa that way you can fire events to a player or NPCs No so what they do instead in the air when you enter an area you you get marked as being in that area and then when you wanna fire off an event usually most of the time in mmo's were firing off events based on distance and these distances can vary dramatically like my attack my AoE like fire area around me radius could be dramatically different than my buff or area around me right so they could all be totally different ranges so what we'll do is call into the area management system and say hey give me all of the things matching these criteria in this range or sometimes it's just give me all of the things you know all of the NPC's three meters away or less from this specific point and then we'll go through those guys and process each of them or have have them go you know we'll take that set of data those NPCs and then run whatever we need against them the quadtree is a good way of getting that data faster so that we can manage a bunch of entities in an area and shrink those areas down because we have a giant grid so say we we do that and we don't have any area management system then we're looping over every NPC doing a distance check right if we have a just a 3x3 grid where we've cut the world into nine pieces right like a tic-tac-toe board and we only check against the ones in your current area then we've cut it down to maybe as low as 1/9 but we have another problem where hey if we're right on the edge of one area or we're on the edge of another area we might not be checking them so then we're end up with checking the the 9 or around or the eight around you as well so usually it'll be like a twenty by twenty grid and we're just checking the ones around you in the number of cells over to meet our distance check so if our cells are a hundred meters wide and our thing is only you know a twenty meter distance we know we only need to check the one cell that you're in and the cells around you and then we again we can go to a quadtree to speed this up dramatically or an octree if we need to go three dimensional but a lot of time just that grid and then checking the things in your cell and your cells around or maybe multiple cells around if we have to go a bigger area is an easy way to optimize that and not have to check against the hundreds or thousands of things but only check against a dozen or so great content would you list some possible difficulties that could arise on creating an RTS game on WebGL who latency performance design choices etc um I I don't think I could I think there are gonna be a lot of difficulties creating an RTS for a WebGL but I don't have enough WebGL practical experience to know exactly what those are I mean creating an RTS alone that's not in WebGL that's a real RTS is a big thing creating one for 30 to 200 players I'd say is a much bigger thing it's a big problem or a big a lot of work and then doing it for WebGL is just gonna add even more um I wish I could give some better advice so I don't have enough experience building RTS or WebGL games to to really speak to it though where should a noob learn to start network start to learn networking slash multiplayer for an MMO I'd grab like that.you MMORPG asset pack and start looking at that I think it's a good example of how mmo's get built it's obviously no example is going to be perfect but it's a pretty good example of showing a lot of the different systems and how things need to interact and that whole process of sending messages down from the client to the server and it gives you a good starting point to start building things out trying things out I'll go there first what's the best way of building a good game architecture thinking about everything before starting the project or adding things as it goes ah I actually really like this question because I've changed my mind on this I had to take a drink there so a lot of the time people think that what you need to do before starting a project is figure out everything that you're gonna do design all of that design the architecture for the entire thing I'll block it up you build up these big diagrams just decide on your database decide on as many things as possible right make as many decisions as possible before you start coding so that way your coding the right thing this always goes wrong I've never once seen that go well it always turns into a project failure or project delays and messes because realistically when we're building this game or building any game especially something big if we try to guess everything that we're gonna need and how we're gonna want to do things and how we're gonna want to tie things up way in advance we're going to make mistakes and because we've got this thing written down in blocks we're going to enforce those mistakes and we're gonna end up with it's a lot more problems you're going to end up pre over-engineering things in a way that doesn't make sense and makes our game harder to build harder to finish and definitely harder to test instead I like to keep it relatively simple have a good overall idea of the things that we want and the key important parts like if we're using something like Houdini let's think about it right away right like let's get that into our head and start thinking about how that's going to interact because it could have some implications if we're building an MMO with a network system let's think about what that networking system looks like and how we're going to abstract away from it but other than that I'm much more a fan of building our architecture up somewhat organically as long as we're paying attention to it and not just letting it grow into some random thing so I'd say keeping it tested and testable is number one like making sure that the code that we're writing is under unit tests and that it's actually testable and it's really hard to do that when we've predefined how everything's gonna look and we've predefined these seams and probably wrong spots and I feel like creating this like big block of architecture a lot of time will give a false sense of security like okay it's gonna be fine it's it's gonna be just like this we don't have to worry about it like that in chat just remember it will probably change because you saying that pre-planning is good but it gets you but when I guess yeah part of it is when you start thinking about it and planning out everything in this one way in your head the project is going to make changes it's not gonna be exactly what you thought from the start and this is way more to the case with games than anything else I've ever built a lot of the time with the software system you have a good idea of almost exactly what it needs to do with a game it has to be fun and it's very hard to predict fun so it's gonna change dramatically so if you decide design to this architecture for things it's gonna be wrong it's gonna be wrong every single time and it's gonna need to be adapted so I'd say much more important than thinking about everything before starting the project is when you're writing your code think about it being unit testable think about like can this be tested is this testable and why am I not just writing tests for it right now and if you follow that it's gonna be a whole lot easier than if you just try to pre design out an architecture and work from there again a good idea of some of the fundamentals and things that you want to do or are good but you should ideally be comfortable enough with these patterns and generally with design patterns when you're building a big game you can see how things just kind of fit in and slide in as you're building the project up and not have to pre decide too much of that I'm gonna go on I feel like I'm just kind of saying the same thing do you think I'm a most have any significant improvements in narrative moving forward maybe the problem with narrative and mmo's is that there are so many other players in there so many other things going on telling a single cohesive story in a way that's really compelling without breaking them away from all the other players can be very difficult there's nothing really technical stopping people from doing it other than players right other people are your biggest issue when you're dealing with trying to tell a narrative in an MMO cuz you could have this whole story going on and then some guy runs around taking this pants on and off and jumping up in front of everything and Horch runs up in trains and kills everything it's it can be very difficult to get that across um but there's nothing really stopping it no and I think and be honest I think that every MMO designer thinks that they're telling amazing great narrative it's probably mostly because it's all in their head and they have this giant cool story in their head but what comes out to players tends to be yeah a lot less of that I mean I remember looking at the stats on EQ to ransom stats against the the quest stuff to see like hey our people are reading quests like are they actually going through the quest dialogue and reading it and seeing all this stuff like we've got these pages after pages and pages of text here like saying hey these guys did this and we want you to go do this thing because of this reason and the answer was a big fat no right like I think it was less than 5% we're spending a second on the screen and like less than 1% we're actually reading the actual text so these designers writing up on these long cool interesting stories there's so much of it though and the world was so overwhelmed with it that nobody cared nobody read it right well I said nobody felt like 1% of people and if you have a big chunk of your team working on stuff that only 1% of your player base cares about or reads and that's probably gonna end up getting you know scaled back or cut or changed and it ended up happening - I think they made some adjustments after they realized that and stopped writing so much long text and I think that's probably the case for every MMO out there right if you think about him you play him you click next you hit the thing because you can only care about so many of these stories and there's so much of this stuff in there it just gets overwhelming and really just kind of pointless like it doesn't matter why you want me to kill these 20 rats I just know that you want me to kill these 20 rats and I'm gonna get a thing all right how to get downloads for my game I have no idea I made an Android game and I feel like you'll like it bomber brigade made interesting visuals to attract people but I'm not getting downloads well let's search for it and show it and maybe everybody on the stream can go check it out that's a bomber brigade and right I have no idea um tip one I say come up with a name that shows up on the Playstore when we search maybe rebrand it a little bit so that it's I don't know unless it's this one that's just showing up as like a maybe it is this but I'm not sure I would get it on to the Android store if it's not on there I'm gonna jump to the next one though but if that is it then yeah everybody go check it out I'm terrible at marketing and selling game so I really couldn't tell you do you / professionals keep updating unity while in development or do you recommend we lock in to an LTS version yes I keep updating constantly I would lock in to an LTS maybe three to six months before launching if it's a big project and even then I'd consider constantly upgrading just because I don't like falling behind on versions and doing big version updates as a giant nightmare so I like the update as as fast as possible I typically have ideas that I really love but after a few weeks I spiral into all the reasons I shouldn't work on that project anymore do you have any tips for avoiding that or getting out of that mentality sharing your project number one thing get it out there get feedback get people playing it get people asking you showing up to things where you're sharing sharing your project and seeing that people are interested in there okay sometimes you know you'll start building something and realize that you shouldn't work on it and it's the right decision to stop working on it don't just keep working on it because you're working on it but a lot of time it can also just get demotivating because nobody's seeing your thing you're working kind of on your own in the corner and you wouldn't need to get people looking at your stuff and giving you feedback playing it and I think it can really encourage you especially if you have like a weekly mastermind group type thing where you showing up and talking about your progress and asking questions and chatting with people about it it can be super motivating so look for something like that as an alternative to where would I be able to learn programming patterns I did a whole series on game programming patterns on my youtube channel and the solid principles and I'm gonna do another one on solid principles soon I would look at the game programming patterns one though and also the game programming patterns book it's a really good one and it's free online or you just grab it on Amazon how do I manage the feeling of imposter syndrome I'm currently a final year CS student and a regular to find myself feeling intimidated when starting a new module of study or even trying to do something I would enjoy currently trying to build a new game comfortable with coding a fair amount of experience but still feel out of my depth I think everybody does really I've met very few people who don't feel this way forever you just have to remember that um [Music] everybody has this same situation right well not everybody some people sometimes people get overconfident usually it's a couple years after the point that you're at and you get overconfident and just kind of feel like you know everything and nobody else knows what they're talking about and you're gonna do it the easy way and you got it down and then you know again start to realize the things you don't know and the impostor syndrome kicks back in it happens for everyone I wouldn't worry too much about it just know that every time you talk to people like they don't know everything like they know the things to tell you know they know and that's it like don't assume that everybody knows the answer to everything or that everybody even knows everything that you know even as a CS student you're gonna know a lot of things that people who are building games now may or may not know especially as a CS student when it comes to things like algorithms and optimizations you may know a lot of things that other people who didn't go through that process might not know so I wouldn't worry too much about it and the bigger thing is when you start to work on something and you feel overwhelmed or intimidated just slow down and start researching that thing a lot of the time these things that seem crazy and complex are actually much simpler than they are we just have a lot of crazy terminology and weird little things that you have to know to make them make sense so I'd say just start investigating and learning about those things you'll find that most of the things that feel scary and overwhelming are too bad once you boil them down Henry general advice for VR game development other than targeting the quests now because it seems like it's gonna take over the entire ecosystem not a whole lot for locomotion NBR the I mean the biggest things are more design related where you don't want to accelerate or decelerate players at all because it tends to make them sick and if you can use a vignette or something to bring in the view when they're moving if you're moving them along a line it can solve a lot also rotating players tends to make them sick so just try not to rotate them unnaturally or do it in more of a blink action about it some people are fine with it though also test it a lot with with actual different people don't test with just yourself and your other Co developers any programming patterns accepted as good practice that you disagree with or avoid I can't think of anything no not that something I would consider accept it as good practice and I disagree with it or avoid it may used to be unit testing but now I'm 100% onboard with that too what do you think about scriptable objects for maintaining game code referring to round bear games tutorial or should we follow design patterns I'm just not a big fan of it I understand the value of it this is that whole idea of making essentially making your games through a scriptable object system that essentially makes it into more of a visual scripting system I think that realistically once the visual scripting system comes the use for this is possibly going to die up completely and I think that if you're not building a lot of very similar games it's more building a platform here that's not going to be very useful for you so if you're building a lot of similar games like you're building you know a dozen card games or you know you're building solitaire version number 70 these things can come in very handy right because you're just doing the same thing over and over same team of designers working on it and there making these little modifications if you're building up a new game though building this whole extra layer to manage game state I'm not a big fan of it I feel like it makes things more complicated and harder for code to deal with that and all of the benefit of trying to make it easier for design but designs not going to be customizing these things especially if you're in an MMO I really like your video what are your favorite game development YouTube channels um I don't know I like a lot of them I kind of bounce through a lot of them psycho ones good obviously we would like the brac ease ones I just find like interesting things there let's see Thomas brush has some good stuff Sebastian's what else but I guess another thing oh and Charleston infallible code I love watching his stuff he always cracks me up especially when he talks to himself it's interesting but I also like to watch a lot of non game development stuff too I feel like if you just watch game development tutorials you'll you'll learn a lot but you're not gonna learn some of the more fundamental stuff and some of the things that help with longer term projects you can learn a lot of very in-depth stuff on how to build a specific system or specific controller but when it comes to bigger architectural stuff I really like watching things like Uncle Bob videos or just other old guy programmers who talk about you know keeping things clean and interesting and being responsible with code to find those really interesting - what are your thoughts on unity deprecating some features before replacements are available unit for example obviously it doesn't work whole company doesn't work on the same project but it seems strange to deprecate the current solution without a working replace me yep and I think that's why they kind of pushed back on it like they tried to remove it completely and then decided to put it back in I think that for the unit situation they know that mirrors available and works and is an option that people can transition to so I think that there less concerned about it and I think that they realize there are just some fundamental issues with you net so they want to try to minimize people getting into these things that they're trying to replace and remove I don't think that it's been too much of an issue outside of unit though that was kind of the biggest one where it really was kind of a problem and had some pushback so I don't worry about it too much I like that they're going to packages the package manager for stuff I think it's a lot easier the description should have the link to the questions form but I'm gonna wrap this up in I don't know if the next seven minutes by two o'clock do you scrum or Kanban for solo slash personal projects do you try to keep time boxes like two-week Sprint's if you do I use Trello for them and I generally don't use Sprint's I just constantly am going on things for especially for personal and solo projects I don't have anybody but to report to or timeline to follow for other people so I don't really worry about Sprint's or timelines on those I just know what the next most important thing is and I jump to that and just continue on any opinion on Jonathon blows J AI programming language I have not seen it but I am very curious to check it out interesting well let's see so I don't have any yet but I'm gonna have to read through this and see I don't want to read this whole thing and try to figure it out live on the stream there's a couple more questions but I am kind of curious about it I'll have to check it out seems interesting it's definitely something worth reading and this is the kind of thing that I like to do to just go through and read random stuff that people post about or write about and see what kinds of interesting a little bits I can pull from there and how I can integrate them into other projects how early in development do you start building custom tools as soon as they're needed so as soon as I think it's tedious to do make a tool around it if I have to get into a database or an excel sheet and start adding things multiple times and I've done it two or three times it's time to build the tool and automate it I'd say anything that you've done that you've done you know a couple times and it's not super simple or you're gonna have to keep doing it constantly and try to automate it as much as possible and then build tooling around it to make it as simple as possible if I can't completely automate it away what could I use OpenGL for if I was to learn it building your own game engines or working in places that are using custom engines that use OpenGL I'm you're gonna need to be pretty good at it though and learn a lot about rendering pipelines and stuff so it's it's an interesting thing to learn though something I used to know and now I don't remember any of it a character controller or a rigidbody for a third 3d first-person game generally I start with a character controller and then switch over to a rigidbody and a custom character controller later on once you're getting into the part where the basic character controller isn't meeting the needs and switch over and start writing your own again working on a lot of the core fundamentals of the game and get all that down and then start working on the custom stuff that you need to really make the character controller better and how you do that character controller for your first-person game is going to depend a lot on your game so I like to build out a lot of that game figure out what kind of functionality it's gonna need before I try to build the character controllers but build a custom one and then I build the game and they don't match up right then I'm going back and constantly changing it and changing assumptions that I've made on my character controller when I can just delay those decisions until later I think the term that Bob Martin used was delaying decisions until What did he say the last reasonable opportunity to make them so deciding on how to do things at the last reasonable opportunity to do them this goes kind of back to that whole architectural question on should you pre decide and pre define your entire architecture the whole goal is to delay these decisions as long as possible I think in one of the examples he used he was talking about the building this wiki system where they initially thought they needed to use my sequel right it's like okay well we'll have to put my sequel in and then they just go oh let's wait let's just do it later let's delay it and let's do something else first they just do some flat files and they did that first and then they just continued to keep delaying decisions eventually decided eh we didn't actually even need a database for the system and we were over complicating it right so it's just skin that delaying so I would say start with character controller and then move up to the custom one with a rigid body once you get to that need what's the best way to maintain code unit tests by far unit testing and writing testable code will keep it much more maintainable and you'll know when things break and you just won't break things yeah well you'll know immediately when things break and know why they broke and be able to fix them I find it difficult to design and conceive small two to three-month projects and end up featuring myself and scrapping everything yep everybody does this any idea on how to change this mentality as I cannot come up with small designs to make and I feel like it really holds me back um he just got a practice saying no right like stop adding things it's very very easy to go hey somebody had an idea that's a cool idea what's put it in that's a cool idea let's pretend a lot of time it's you having the idea you just have to resist the urge keep the game is like just think about every time you're adding in a feature think like does this really change the core gameplay in a way that's fundamental and is going to make more people play it 99% of the time answers no it's just a neat feature that you saw in another game they thought would be fun to add in how to change the mentality part I don't know really just you got to just force yourself to stop adding in new things and just realize that most features that you add aren't gonna have any impact on the game or gonna have a negative impact over adding features a good way to destroy or even just prevent a game from shipping have you thought about doing any videos on editor scripting in unity a little I've done a couple in the past I'll probably do some more are waiting for the new UI system though cuz that's gonna change things quite a bit and I want to see what it looks like there you need to learn Python for triple-a sighs MMO or even C++ or Z nerdy enough you definitely don't need a Python for it I don't know of any that are built in Python there might be some most are in C++ and there are some done in unity the one that we're building right now is in unity there's no real reason you can't build one in unity just the ones that are out there right now aren't right I'm gonna say that a while ago building one in unity probably would have been very very difficult and maybe a little crazy now I'd say it's a very good easy choice to make I'd go with unity for building an MMO but if you want to work on existing mmo's to c++ and learning unreal can be a good benefit most of the MMOs are building custom stuff most aren't built in unreal or unity there's their own custom engines that have developed in-house but I'd say a lot of that's changing and unity and unreal are probably the two biggest choices going forward for new games getting built that are mmo's although I'm not sure I know all the stats on that but I think if you look most of them are gonna be in one of those two now you're very welcome for the answering the questions how to learn good coding practices just practice watch lots of videos take some courses watch more videos and practice building games also a pair of programming work with other people it's a great great way to learn especially easy to pair program or mod program it's good stuff all right I think I'm gonna wrap it up here because I'm getting super thirsty and been talking for a really long time got a bunch of stuff I gotta get done today but if you guys don't mind just hitting the like button and share after I'd really appreciate it the better these do the more likely I am to just do them more often and maybe would kick off another one of these sometime later on this week so if you got questions just be ready and watching and I'll post when it's up thanks again everybody
Info
Channel: Jason Weimann
Views: 17,350
Rating: undefined out of 5
Keywords:
Id: qCVqjRLs0Bg
Channel Id: undefined
Length: 139min 55sec (8395 seconds)
Published: Sun Feb 02 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.