Skip to content

Prepare v5.0.0 server compatibility - #18

Draft
valzargaming wants to merge 16 commits into
mainfrom
v5-server-compatibility
Draft

valzargaming wants to merge 16 commits into
mainfrom
v5-server-compatibility

Conversation

@valzargaming

Copy link
Copy Markdown
Member

CivilizationBot v5.0.0 release preparation

Status: in development. Do not tag or deploy until the acceptance checklist is complete.

Compatibility contract

All normal GameServer host, kill, restart and map-swap commands must use the configured engine. OpenDream never falls back to DreamDaemon. Server IPC remains compatible with native BYOND: OOC/admin have two fields, direct messages three, bans four, and unbans two. Every record ends in LF; embedded record delimiters/newlines are rejected.

File relays read bounded batches without deleting producer logs. Failed delivery retains the cursor. Offsets currently live in memory: bot restart can replay historical lines. Durable checkpoints and oversized-line handling remain release gates.

An empty verified-role result clears old membership files. Replacement failures reject the operation. Multi-file updates are not a transaction, and the game's polling consumer does not participate in bot file locks; queued IPC is not proof of application.

OpenDream full-bot configuration

Set engine to opendream, ip to 127.0.0.1, basedir to the controller runtime directory, port to the gameplay port, and a distinct integer topic_port. Add control with trusted absolute python, controller, profile, an existing temporary_directory, and boolean enabled. The profile must match this runtime and both ports. Missing or changed profiles fail closed. Map IDs must belong to its explicit allowlist.

The minimal local-bot.php entry point remains a separate isolated service, not the full command router. Do not enable official guild integration or reuse production credentials for testing.

Required acceptance before release

  • Engine-aware normal command and slash routes: success, rejection, concurrent operations and unavailable controllers.
  • Native lifecycle: ordered update/build/start, owned stop/restart, safe map IDs, Windows/WSL/Debian paths.
  • OpenDream real isolated server: process control, Topic status and all five IPC consumers.
  • File relay: durable checkpoints, log rotation, long lines, moderation and failed Discord transport.
  • Role lists: admins, whitelist, factions, empty revocation and denied writes.
  • Webhook routes: OOC/asay/IC, login/logout/rounds, attack/runtime/log delivery and authentication.
  • Status/player counts and correct engine-specific connection links.
  • Verification, bans/unbans, panic bunker and award/ranking features using injected effects.
  • Final dependency installation, PHP supported-version CI, version marker, migration/release notes and exact-head review.

Verification so far

php tests/local/server-compatibility.php <autoload> exercises production outbound GameServer OOC/admin/DM methods plus five-channel framing, invalid field rejection, empty list replacement, append-log partial lines, delivery failure retry, truncation, bounded batches and overlapping calls. Existing tests/local/opendream.php and tests/local/controls.php pass locally. These isolated checks do not establish Discord delivery or whole-game acceptance.

This branch has not been deployed

No deployments
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