So, I know this has been approached before, but I have a different take on this.
I am currently making an RTS meant to have about 600 units max in the entire map.
Looking at the 1500 archers article on gamasutra, they synchronize the framerate and command-turn times to make sure that the deterministic approach they use will stay consistent. I have been browsing the Forums and Questions section, with little help on the why of this. A lot of people recommend using the article, but dont recommend an implementation or help with the implementation. Now, I have a (perhaps naive) question about whether or not something that doesnt follow the article would work.
I want to set up an authoritative server such that all gameobjects are created by the server and each unit has an owner that refers to who can command them. I do not want the system to be deterministic like the article suggests.
I want to synchronize the transform, state, and stats (hp, attk, def, speed - to prevent cheating) of the units from the server to the clients. Each client will send their commands in an RPC to the server, which should get executed immediately. Even with a little lag ~500ms between commands, the gameobjects will be synced from the server anyway, so when the server gets the command, the units should move on the client.
The synchronization will be done with NetworkViews using the RDC method, sending data around 10-14 times per second, depending on the performance I get out of it. Most of the stats dont change during the match, so they wont get sent to the other machines.
Would this system work, or am I overlooking something crucial? I think that as long as the Server runs the unit logic and is completely authoritative, then the clients will just “watch” results and send commands to the server to process.