Skip to content

About Neubla

starfi5h edited this page May 15, 2022 · 8 revisions

Features

Lobby

lobby
When a player first time joining the multiplayer game, he can choose which planet to start.
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 will set it as birth planet.

Chat system

chat
A chat window to let players communicate or type in commands.
Default hotkey 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 resource

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

- Sync milestone
Record by the first player unlocks the milestone.

- Sync soil (optional)
The option can only be changed before the multiplayer game start.
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 the option, the client will try to make the game run at the same speed of Host to prevent desync.
When using with BulletTime mod, the support UPS can go up to 240, down to 0 (pause).

Limitation

- Save
Because Clinet don't have the whole data, it can't save the game. Only Host is able to save.

- Metadata
Right now only Host can spend Metadata.

- Milkway
Milkway is not available in multiplayer game.

How Nebula work

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 [userName]\Documents\Dyson Sphere Program\player.key

Dynamic loading/unloading 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 event trigger.

PlanetFactory

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

DysonSphere

  • Load when client arrives on a new star system, or change view star in DysonEditor.
  • Unload when client leave the star system.

PlanetData

  • Load when client arrives on a new star system.

Detials

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