Skip to content

Support official dedicated server build#40

Open
georgeciobanu wants to merge 1 commit into
MaxWasUnavailable:masterfrom
georgeciobanu:official-dedicated-server-0.33.3-compat
Open

Support official dedicated server build#40
georgeciobanu wants to merge 1 commit into
MaxWasUnavailable:masterfrom
georgeciobanu:official-dedicated-server-0.33.3-compat

Conversation

@georgeciobanu
Copy link
Copy Markdown

@georgeciobanu georgeciobanu commented May 19, 2026

Support current official Nuclear Option dedicated server build

Summary

This ports Nuclei to load on the current official Nuclear Option dedicated server build tested against:

  • Nuclear Option dedicated server 0.33.3
  • Linux/headless
  • BepInEx 5.4.23.5
  • Nuclei v1.3.3 / current master at 2159beb

The release DLL fails to chainload on this server, and current master needs API/namespace updates plus a different startup model because the official dedicated server now owns Steam server advertisement and mission rotation through DedicatedServerManager / DedicatedServerConfig.json.

What changed

  • Add global usings for moved Nuclear Option namespaces:
    • NuclearOption.Chat
    • NuclearOption.Networking
    • NuclearOption.Networking.Lobbies
  • Update the chat Harmony target to the current generated metadata name:
    • UserCode_CmdSendChatMessage_-456754112
  • Update changed game APIs:
    • MissionManager.missionTime -> MissionManager.MissionTime
    • GameManager.LocalPlayer -> GameManager.GetLocalPlayer<Player>(out ...)
  • Stop Nuclei from creating/managing its own Steam lobby/server on the official dedicated server path.
  • Replace old lobby operations with no-op compatibility shims, because official dedicated server advertisement is already handled by the game.
  • Make /stop quit the official dedicated server process cleanly.
  • Disable /newmission for now on the official dedicated server path, with a private chat message explaining that mission loading is owned by the official dedicated server runner.
  • Fix owner permissions so configured owner receives PermissionLevel.Owner, not PermissionLevel.Admin.

Why this shape

The official dedicated server appears to be the authoritative owner of:

  • Steam game-server advertisement
  • max player count / ports / password
  • mission rotation
  • map loading
  • no-player stop behavior

So this patch makes Nuclei attach to the official server lifecycle instead of trying to launch a second legacy host/lobby path.

Verification

Build:

Nuclei -> bin/Release/net48/MaxWasUnavailable.Nuclei.dll
Build succeeded.
0 Error(s)

Runtime verification on both dedicated server instances:

[Info   :   BepInEx] Loading [MaxWasUnavailable.Nuclei 1.3.3]
[Info   :MaxWasUnavailable.Nuclei] Loading MaxWasUnavailable.Nuclei v1.3.3...
[Info   :MaxWasUnavailable.Nuclei] Plugin MaxWasUnavailable.Nuclei is loaded!

The tested server continued advertising and accepting the official dedicated server configuration through the base game server manager.

Known limitations

  • /newmission is intentionally disabled in this patch because mission switching should be reimplemented against the official DedicatedServerManager rather than the removed legacy lobby/server path.
  • This is a compatibility port for the official dedicated server path; it may need additional conditionals if Nuclei still wants to support older client-hosted server flows.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant