Skip to content

About Nebula

Chris Yeninas edited this page May 22, 2022 · 1 revision

About Nebula

Features

Lobby

lobby
When a player joins a multiplayer save for the first time, they can choose which planet to start on.
Click on any star to bring up the solar system preview. From there click on any planet to bring up its details.
By clicking a planet again while having its detail panel open you will set it as your birth planet.

Chat system

chat
A chat window allows players to communicate or type in commands.
Default hotkey is Alt + ~ to toggle, Esc to close. See chat wiki page for commands and settings.

Error copy & close button

error
When an error occurs, it will show the currently running mods.
User can click Copy button to copy and close the error message.

Shared resources

- Sync research progress
Tech is shared between all players. Manual research by MechaLab still requires all items, only the Hash contributed is added up and synced.

- Sync milestone
Recorded by the first player who unlocks the milestone.

- Sync soil (optional)
This option can only be changed before the multiplayer game starts.
When enabled, all players will share a public pool of soil. Build actions will add/take soil from the public pool.
When a player joins/leaves, he will bring/take his share of soil.

- Sync UPS (optional)
By enabling this option, the client will try to make the game run at the same speed of Host to prevent desync.
When using alongside the BulletTime mod, the UPS can go up to 240, and down to 0 (paused).

Limitations

- Save
Because the Client doesn't have all of the data, it can't save the game. Only the Host is able to save.

- Metadata
Right now only Host can spend Metadata.

- Milkyway
Milkyway is not available in multiplayer game.

How Nebula works

Nebula uses Client-server architecture, syncs some of the game states.

Mod data

The data of players is stored in [saveName].server in the same folder of game save.
Client's key location is %userprofile%\Documents\Dyson Sphere Program\player.key

Dynamic loading/unloading of data

Because game save can be quite huge (>1GB), client will only request a small part of local data from the host. Global data will be synced by an event trigger.

PlanetFactory

  • Load when client arrives on a new planet.
  • Unload when client leaves the star system.

DysonSphere

  • Load when client arrives on a new star system, or changes the viewed star in DysonEditor.
  • Unload when client leaves the star system.

PlanetData

  • Load when client arrives on a new star system.

Details

Here is a short list of what is currently implemented:

  • Server / Client communication
  • Custom Multiplayer menu in-game
  • Custom Config settings in-game
  • Player Movement syncing
  • Player VFX syncing (jetpack, torch, ...)
  • Player SFX syncing (footsteps sound, torch sound, ...)
  • Player mecha appearance syncing
  • Game Time syncing
  • Universe settings syncing
  • Client planet loading from server
  • Planet vegetation mining syncing
  • Planet resources syncing
  • Build preview syncing
  • Entity creation syncing
  • Entity desctruction syncing
  • Entity upgrade syncing
  • Dyson spheres syncing
  • Researches syncing
  • Factories statistics syncing
  • Containers inventory syncing
  • Building Interaction syncing
  • Belts syncing
  • Dropped items syncing
  • Interstellar Station syncing
  • Vessels position syncing
  • Foundation syncing (terrain deformation)
  • Server state persistence
  • Power network syncing