Hey everyone. Sorry for not posting anything in the last week. The main reason is the fact that I have too much work to do and not much time for developing Coop Commander (it is still a secondonary project for me, but it looks quite good at the moment). Instead of doing the same mistakes this week again I will pause the development of Coop Commander until this weekend.
There were 2 main problems last week that kept me from posting any updates or screenshots. I wanted to finish the multiplayer stuff, which worked ok in the beginning (chat, lobby, simple in game messages, no problems here, worked after 2 days of coding), but later everything was screwed. The system was far to simple and there was no way to syncronize everything without rewriting a lot of game code. The other problem was the effect manager. Just adding few effects was no big deal, but finetuning every single effect and finding out each position for each unit where to spawn effects, units, smoke, etc. was a long process.
Last weekend I just finished the effects stuff and next weekend I will hopefully finish all multiplayer issues (the game isn't very syncron right now ^^). It does not really matter because there are still over 1.5 weeks left till Rocket Commander is released. By then Coop Commander should be working stable. Maybe we will also add more missions and more enemy ships.
So what is the problem with all this multiplayer code? I can tell you:
So I wrote a concept of a new network architecture called Half'n'Half Server-Client Model and I implemented some unit tests to try it out. Some new problems did occur I hadn't thought of and testing and fixing all those problems could take some additional time. Since I don't want to be a total jerkoff and tell you how great this new network game architecture is while there is no proof that it does actually work, I will wait until I have implemented a basic version of this Half'n'Half Server-Client Model into Coop Commander and played around with it.
- No Time to implement any complicated network system
- No Engine to use, I've got sockets, thats it.
- Directly sending all game data causes too much bandwidth. The server should be able to handle thousands of users with less than 1mbit.
- RTS game tick based approach too indirect and jerky. Let me explain: Directly implementing a game tick based approach like in RTS games would be a lot of work and while keeping the network bandwidth low, the gameplay would be no fun at all. In RTS games the player can't control anything directly. When he orders a unit to move, the sound may play instantly, but the unit will not move for a couple of 100 ms (usually 1-2 game ticks, which is 200-400ms). While this is perfectly fine for RTS games with a lot of units, in the case of Coop Commander the player only controls 1 unit and directly sees what is going on. This makes this approach unusable.
- Client-side prediction is both too much work and very sucky for laggy situations. It is also not supported by RC and would be quite a lot of work to implement.
- Shooters usually use UDP and send out a lot of data, which makes them require a server for each game in contrast to MMORPGs, RTS or RPGs, which usually only require 1 master server, which either handles all the players directly or let the clients host their own games.
- I'm crazy enough to try something new
The basic idea is to split the network code to the server and the clients. The server manages all important data (live or die, spawning of units, etc.), while the client manages all the complicated and bandwidth-demanding data himself and only sends results to the server. This includes player collisions, doing damage, controlling the ship, etc. The server can still reject messages that make no sense and most important game actions like collecting items, powerups or killing units will not actually happen until the server confirms it.
This architecture targets very bad networks (lag situations above 500ms, up to 1000-2000ms) while making the game still "enjoyable" enough for the player and it minimizes the bandwidth for all players and the server to an absolute minimum (around max. 100 bytes/sec, that's it).
For now, just enjoy the screenshots ^^ There will be no beta because the game itself is online-only and will update itself as long as I have fun developing it. You should be able to download it from www.RocketCommander.com around 9. March 2006.
|The calm before the storm:|
The multiplayer game screen with 2 players:
The is a Carrier on the left side and there a lot of
fire balls in the scene comming from the Bombers on
the right side. The other player TestPC is also visible.
A little deeper in the first mission a lot of Mine Layers
put these mine field into place and the Carrier
spawns new units all the time. Not much chance for
the Lizard (my ship) on its own ^^