Skip to main content

ARCLUX MMO โ€” Quickstart (from Zero)

Clone โ†’ install โ†’ self-host โ†’ create vessel โ†’ play. No URL every login.

Requirements

  • Node.js >= 20
  • pnpm (not npm) โ€” npm i -g pnpm
  • Git

1. Clone ARCLUX

This builds apps/cli (arclux command) and apps/game (dist/renderer).

2. Create Your Vessel (your repo = your ship)

Your vessel lives in your own repository, not inside ARCLUX.
  • 1 repo โ†’ 1 vessel (D-007). Manifest is validated by packages/universe/schema.ts + license.ts (3-tier: open/shared/private) before buildVesselModel (packages/universe/stats.ts:183).
  • The .arclux/ directory stays in your repo โ€” it is your vessel definition (source of truth). Live health/damage is generated by ARCLUX and stored under .arclux/state/ (versioned).

3. Self-Host a Region (you are the server)

No central server โ€” each community self-hosts one region (D-009).
  • World boots with packages/gameserver/server.ts:103 createGameServer() โ†’ WorldRegion + Environs + SimulationEngine 10 tick/s + HTTP /snapshot /intent /deliver + static client.
  • The vessel is auto-spawned via server.ts:216 spawnPlayerVessel({playerId, vessel}) โ€” no manual POST /deliver needed.
  • Register is public by default (packages/directory registerServer) so others can listServers and join.
To play on someone elseโ€™s shard, skip serve and just open their URL.

4. Launch the Game (MMO Landing, not a web dashboard)

Open http://127.0.0.1:24001/ in a browser or pnpm --filter @arclux/game dev (Electron). Landing (apps/game/src/renderer/landing.ts) shows:
  • Top navbar โ€” HOME / UNIVERSE / FEATURES / FACTIONS / MEDIA / ROADMAP / DOCS + LAUNCH GAME
  • Hero โ€” live background from scene3d.ts (nebula, suns, Ark, vessels that are actually online) โ€” not a static image
  • Live stats bar โ€” PLAYERS ONLINE / REGIONS ONLINE / FACTIONS / SHIPS DESTROYED (polled from RegionSnapshot every 4s via net.fetchSnapshot())
  • Live universe โ€” 3 feature cards + News panel (wreckage, treaties, storms) โ€” all clickable
  • Footer โ€” engine info
Click PLAY NOW or LAUNCH GAME โ€” the overlay hides and you are in the cockpit. No URL to paste every login.

5. Login (once)

First launch asks for playerId (e.g., your-handle). It is saved to localStorage (arclux:playerId). Next time you open the game the same vessel auto-loads from persistence.ts โ€” no URL field. The server validates validator.ts:53 entity.owner === playerId and license.ts 3-tier. Damage is authoritative (combat.ts:39 DAMAGE_CEILING=12 per subsystem, collision.ts:92 kinetic, thermics.ts:28 radiation).

6. Play

  • Move: WASD + QE vertical, Sprint, Space brake, mouse look (pointer-lock) โ€” input.ts
  • Dock: approach a docking port (<800m) โ†’ F โ†’ 3s cinematic bay door + light sweep โ†’ hangar with 32 InstancedMesh slots
  • Bazaar: walk promenade โ†’ 16 stalls (interior.ts) โ†’ trade ComponentBinding (component.ts:10) โ€” only live health>0 components can be sold
  • Build a stadium: create a repo with arclux.stadium.json (ringCount, habitatDensity) โ†’ world.ts:115 spawnStation() โ†’ new StationEntity stadium appears

7. Public Server List

Landing Live Universe fetches packages/directory listServers({status:"ONLINE"}) โ€” e.g., community shards (Nvidia, etc.) show with endpoint links. Click โ†’ handoff via gate.ts:86 notifyTarget + bridge.ts transactional ACK (crash-safe).

8. Troubleshooting

  • No vessel after serve --vessel? Check arclux connect created .arclux/arclux.json and node -e "require('./apps/cli/dist/arclux.mjs')" has no error; serve logs Vessel spawned: ... or Vessel spawn failed.
  • Port in use? ARCLUX_GAME_PORT=27000 pnpm arclux serve ...
  • Client not loading? Ensure --client ./apps/game/dist/renderer points to index.html built by build-game.mjs.
  • playerId reset? Clear localStorage key arclux:playerId or re-enter in login modal.
  • Blueprints: docs/blueprint/01-spatial-ux.md โ€ฆ 08-persistent-world.md, 09-client-polish.md (Fase 1-4 done, Fase 5-12 in progress)
  • Implementation map: docs/blueprint/progres/MMO-IMPLEMENTATION.md
  • License: LICENSE-MMO (game) + LICENSE-ENGINE (Apache 2.0 for engine)