Chris Butcher is one of fourengineering leadsatBungie Studioswho were responsible for overseeing the creation of the smash hit " Halo 2 . " If you ’ve read our clause onthe A.I. of Halo 2then you already know that Chris is a really sassy clotheshorse . When I visited Bungie on November 3rd I in reality had a opportunity to baby-sit down with Chris twice .

One of the largest differences between " Halo 2 " and the original " Halo " is that " Halo 2 " can be played over Xbox Live . for pull that off , Bungie had to make a new way to internet Halo multiplayer match over the Internet . This responsibility fall largely on Chris ' shoulders . In my second consultation we discussed connection " Halo 2 . "

Now rather than put this clause in the traditional Q&A manakin that you ’re used to seeing , I ’m just going to let you read what Chris had to say . Because the truth is I only expect Chris one question :

Article image

“So, what had to be done to put ‘Halo 2’ on Live?”

Keep read for his reply .

Stay Together Now

Chris Butcher :

" Halo 1 was a internet game because you could play it over theLAN(Local Area internet ) with System Link . That was a very successful part of it . The thing that we really need to do for ' Halo 2 ' was to take that and extend the mesh model to the Internet so that you could bring over Xbox Live .

' Halo 1 ' networking is what ’s relate to assynchronous networking . What that means is that if you have some issue of software program and dissimilar instance of computer software run on different machines . In this face , the game is on four Xboxes . Those machines are all running the same game pretence and the game simulation is deterministic . That think of that if you if you render the model with the same inputs then it will acquire the same outputs when you run all that computer code . We use that fact to leverage the multiplayer secret plan . Instead of place [ the info ] to every machine – every musical composition of information about what ’s happening in the integral biz world – or else what we send is , " here are the input that we provide for the plot simulation at this second in clock time . "

Now our game runs at 30 ticks per second , because NTSC is 60 cps . So we run one game ticking for every two draws of the screenland …. and we fork out one frame at a time , so our physical body rate is 30 build per second . Every clock time we execute the game , the motorcar taste what the players are doing in the game at that second . Like , what they are doing on their controllers whether they ’re parachute or stupefy vehicle , turn three degrees to the left , pulling the flaming push button … or things like that .

It then sends that info about what the players inputs are in the secret plan pretence to the all other machines . It also get selective information from all of the players who are not on the local car , and so that means every machine at the same metre has all of the inputs it needs and they all execute the pretense together … Then all the political machine live where [ each thespian ’s natural action ] is in the world and the consequence , and the consequences are act out on all simple machine … So the United States Department of State of the humanity is maintained systematically across the machine . "

Who’s in Charge Here?

Chris Butcher continues :

" Halo is also a customer / server based web role model , meaning that one simple machine in the game is the server of the game , and then everybody joins it making that auto the victor . If you are a guest , you send your actions to the server and then when the waiter have the actions from everybody it then sends out everybody ’s collective legal action to all client . And that ’s how we make certain everybody ’s in the same biz together .

It ’s actually the same mesh modeling we used inMarathonback in the day , although Marathon had some bugs in it . The thing with this networking model is if there ’s a hemipteron in the computing machine computer code where two machines could supply the same stimulation but get dissimilar output signal , there can be problem . There are lots of different ways that could happen . It could be a bug where you are using just some random refuse memory board in the computer and that would be random from simple machine to machine . That would be bad .

The other thing is that we ’re not running exactly the same pretense on all machines . When [ the waiter ] is beam data about what actions are go on on all of the machines [ it does n’t ] transport them to everybody . It would be apure match modelif we did send it to everybody .

The thing is , we execute the pretense and we endure the world , that ’s one part of what we do , but then every frame we also have to do things just for the local instrumentalist , like you have to figure out what their first soul artillery is doing , whether they ’re reload or throwing a grenade . We actually render their view of the world as well .

So those actions – because they only take lieu on one motorcar – those natural action ca n’t be leave to bear on the deterministic state of the existence . So basically we have a separation inside our game . This is the stuff and nonsense that is deterministic – it ’s all the objects in the world and how they move . This is the stuff that is not deterministic – the sounds that you may hear on the local motorcar , what you are rendering with your graphics and a couple of other things . We have to split those two .

If we keep them separated , then the plot will stay in sync between the other machines . But if they are not separated correctly – if there is info transferred between the two – then the machines will diverge in the pretense , and you might not necessarily notice that because one machine could be like the actor is here but the same player is [ in a somewhat dissimilar place ] on somebody else ’s car , so you might not needs discover that , unless you tried to frivol away them and the bullet attain them in such a room that hit them on one machine and missed them on another simple machine . Then the divergence essentially cascade like that until finally the biz is completely dissimilar on different machines and then it ’s meaningless of class . "

A New Network for Halo 2

" So the thing about that is , because the client sends the server their action and the server air them back to the node you have to have a round slip between the node and the host . That do work delicately in the local area net . The latent period is credibly two or three msec between box . You know , if you expend theXB Connect Softwarewhere you could have a personal computer that burrow dealings from your Xbox over the cyberspace , you could really make it work between people over the cyberspace . But our experience is that because you ’re a client , you have to waitress for the round trip from your server for your natural action to do anything . All of your movement or your shooting interim by some amount . What we desire to avoid with ' Halo 2 ' is designing a web model that is really susceptible to that .

So moving to ' Halo 2 ' … rather than send out your actions from simple machine to machine , what we have to do is we still have a client and server , but rather than the node wait for the server to assure it incisively what should happen with a bend , the guest is presage the full world . It is simulating the world exactly as it thinks things should happen , so that will be dead in sync with the waiter . The things the customer does n’t have a go at it about are other rootage of stimulant , like the other actor in the game .

So when you take that modeling you’re able to foretell yourself perfectly , so you’re able to run and jump and get in elevators and all those thing you’re able to predict what the player on the client box is doing fine . Where the differences come in is when your interacting with other people in the world . The customer auspicate that the other player is moving leave alone because the last entropy from the server suppose that , but if they moved aright at this time , there could be a slight remainder .

So these are the variety of artefact of the electronic internet exemplar . It ’s that when you interact with a collective source of input signal from some other political machine , you ’ll see curiousness that does n’t jibe what your predicted world was on your machine . So the path that we go about doing that is we still need a guest server / framework but the client sends the server not only information about these are the button push that I am doing , but it ’s at one higher point , it ’s information about where I am in the existence and what I am doing at that moment . So rather than saying that I adjust my joy stick force 23 degrees , it would just say I am in the Warthog , I am here and I am drive in this focus .

You also get off a flow of upshot to the host saying this is what I think is happening in my earthly concern . Like I imagine I am throw off a grenade , I think I sniped that guy , I think I tally him in the head . Then what happens is the server unconscious process these stream from every simple machine – it ’s all their versions of events . And what ’s happening is the host is also running it ’s simulation itself . The difference is , it ’s not presage ; it is the authority . It is creditworthy for all of the stuff that happens in the game . "

For Example

" So if I ’m the client , and I pull the gun trigger to hurl a grenade , I really create the grenade in the world . I ’ll play the animation , I ’ll wreak the audio . But the grenade [ in terminal figure of really bear upon the domain ] – I ’m not allowed to create that because that ’s an legal action that require the authority to do so . The server is the only machine that can produce a destroy objective and do other things like damage people or award kills and poppycock like that . So , what bump is that the customer are transport asking to the server such as , ' I request to throw a grenade here . ' The server will say , ' All right on I consider you because my knowledge says that you are here in this fix and that is consistent with my edition of events . ' So fundamentally , there ’s interplay between the client sending their version of events to the server and the server stress to reconcile them and create the authoritative version of the world . It then sends out the authoritative version to everyone in the world .

So the full sequence of events for throwing a grenade is : I throw a grenade , I see the animation , I hear the speech sound and then some routine of msec later the server will start sending the information for this new aim in the world which is the grenade that it create as a result of my action . So from the user ’s perspective , you see this grenade come out in mid - air right there and we have all this wile and prognostication to make it see like these complex interactions . interaction like embarkation someone ’s fomite essentially are made up of five or six unlike message from the host . You ’re on the vehicle , you get going the vivification to board him , he gets kicked out , and he ’s here in the humans . All the interaction between those events is send as a freestanding message from the host . "

Everything in Its Right Place

" The last musical composition of the teaser is as the customer you ’re try out to present a consistent aspect of the world to the musician . What the server is sending you is maybe it ’s sending you four update a second for this player that is running and shoot near you . So fundamentally four multiplication a second you ’re get , " This is where that instrumentalist is , this is where he ’s looking and this is what he ’s doing in the world . " So if you were to just present that the path it is send off , the guest would see a stack of jerky , stuttering behavior because it ’s not needs a smooth packet that ’s coming from the server .

So we have computer code that manages the object in the predicted customer world . Basically it tries to smooth out the appearance of what ’s happening to the players in the reality . For model , rather than just sending the player ' He ’s here , he ’s here , he ’s here . ' the server sends , ' He ’s here and this is what he ’s doing and this is the direction he ’s head . ' Then the client can use that info to predict for mayhap the next 300 milliseconds what that ’s go to see like before the guy cable actually receive there . So rather than seeing a guy go jerk , jerk , jerk , tug , I see him here and he ’s running here and he ’s running here .

Once you ’ve predicted the behavior of the guy you essentially apply smooth out to smooth out out those differences in the transmittance of data so that you see the bozo run . possibly the range of his movement is n’t completely coherent but we do n’t twitch him from shoes to place . We speed up him up or slow down him down establish on where we think he involve to be at that point in fourth dimension . And of path you do the same for the vehicles , the forcible object in the humankind and everything like that .

So the trouble fundamentally … is that the server have got to generate this stream of information from clients . And how do they do that ? Well the room we do that is there are two unlike type of things that the server can transmit : There is the doggedness Department of State of aim and the consequence that take seat .

So ideate the persistence state of this jersey on the tabular array – that it ’s in this position [ Chris move the jersey ] or it ’s in that position , right ? So for every object in the world , the server is tracking information about what has changed about this physical object and which car is this info being sent from .

For illustration , if I confuse a grenade here , and there are a whole lot of object on the ground in that location and they go fly , they will eventually nail down down in novel blank space . Those objects will be brand . Their new spot require to be institutionalise to everybody in the earth because their position has been changed .

But the great unwashed who are a farsighted way away do n’t care about those objects very much because maybe they ’re in a battle somewhere . But when they derive over to that location they will eventually want those objects to be in the right location . So what that intend is that those objective are low priority because they ’re a long way away . But they are marked because they do take to be transmitted eventually . So over time , the priority of those objects will uprise and wax until eventually they pass the doorway to be transmit . "

Getting Your Priorities Straight

" Basically , the organization remembers what it sends to hoi polloi . It get it on that I have 5,000 pieces of entropy that I would like you to have , but I can only send you maybe 50 in this packet because the web only allows for certain size packet , transmitted a certain rate in gild to not congest the web .

So it figures out the most important things are based on where you are , what you ’re doing , whether you ’re active or idle , whether you ’re shooting at someone . You have intercourse if I ’m flash at someone and they ’re in front of me , I need to know about them at a very high priority . But if there ’s somebody behind me that I ca n’t see , I do n’t need to be intimate about them . The waiter determines the priority of objects . There are a destiny of rules for things . Grenades have a precedency between 50 and 70 , but just a little object lying on the ground , maybe is n’t a priority – between 10 and 20 you acknowledge , or something like that . There are actually cases in which a downhearted priority physical object would n’t get rendered at all from the guest side .

There are essentially two types of data point that get prioritized . There is the perseveration state of objective which will always be sent eventually . They might take a retentive sentence and the intellect for that if there is an object locomote continuously with a low priority then you do n’t need to send information about that object until you ’ve seen it . You might want an update every 10 arcsecond to say at a low precedency , " Here ’s where it is . " The priority arrangement manages the precedency of the objects , the time since it was last transmitted and how much information is needed to transmit that data .

There is lasting state and there is also a current of events that are taking office in the earthly concern , like a bullet hit a wall or some cat said " urg " because he was vote down . These events are the information we do n’t call for to air . If it becomes necessary to drop events , we will . So for case , if I blew up a million grenades in a multiplayer equal , many of those grenades would just fall off the end because they could n’t go in the word of mouth fast enough . They would be discarded as irrelevant . So there is this balance run on between matter you have to have and things that are go on in the earth that give you a dear delineation , but are not necessary .

This separation of information means we can stick out all sort of interesting matter . For example , because every client is being send the haunting state of the entities in the humans ( the entities are what we call the persistent objects in the world ) , that mean that any client has all the information about the world . Because the client knows everything about the world , we can stomach score them be a young host , if the server machine was to turn off , get unplug from Xbox Live or the player just want to provide the biz . What pass is that the game intermit , a new server is determine , control is shifted and the plot uphold . It works in a LAN game too . So you’re able to finish a secret plan with a altogether different set of player than when you get going , because we have the applied science to copy that information and reassign a new server .

The potential of Xbox live could be really exciting . There are all kinds of interesting social forking to pack this game online . There ’s so much more to it than even what we ’ve talk about . I ’m not the best person to talk to about all of the societal aspects of design a user interface or directing players to game , but I can definitely talk about the meshwork side of things . "

You certainly can Chris , you certainly can .