Tuesday, March 25, 2008

Okay, so, basically, I'm super excited for this nerd project.

With my dad, I'm going to build Soldier 2.0, which is going to be awesome. We're going to talk about it in Maui, but so far, this is how it works:

The game is played so that all of the players join a game, and then run around shooting each other. Online. Plays fairly simply, works amazingly well but impossibly confusing.

First, a game is created by two means. One, a host creates it, in which they are the host. If they go to the next round, the host may change, looking for the person that has the best connection to all players. Second, it could be done on a matchmaking-esque style, which I'll figure out later. Either way, players join a game, which can be done with TCP or a very reliable version UDP.

Once all of the players get put into the game, all of the players sync clocks. This is done by averaging the halves of ping times for like 100 pings (or whatever's necessary). The game only stores the "delta-ticker" time as a variable. The computer's extremely-accurate-never-failing ticker clock is one, but then it stores the ∆ticker, so the time is always the same and consistent.

Hopefully now, all of the players have some connections to each other, and all have synced clocks. These clocks can be synced at any time during the game, but don't need to be, assuming they're correct.

Because all of their clocks are synced, data about the player (location, looking, firing) can all be sent long after it happens. Ideally, it would be sent instantly, but because it can't always be, it comes with a timestamp.

Now, if the time is currently 610, and Player A gets where Player B was at time 600, Player A will be able to, pretty accurately, guess where Player B is right now. This also allows you to log it and replay matches, speed them up, slow them down, look at them from different places. It even lets you skip ahead, unlike Halo 3's Theater.

This is, I believe, an incredibly efficient system. It's really done in three, almost completely separate parts. Part 1, getting all of the players to be able to talk to each other, probably with UDP. Part 2, sync times. Part 3, be able to log events and play them, and if you don't know where a player is all the time, be able to accurately guess where they are and play it back.

The meshing of those three parts is pretty minimal. It's nice, too. Part 2 calls Part 1's functions, and Part 3 takes the input of Part 1 and plays it with something already established in Part 2. But Part 3, when replaying stuff, is completely independent of the other two parts.

It's so cool. Wow.

Ranks!! I'll have online ranks!!

It'll be awesome; I'll get Gil and Brian and Rehaan and a ton of other kids to install the game and we'll play some gigantic match and it'll all work so well. You have no idea how cool that would be.

And I'm really excited to be able to play some random YouTube fans around the world. TheSilverAce? Maybe I can get BoredDanMan and Revenge690 to play with me, find a PC. Or, if he gets his laptop working, I can play with my British fan, TheHeadDoctor. Or verystrangestranger. I bet IceCough is cool. monotonehell. Or even fun3tika. Haha.

I wonder if I could beat them. The thing is, I'm really good at it because I've played it for countless hours, but I wonder how good you can actually get at the game. Soldier 1 was challenging, but I could beat it.

And the engines for this stuff are pretty expandable - I could certainly take this engine off of Soldier and put it onto Bullet, or because I'll be doing it in XNA, a 3D game.

How fucking awesome would it be to make my own FPS. Oh my god. That would be the greatest game ever. Low sys req's, anyone can play, and free, of course.

I want to call this engine....hmmm. Something like what already exists, like Havok. Like....I kinda like Fiesta.

But it's pretty cool. I'm damn excited. Soldier 2.0, online. That's gonna be apeshit.

0 comments: