Most of that data can be sent when the entity is created.
You are correct though, the client will need to receive updates about game state. Things like what towers are attacking what entity, entity health changes, etc. That may end up being the most expensive part of the simulation.
I suppose, however, that the tower simulation and all could be deterministic on the client, meaning the client could run the tower simulation in tandem with the server, it could pick the same targets, and health could be determined on both the client and the server without any additional communication between them. Thatâs very theoretical though, I havenât implemented anything like that for this example.
That doesnât completely eliminate the communication, however. The client would still want to sync up with the server probably when entities die, and maybe that could be done somewhat in bulk.
I did just do a test with my entity system and I was able to simulate 2,000 entities in 0.2ms on the server without updating character models, so you have a lot of extra time to play with. 2,000 entities is a lot and I doubt youâll really need to have more than that.