26
Oct

Not here yet, that’s where! For all you folks waiting for my review (there will be a review), it’s delayed until after I actually get the game. Of course, I could just make something up based on the screenshots and reviews I’ve read. Haha.

Anyway, here’s hoping it comes in today and then I’ll be able to play some tonight and post my impressions soon. Also on deck, I picked up a copy of Age of Empires III and played it a bit. But I don’t want to talk about it too much until I actually give it a real chance. I will say this - the game was not ready to go out the door. The first multiplayer game we played went out of synch.

Ok, a little aside, what is out of synch you ask? I’ll digress into technical details here. Stop reading if you don’t care (though I guess you can always stop reading if you don’t care. But here especially). Most real time strategy games run their multiplayer in lockstep. This means that all the computers are running the same thing at the same time. (This is not how first person shooters work, where you can different computers having different world states because of lag, which is what causes someone to magically appear somewhere when the lag abates). No one pulls ahead, every machine does the same thing. There’s no “host” that makes determinations about the state of the world, the only thing the host does is route packets. So the problem with this model is that all machines must have exactly the same thing happening on them at the same time. An out of synch occurs when one machine has a different world state then another.

For example, a programmer forgets to initalize a variable (this happens, trust me) that defines where an arrow gets placed in the world. This leads to the arrow showing up at (27, 35) on one computer and (99, 203) on another (those are completely random numbers used to illustrate the point that uninitialized variables end up full of junk). Then how can the game continue? On one machine, the arrow pierces an enemy target who takes damage and dies. On another machine the arrow flies into a tree and hurts no one. Then the differences escalate as there’s now a unit on one computer and not another. So the game cannot continue, the error is unrecoverable. We as programmers must do our best to initialize all our variables to prevent this from happening!

Of course, the variable initialization case is a simplified example. While that can be the cause of an out of synch (OOS), it is frequently much more complicated and difficult to locate. When a game goes out the door with an OOS in it (or any bug for that matter), it isn’t really the fault of the programmers. We are busy and hard working (er, or the ones I know are, or they don’t last very long) and we prefer to fix problems, it’s in our nature. The problem is deadlines and marketing budgets and publicly traded companies needed games out the door in particular fiscal quarters. So of course, don’t blame Ensemble for Age III coming out buggy. I’m sure they wouldn’t have wanted it to ship with these problems.

But I’ll return with actual Age III impressions when I’ve played some of the campaign through.

One Response to “Civ4 Delay with a Side of Techno Jargon”

I felt the same way yesterday! Just got the game now when I went home during my lunch break. It’s now all installed for me to play when I get home and I’ll be jamming to the soundtrack on the way to work (and back).

October 26th, 2005





Note: This post is over 3 years old. You may want to check later in this blog to see if there is new information relevant to your comment.