Unity RTS Networking

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.

600 units moving and shooting and doing all sorts of tomfoolery will result in a lot of data being sent to the clients. The P2P model commonly used in RTS games exists to minimize this network traffic I believe.


Here is an easy read that explains a bit about RTS networking. Didn’t read the whole thing but the first few chapters were solid. It also explains why the “one host” idea is bad.

EDIT: And about cheating. It shouldn’t be an issue. You can do it like SC2 for example, where everyone connects to a server and the simulation is also run on the server. Thus the server can decide who wins even if someone cheats. This makes cheating “useless” as the player cheating only harms himself: he’ll be the only one to see the “cheated” game state thus playing with false information.