Original Post
Hi Iam working on an RTS game, and I have some questions about RTS netcode optimization. i've read the Gamasutra 1500 Archers article, which I will be basing my basic model on. It seems pretty straight forward, that all clients run a 100% deterministic simulation, with only transmitting non-deterministic player input etc.
However there is one bit I dont 100% understand, and that is the "Speed Control" part.
So the Host gathers 2 sets of data from each player: 'Ping' and an "Avarage FPS".
As far as I understand, it finds the largest ping, and then basically incrementally increases the "communication turn length" to be the same as the largest ping. So you get more "frames per Turn". Which is still more or less clear.
The area I really dont understand, is the "Avarage FPS" data, i dont understand how that is used? In the article it seems to suggest that each players "FPS" is also changed somehow, to the slowest avarage FPS??? I really dont understand whats the point of that?. And why would that improve the overall smoothess of the game for the other players? IE if the game runs on a Time-based loop, just because the FPS of one player is lower than the rest, it still wouldnt affect the rest right? The player with the slow computer would just have jagged gameplay, but would still have to keep the pace of the game, as everything is time based ?? (IE if it takes 5 seconds for a projectile to reach its destination, then it doesnt matter if your framerate is 5 or 50, it will still take 5 seconds in a time based gameloop?)
I've done some of research on this, and most other online references about RTS lock-step simulation only ever make references to changing the communication turn lengths, and never the FPS.. so I am a bit at loss with whats going on
Any ideas?
Jason
PS: Also a bit clueless, what happens if I would change the FPS as well as the Communication Turn at the same time, as if i Have an FPS of 30 with communication Length of 15 framesPerTurn, that equals to 2 Turns per second. however If I change the FPS, to maybe 15, that would mean that I get 1 communication turn per second already, without having to change the communication turn length directly...
However there is one bit I dont 100% understand, and that is the "Speed Control" part.
So the Host gathers 2 sets of data from each player: 'Ping' and an "Avarage FPS".
As far as I understand, it finds the largest ping, and then basically incrementally increases the "communication turn length" to be the same as the largest ping. So you get more "frames per Turn". Which is still more or less clear.
The area I really dont understand, is the "Avarage FPS" data, i dont understand how that is used? In the article it seems to suggest that each players "FPS" is also changed somehow, to the slowest avarage FPS??? I really dont understand whats the point of that?. And why would that improve the overall smoothess of the game for the other players? IE if the game runs on a Time-based loop, just because the FPS of one player is lower than the rest, it still wouldnt affect the rest right? The player with the slow computer would just have jagged gameplay, but would still have to keep the pace of the game, as everything is time based ?? (IE if it takes 5 seconds for a projectile to reach its destination, then it doesnt matter if your framerate is 5 or 50, it will still take 5 seconds in a time based gameloop?)
I've done some of research on this, and most other online references about RTS lock-step simulation only ever make references to changing the communication turn lengths, and never the FPS.. so I am a bit at loss with whats going on
Any ideas?
Jason
PS: Also a bit clueless, what happens if I would change the FPS as well as the Communication Turn at the same time, as if i Have an FPS of 30 with communication Length of 15 framesPerTurn, that equals to 2 Turns per second. however If I change the FPS, to maybe 15, that would mean that I get 1 communication turn per second already, without having to change the communication turn length directly...