No, it's true. A bit of fire and they run around like headless chickens. Come up against a troop of mad Multiwinians and they will fight to the death but a little bit of fire and it's 'RUN FOR THE HILLS'. Pah!
Okay, in some ways it's understandable because fire has a nasty way of spreading and it's not nice listening to all the Multiwinians screaming as they are about to shuffle their mortal coils while being slowly imolated but in this case their cowardice is causing me issues because there is a bug
I found this bug as the result of creating a special version of Multiwinia called the 'TestBed'. If you have been playing the Beta you might have seen this appearing in the server list. If you do then know that it is two copies of Multiwinia playing against each other at 10x normal speed and sometimes 100 the normal speed. It's a sight to behold and perhaps one day after launch we will enable this feature for all to see. The purpose of this is to be able to run multiple automated tests so we can be sure that Multiwinia is relatively bug free. By multiple tests I am talking something in the order of 100+ runs of the game in one night. This is quite important for a company that doesn't really have a QA dept. The beauty of it is that we can get it to play exactly the same game over and over again just be pre-seeding the setup values with the same amounts each time. This is why I say Multiwinians are cowards because I have been watching the same game over and over again where they run away from fire. The scenario goes like this:
1, The purple team take over a spawn point with just one MWG.
2, The blue team immediately take offence and send in a squad to execute him - which they do.
3, Purple takes this as a personal insult and sends in a squad also who proceed to lob a few grenades.
4, A crate drops in purple's camp.
5, The fight goes on while purple opens crate.
6, As luck would have it there was a flame thrower turret in the crate which purple then takes immense pleasure in placing right next to the spawn point.
7, Flame turret immediately begins to toast all of the MWG's in the vincinity - including I might add the purple team.
8, One of the four trees around the spawn point catches fire.
9, The fire spreads from the first tree to one of the other trees.
10, A single MWG panics and runs.
Step 10 is where it all goes wrong.
Multiwinia uses a predictive physics system to keep all of the clients in step with each other which means certain math functions like rand have to operate together. For the most part because each game is seeded with the same startup conditions every time you play - but those values are random for each actual game started so that you have a different experience against the AI, but all of the clients get the same copy of that random value to ensure they are working from the same page - coupled with the fact that any request to do something has to go through the server before a client executes it means that any call to rand on one client is matched with exactly the same set of sequences and calls to rand on the other clients. This ensures that all clients see the same game and experience the same game. When this mechanism goes wrong we get a 'sync error'. Step 10 produces exactly that, the lone MWG makes a call to rand that is not replicated on the other clients so the game dies. As the person charged with the 'stability' of the game leading up to launch it's my job to correct those type of errors.
The process of working out what has gone wrong can be a long one. Mainly because while the de-synchronization of rand may happen at one point it's effects may not actually be felt till later when the game does internal checks to make sure that all of the clients are seeing the same thing. So the only way to track down the where the actual fault happen is to output and compare lots of log files. I am lucky that I developed the TestBed because it means I can reproduce this same error 100% of the time - that is not always the case and usually leads to Heisenbugs. So at this moment I am attempting to work out the unique ID of this particular MWG and then track his (or her - do they have a sex?) through the lifetime of the game to work out the actual point of being scared and then work out what exactly scared it to see where the client's differ and then correct that difference. Might not sound like a lot but it's a huge amount to go through but somebody's got to do it.







