-
Notifications
You must be signed in to change notification settings - Fork 0
Description
All vessels in the game are stored in one of three places on the client. Firstly, the ActiveVessels list in the World class; secondly, the ArtificialBoldies list in the SolarSystem class, and lastly the ShipExteriorRoot GameObject.
All space objects in the universe are cashed on the client, although almost all of them will never be shown while playing. Currently the ShipExteriorRoot game object has just over 1 600 child objects. All of them are shells, and contain nothing else than the Ship and GeometryRoot scripts.
In addition to this, multiple times every second, the position of every space object in the entire world of Hellion is sent to the player, causing massive overhead for the client.
Currently, both the client and the server calculate orbits in parallel, but there isn't really any code to handle the eventual desyncs that happen every so often. By only sending nearby space objects, we could completely get rid of desyncs because the client would not need to handle orbits.
Proposal
- Fully embrace two types of coordinate space; world space and local space, and make all positions sent to the client local space.
- Check possibility of seperating map from in game objects.
Concrete issues
- Implement spatial hashing to improve performance in larger worlds.
- Seperate movement message for map data. Less frequent updates.
- Rewrite movement update code on the client.
- Rewrite how spawning is done on the client.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status