Gadgetory


All Cool Mind-blowing Gadgets You Love in One Place

Chris Roberts on Instancing & Star Citizen Player Counts

2015-03-07
hey everyone this is steve from gamers nexus tonight I'm joined by chris Roberts hey about and working on star citizen of course and we're here at PAX East this content will be focusing on instancing and handling multi cruise ships and players and all these sorts of things I've lost the technical talk for the people who are into that be obviously want to try and get as many players into one server instance as possible and sort of limitations are mostly to do some of its network traffic bound and some of it is just sort of rendering bound because we have a much higher fidelity you know in terms of both graphical and the simulation so even on the network traffic you tend to have to communicate more information about the various components and the ship that you have that like in a sort of more traditional MMO you don't really have to do much 10 my character is now walking over to this point because that's what you clicked on whereas in with us we have a whole bunch of the simulation criteria but would we know we're actively working on things to try and you know increase the the count which partly is optimizing our own code of testing our server code and then partly being smart about how we manage the rendering and the update of things so you know where the yeah the former cry engines default multiplayer setup and actually most of the FPS multiplayer setups isn't very useful for the way stars's and works because you know most of the stuffs in space and you tend to have you know areas of huge emptiness and then you have areas of a lot of density right so like if you think of a capital ship and inside that capital ship is like an FPS level and they could be lots of NPCs or players aboard and a lot of geometry detail then that capital ship will be flying in a big empty space and so traditionally most engines sort of have like spatial partitioning systems and sort of kind of assume a fairly constant density of data so most FPS is use things like trees and stuff which are quite good for now you know okay I've got to build out like my FPS level and it's got you know every 5 meters it's got a new piece of geometry but that doesn't work so well for us because we can have that but then we can have huge areas that have nothing and so it's not particularly efficient to sort of Traverse or deal with that data recluse and inside that so we're you know we're working on this thing which I've talked about a temp of the Chairman and I think there was a question about zone so it's now was to watch that and ask the question so we have this new thing that's that's sort of called the zone system and it's sort of the best way that we've come up with to do sort of good spatially putt partitioning of our sort of data and updates and you know we're trying to unify into one system because a lot of things in like most engines there's like a separate partitioning system for the rendering and there's a different one for the entity updates and then there's a different one for the network traffic well the idea what this is to put all in one zone system that can be used by rendering it can be used for visibility occlusion that can be used for updating can be useful for intelligent network updates and stuff like that and so the concept of the zones is really just sort of breaking things into containers that are sort of logical so you know say though could be orbit around terror and that could be the zone that contains you know taro the planet and the ships or the space stations in direct orbit around it now there also could be a zone in one of the ships that says okay here's a spaceship is on its own and then inside the spaceship it has multiple zones where each we could think of each room being his own so really it's sort of like a a way to sort of create hierarchical data structures that are not necessarily limited to specific dimensions of sizes it's sort of flexible and fluid and you know so if I move a spaceship a big spaceship that has you know all these different rooms and characters inside well it's actually at one's own that contains a bunch of other different selves now using this if we just update the position of the spaceship zone so it's updating inside this big point of interest own which is the Terra one well you know I just thinking of the structure in the code this way you just have to change the position of the master the spaceships are and everything inside it is all relative to it so you don't have to update any of it you don't have to update any of the children you just do the master and then all the update and rendering code is fine for so it's just much more efficient like the way say CryEngine works and a lot of other entrance work is that you tend to have this trickle-down so in the old way and be like I have children of a parents here spaceship and inside the children would be like other players or rooms typically what happens as i move the spaceship and then it cycles through all the children and updates their positions too so it's sort of changing the kind of paradigm around so you're always sort of updating sort of so it's I guess the easiest way to think of it is a lot of local space coordinates right so you know most engines have this concept of like world space and then local space and then local space would be relative to your parent but with its own system that's sort of like doesn't stop right there is any new challenges using that system instead well I mean it's a big challenge in that it's a it's a it's something that isn't in CryEngine so we're basically putting that in and you know replacing the octree and the the physical grid the you know cause like the physics system because another one uses the physics system in pray engine has its own sort of like aunt grid for the physical entities and then there's another grid for the entity system because the answer these systems different than the physical entity system and you know so you have all these different systems and the AI has its own has its own AI objects that move around with entities and they have their own grid that they get worked around so and you know network has its own sort of the networking has its own sort of distance colleague so these they have all these different systems that essentially kind of do the same thing which is sort of to intelligently clout things that you don't need to render you don't need to update and so we're trying to unify it so you know we could be more efficient and they could all sort of be speaking the same language and so that's a big challenge because you know this is going in the high level we're lucky enough that we've we've hired you know we have 20 odd people at frankfurt now we're going to grow it to at40 and you know the core of our frankfurt team the core of the CryEngine like guys that you know work built far-right alumni and crisis and yeah so we've been lucky enough to hire some of the some of the original architects of CryEngine and so they're the ones that know yeah I just low level stuff that we're doing and they're actually leading the charge on this stone system that you know I'm pretty confident that we'll get it to it it'll be implanted well but it's it that's it that's the you know that's a fairly large we're just on the tail end of the large world implementation which is moving the engine the 64-bit so that's pretty much done and then the next stage is its own system and those things together is sort of a going to allow us to have these really large spatial areas the because you literally will be able to fly from one side of the system apps the other side of system map all the way it will all be sort of in the same space and but you'll be flying in and out of these zones so for instance you know where I think I've talked about like quantum jump when you sort of like it's like you're fast travel yeah well that drops you out and it drops you out to like the zone it would drop you on the zone and as you get close to the zone it would go okay in this sound I have an asteroid field so let's start streaming in the data you know the geometry we need for the asteroid fields and I'll create the asteroid entities in the background of there's a you know for pirate ships on a stream stream in the geometry on e for them and create them in the background and so that's all known because as we move around based on why we have the zones the zones sort of contain what's inside of them and then we can use the zone system to sort of tell the streaming engine what things it needs to stream in and it also could be used to you know for the network communication so because if I've got some players here over here in his own over here and I got some players over here in his own over here all on my server well the clients the clients here don't need to know anything about these clients right so what the server would do would be like it would be telling all the clients in this zone what they were doing and the clients over here and these what these guys are doing but it wouldn't be sending messages to these guys about what these guys doing because they're not going to be closed today so that's all kind of the sort of things that the zone system buys us by having it sort of unified because you know previously the networking system sort of it was more about well if he's so far away maybe I don't give you so much data but it was on a very sort of you know view around the camera basis so it didn't have this concept of like potentially because what we want to do is we want to have the server to be able to be loaded up with it many players as possible so essentially the server should be able to save our player counts 50 or 100 people they should be all simulating even if they're not all close to each other they could be all spread around the system and then as more and more people get join in the system we would probably spin up another server and if there was like 50 people here on 50 people here well then these 50 people would go on stay on the server these 50 people be moved on to a new server it all be seamless in the background you would you realize that you just got handed off to another server because from your point of view as a client you only see the the world around you so and that's kind of how the game works the game works it on the client side it's all the your view is around you and what the service telling you is you know who you're going to see like basically the server because the service sort of sees the big picture sure and it's using the zone stuff so it's okay you're going to be getting close okay Steve's coming up in a ship over here so clients start streaming in Steve ship and set up as density because you he's you know 20 klicks out of 30 klicks out so really the set all the server's doing is telling the various clients kind of what they can see in the radius around their worldview and partly that's determined by the zone system on the server side and then also done on the client side this seems seems like it would assist in larger scale battles larger in terms of actual space concerns not necessarily player counts yeah well and also also potentially can help and play account so this like so one example is you know like so we have single-seater ships but we also have multi cruise ships right right so now if you think about it if I'm in a big space battle and now there's a address or a bengal carry or whatever from my point of view when i'm in space unless i'm like right up next to that carrier i don't know what the people are doing on side the carrot carrier now so like maybe if i'm by the bridge like a look in the windows the bridge i should be able to see people but if I'm you know 100 meters away I just know there's a carry there so I care what position the carriers in what where-where's guns are pointing but I don't care like what the 50 people aboard the carrier is doing so you know with what we do with the zone system you know one of the potentials is we potentially could have sort of the simulation I mean certainly on just a client side you get the efficiency very rendering and all the rest of stuff but even our network side you potentially could have you know multiple game servers all you know basically working on the same battle and some of the game servers are taking care of the people that are aboard the ships during some of the game and one of the game services taking care of where all the ships are so that's one way that you potentially could increase your play account because you know you could maybe if your limit is oh i can have 50 ships or 50 players then you know you could potentially have 50 ships and then you know 100 players or 200 players if they were aboard these other ships as long as they're not like in the same space together because if you think about it like inside a carrier or an address of something that's it sound like contained llevaron so you could have a different server worrying about what all the people are doing on board the ship and then that ship communicates back up to the server that's dealing with a space level saying well this is the way the guns pointing and the good may be pointing because you were in the turret moving it that way but on the on the other sort of space battle side the that server doesn't really need something doesn't care what you know like if you got yeah you know someone's wandering down a corridor well it doesn't care because you know it you know you're not that you don't see that right so so that's that's one of the ways that where the zone system could definitely help out in terms of potentially getting more players in is that you know you could say well inside this zone you're talking to this server when you're when you leave this so now you talk to this server out here that answer some of the questions we received about larger ships with multi cruisers that have excessively large cruise well yeah we do and actually also some of our ships even even if we manage to get a lot of players running around it still probably won't be enough on the bigger ship so it's probably always going to be some level of MPC contention for the bigger ships and so that again his own systems can be useful because that's useful for AI updating and rendering updating because if you think about walking around a big spaceship or like you know we're here this convention center well you know we're in this room right I mean I don't have a people where the convention center today 30,000 whatever it is but you know there's 13 of us in this room like so you know in a game you know game and game sort of updates like we don't we don't care what i was doing outside this room you know with you know the cameras just looking at us so we really just need to render us and so that's kind of like the idea of zones is that you sort of can you know we're in this room we're in now is his own right and you could even think that this small like you know the the sub sub group thing with the curtains we have here is as small as own inside a bigger zone and that's kind of what that's the advantage of the zones is that you can sort of partition ate it partition it logically based on sort of these areas and containers and it works very well for space for what we do because we in status and maybe not so much it wouldn't like an open level like I'm going a far cry and it's all open that's harder to container and he's right because you're just an open area but their spaceships you know space and spaceships tends to even when you have the FPS stuff know you've got space and then you're inside a ship and then even inside a ship is different rooms and so you don't really need to be rendering all the other rooms when you're inside one of the rooms so it's actually you know sort of sci fi space stuff is quite apt for like compartmentalizing the various information or data that you need to update and so it's good longer term we're planning to have something like land on an empty planet in a jungle and go out to do some exploring but like a lot of our use cases everything that works very well with the zone system and in such a way that the rendering occlusion works well be so that's really a lot of the work that we're doing and that brings you brought up exploration on planetside exploration versus beyond stations I suppose we're being in space is there actually a different render target for the maximum amount of players in that area or I imagine it's not all uniform yes yeah it's hard to say right now because we're now yeah we're still in the we're still in the stage of there's a lot of optimization that has to happen on the show to get our player council because the problem what happens is even when people play some arena commander now and they may sort of experience some rubber banding what happens is when the server itself drops its frame rate like it's not stimulating at least 30 frames a second as a sort of what we call the game server so we have we actually have multiple servers you know in the big starters and set up the game server is what your client connects to and that's the one that sort of is sort of the CryEngine server so to speak right now there's another set of servers that go above that that because the game server is never designed to be persistent it's basically designed to sort of operate on a situation just like say I'm play battlefield that I get together with a bunch of the people and I start scenario filing that's that's a lot quiver to the game server but our game servers are always getting span up and span down all the time they're not so much persistent why is persistent is the universe and what you own and then there's then there then for each system there's the system server and the system server keeps track of all the players inside the system and also the AI and it's the one that's almost doing sort of this contextual matchmaking so it goes oh you're flying from planet to planet p and i'm flying over here and you know we're going to cross paths at that point goes okay crossing paths and then it just run through sort of a contextual matchmaking which would be some things like you know are we enemies do we both won a PvP are we equal skill or something like that are our pings small enough and then you know it basically makes the decisions and if it says yes we will see each other it essentially gets a game server spins it up if there isn't one already existing and and and tells our clients hey you're now talking to this game server and you know and then you know tells your client that you'll be seeing me and tells my friend I'll be seeing you and then let's that get simulated until it's resolved and then we go back into sort of quantum drive or whatever and we're handed back up to the system server that's now deciding who will see or what's instance we get put into and then there's another level above that which is the universe server / simulation and that's the one that's sort of running the economy and simulating 20 million AI agents running around you know bag things selling things fighting each other doing all the rest of the stuff and so that on the universe side you know that data trickles down to the system servers and the system servers sort of take that data and then use that to you know have various encounters that you potentially and those encounters are always sort of basically these templates of encounters that you'd have that are dynamically or procedurally created based on what's happening on the universe server and then so that encounter template and where we all are gets fed down gets all crunched together it decides whether we're going to fight in a I see another player depending on our positions of any what we're doing and then once it's made a decision of an encounter that's going to happen it tells you client okay here you are his game so were you talking to here's the scenario this happen right sure and so I've Canada that's the setup so the area that we need to get the performance for to get most number of players is not the higher level stuff because that's not something that's sort of real-time it's the game server level and that's the challenge because whenever that sort of drops below 30 frames a second in simulation on the server side that's when you start to see things I grew up banding and stuff I'm sure glad to sync and so part of the problem that we have is that our spaceships for instance the far more complicated objects or entities then say something like in crisis where it's just a character running around and so you know right now there's a fair amount of network bandwidth has taken up by shunting around the extra data and also just because they're much more complicated entities is a lot more CPU time that's taken up by updating these entities so while we're looking at is more efficient ways to update it where we can optimize how it could be smart about and that's also part of where the zone system comes in where you know just sort of brute force updating it you've got sort of intelligent updates based on where you are what your distance is all that kind of stuff so that covers all of the instancing information a lot of you posted questions hopefully this answers some of them if it did not please leave a comment below we'll see what we can do about that and of course as always thanks for your time Chris are you welcome thanks for the listing rambling on about his own sister absolutely occlusion it all that kind of stuff better and I hope you guys are interested in that I liked it it's a kind of a fun sort of engineering challenge and I'm pretty excited about getting it all work which is the sort of stuff that's towards the end of the year you're going to see the fruits of it it's squadron 42 and the you know the very first sort of baby steps the positioning universe which will go through the end of the year so a lot of work but I mean it is pretty fun because I can see this just of this if it all works it's going to be awesome so thanks for listening yeah links would be Robert space industries com and of course gamers Nexus not now for our own coverage and we will see you all next time alright see you next time
We are a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for us to earn fees by linking to Amazon.com and affiliated sites.