MMORPG Development + Q&A

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hey out there we should be alive now hopefully everything's good and you can all hear me just to say welcome thanks everybody for joining or watching surprised already got a hundred people in here that's crazy haven't even kicked it off make sure you guys hit the like button before we go too far and then if you had questions I dropped a link in the description just straight to a Google Form so people can put them in there and not have to worry about fighting chat spam and having to try to scroll up and down and miss people's questions and stuff so if you got something you want to ask just type it in there if you've got multiple questions just submit them separately so that our way can just go through each one and try to hit them as cleanly and quickly as possible I also had a list of stuff I wanted to talk about I'm gonna switch to screen sharing in just a minute so you guys can see what I've got on my screen and my quick list of the important things I want to talk about for MMO development and plans for this stuff going on forward eventually what I'd like to do is start doing a lot more of these and start talking about MMO development and even going in depth and showing code I'm still working on getting approval to go through and show some actual live MMO game code so I can show what it's like with a bigger project how we add in new systems and keep things clean and make it all extensible and kind of make it work so that it's not a nightmare to to build a bunch of stuff into a game with without a huge team and yeah that's about it I'm gonna actually move the questions off the screen because I find that I just get super distracted by urban I'm going to move the chat off the screen and just hit the questions first because otherwise I'll keep looking at it and I'll keep stuttering and stumbling and stuff so anyway again before we go don't forget to like and share and all that and if you have questions the link is in the description just drop them in there and I'll try to get to them as quick as possible before I do though I wanted to just go over my quick list of important things that I think are stuff that you should know if you're building an MMO and I built quite a few or I since I built I've worked on quite a few a lot of other people really did the hard work of building them I would say I just added things and extended them and you know helped work on them later so the first and most important thing that I learned and I learned this actually before working on mmo's I learned to this playing on am playing MMOs and exploiting mmo's was to I guess there's my rule number one which has never ever ever ever trust the client on anything so if the client tells you it's doing something like and by this I mean like the game client or the player client so you've got a server and any MMO you've got a server or some number of servers and then you've got clients that's the thing that you watch the game that you're playing that's the thing that's on your local computer never trust what that thing sends to the server because there's absolutely no way you can stop it from lying it could lie about who the player is it can lie about where it's at how much damage was doing anything that you take as info from the client can be alike and say hey I alluded that guy's corpse you know like the guy died and I can send a message say hey I'm looting that guy's corpse if the server trusts me believes me I can steal that person's items if I say that hey I have these items these are the items I picked up not not whatever was really on the corpse and the server trusts me you're just screwed right you've already you've got the big opportunity of destroying and ruining your game allowing people to exploit the hell out of it and allowing people to duplicate items or kill other people or cheat like when you see these big exploits and games the easiest or easiest explanation and what causes most of them is trust in the client they think that hey I got this data and I didn't think to validate this data and a lot of time it's because people don't even realize that the data came from the client and that the clients a liar never trust the client somebody's always trying to hack it and that doesn't just mean like the clients data never trust anything that's coming from the client over the network either because you can easily intercept that stuff and change it morph it or do whatever also don't send the client any extra info that you don't want them to know because anything that you hide in the client code people can find people can make a little exploit people can read the network data people can see it I mean I remember even in the early days of EverQuest one little tools that would show you everything that was in the zone you could see every NPC that was in the zone and the guys that held weapons you could see what items they had on them for loot so you could go in check his own and see if there were a rare guys up and if they had their rare spawn or the rare item on them and you could track them down with a little map and go find them and kill them these kinds of things happen all the time just because people don't really think about cheaters and exploiters and trusting the client now if you're starting off in an MMO first one you're building it's gonna be easy to make this mistake because you just want to get things working but you really have to think about building your stuff cleanly enough that it's easy to check and verify everything on the on the actual server and client you said that you're not just checking it in one spot hopefully I've hit that enough but I know that people will still struggle with this just remember rule number one never ever ever trust the client it's always lying I want to also hit there I know there are a lot of questions about networking so I'm gonna get to that in just a little bit and probably go through it with questions but I wanted to talk briefly about saving the data too because this is another thing where all of this has to happen on your server where you're saving your data it's it's never ever ever client-side there are a couple things you'll save client-side I'll I it a little bit like hotkey setups could be saved client-side I generally wouldn't but some local settings may be saved client-side to like graphic settings things like that where might vary depending on the device things like even hot bars or memorized stuff generally should be saved on the server side because your players gonna log in from multiple systems they don't want to go back and reset up their character and they shouldn't have to now the way that we save this stuff is usually with some sort of a database now not all games use a database to save their stuff for instance eq1 used flat files and folders to save all the data which worked fine at first and back in the day using a database is hard and expensive now it's easy and I'd say there's no reason not to do a database solution or a no sequel type solution personally I really prefer the relational databases just because it's a little bit easier to enforce the schema it's easier to query and I don't generally need too much in the lines of performance when it comes to reading and writing from like persistence type data I also want it to be acid compliant I want to make sure that anything that goes in there is the order that there's no contention or competition between writing data and loading data and it's not necessarily a problem with all the no sequel solutions that are out there now but I still am just a big fan of things like post Grass sequel server or something like that not Oracle I hate Oracle but that's just because it's so much harder to use as a programmer than all of the other solutions at least it was for me so I would say you so what you'll want to do there is make sure that you're just saving all of that data off on the server whenever something important changes and that's another thing that's important you need to make sure that you're saving this data when important things change now you might not necessarily write directly to a database when the important things change like I picked up an item I gained a level or I gained some amount of experience or whatever but you're gonna want to at least save it to some cache that's then gonna save to a database of course if you do that you need to make sure that that cache is the source of truth and that you're not reading from the database in writing to a cache this is another cause of big exploits and dupes when you have things that are reading and writing data kind of willy-nilly where you've got like you know one one server is writing hey I just traded this item away or I just dropped this item or whatever and then another server is reading from the database oh hey he has these items and then suddenly you've got the item dropped on one side and picked up on the other side and you've got to do all kinds I've seen this like a couple of times in different games I remember one of the first bugs that I found when I started working on Vanguard was very similar to that you could die I think it was dying while zoning and you would end up leaving a corpse with the item on it because the call to make a corpse was there with all your items listed and then there would be on the other side hey we're loading this player and here's all your items because we haven't saved off that you have a corpse at the database part hasn't finished the update because it was on and we were no longer using a single source of truth for that cash and said every server had or every zone had its own source of truth and it was a big problem because then you read data and you write data and then the data doesn't match up anymore which also just kind of brings me to items when you're using items don't recreate them this is I think it's a big problem with just mmo's in general when you make a new item in game that should be a very very constrained and limited thing there should be like one way to make an item and item should not just get recreated when they're traded or modified or anything else there should be one entry for the item and just the ownership of that item changes so you got one entry there never get to added another one and the same with like in memory you don't want to be creating new items in memory because then your database system magically stores them as new things cuz it doesn't recognize them it says oh hey this is new so let's go ahead and update it so you gotta be really really careful with that kind of stuff with just saving your data and writing your data in general you want to make sure that there's always a single source of truth and it can't be a single source per server it needs to be like a single single source I'm a big fan of memcache type systems like memcache D or oh man my brain is totally failing me now but there are a lot of them out there these memory cache systems that are just distributed and they're super fast stores where we can pull data in and out they work great or something else you definitely just need to make sure that you're not reading and writing from two different systems let's talk briefly about networking because there were a lot of questions about networking so I see what's the best way to learn networking I'll just talk about it and then I'll hit the questions because otherwise I'm gonna see her reading questions for too long in general the network layer is extremely important in any multiplayer game in an MMO I'd say it's as important as a first-person shooter but your requirements are a little bit different so like when you're building an FPS the biggest things that you want are really fast smooth gameplay where everything is really well predicted and it feels like buttery right you want it nice and everything is good and really responsive you want to see that when you move on one screen your other screen is moving almost or ideally exactly along with it in an MMO it's less about that exact tight precision because we're usually not aiming with like a straight shot to the head it's much more about the scalability and all of the other things that come into play so when you're building a first-person shooter you know you've got multiple players there they're shooting at each other and that that needs to be fast am i oh I'm on full screen I want to go to desktop view so you guys can see my beautiful little text pad notes so it's a lot less about that that snappiness and shooting people in the head and there's all of these other things going on that aren't just you and the other 16 players or however many people there are a hundred players there are hundreds of different NPC type things walking around you know you got bats and rats and cats and spiders and orcs and stuff all moving around some of them are fighting some of them are casting spells some of them are dying and turning into corpses or just new things or spawning objects are moving and you need to make sure that your system is built to handle that more so than the snappiness the snappiness is still important we want to have it good and smooth you don't want it to feel like crap but the harder part is definitely getting it very scalable so that you can handle hundreds or thousands of entities all moving around and replicating properly to the people that they need to replicate to there's also spells being cast and just all kinds of things are going on there are thousands of Network messages just flying around so there are a couple really important things to do first is well at the lowest level you want to make sure that your networking system is as optimized as possible you're going to minimize if you're in unity we want to really remove all garbage collection from it or garbage allocation you don't want your networking system building any new garbage that's gonna slow your game down or cause garbage out garbage collections later so if you've got a networking system every time you send a message generates you know a couple bites or couple hundred bytes of data or garbage I mean eventually that collects and then you get a little server spike and then it collects and you get a little server spike in you're screwed right because you're just constantly gonna get these spikes the more people get on the more it's gonna spike and the faster it's gonna blow up and the more stuff gets in the zone the faster it's gonna blow you also really want to minimize the amount of data that you're sending so there's at the very basic level you want to be packing the data and you want to be using just a good network library I'm the one that my buddy Kyle recommends all the time and he's kind of the networking pro for me is Ginette and that's what we built on top of is just a G net based system that's super fast and also it's set up to just not generate any garbage so we don't have these problems you know but you really also want to keep the number of messages that you're sending down and don't just keep sending the same data over and over so for instance say you're sending some text info right like you're sending some quest text or some ability text like the name of a spell you don't want to send that down every time it's needed ideally want to send it once and then cache it locally and then only send it again if it's changed or maybe on the initial login or something like that depending on the type of data you don't want to send it until it's needed and you don't want to send it again unless it's changed and that's just to keep it keep the networking down and again you got to think about this in the scale of what if I want to have 500 players sitting in this area if I'm sending them all tons of text for no reason I'm just killing my network bandwidth and I'm making it harder and I'm cutting down the number of players that I can have you know get rid of all that crap and go up to a thousand players and have everything be nice and smooth so you really want to minimize those messages and keep them only sending when something is actually changed don't send state data that hasn't changed when I send state deltas ideally let's see um I'll talk more about networking stuff in a little bit because there's just a ton to it as for like existing network systems there are quite a few out there that'll work pretty well but I don't know of any that are perfect for building a first-person shooter or an MMO currently that just off the shelf where you're going to be completely there are plenty that'll get you to the point where you can build a game and have a totally playable game you may run into network problems later on down the road and I would say that's probably fine if you've built your game in a way that it's easy enough to swap out your networking layer and that's I guess probably a big talking point I shouldn't just skip which is make sure that you've abstracted away the networking and the messaging so that you can swap these things in and out if you build a new network system you don't want to have to rewrite your entire game because you've got calls that are low-level Network calls everywhere it should be a very simple system with a simple interface to call things just kind of like the general RPC systems that you see in unity or in a lot of the built in or not built in the off-the-shelf systems that are available so use something like that and follow those patterns and it's not too hard to make the swap you know getting the Delta stuff they're just sending deltas take a little bit more work but overall if you can build it so that swappable you can at least build your game without having to build that system first and it depends a lot on where you're at if you're big and scalable you want to work on this networking system pretty early like you got a big team that can build this stuff and it really has a lot of networking experience if you're a smaller team starting out then um build your game so I can Skype messages popping up build your game and then worry about the optimization stuff afterwards because it's very easy to fall into the trap of I need to optimize optimize optimize optimize and never actually building a game and that's not useful at all either right you're better off with a game that runs like crap and never getting a game done because you're working on the other things that's that networking super super important so um hopefully that I got that across a couple other things going to talk about here server ticks I'm gonna skip that uh I really I guess the core thing here is that like if you think about like a first-person shooter a server tick rates are usually like 30 60 100 ticks a second where it's just updating and processing the data on mmo's it's dramatically lower like 10 to 30 and that's just how often we're checking for data changes or how often we're processing things so if you're wondering about that like server tick rates almost every MMO I've ever worked on was at 10 so that's just kind of where that's at and I just wanted to mention it and then tooling tooling is extremely important in an actual MMO and that's because an MMO is basically a couple systems and a ton of data that's what essentially comprises an MMO and a good amount of art but if you look at any MMO you've ever played just think about all of the items that are in there all of the quests that are in there all the abilities all the NPC's the dialogue and all of that stuff that stuff takes more time and energy than I'd say most of everything else definitely more than the code side and it's stuff that you're gonna be working on with a lot more people a lot longer than you'll work on any one specific code system though people will be creating quests and NPCs and items for an MMO long after there are no programmers left on the team or the team is tiny tiny and shrunk down so anything you can do to make that easy and fast is a huge benefit so I would say if you're wondering like how important tooling is it's probably number two number number one or number two on my list of important things for an MMO to get right and have really really good you want your tools to be extremely user friendly you want it so that designers your people that are going in and creating your world can do it with ease and kind of smile and get anything done without even needing to ask questions if they have to pause and ask questions and try to figure out how things work and ask you how things work you're just killing performance you're wasting tons and tons of time and any little tool thing that you build can save you know hundreds or thousands of hours of design time you can save multiple jobs worth of design time just by putting together good tools a team with good tools can build something amazing that a team without tools do like ten times the size couldn't accomplish that you really want to have good tooling and you have to think about it a lot so it's a I like to show some examples of some tooling stuff eventually I don't know if I can so I'll wait and tell them somebody approves it but eventually I'd like to show some examples of good tools and how do how to put those together and kind of how they look and it's actually kind of a full-time job to build tools in fact I've talked about this a bit before in the past but my first MMO development job was just building tools which might be partially why I'm biased but also just the benefit that you get there is huge and getting a tools development job is relatively easy compared to getting a game development job because there aren't a lot of people that apply for them there aren't a lot of people that have the cross skill set knowledge because usually you're gonna need to build it in something slightly different than the game depending if for an MMO especially just because there's so much data that getting those into an in-game editor tends to be pretty hard and we're all really pretty crappy I mean you imagine like everybody here has probably used Google sheets and Google Docs right like it's a whole lot easier to write put together a sheet in there and fill in data in there than it is to go into you know a unity form that you've built inside of unity and put all that stuff together it's also a whole lot harder to just build the things in engine and in the editor and it's really time consuming you really want to optimize for speed copy ability paste ability you want your designers to be working in a very natural flow that said you also want them to be able to use and update their data alive so like for instance with Pantheon it's set up so that designers can go in they can save data they can make changes and then they can just type a little command and reload whatever data they want so if they've made new NPCs they can reload NPCs and all of the new NPC data updates on the server right away and then they've got the new data there instantly so they don't have to go through a long process they don't have to wait it's literally like two seconds turnaround from when they hit save and hit that button to their new data is there and the server is up and running and working and one of the ways that that really works well is by caching all of this stuff - so we use dictionaries to cache all of the items or abilities or anything by ID and then everything references those things by the ID in the cache instead of keeping a local copy of it which also helps for performance and memory utilization is kind of following that flyaway pattern of just having one copy of the data and everything is accessing that data and then we just can easily swap the data out don't just do another dictionary lookup and find the new one and we're all good and it's nice and fast and it works great just for making all the data really easy to work with which actually I just kind of talked about data management multi server setups is something else I kind of wanted to talk about and I was partially just because I wrote an email about it but it's something important to just remember that when you're building an MMO you don't just have a single gameplay server that everybody is connecting to if you do it's not gonna scale I mean event you can maybe get up to a couple hundred maybe even a couple thousand players on there but you're not gonna scale beyond that you're gonna have either multiple different realm type things where you have like whole server clusters or you know even at the base level you're gonna have multiple servers for different areas or different types of communication light em will have like a world server that's handling world management of spawning different zones and connecting players to those zones will have his own servers where it's like you know imagine you're in a dungeon and that's got its own server and everything going to that instance of that dungeon is is just on that one server and wanted to go to incident saying really like a lot of the time there are two ways you can do it you can either launch up multiple instances in one executable so you've got one process running multiple instances which is optimal that's really where you want to go for that kind of thing and you're using some network segmentation to separate out who's seeing what and how the zones working the other option the simpler one is to just have multiple zone executables that are running and then you're connecting to a different one of those in each one of those is like kicking off with its own IP maybe on its own box in AWS or Azure or whatever you're using and then it's connecting to that world server registering saying hey I'm here if you have any players that want to go to whatever this zone is you know like you want to go to lower duck then send me a message and tell me and tell them to connect to me and then your world server will say hey duck which was just an EQ one zone this player wants to connect get ready for them here's their IP and their token and then you tell the client hey go connect to this IP with this token they make the connection and they're good that's kind of how you tie these things together for the most part there are some other ways to do it that are a bit more complicated and interesting but I don't know if I should just dive too deep into that in fact I kind of just want to jump into some of these questions and see what people are asking so what is the best way to learn networking for someone who only understands unity c-sharp code and has no other coding background oh that's a good question I'd start with something very very simple set up some simple TCP communications where you just connect to clients you net was a good way to do this as a very simple example photon or something could be a good starting point but I think just to begin I would just work with some very simple TCP connections and then start worrying about UDP shortly after that because in general for game development we want to use UDP for just about everything but TCP is a I'd say a little bit easier to get started with and it'll work when you're at the beginner level and then eventually you'll see those pain points the problems that come with TCP it's mostly just performance and and then you'll understand the benefit of going to UDP I think if you go straight to UDP it's kind of hard to see the benefit and you might end up recreating TCP accidentally a lot of people do that they'll start with UDP and they'll keep adding and adding and adding and suddenly it's it's just like TCP but slower so you you want to kind of get used to the two different ones but start with very simple TCP stuff let's see I see somebody talking about chew chewing gum ice so how does one go about learning to and subsequently programming a network stack capable of performing real-time multiplayer responsiveness such as overwatch and such long answers too long stan for a simple pointer ah there are actually really good blog posts about this I don't have the links to them directly but I can find them and maybe drop them in the comments or if anybody wants to just go look them up real quick and pop them in chat that'd be great too but there's a valve has a couple really good articles on it there's an overwatch article on it too it talks really heavily about how to set these systems up with good network prediction and the state Delta stuff so that it's very simple to understand and use the unit EECS multiplayer project does a lot of these things too the code is probably a little bit confusing if you're not used to networking code though so I'd look at these blog posts first so is that there was one from valve and there's I think there was one on overwatch specifically and I'm trying to remember there was one other really good one that it's just totally blanking on right now but if anybody has those handy and just wants to paste them in chat that'd be awesome let's see do you have oh that's right do you have any practical examples slash resources of dealing with things like client-side prediction especially with C sharp focus I'm using Dark Rift 2 to learn net code from basically the ground up and getting basic movement synched it isn't really the hard part okay yeah so in here it's just about that interpolation and prediction and it's also about speed so a lot of time people will try to interpolate and predict stuff and still use TCP and then you're having to do a lot more work to get worst results so you want to make sure that that low-level system is really fast and only sending those deltas or the inputs to control the deltas ideally especially for like a first-person shooter type thing and that's pretty much what they're doing if you look at the ECS demo but yeah I think if somebody has the links please just drop them them up in there and and go through them later or something or everybody can take a look but there are a couple really good articles on it and they said if nobody does I'll put them into the description as well okay how would you handle skillsets like making Jason scriptable objects to make it easier to add after deployment so this depends if it's an MMO I would not use scriptable objects for it because you want this stuff to all be in a database you want it or some remote data store maybe it's not a database like some people still what really prefer having flat files that they ship or binary data files they ship I'm a big fan of databases though just because it makes updating the stuff so much simpler if I want to make an update to a live server and I've got a database there I can get on with my tools maybe connect directly or have some other tool that connects and transfers data from my development environment directly to my live servers and then my live servers can just reload their cache to data from the database or again ideally from some shared memory cache so that they don't have to all constantly hit the database they're just cache server that hits the database cache server looks for updates servers look at the cache server and say hey give me your data and then they cache their stuff locally as well lots of caching to keep things really fast and keep it really fast easily reloadable to that's another thing I think is really important is making it so that your data in your MMO is reloadable on the fly you shouldn't have to kill the zone or kill the server and restart it to update your data if you can set it up so that it's hot reloadable it'll save you a ton of time just think about when your designers are in there tweaking some values they want to add in add some damage to a thing or add some effect to a spell if they have to wait three minutes to test it because they're waiting for the server to come back to go down come back up reset up their test set up you're just burning hundreds or thousands of hours or you know if the hundreds of thousands of dev hours maybe over the long run you're just wasting time waiting for things and it's just like for a programmer you have that context switch when you stop and wait for things designers are gonna get it too they're gonna lose a ton of time if they can hit a button reload it and see it instantly and they'd hit a button reload it see it instantly or even better they can save and have the option just tell their server to or tell their client to request the reload automatically you're saving them a lot of time you're saving yourself a lot of time and you're making it so that they can spend their time on the interesting creative stuff and not so much time on the sitting around waiting for stuff ok let's see what else we got but that's it if it's a single player game scriptable objects are fine because you don't want to have a server you don't want to be connecting to it you just wanted to play it out in that case I do something like scriptable objects or JSON or even a local database that's exporting to JSON data and then it's pulling out depending on how I've got the tooling set up probably though depending on the scale like I said out of outside an MMO or a big scale game where I've got tons of data or scriptable objects would probably be a good way to go okay this server client architecture differ significantly between always live games like MMOs and RTS yes dramatically and so does your networking stack right the server client stuff like in an RTS a lot of the time Oh almost all the time you really want your clients to also be able to work as servers you want them all to be and it's what's called lockstep program and/or lockstep networking and you're gonna build a completely different system from for that than you would with an MMO in an MMO you're gonna have a very client or server authoritative system in an RTS you may have a very authoritative system or you may have a system where you know it's just locally hosted on one of the systems and then the other systems can validate the info so all of the games or all of the clients are running all of the logic and then they're validating with each other to make sure that nobody is cheating that's why you would get these out of sync errors because they weren't handling the things getting out of sync when something went too fast or too slow there are solutions around that RTS is are something I love and I definitely want to build but I've never had the opportunity to build my own RTS just from scratch and that's something I really want to do long-term they'll build like a giant massive like a hundred player RTS with giant maps that has for our games and I'm weird and I think it would be fun so oh I'll talk about that a lot more whenever I do it though which hopefully be sometime in the near future okay what's the best way to approach saving player state avoiding duping but also keeping performance in mind when not writing to the database for every action caching so in that case writing to a shared cache like a memory cache or something else or preventing multiple systems from writing to the database at the same time that's another alternative I would say go with both so that only your cache server ever writes and everything is instant to and from that cache server you're just making small incremental changes to don't write off the entire character that was one of the problems we had on EQ 2 that made character persistence really slow with it took all of the data serialized it into binary and then had to save that and it didn't have a good easy way to save deltas for a good chunk of the data some of the data wasn't like that but a lot of the player data was like that so eventually as things grew the saving time got slower and slower so I don't know I assume somebody has resolved it by now but I don't know how they resolved it I would say minimize the amount of stuff you're saving try to only save the deltas and again only do that through a cache server to get really fast performance and have it be all working again systems are pretty fast now too so if you're not at a huge scale it's not too hard to do that without worrying too much about it but I would say put in the cache server anyway let's see sorry Google just Scrolls that let's see what else we got here is there ever a point where when somebody is developing an RPG that was intended for single-player but somehow the game mechanics work so well for an MMO there would be a wise to change it to an MMO I would say no I mean when I say change it to an MMO you're really rewriting it you could do that like if you've got a game ok this game should be an MMO let's change it but just know that you're making a new game and you're making a new game that's 10 times harder to make them the single-player version you're not just like it's not an easy swap it's not an easy change at all it's extremely time-consuming and it's literally 10 times harder to make an MMO than a single-player RPG at least so and that's just in the amount of effort and the amount of energy that you have to spend there's so many more things you have to think of and every problem is harder every single thing that you do is going to be more difficult everything that you do requires messaging to and from a server server validation of stuff optimization of all that and then realization that things will change and States will be totally out of your control because there are all these other players controlling things so I would say if you can do it but I'd probably finish the single-player one and then see if you want to make the MMO later so how would you architect a skill / upgrade system where upgrades can do a wide range of functions from stat boosts two passives or active abilities that's a great question I like to set them up with abilities that have either some scriptable system in them or just some simple effects so let me just pull one up I'm sure this would be okay let me pull up my test to Jayson ability I've got my ability editor right here so if I want this for example is an editor I made for MMO development and it's just set up as a test Jason got just one of my test abilities and it has multiple effects and you can keep adding in effects or copying effects so this one you see it like it does a thing it adds does some damage to the offense of target and then this one does some more damage over time and then I can go in here and add in another effect that may be targets myself in heals for like 20 to 30 and give it some some scalable amount right so what what this essentially is though is two sets of data there's an ability with like kind of the core info about what's going on and then there are all of the different effects so that designers can build up whatever kind of functionality that they want so they can make it do all kinds of crazy different things it could target all kinds of stuff switchin AoE effects non AoE effects and it gives them complete flexibility without me having to go in and code new things every time so if a designer says hey I've got these abilities I want to do this I don't want to be hard coding that I don't want to code how that ability works I want to give them the flexibility to make that because they're gonna change it and they're not gonna change it once or twice they're gonna change it a dozen times you know and it's gonna change even more than that after the game's out they're gonna want to tweak things adjust things add new functionality make it modify how it works when you're this thing or when you're getting cast on by this other thing and then way beyond the player ability so when you think of an MMO player abilities are usually what everybody's thinking of when it comes to abilities they're like oh yeah well my clerics have these 20 abilities my warrior has these 30 and so on right that's not where the majority of the abilities are majority of them are in NPCs it's all of the things that the things that you're fighting or doing because if those don't have a big variety of abilities stuff gets boring really really fast you want to give them the functionality to do all kinds of crazy weird stuff and mix and match things and come up with new ideas and be able to implement them without having to wait for you if they have to wait for new code every time they want to add in some new little weird thing into an ability they're just not going to do it and things are gonna get boring fast so giving them full flexibility and I said it's essentially an ability and a list of effects and then those everything can kind of target independently acts somewhat independently an ability will just fire off any number of those effects based on what's valid or not and will control like whether or not somebody can use the thing and handle the costing of stuff like taking your mana or your endurance or whatever it is or your you know eating a bandage or whatever eating applying a bandage I mean eating by taking it or eating a food or whatever the thing is right so it can handle the costing and all that stuff on playing some visual effects that you have the idea you really want to separate those both out into two different things I hope that made sense and was somewhat helpful let's go on to another one and that's again why I like building these tools externally - because doing all of that inside an editor not easy doing all that inside of something like WPF or even in a web one not too hard the only reason I don't go with web ones is that the problem I've run into in the past is that people start working in their web browser and then they start playing YouTube video and opening up some other page and then the web browser crashes and I've lost all the data and then they're complaining why did it crash and I don't know if it's my thing that crashed it or some other thing and they've lost their data if it's in a separate tool if something goes wrong I can get a notification right away get automated email hey something crashed blew up go fix this right away something's bad with a web browser it's a lot harder to do that and doing something like that in WPF is really really simple if you've done WPF before or you spend like a I don't know a week or two learning through a little course you can figure it out it's not too complicated okay um I see some interesting questions down there let's see if where we're at though um why would I choose unity for MMO development over unreal um you could really do either I've done them in both to be honest there's not much difference the Unreal networking layer is generally better I don't know if it's MMO ready now it didn't used to be back in the day when I was using it but it probably is by now it probably works fine for mmo's - there's no real reason to use one over the other I'd say use whichever engine you think is gonna be better for your general development whatever engine you would use to build games and normally is probably what you should use to build mmo's I like using unity just because it's I love the engine the there are a lot of developers out there there's a lot of info out there and I really like c-sharp it's just my preferred language now it also makes the tools development nice and easy because that's all in c-sharp to us and kind of bounce back and forth but I wouldn't say there's any specific reason that you would have to go with mmunity overrun real or unreal over unity they both work totally fine for that in fact there are mmo's it's gonna build them both are mmo's fun to develop hell yeah they're I'd say the most fun type of game to develop they're also the most daunting and time-consuming and tiring so they're they're huge they're fun if you can get people in there playing it and you can get to the tipping point of like I have a game it's great if you're struggling to get anything out and you can't even get like the basic functionality going probably less exciting I would say don't ever try to build one solo because getting to that point is way too long and you'll probably never push over it and actually get to the really really fun stuff but yeah I think they're the most fun type of game I've ever worked on um and I can't think of anything more interesting to work on there's so many interesting big problems that you get to solve and different things you get to do in an MMO that you can't do another stuff by the way if you guys don't mind hitting the like button it really helps get people in here so if you can hit them and just get that well over a hundred or something to be awesome just didn't get more questions more people in here and because I like seeing the numbers go up all right let's see what's next talking - hold on I got that drink it got me so talking to servers and storing game data is a mystery to me and can feel daunting how do you recommend learning this with unity / starting off with it I would start with obviously outside of an MMO context and build something much smaller maybe a first a single like a two-player game where you have two people moving around and store a little bit of data on the server the easiest way to do it is have a unity instance that runs as the server as well so you're sending messages to that unity instance and then that unity instance is writing off data you can start as simple as just writing out to a local text file save off the players data maybe buy their player name and then load that data back up use a JSON serialization or whatever serialization you want Jason serialization was just easy this is JSON and there's like there are libraries for it so you can just take a class and serialize it out of text and then take that text and serialize it right back into the actual data so that way you could have players like login get their level they run around they'd do something then they log back out it's not too complex but I would say start with a very easy one and start with an existing network solution don't try to build your own network solution for the first one try like a photon or one of the other photons just the first one that I went to with unity so like my my fallback but there are a lot of options out there just find one of the network libraries that's out there that's for unity and build something really small like that have it write data and load data and keep track of who logged in with some username and you could even use like a username and a password that's stored in plain text for for your practice of course you don't want to do that long term you don't want to be storing usernames ID or passwords ideally and if you do you want to be really encrypting them but I generally a fan of not even storing passwords locally at all and having some other service that deals with it let's see what do we got where to start if you want to build the back end architecture that depends on the end goal of the project if the if it's just you're trying to start off with a game and you're not sure where it's going to start with like say a unity instance for the server have that run if you can build it so that it runs headless and Linux even better which is probably where you want to go like so it's nice to be able to start up a server in the editor and see your like get a server and a client running side by side and you can do that pretty easily and have it connect and you can see what's going on in there eventually though you want to be able to make sure that your server can build out to a headless instance and ideally a Linux instance because if you're going to an MMO you're gonna want to scale up and scaling up Linux is just dramatically cheaper you don't have to pay for the windows licenses so but if you want to build up the architecture you really have to think about a couple things you need your server instances whatever is gonna run those you need something that's gonna manage those server instances a lot of time that likes it ends up being like a world server type thing where it's just a essentially a manager of your different zones or regions or whatever they are and keeps them up and down and then your clients connect to that and then that tells them what server zone to connect to afterward you also need some sort of data stores either both for your content data and for your persistence data which is like your player data so your content data's gonna be all the NPC's items quests abilities all that stuff and then the persistence data is going to be all of your players what items they have what um quests they've done what level they are where they've where they last logged off in the world all of that kind of stuff is gonna be in a totally separate data store I really prefer using our relational databases we're just starting to the slip here but there are plenty of other options for it too you can use the no sequel type stuff or flat files if you really want to I just like relational databases I find them easier to work with and easier to build tooling on and just yeah generally easier to work with and nice and simple to use what OS to use for the server ideally Linux I wouldn't again start off with worrying about that too much first get it working in your to editor instances when she once you've gotten past that and then start worrying about deploying out to Linux servers ideally you know get a Windows version working first because you're gonna want to be able to run your server and windows so that you can debug it easily and test stuff but you also want to make sure that you get to something that's more scalable eventually at least before you think about going live and ideally earlier just because there are some weird things to happen when you go to Linux and you want to be ready for him if you were making a game like fortnight today what text deck would you use I don't know I mean if I was making fortnight I might just jump into unreal because it's already kind of ready for fortnight right they built fortnight on top of it and they updated the editor and the engine to be really good at it so I would I would certainly consider just jumping to unreal to build something like that I had also you know being a weird unity nut I might just try to do it in unity too but if you don't have any real preference either way and you don't have any experience with either one over the other I'd say just go with the engine that it was built in that they've updated it for have you looked into spatial OS and do you think it can work for small teams I very lightly looked into it I think it's a really neat concept I don't know enough about it to know how feasible it is at scale it probably works fine I've heard good things about it but I've also you know I've heard good things about a lot of systems and without checking them out I don't really know myself whether or not it's a something worth or something that can handle it it seems like it's probably a good way to start off but it does from what I remember it kind of locks you into their setup and the way that they do things which could be good if you don't really have a plan for how you want to do things anyway I don't I don't know if I have a whole lot of insight onto it into that but I know that a Charles Oh an infallible code I think you did a lot of videos on that and a whole series on it so might be a good place to ask and me I know he does some live streams too he may be a good good guy to ask about that you have any recommendations on the best mmm RPG accent from the store the only one I know of is you MMORPG and I think if you want to build an MMO and you really have no idea how to get started just grab it grab it start playing with it start building and use it as a jumping point or a learning experience it may or may not work as like a core bit of functional code that you're gonna use long term but very least case it's gonna give you a big jumpstart on how to put these things together how to hook up client and server systems and have all that work I don't know the code well enough to know how good it is or how extensible it is but I have played with it a bit and it was really easy to get working and I think like if I was building an MMO and hadn't built a bunch in the past that's exactly where I would start just jump into it start playing with it figure out how they do things build on top of it and then if you start hitting the limitations and problems that's when you start thinking okay how would I do this so in version 2 or if I'm gonna rewrite things to change it that's probably what I would look at it's definitely what I would look at and what I'd recommend just gonna go grab it and check it out just probably a black friday sale and for it wouldn't surprise me the thing goes on sale a lot it's really cool is it important to learn game design patterns if yes then why definitely if you don't learn game design patterns you're gonna end up with dirty messy code it's just what happens if you if you're not understanding what patterns you're already using and knowing how to make those easy to understand easy to read and it's really intelligible you're gonna end up with messy dirty code and if you don't learn just the general design patterns for code you're going to be missing a lot of opportunities to really simplify things a lot of the time like people think that learning design patterns is hard and it's really not it's really just um learning design patterns is like picking up new tricks on how to make your code way simpler and way easier and just work better and how to solve really problems that seem really hard with very simple solutions that's all design patterns are like simple common well-known solutions to problems that you have all the time and you one thing you want to watch out for is like if you learn a new design pattern don't go looking like hey where can I cram this in like where can I make this fit we want to do is like get a problem and think like hey what pattern really works well for this type of problem so when you have a problem start looking for that like what game design pattern works good for this problem and you'll find articles and videos and stuff about it to learn how to use these and apply them in your own projects or your own issue so definitely worth learning and the biggest reason is cuz it's gonna make a circuit code is clean and your projects actually get complete you don't end up with a dirty mess of stuff that just constantly breaks projects get big they break fast ok I'm a 30 year old who just changed careers and I'm finishing my computer science associate's degree what can I do to stand out for a programming job program code thinks make demos right create your own little games and share them put up a portfolio put up some WebGL games so just build some quick little games and publish the WebGL versions of them and let people see those and play them if you just tell people that you just got a degree and they ask you what projects you've got and you've got none you're at the bottom of the list below all the people who have projects that are as long as the projects not total trash it you're gonna be way up there and even if it is you're still gonna be up above just from having projects and having done things they say work on projects um get a couple of your own little ones and just get them up and done and be able the show that you've made them you don't necessarily have to show the code but you have to show that you've built things it'll give you a big giant boost there because I don't know how many programmers I've met who got a degree and couldn't create a simple program like they never actually wrote any code and they didn't know how to write code and they couldn't actually solve any problems and when you're there hiring what I mean when you get hired to work on code you're hired to solve problems that's the whole thing like they want you to come in and here's the thing we want can you do this they don't want you to come in and be like I don't know how to do anything so you want to be in there just building your own stuff and getting it out there and sharing it with people and then if you can work on some open source or public projects too that can help a little bit but getting your own stuff out there definitely helps a lot can you make a video where you show making of multiplayer game using TCP or UDP sockets um I probably could do that sometime soon I think I'll probably do one on using Ginette oh let's see which mm oh do you remember fondly as a developer and/or player for a player it was definitely EverQuest one I played that game a ridiculous amount like I mean thousands of days of played time on multiple characters there's a giant addict and I just played a non-stop I had a lot of friends who played it was like how I hung out with my friends 12 hours a day we would play EQ if we weren't out somewhere we were playing EQ together um so that was that was definitely and as a developer it was Vanguard for sure just because it was so much fun it was my first one and I was really into the game yeah I just had a blast working on it um yeah I could talk about that thing forever though so I'll just continue on hi I'm developing a game on unity and I want to add a multiplayer mode for one versus one using steam peer-to-peer um can you give me some advice I don't really know where to begin I haven't actually used the steam networking library myself either I'm not really sure what advice I can give there I don't understand it being too difficult to use it but if you've never done any multiplayer stuff it's probably not the easiest in general I found that the Steam libraries themselves tend to not be super beginner friendly but there are usually assets on the asset store that wrapped these Steam libraries or on github if you search for a bit there's a steam unity plugin for their networking system that really simplifies it a lot and it's because they code their stuff for their own engines and they code it in the way that they're used to and it's a very C++ C code and it can be pretty confusing as a unity developer said look for an asset or a open source plugin that will help with that okay um sweet we're up to a hundred and thirty likes hopefully we'll get to 200 soon don't forget to um hit the button also if you guys have questions I see some question marks appearing in chat just drop them on the forum it's in the description so I'm just going down the list because if I try to reach out all miss half your guys's questions just drop them in there just put in one question per thing and all I'm hit him as quick second I'm taking to drink you guys seem good lights to jump it up sweet thank you okay okay never trust user client inputs I get it exploits cheats etc but you can't have everything happening on the server can you how do you decide what should be done on the server and what to validate on the client yeah you really generally do have everything running on the server the benefit is that when you're running these servers had list you don't have that rendering cost you don't have the the big performance costs there a lot of stuff can run a lot easier and faster on the server because it's completely invisible and you're skipping all of the hard parts the one thing that generally doesn't get done completely on the server is movementmovement' is almost always client-side but then it's validated on the server and it's not even validated by like popping them around it's more like if you move in a way that the server thinks is wrong and that's usually something as simple as like a distance Delta we check how far you've moved in a certain amount of time and if you've moved too much outside of those boundaries we just alert and let people know and they'll start investigating and ban the person or we can auto ban them or something but generally let me start off with something simple where we alert people that hey this person's moving in a weird way or they're going to a place they shouldn't get to they're probably cheating we'll go check them out and get rid of them and that's mostly just because moving server-side it's too laggy and it doesn't feel good so you want to have them controlled on on that client side but everything else is definitely in in the server I wonder if I just go to individual questions and have it stop scrolling let's see where was that like 22 ish yep watch this oh yeah this is perfect now I can skip through and I won't even see the other questions until they pop up okay thoughts on using AWS or azure for your back-end any good resources on using cloud stacks with animo and reason not to so for anybody who doesn't know that's Amazon Web Services and Microsoft Azure which is like Amazon Web Services same kind of thing and it's just a hosted environment for servers so you can spin up a server like a virtual machine or you can spin up some services where you just just run code without a virtual machine and we do that for I'd say almost every MMO in the old days what used to happen was people would rack servers they'd get a data center they'd rack up all the server so I wouldn't but guys like my buddy Mike would and go rack servers and wire them all up and then if we wanted to scale up you know they I don't know let's go order quick we got to go order more servers find more space run more wire in fact when they launch to EQ one they actually had to tear up the streets and run more fibre to the data centers because it was overloaded there was the connections were so overloaded that they literally had to be out there in the middle of the road after like a week after launch tearing up the streets to install new fiber Alliance to speed things up now Amazon and Microsoft and Google all have their own cloud platform where you can just you know you want a new server you hit add server or you change the slider or increment the number and suddenly you've got another server up in like a minute or so depending on the operating system can be a couple seconds to a couple minutes to boot up a new server we can just have them kind of ready on demand so that they're already up and and spend up I definitely recommend them there they can get pricey at scale for sure but you can get reservations on the servers if things are going long term and that cuts the price down dramatically and it's just cheaper than running your own servers now if you're in early development whatever just run the server under your desk right you don't need to pay for that and spend it or but you can also get a lot of free credit from both of these Microsoft I don't know what they're still doing now they used to give like 150 a month and free credit in Amazon I don't know what they're at now but I'm sure they have plenty of plans that give you lots of free credit to in fact there was some deal that one of my friends got for I don't know there's a couple hundred bucks and I gave him five thousand dollars in in Amazon credit just recently so I would look at look at the free accredited options and the discount ones when you're starting out and then consider scaling them up it's very very easy to scale scale these things and it really helps save you time and energy and mix it you don't have to manage a lot of extra stuff and can cuts down on the requirements for building an MMO all right next up do you suggest sequel or no sequel databases for storing data and if so what types of data is best for each use case sequel integrates very well with c-sharp so when something like Redis or worth the extra effort I Redis that was yet one of the other ones I was thinking of earlier too it's a war now I have to use I am a big fan of sequel databases still I think that no sequel databases are sweet like they seem like they've got a lot of cool use cases I just haven't seen a big payoff for them in MMO development and that's partially because I want my data really structured usually I guess it's it might just be me but in general with MMOs and just the content data or the player data I don't want that really unstructured I want to be exactly matching with what the server is expecting and I want it I guess very heavily structured and the sequel server makes that possible not just sequel server but like a Postgres my sequel Microsoft sequel server even Oracle although working with Oracle is always a pain for me so I don't recommend it but um any of those I just find them a little bit easier to use and they're a whole lot easier to build tooling on there are plenty of tools like the one I was showing a little bit earlier they'll just hook right into those and let you set up all the data kind of automatically and I haven't found a real downside to using a sequel server so I'm a big fan of going that route I know a lot of people who prefer flat files and no sequel databases but I haven't ever seen a benefit from them in actual development for MMO specifically now if somebody knows of a good reason I love to talk to him sometime but I had like said I've never been convinced by it there's never been an argument that's convinced me yet okay have you ever tried Godot and if so what are your thoughts about it I have not I've heard about it it seems kind of neat but it doesn't really apply to anything that I'm doing like it seems like it's just a newer free engine just cool and all but it's just not something I've ever had a need for all the games I'm working on working unity it works fine it's fast it handles all the problems I need and I haven't found any reason I would want to switch yet let's see what's something you've developed for an MMO that you are most proud of um it's a good question I'd say my favorite is ability systems I got to work on a couple of them and it's just been fun seeing how you can make things extremely extensible so that designers can do whatever they want and build all kinds of crazy things I'd say that's probably it's just ability type stuff and that's really when you think about it in an MMO abilities are the combat system like that's the majority of what combat is is using abilities things using abilities back and forth and those being interesting and unique and just making systems that make those interesting and unique is a lot of fun also some of the tools that I made in the past a long time ago were really really cool even one of the first ones that I made which like I'll admit the code is terrible for it I'm sure if the thing still exists somewhere I'd be embarrassed to see the code and it took me a lot longer than it should have and it's buggy but the first tool that I got to build was a database migration tool for content data so designers could save their data off and to kind of pick and choose what things they wanted to promote up to the test server and production server very easily so they could like switch to a branch work in that branch and then tell their lead to push that branch over and whenever they're ready and all of the stuff they'd been doing in that specific branch in their tool would just get pushed over and they wouldn't have to worry about it it simplified things dramatically and saved a ton of time that one was cool too there are a lot of things like that though I don't know which one I'd be most proud of other than the ability stuff is fine no you cannot see did you ever think about creating and no okay let's see how many inappropriate questions are here do you have any experiences setting up Auto build systems how would I set up a system to create a unity build where whenever somebody pushes our repo oh yes definitely so there are a couple ways to do this what you'll want to use generally is some git hook so if you do like if you just get for your source control you can set up a get hook that fires off a build system the one that I've used most of the time is team city and it's just cuz it's c-sharp it handles c-sharp projects well and it handles things pretty easily I just like using it and it simplifies building quite a bit handles the whole build process sending out emails and automating all of that stuff and then if used like an octopus deploy to do deployments out to different servers there are a couple other options out there so go Siddhi is one that I've had recommended quite a few times I've never actually used and then there's of course the built-in unity ones I've tried playing with those before but never at a large scale mostly because I'm impatient I didn't like to wait and wait for those things to finish building so I would just do my own systems using something like teamcity alright let's see what's next with old school runescape you could log onto the server of your choice versus awhile where you're locked into the server to make a character I don't see games taking the runescape approach what are your thoughts on how to build / separate your world / servers well in that case it's more like you have one so it's kind of hard to explain but in the WoW style scenario you'll have servers where they have their own databases usually so it's like a you've got a server and it's got its own databases and it has its own infrastructure it's like this whole cluster of things that come up for each server and everything is associated with it and then transferring stuff between them isn't extremely easy because you're you know transferring data from one database to another and then remapping all of the ideas which can be a giant nightmare by the way that's why server mergers and server transfers can be a huge pain in the ass if things aren't coated right or if things aren't really designed right from the database side to make it happen and I said right but I mean if they're not designed with that in mind from the start it can be really really painful and slow the runescape scenario it's more like you've got this one data store and then you're scaling out instances of the server so it's like hundreds of instances of servers and you can scale that up and down and those are completely independent of the data store I think that the reason people a lot of people prefer the WoW style that order the ones that do is just because then you kind of have this forced sense of community where you're seeing the same people where with runescape scenario you're not necessarily forced into that where you can just switch over to another server and it's totally different people I don't personally have any preference on it and coding it isn't too much different it's just whether you're connecting to a single source and everything's kind of tightly in that cluster or you're or sorry everything's you're connecting to you yeah the single one for your your server your game server and then it's all in that cluster or you're connecting you know you've got just one server that's got all of the data and everything's connecting to it and I said one server but it's really like a cluster of servers - it's just totally independent of those yeah I would say you can build it either way it's really just a matter of how you want your game to work and how you want that to happen but if you do build where they're all separate make sure that you use something like unique identifiers for your IDs for players and items and things so that you can merge and move these over easily because everybody always wants to do server transfers server merges and stuff like that and if you don't plan for it in advance it's just a nightmare you end up having to take things down like temporarily while data is transferring over and I've rewritten multiple server merge processes I hated it every time I mean it was interesting and fun but it's way harder than it has to be if you plan for it in advance okay let's say you have an aggressive mob and they start to chase a player based on distance does that mean every monster has to calculate the distance queue every player x times a second no not every one but every player well really what will happen is the will have a quadtree that's got all of the data in there and or all of the entities in there and their positions and only things that are in the same little come I don't know if I can explain quadtree is live and get it get it cleanly but it's essentially when people are moving around the people who are in an area of interest is changing constantly so it's not comparing every NPC to every player it's comparing it's taking an NPC that's not already in combat that has other people in its little box so in its whatever region is and then it's comparing based on those and it's doing that every X times a second or every once a second or something like that a lot of the time these things don't even tick like every second sometimes they're like every two three seconds then it starts to feel weird though if that time gets to be too long so sometimes it would probably be about a tenth of a second we're checking to see if anybody's coming range but again we're only checking against the players that are in that little cell if they're not in that cell or there's nobody in that cell that NPC could theoretically just go to sleep it doesn't have to process anything at all maybe it has to process a little passing or something or it could be flagged to always process things but most of the time there's NPCs that are in a cell that doesn't have any players in it just sleep they don't process and do anything so they're just saving CPU time okay Jason basically I need multiple servers in order to hold more than a thousand players on the open world RPG how hard is it have a thousand players along with NPCs it's not easy right this comes down heavily to optimizing that network layer and optimizing those messages the other issue that you're gonna run into though with just that many people is rendering - you also have to be ready to render a thousand players or have a solution for that because it's a lot harder to address even than the networking side the networking side is not easy to address by the way having a lot of players aren't like a thousand plus along with NPCs it it's costly and it takes a lot of CPU time so you have to get it down so that you're not allocating at all and you're really minimizing the the network cost or the cost of doing all that Network data and just not sending too much data another option - is to go with a more split out system where everything isn't all on one server so where all of those thousand players aren't necessarily connecting to the same server and they're connected to multiple servers that are then communicating with each other things get more and more complicated as you want to scale up though so it's a it's a big one that's a hard one to solve and it takes a lot of time and a lot of work but it's certainly possible - plus with that like your NPCs are not going to be sleeping very much can I run Crysis on this the ability editor brought a question to mind by the way Crysis is a game built on CryEngine which is it was actually with the first one that i modded and played with a lot and did a lot of level editing with I had a blast that I really loved that game and the editor and tools for it I never really got into using the engine though the ability editor brought a question to mine designing systems to be modified in the inspector which is what I generally do seems like something similar to tool development does your ability tool export the data to Jason specific folders oh no so what it does is it saves directly to a database so those through service and then saves to a database and then the game servers read from that database and from a cache so it can pull the data as it changes so I can save in one tool and then go over to just any old game client connected to the server tell it I want to reload whatever set of data and then it just pulls that it basically pulls the Delta so it checks what's changed since then so whenever save something in the tool of cache out that or write out the timestamp for when it's changed and then we'll just look at hey what's changed since the last time I reloaded just a simple again sequel so nice for this just simple sequel query give me all the things that have changed since this and a single one line call and it just updates the cache with that and then I've got the new data there instead of having to export and do a build or anything like that and again the main reason here is speeding up that turnaround time and development time for designers gonna make it so that designers can change stuff get back in and everything just all their new changes are there I guess without any downtime so then it's a couple seconds instead of a couple minutes and there's no big context switch what can a small company do to deal with network lag since we have no real control over the route our data takes well you have a little bit of control based on where you're hosting these servers and how they're being hosted the most important things to do though are using UDP and minimizing the amount of data that you're sending you can ascend as little as possible now as for actually controlling the routes I got no idea that's kind of beyond anything I've done but I would say generally going to something like AWS I've had never really had a time when I couldn't find an AWS server that was fast but again I also kind of biased because my location makes it easy their data centers not very far from me so I don't know beyond that other than it say you want UDP and you want to minimize what you're sending and receiving you don't want to be sending and receiving anything extra there or more than you need obviously when you're starting off not not the first thing to work on but as you're getting to issues like this you want to really optimize that which books do you suggest for networking I don't know if I have any books to suggest for it if I think of any though I'll put them in here I used to have a couple but I don't remember what they are and I don't have them with me anymore and I don't remember what was in them I wish I did do you think in this moment it is reliable to create an online 1v1 game where the player is the server it depends if you're not too worried about cheating then yeah it's fine if it's a game where you really have to or you really can't trust the players and there's incentives for them to cheat and they're playing against people that they don't know then know you're gonna run into the product you're gonna run into problems with that because people will cheat people will disconnect as a server and other issues will just come up so in that case depending on the kind of game you're probably gonna want to run some sort of a hosted server or um for some other types of games you know think of like asynchronous games like where you're doing turn-based stuff you might not even need like a real time connection to a server you're just sending messages back and forth to some API that's then reading or sending data back to your clients and then you can have a very very lightweight scalable server that's really just like a a web service that you can scale up you know with lambda expressions or something else in AWS and just crank it way up and have it have it work easily so it depends on the kind of game usually 1b1 games tend to not be super fast-paced action stuff and they can get away with the turn-based thing but if you don't care too much about cheating and that's not an issue then you can get away with this as well but if that's a big problem yeah you gotta watch out for it most games though it really doesn't matter too much most of them they're playing on the phone and nobody cares about leaderboard isn't getting to the top and if you have a cheater if they can't ruin your game it's not as big deal and an MMO cheater can completely ruin and destroy the experience for everybody you know one on one experience they can maybe annoy one person okay any GDC talks you can recommend um not offhand I'm gonna switch back to summary mode there's a lot of goofballs in here actually let's go back to any GDC toxin you can recommend I can't think of anything there are a lot of good GDC talks in general that I like but none like stick out as ones I would say you should definitely go watch right now does ECS work for WebGL I don't think so it might now but it didn't last time I checked I'd be surprised if it does I assume it will eventually though what UI framework slash manager would you recommend for something as complicated as an MMO in that case are you probably gonna want to write your own it's gonna be very big and very complex and you're probably going to need to write your own UI system for it I haven't found a good one that really works great for an MMO personally there might be something out there but every time I've looked there are always some downsides and things that just didn't work right with it or at least in that context they generally work good for other stuff um what's the most difficult part about creating an MMORPG oh god everything is harder I'd say the hardest part is that every single thing you do is harder nothing is as simple as changing some state local leader and reading some data and changing some state everything requires networking everything requires messages going to and from the server and validation on both ends usually and then getting it to okay I'll go back to individual mode getting it to replicate right is it's just just whatever you're doing in an MMO expect it to be just like building a regular RPG but everything takes ten times as long and everything's much slower you have to run servers debugging stuff is harder um yeah there's a lot I don't know that there's any one part that's it's the most difficult but getting the networking layer right is very hard getting the inventory system right is hard any guys making it so that your systems are really extensible and that things don't fall apart constantly it's very easy when you're building an MMO to make things really brittle and have systems where stuff just breaks constantly where your code is you know you add in a new feature and some other random thing you never would have thought of broke so that's what you really want to watch out for and the biggest issue I've seen let's see what's next are you writing your own networking I am NOT kyle is though kyle is writing a new networking stack for a game and it's a really great and I'd say pretty frigging awesome and one day I'm gonna convince him to hop on here and start talking about it as soon as you can okay said that's all built on top of Gina what computer configuration would you recommend to feel comfortable to develop on unity whatever the best thing you can get is I'd say well one thing you want to watch out for is you don't want to have a system that's - much better than your average users because then you'll end up not optimizing and not seeing performance problems and if you're not seeing the performance problems until they get out to players you can have a big problem because everybody's like oh yeah it runs great and then give it to players and it runs like crap for most of them or half of them or whatever and it can really really destroy your game I mean that was one of the big problems Vanguard had when it launched is it ran really terrible for half the players right they're getting like one frame a second where everybody on a dev system is getting like 4050 because we all had super high-end systems so you want to make sure that you're not too high above the average but definitely make sure you've got a good GPU lots of RAM because you're in the editor you're gonna be doing a lot of stuff in there and reasonable CPU also a fast solid-state drive if you can get an M to drive like the Samsung 970 Evo I highly recommend it because it'll make things much faster for importing assets and updating stuff when you're just working in the editor okay I'm taking another drink real quick we almost have as many likes as viewers by the way I hope maybe we can get it up over 200 that'd be cool well I'm trying to finish my set ok the next question in unity - reference objects are options find find by tagging directly dragging them into a serialized field trying to avoid dragging and dropping as much as possible ah ok so here it's this is really about components right so in unity when you're referencing components or game objects you can find them by name or by tag or the one that I usually use I almost never use find by name or tag instead I use the find component or to get component in child or get component or get component and parent and then the reason for that is that it gives me a type 2 person so I got my little brackets and I put my type there and it's I don't know that it's necessarily any faster but if I rename my classes it doesn't break if I rename a tag everything in my code breaks rename a game object find a calls break in general though you want to do these in and awake and you want to cache them right when the things start up and you don't want to be doing them at runtime because it's slow so you want to keep them keep them there now for serialized fields when you want to use those when you want to assign things and it's not as obvious what the thing is it's not on that same game object or it's not the only child that's that type in that case a serialize field works great but one trick you can use is in on validate you can override the on or implement the on validate method and then have it fill in your serialized fields using a find by tag or a fine or a get component and child is really what I do is I could get component not so much a find by tag generally avoid those again because they're just not safe when you rename things and when you rename something and your code breaks and you don't know why or when somebody usually what happens is you somebody a designer goes in and renames things because they're trying to help and then everything breaks and you're like what the hell broke and it takes forever because you're not thinking about oh maybe they renamed something so I use get component find object of type and those things to cache stuff also trying to minimize model behaviors a lot of the time people use model behaviors when they don't necessarily need to and just use a regular class that you instantiate in the awake sometimes it depends on the scenario and the specific use but it's something to just be aware of you don't always need everything to be a mono behavior sometimes you do to don't think that you never do but sometimes you don't need it I have some experience with editor scripting and unity how do I get started making external tools for unity I would say you need to have a need for it first so you need to have a scenario where you need to store data that is either not going to be easy to edit an ad in unity or you need to store it in some other store like data store like a database or a JSON data store or something like that I wouldn't necessarily just get to trying to build some tools for it outside unless you actually have a use case for it because otherwise kind of spending wheels and wasting time and you're not gonna really learn nearly as much as if you have a real scenario for it one thing to do is just go search for development tool jobs there are usually a lot of them open and not a lot of people apply might be a good way to get started with that either for unity or unreal or even custom stuff sometimes there are two different types of tool jobs out there - there's some data heavy ones where you're working on just content data and then there are some that are just very heart heavy so if you're looking at you you want to make sure that you're looking at the right types of tool jobs based on what you want to do some a lot of them are like art importing and art pipeline stuff and then the other ones are kind of like that tool I showed earlier where you're setting up tools to allow designers to build the game and build out the content for the game what's the best method of collaborating with git when you're handed a project with little prefabs in one massive scene with no prefabs me and other devs are tearing our hair out at the one unity file not being able to retain just a couple things you can do first you can probably consider splitting out the scene and get the scene into multiple scenes and load all of those scenes additively so that way you can at least segment it out by different types of functionality get your particle systems and your content type stuff like your your player controller type stuff in one scene your world and your environment and another scene and maybe interactable stuff in another scene split that out into separate scenes first and then start working on splitting it out into prefabs scenes is just easier because there's less work to do when you want to go in and make those into into separate things but then oh that's museum in hopefully that helps okay so yeah it's split into scenes and then look at prefabs afterwards and start splitting into prefabs having one big scene like that is just a nightmare there is a scene merge tool that you can use I don't really use it instead of just split it into separate scenes and it isn't so much an issue anymore also not having too many things in the scene helps a lot too so if your code is not all just game objects in the scene can be really helpful but again splitting it is definitely the simplest thing you can do what advice tips would you give somebody trying to learn coding from home write code and build lots of projects just keep going in and keep making new projects and keep working on projects the easiest way to learn stuff at least for me is by doing it and that's what I'd recommend everybody to do go build a bunch of games try building different types of games don't don't stick on any one thing for too long and just you know practice practice practice also talked to other game developers as much as you can and just show them what you're working on and work alongside them if you can and you'll pick up things a lot faster just working with other people and showing people your stuff and getting feedback on it really helps as well alright I'm getting really thirsty here let's see what else we got if I decide to use a unity as a game engine what should I use as a networking back-end this is gonna depend a lot on the game you want to use like I said earlier we're building a custom one well Kyle's building a custom one on top of Jeanette that works great there are a lot of options out there for different Gammage or different network systems to get started with I would try looking at some of them I've used photon in the past I played with bolt in the past there are probably half a dozen reasonable options out there that you can play with I don't know which one I would recommend using necessarily right now the depends a lot on the game that you want to build you said earlier that in case of server client architecture presumably in relation to MMOs yeah that generally speaking anything but movement is handled server-side does that apply to the buttery networking in relation to FPS networking no so then again the well it kind of does yeah so the the networking the client is doing the movement and the server is doing the movement at the same time when you want that really smooth stuff they're both doing it and they're both processing and then the server is just making sure that the clients not doing something about the server still moving them and then validating again with the client so in that case you're doing both if you're not MMO side you're really just usually doing some validation and not doing the move like that but in an FPS you're moving on both sides and then making sure that those line up and match and they should be in sync all the time it's pretty complicated though it's very fun to learn about them performance wise for MMO does it matter to use for loops instead of for each loops nope not at all you will see zero performance difference there and you're gonna have lots of loops and lots of things what you want to look for are the expensive things inside those loops so loops are fine doing expensive costly things in loops often is bad so you want a profile and a lot of time with an MMO or any game the biggest thing you can do to maximize performance is just profile and look for it most of the time the things that you think are the problem aren't the problem and the things that you never thought of are a huge hit and you just go in and fix them and it's relatively easy if you don't profile you're just guessing and wasting time don't know what that was my non-english skills are terrible and I just didn't leave it up because I can read it in case it was something inappropriate sorry if it was English urge if you can translate would be great if you were tasked with quoting an entire MMO project how much would you charge five million ten million or how would you even go about quoting such a large project what are some categories you would have unreal so I mean quote an MMO project is huge and I mean the scale of it can vary dramatically it could be a very small scale MMO that you could build in a year probably not something that anybody really wants a larger scale MMO that's not like some special category that you know somebody's gonna pay for for some reason that you could build in a year is gonna take a lot of time and a lot of developers it's not just programming you need designers you need artists you need a full team to really build out one of these games and I mean yeah you're in the many millions I'd say to build out or to realistically build one out if you want you can always know hobby project it out and keep going and going but you're it's gonna be really hard to keep up with things and technology and new changes in the environment it's they're just huge projects they're not small at all there's so many things every single thing that you remember like everything you want to do is gonna be 10 times harder and MMO so whatever your quote for a normal game multiply it by 10 and then probably multiply it by 10 again because you're gonna need 10 more people 10 times the people to work on it to it's there they're huge they're big I certainly wouldn't try to quote one realistically somebody asked me for a price on it I don't think I could give one there's huge I've never seen one that was not in the tens of millions of dollars tho that got released where do you draw the line on where to trust the client pretty much never never trust them they're always lying validate everything that they send because it's always a lie they say you always have to assume that they're lying cuz there's nothing stopping them from lying and in an MMO if they lie they can ruin the play for everybody else uh what are your thoughts on atavism online I don't know I mainly remember the name I don't know if I've played it or not um I'm not sure I'll check it out again it sounds familiar but I played so many memos I can't keep track anymore um how to start building an MMO where to start join the team that's already building one that's what I would recommend if you really want to work on an MMO find an MMO development team or a company that's working on one maybe even one that's open source or one that's been around for a long time and they've kind of bled off their developers and the developers and move to other companies or other games try getting in on one of those especially if it's like an MMO that you really like to play and you're really familiar with oh and you feel like you can understand the engine at least a little bit in the code a little bit try applying for that the older it is and the less people are working on it the easier it'll be to get into it as a first time developer in there so I look for something like that or just again look for something that's open source or public and see if you can contribute there those probably a little bit harder to pick up and learn from then if you're shoved into a real-life production environment but um that's where I would where I would go first get some experience on a real one watch this problem struggle with them and then make that to build the next one but you really need a whole team to build an MMO what architecture should you take designing MMO client and server well I don't know that there's a single word or sentence for that but you really just need to have everything be again very server authoritative and very clean that you want to make sure that everything's very clean and extensible I guess so that you can keep it building on to it and not break things I'm a big fan of unit tests now too so if you can make your code all testable it'll save you a ton of time in the long run we used to have giant rooms full of testers to test every build that went out and if you can minimize that and reduce that it'll save you a lot of time a lot of energy and a lot of money but yeah I'd say just most of the time though like as a server scale or server white set up it's usually just clients zone servers and like world servers something like that that you've got built up or the world servers controlling zone servers and telling clients which ones to connect to let's see do you recommend any unity assets slash tools I like the Odin inspector I've been using the doozy UI which I think it was Jason story that recommended recently and those are probably the two that I'd say used most often for MMO stuff I would check out the u MMORPG asset it seems pretty cool and lets you get started on an MMO really fast - let's see we're building a game called Ballmer grounds it's built with unity and cross play between PC and Mobile 50 player battle royale MMO type design on AWS what's your opinion on running lightweight render pipeline instead of normal where 60 FPS is important I don't know so since the lightweight render pipeline came out I haven't worked on any mobile projects and it's just been a side effect of the stuff I've been working on it seems like it's probably the right way to go especially with 2020 but like I said I haven't had the new problem to solve yet where I needed to to do that so I'm not completely sure what what the best option is there it seems like it's probably the way to go and it's the way that things are going forward getting art assets for those pipelines tended to be a little bit harder depending on if you have a full team building them that knows how to do it or if you're contracting or hiring people are buying assets if you're doing that it might be harder to make that swap but if you're not and you can make the assets for it I don't know of any downsides to it if anybody does please just drop comment though and let people know oh and somebody else I saw mentioning Jason's note about a do tween it's pretty cool it's good for a lot of simple UI stuff and moving objects around definitely something to use if you're interested in that but it's not something to use in MMO development particularly the can I share the architecture design of client-server with list of used technologies sure most of the time it ends up just being unity and some sort of sequel server or Postgres or some other database have used all of them in Oracle along with some memory cache like Redis memcache D something like that that can run in AWS generally right now I use AWS for most of this stuff just using some of their services you can even use the RDS databases to manage the database so that you don't have to run that and actually manage it and maintain it and just have it Auto scale as well and keep costs down a bit and that's about it and other than that it's just a UDP messages through some network library that you want to use like said the recommended one from a buddy Kyle is Ginette so that's I'd say where you should look first can you name a good engine for open-world sandbox MMOs um I don't know of any that are specifically for that I don't know what would be a great option for it I you could definitely do it in unity or unreal but it'd be some work there's probably something out there that that does it where it's just automatic in scales but I don't know that the engine is going to be great for everything else there are a lot of like pre-built solutions that can really help with that kind of stuff but they might lock you down in other ways so it's kind of a trade-off on whether how you build the stuff if you want to build the open world giant stuff yourself or if you want to build a lot of the other things like the rendering pipelines and the tooling and stuff yourself but I don't know of any specifically I know there were some like years ago when I looked I don't remember the names of them we looked at all of them and decided not to use any of them and went with unity I do not what programming pact practices and patterns um so look at the game programming patterns book you can read it online I would say if you're interested in design patterns programming patterns and just clean code check that out it's got lots of cool stuff it's not so much in a c-sharp context but I also did some videos if you look on the channel under game programming patterns and solid principles on my channel you'll see a lot of those same concepts in there too but I'd say look at that book - game programming patterns you just google it you see his book it's good stuff lots of useful information there how's your team integrating a network layer upon unity it's just a dll so it's just a network library built that the engine I'll use it's all in c-sharp it's actually pretty pretty easy to use it's kind of surprising it's not too hard to just swap it in and out currently running on an old ThinkPad with an old video card and not much ram I'm sure I should upgrade the RAM but I want to know what's most important get out of the hardware yeah the video card there is really weak in the RAM as weak I would say if you can bump I mean the video card if it's a thing pad it's gonna be really hard to do but you should be able to get some RAM for relatively cheap I'd say definitely upgrade the RAM if your laptop can handle it I don't remember that one specifically if you can go up to 8 gigs it would make a relatively noticeable difference I think if you can go up to 16 it would be pretty big but then the video cards also going to be kind of a limiter on that I don't know the stats on an HD 4000 but I assume it's slower than any Nvidia or ATI card also I don't really like to develop on laptops in general just because I like the performance and cost the cost for performance of a desktop plus just their real estate and the ability to just load up screens monitors are relatively cheap so I got three giant ones here so I can see all kinds of stuff and see different windows especially for MMOs I want to have a client here a server there some code here and be able to bounce around really easily alright is learning unity a better industry decision than learning custom engine development yes if you want to make games yes if you want to build engines then no if you want if you want to be an engine programmer then learning how to do that is very important and learning how other ones work is very important if you would just want to build games learning unity or unreal is way way better you're gonna actually be able to get a job doing it if you don't know how to use the engines that people are using it's a lot harder to get those jobs doing doing development on them I would definitely stick with that unless again unless you want to be an engine developer some people like to do it I've known like three in my life that we're really into that kind of stuff they didn't really care about building games they cared about building the cool technology and the engine stuff instead they have a blast doing that if that's what you want then that's the route to go but it's there are definitely a lot less jobs for that the jobs are like at places like unity working on the engine or at custom shops where they have their own custom engines usually there aren't many people editing the engines in actual game to have shops there some but not very many what are some RPG cliches that you like or don't like um I have no idea I I just like RPGs that are fantasy I've never really been too much into sci-fi RPGs but I'm building one now because it's fun fun to try and something new at least for MMO I guess I like them for single-player stuff I don't know that I have anything though on that what would be a good rule of thumb for caching variables and data cache anything that could change that you would want to be able to change very easily or that you're going to be accessing a lot as I use there's two different two different instances so for caching variables like anything that's slow to look up or slow to get you want to cache it and anything that's gonna change often like design data or content stuff I like to cache that and then I'll always read directly from the cache so two different types of caching like caching like a local instance or a local reference to the object for things that are slow to look up and then just using an ID and looking up the object in a cache by ID for data that wants to change often like and new items or something like that design patterns I think I hit that one a couple times so I'm gonna skip ahead if CCU is too is it possible to turn my PC into a game server um I don't know concurrent is that's concurrent I forget what it's to users max at the same time I don't know the answer to that one I'm not sure what that is have you ever thought about an MMO like ready player one on top of something like blockchain yes I think that a ready player one MMO will eventually exist or sword art online type thing will eventually exist in you on Musco probably be the one who brings it wouldn't surprise me at all I don't know that you would need any blockchain stuff for it though I think it's a cool idea I think it would be fun and it might just kill society but we'll see if you haven't seen sword art online you just go check it out and watch it you see what I'm talking about it's really cool it's like jumping into an MMO and playing it for real I probably get really tired after a while though I don't know that sounds fun if you're looking at a personal project from somebody applying to be a junior developer what are the main things you would hope to see them doing in coding that project and that code project I mean ideally having somewhat clean code that's readable having variables or an easy one as having variables that are named what they are not having your variable name like a P 3 and P o1 or whatever and random crap like that very least name your variables and methods well so they it's easier to follow and understand the code also make sure that it works and it runs don't send somebody a project that you hit play in it doesn't work like send it to yourself test at multiple times test it on a new device make sure that it's good before you send it out I've seen lots of people apply for jobs with code that they submitted that didn't compile and was full of errors and obviously they didn't even get past that step because if you can't be bothered to make sure the thing that you're sending is actually valid you know how can they trust you to do that on the thing that you're committing so that's about it other than than just get some projects and build some things and put them out there build something that's kind of fun to play ideally to if you can there's something small though keep it keep it very tiny and time boxed if you're giving people a demo you want them to be wowed in at like the 30-second mark you don't want them to have to play for ten minutes to figure out what the hell of a game is you don't want it to be overly complex and you don't want to be too simple you wanted to be like what I'd recommend is take an existing game it's very easy to build and very easy to understand and then put in some little twist on it at like the 15 to 30 second mark so go oh hey that's cool I recognize this I know how to play it and said get in know how to play it instantly and then you introduce some little surprise like oh I didn't expect that and that's what's gonna push you ahead really easily thoughts on star citizen I don't know I was really hyped about it I thought it would be really cool I've tried playing it a couple times and it wasn't what I was expecting yet I'm hoping that it gets to what I'm expecting which is like a giant space-based MMO I've no I I don't keep up with it though cuz I just kind of hop in once a year and try it out last time I think I flew around for a little bit and walked around for a little bit and decided to wait till next year so they've got a ton money and kind of development I hope it ends up being a fun cool game we'll see I'm not sure where it's at now though I like it's probably about at that one-year mark why should go give it another shot how do you go about validating things like user movement a simple one is to just do some time stamp checks on there their speed so what we can do is like second check where they moved how far they've moved and check what that movement speed is if that movement speed gets to be too high and then hey we look at it the other thing you have to watch for though like teleportation type things you need to make sure that those aren't triggering it so that you're going through a different code bait or a different code path for those that's letting you know that hey this is actually a valid movement there's one way to do it there are a lot of different books out there and articles about it I think one of the books they still have back there exploiting online games talks a bit about that so I'm starting to lose my voice thing I'm gonna wrap this up in like the next ten minutes I'm getting really thirsty and talking a time okay I have a strong outline for how various game systems would be would specifically interact and overall feel for an MMO project and can certainly summarize each element at whichever scale with only surface level knowledge of the development itself is there a way to pitch the entire project and work from there guiding it from above with a clear vision if you're famous or rich yes if you're not it's probably gonna be nearly impossible because a lot of people have really good game design ideas and pretty much everybody building a game has some idea of what they want to do but sorry people knock another everybody pretty much has some idea of what they want to build but getting other people to go build your idea is nearly impossible again unless you've got a lot of money and you can pay them and bribe them or you've got a very famous name and you can kind of draw people into it it otherwise it's you know is like yeah you go to any game company and you ask for game ideas there are everybody's got you know two to ten and they all think they're great and it's really hard to push yours up especially if they're not you know people that you already know that you're kind of guiding and motivating their server-side collision and path finding path finding definitely collision for some things so for player movement basic movement you don't necessarily need to do your server-side collision there for things like a fireball flying into stuff you may very well want to use some server-side collision pathfinding definitely gonna be server-side for an MMO hold on a second delivery's and dogs huh all right next up how do you handle databases every example I see online people hide it behind a web front-end instead of having direct database access in the unity software I assume the concern is embedding server info but can't that be handled as a start parameter even embedding the server info isn't so much of a problem because your database connection is only going to be on the server side it's not gonna be on anything that your clients are going to see and realistically it's probably going to be in some configuration file that your server is reading from the biggest downside to reading directly from the database is I mean there's of course some security concerns but the bigger thing is that it's harder to scale if you're reading from an API like a web service or something you can easily throw a cache in front of that and then just read directly from the cache and not have to hit your database often at all and then you can save money and save time on the database cause there's no reason that you can't just directly access the database from the server you just want to make sure that you're not shipping that with the client and you probably want to have it inside some sort of virtual network so that things outside of that network can't access the database don't even know that it exists yeah my dogs go crazy every time a delivery comes and it's Black Friday time so there's a lots of deliveries coming um do you have I don't know what that is so I'm gonna say no I wish I did sorry have you implemented tracing and KPI reporting and how do you handle it not a whole lot so in most of most the reporting is more around like user activity what people are doing what items are finding what things are killing how fast they're levelling that kind of stuff I've done and usually what happens is there's a bunch of logs for that and then it's getting parsed into another system and then transformed into useable data and that's just because most of the time people don't build in reporting systems directly but they build in log systems so that gamemaster's can go in and see what's going on and look through stuff so I set it up I've done this a couple times where it just reads through the logs constantly watching for updates and then update some some data store for it I don't know what I would use now back in the day use some OLAP systems but I don't think that that's necessarily the right way to go anymore I think there are a lot of other systems that just make it easier to take all of that data and report on it and you just want to get this stuff that's going to be actionable there's a lot of data you can track but if it's not stuff that is actionable like it's going to point out problems or point out things people should work on then it's not worth worth getting it can be extra confusing so things like what items are getting dropped how many items are getting dropped how fast people are leveling what NPCs are getting killed that kind of stuff is pretty important or how much damage a specific class is doing like you know like how much damage is due range or do in on average against in fights at each level and compare that to everybody else and you can kind of get all of that data out that you want to not necessarily get from logs well you could but you have to think about a little bit more and just kind of track it and save that stuff off and say I'm trying to answer the rest of these real quick before the tower hits if you were to plan to become a successful game dev would you suggest learning all parts of game dev art modeling unity unreal and music design no pick one and get really good at it there are very few companies that need you to code and do music and do art and all that stuff you want to pick one and focus on it and get really good there are a couple people I know that are pretty good at all of them they all still have a preference for the thing that they do best and the thing that they're really good at if you're trying to do all of them you're just kind of diluting yourself and not getting as much of whatever the important ones are they picked the thing that you care about most and work on that the most work on all of the other things a little bit understand them a bit but don't necessarily try to get all of them to maximum level just get comfortable enough that you can manage them alright can unit be used in production errs at more for prototyping unit is deprecated I would recommend not using it for production at all you can play around with it for prototyping but it's gonna be gone soon so I wouldn't even necessarily go that way let's say find a different network solution for here how are you dealing with collision detection so ever calculated or client I think I just hit that one a minute ago see I'm using unit don't and any recommendations for MMO projects a programmer with no games can do yeah again I would say grab that you MMORPG asset try it out it'll help get you like a starting point and give you an idea of how mmo's can can be built I'll show you it's it's just like a nice out-of-the-box solution that lets you have an MMO and then the other thing I would say is try to apply at some MMO companies try to go work at one for an existing MMO not something that's necessarily fresh and development or huge like don't go apply for a WoW but go find an MMO that's no slowly dying or dead or whatever you know or just has lower player base and try to go work on that it's easy to get it way easier to get in than it is to go get in on some big hit game and you'll get a lot of experience you also see a lot of the problems and meet people make new connections and be a lot easier to get into you know big scale MMO Slater if that's what you're interested in how do you decide what functionality should be split into multiple scripts by use so it's by the thing that it does each script I like to have do one thing generally or handle one thing pretty well sometimes that's not the case and it's two or three things but I like to logically separate them as much as possible if I can separate scripts I usually do and try to get them into it many many smaller scripts especially if I can use some abstract base classes and just swap out the implementations with different little scripts that's great it makes everything easy to read if the code gets to be more than a couple hundred lines long almost always just force myself to split Excel go hey there's definitely some seams here some spots where this stuff can separate and I'll look for them and split it out it's just definitely a skill that takes a little bit of time in practice but just looking for anywhere where things are different oh good somebody mentioned you MMORPGs half off right now well that's only 20 bucks that's a deal so yeah I just split it out as much as possible and get your scripts as small as possible most of the time so if you're thinking like hey is this too big it probably is any recommendations for integrating input slash finite state machines inputs changing depending on the state with assets from the asset store for example I want to try it with do zui um I guess that's it's a lot like swapping out implementations with abstract classes or state machines I don't know if I can give a good recommendation on it right now just because I'm getting really thirsty and out of breath but I would say it's definitely the kind of thing that you want to do I just don't have a good recommendation for right the second what's your favorite game if any I'm probably Magic the Gathering still I still play it a lot play arena now online and play with friends and what are you hoping to see you come from cloud gaming with the new streaming stuff stadia x cloud etc I don't know I don't have any big hopes for it I think that it could be really cool if it simplifies things and simplifies deployment makes it easier for people to get their games out I think that bigger the bigger shift is gonna be that you know if your game is on those systems when they come out and you can get them out there and out to people you just get more viewers fast I don't know that it's gonna be kind of thing that's available to every developer though so I I don't know that it's gonna make a big shift for like smaller indie devs but I think for bigger companies it's gonna be just another platform where they can get things out and get people playing games easily and it could also help a lot with scenarios to where people don't have big beefy gaming systems um I just happen to have one because I work on them all the time so it doesn't impact me as much but I can definitely see the benefits there I think it's gonna be cool it'd be interesting to see how it goes though and I'm kind of excited to play with stadia myself let's see what else do we have okay I miss one what do you think about spacial OS I mentioned earlier I'd recommend checking out Charles's videos on I haven't used it much myself so I'd say go check that out and he's got a whole series on him which I think seems pretty interesting but he said I haven't had a use case for it myself yet so I haven't really dug in Pantheon what is he using custom stuff on top of Ginette and Oh more spatial OS and no question but thanks okay I'm gonna wrap it up there cuz if I see any more questions I'm gonna keep answering and I'm gonna run out of breath and pass out so I don't know if you guys thought this was helpful or you guys have a lot more questions if so just share it and drop comments in the description or down below and stuff because if it gets really popular and has a ton of views I'll just do more of these and talk about it I was also like say gonna try to do some live development for just MMO stuff building actual server code and this is just a camera mode and showing what the server code looks like showing how it looks to refactor that stuff so if people really want to see that drop a comment below and like I said if this thing is big and popular I will definitely do that kind of stuff and well assuming I can get approval do that and we'll go through some actual code we'll do some real reef actors and see kind of what real big game code looks like in a real situation I'd see anything else I don't know if I had anything else I guess I just want to say thanks again and remember just hit like and share and all that stuff because it does help with time and I try not to pass out out of breath oh if somebody asked me to talk about the new course um I'm kind of out of breath right now but if anybody's interested you can check it out it's at game dot courses slash architecture you can see it it's a talk about some of these things not so much MMO development but more just eye game architecture stuff and projects how to build bigger projects again not quite at the MMO scale cuz it's it's like I don't know years of stuff but so somewhere along the way and again yeah if you guys have anything else always feel free to drop comments or send me an email it's just yeah my name it at my website and I think that's it okay thanks again really appreciate it lots of great questions that was fun after do this again soon all right bye everybody
Info
Channel: Jason Weimann
Views: 12,713
Rating: undefined out of 5
Keywords:
Id: fuz3Bh8FQJQ
Channel Id: undefined
Length: 119min 58sec (7198 seconds)
Published: Sun Dec 01 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.