Hello, we found new errors
- We tested with 3 computers now. One of them( a client ) often was not playable due to extremly delayed movement and very jerkey display.
This was not always the same client, both client had these problems.
When starting the match, only two client sysnchronize well, and one(client) starts without waiting for the server ( usually the notebook).
- Another problem is, when you abort some of your commands, you often don't get your ressources back ( gold stone ...) This also happens with two computers.
The systems:
All linux ubuntu 6.06 dapper. Our usual 2 computers and in addition a notebook with 1GB ram, centrino 1500 and ATI 9700.
Ideas for synchronisation:
I don't know how you synchronize the things, but here are some ideas which probably help you.
I think all commands are send to the server, and the server distributes the commands to the clients.But the problem is that you can not be shure when the commands reaches the client or a client follows the command. When a client is very busy for example, the whole thing gets out of sync.
To prevent this, the commands can be send before they are executed.
The server sends the commands with instructions when to execute this command. This should be a time in the future to make shure all clients can receive the commands. So when the time has come all clients can execute the command (hopefully at the same time.For this the clocks of the systems have to be synchronized before the games starts.
Another synchronisation problem are busy clients or a busy server, to prevent this you can create a wait command which is send to all , which says, that all clients have to reach a special point and wait there until a special time. By this, the fast computers can wait for the slower ones for a given time. The faster ones will have a jerking gameflow too but the whole thing synchronizes again.
To realize this you must have your own frame/tick system which is counted on every client. When there are no delays, Time and frames(ticks) should be in sync. when there are delays the client will see this and can inform the server to send such a wait command with a calculated delay to get in sync again.