Skip to content

Add the shared-world Usurper door game#442

Merged
mpiorowski merged 4 commits into
mainfrom
mat/usurper
Jul 20, 2026
Merged

Add the shared-world Usurper door game#442
mpiorowski merged 4 commits into
mainfrom
mat/usurper

Conversation

@mpiorowski

Copy link
Copy Markdown
Owner

Summary

  • Adds Usurper to the Games hub, running the upstream LORD-style BBS game through a dedicated SSH/PTTY host.
  • Uses each player’s arcade handle as their game identity and persists one shared multiplayer world across deployments.

Changes

  • Adds the late-usurper host with authenticated SSH access, DOOR32 dropfiles, concurrent node leases, CP437-to-UTF-8 output, and protected function-key filtering.
  • Integrates the launcher, session lifecycle, unavailable state, help text, and configuration into late-ssh.
  • Builds Usurper from checksum-pinned source, generates its initial world data, and records GPL licensing details.
  • Adds Docker, Compose, Kubernetes, persistent-volume, secret, CI, and release workflow support.

Behavior notes

  • The host is single-replica and stores the shared world on a persistent volume. Startup only fills missing seed files and clears stale maintenance/online-state files.
  • Sessions use a fixed 80×25 game screen. The default host capacity is 10 concurrent nodes.
  • The first deployment must use the Usurper-specific deployment workflow because other deployment workflows expect the late-usurper deployment to already exist.

Feature flags

  • LATE_USURPER_ENABLED gates access from late-ssh; the standalone host remains deployed when access is disabled.
  • LATE_USURPER_SECRET must match between late-ssh and late-usurper.
  • Compose and Terraform default the feature to enabled, while the application-level configuration defaults to disabled when unset.

Screenshots / Video

  • Not included in this draft; attach before review.

Testing

  • Automated: Added coverage for identity derivation, input filtering, launcher state, CP437 conversion, dropfile generation, playname sanitization, node leasing, and non-destructive world seeding. Tests were not run as part of this PR-description draft.
  • Manual: Not run; launch, gameplay, disconnect, and restart persistence should be verified against the Compose-hosted service before review.

@mpiorowski
mpiorowski merged commit 9887961 into main Jul 20, 2026
13 of 15 checks passed
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