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
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 bypackages/universe/schema.ts+license.ts(3-tier: open/shared/private) beforebuildVesselModel(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:103createGameServer()โWorldRegion+Environs+SimulationEngine10 tick/s + HTTP/snapshot/intent/deliver+ static client. - The vessel is auto-spawned via
server.ts:216spawnPlayerVessel({playerId, vessel})โ no manualPOST /deliverneeded. - Register is public by default (
packages/directoryregisterServer) so others canlistServersand join.
serve and just open their URL.
4. Launch the Game (MMO Landing, not a web dashboard)
Openhttp://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
RegionSnapshotevery 4s vianet.fetchSnapshot()) - Live universe โ 3 feature cards + News panel (wreckage, treaties, storms) โ all clickable
- Footer โ engine info
5. Login (once)
First launch asks forplayerId (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 32InstancedMeshslots - Bazaar: walk promenade โ 16 stalls (
interior.ts) โ tradeComponentBinding(component.ts:10) โ only livehealth>0components can be sold - Build a stadium: create a repo with
arclux.stadium.json(ringCount,habitatDensity) โworld.ts:115spawnStation()โ newStationEntitystadium appears
7. Public Server List
LandingLive 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? Checkarclux connectcreated.arclux/arclux.jsonandnode -e "require('./apps/cli/dist/arclux.mjs')"has no error;servelogsVessel spawned: ...orVessel spawn failed. - Port in use?
ARCLUX_GAME_PORT=27000 pnpm arclux serve ... - Client not loading? Ensure
--client ./apps/game/dist/rendererpoints toindex.htmlbuilt bybuild-game.mjs. playerIdreset? ClearlocalStoragekeyarclux:playerIdor re-enter in login modal.
Links
- 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)