I'm working on a 3D massively multiplayer space game in C++ and I'd like some advice from experienced game developers.
Essentially, the world (universe) simulated on the server is absolutely dynamic, which means the location, position, rotation of every single game object in the game is subject to change at any time, as the server is completely authoritive over this. Entire planetary systems can be moved. The server is persistent so movement of everything is simulated in real time. You could log in once, grab a spaceship, fly around a little, and log out again. Upon logging in the next day you log in to find yourself drifting towards a black hole!
So, GameDev, how would you approach sending every game object to the several clients that could be playing? This means loot on the floor, spaceships, space carriers, planets, stars, planetary systems, galaxies! I mean, how could I represent the game objects during travel to a client? As a 3D model name and associated attributes? Or maybe a single id that the client knows about, but then how would it handle users customizing their ships or adding other components to it? I am just unsure how I can replicate the game objects on the clients and allowing support of spaceship custimization and perhaps avoiding updating the game client for every new object added. Maybe it should actually send the model file over, Garrys Mod style?
Tips for network optimisations are welcome too but it isn't urgent this early in development.