MXO // MISSION CONTROL

updated 2026-08-29 · rev 14

Two projects, one goal: keep The Matrix Online alive — the original server preserved and playable, and the city reborn in Unreal Engine 5.

MXO-HD

preservation · live service · reference implementation
LIVE
Now

FIRST EXTERNAL PLAYERS IN-WORLD — two-player session live, first since 2009 Full path proven incl. UDP · new character persisted from outside · view-lifecycle fix deployed, awaiting playtest validation

Tracks
A · Live service95%
B · Gameplay completion10%
C · Code health40%
D · Reference & docs (feeds UE5)5%
Done — 2026-08-29
  • 08-29View-lifecycle fix deployed: ack-gated deletes, ghost cleanup, leak plug
  • 08-29TWO-PLAYER TEST PASSED: first external player since 2009 jacked in
  • 08-29Router port-forwards live (UniFi); game ports verified from outside
  • 08-29Nightly DB backups live: validated dumps, 7d/4w rotation, off-box pull
  • 08-29ServerLog rotation live; deploys archive the log instead of deleting it
  • 08-29Source resurrected: .NET Core 3.1 → .NET 8, zero code changes to build
  • 08-29Fixed EF Core 5 crash that silently broke all logins on modern .NET
  • 08-29Fixed silent spawn-hang (districtId 0) and repaired affected characters
  • 08-29Fixed character creation (never persisted) + crash-proofed margin thread
  • 08-29Migrated to VPS: WinSW service, MariaDB, DNS at mxo.residual.city
  • 08-29Hardened: client-reachable SQL parameterized, ?commands admin-gated
  • 08-29AccountTool ships real RSA keypairs (byte order proven empirically)
  • 08-29First real client login, walkabout, and in-client character creation

MXO-UE5

recreation · unreal engine 5 · ue5-native server
PHASE 2
Now

FIRST MXO PROP STANDING IN UE 5.8 — editor live, agent-driven via Unreal MCP MCP smoke test 5/5 (~56 toolsets) · newsstand imported with original textures · City Sample harvest planned (18 batches) · caveat: MCP import is fbx/obj-only, bulk stays editor-Python

Phases
P0 · Foundations100%
P1 · Data liberation (client extraction)95%
P2 · World assembly10%
P3–P5 · Character / Systems / Online0%
Milestones
  • M0One extracted prop renders in a glTF viewer (10 do — 2026-08-29)
  • M2Full Slums district streamed at 60fps
  • M3Character creator with real clothing data (38,040 items)
  • M4Packaged build walkable start-to-finish
  • M5Two clients meet on UE5 dedicated server (VPS)
  • M6Combat vertical slice from original ability data
Inputs held
  • Plain-text packmap manifest: 119,485 entries across 217 .pkb archives (5.8 GB)
  • 1,350 prop↔FBX oracle pairs — our parsers validated 100% against them
  • 2,863,040 placed world objects (3 districts, validated by live server)
  • City Sample downloaded: 104 GB fidelity layer, harvest inventory mapped

BLOCKERS

AWAITING PLAYTEST View-lifecycle fix validation

Fix for duplicate NPCs / ghost players / lost chat is deployed. No sessions since — the next two-player session confirms it.

RESOLVED — GAP EXPLAINED The "70% unresolved placements" were mostly markers

gob header decode: 64.8% of Slums placement records are evidenced marker classes (spawners, style pointers, FX, sound) that never render; only 2.81% residual. M1 assembly proceeds on the resolved geometry.

AGENT DISPATCH LOG

  • mig-01City Sample batch 1 (material foundation) headless migration — running…
  • exp-01Bulk textured .glb export: full 732-prop + moa corpus — running…
  • gob-03gob fully mapped (6 sections); placement gap EXPLAINED: 64.8% markers
  • ic-01.glb gap CLOSED: editor-Python Interchange wins (native glb, Z-up ok, 0.01 scale)
  • mob-01Mob combat diagnosed: attack path never written; fix plan ready
  • rich-01RichWorldGOs REFUTED w/ evidence; full .cod grammar decoded
  • mcp-02MCP smoke test 5/5: cube, query, screenshot, textured prop import
  • city-02City Sample inventoried: 104 GB mapped, 18-batch harvest plan
  • moa-01.moa cracked: assembly container → .mga parts; Mara props render
  • gob-02gob structural walker: exact records, false positives eliminated
  • fix-01View-lifecycle fixes implemented + deployed to prod
  • gob-01GOID table found: gameobjects.gob, 67% exact resolution
  • sect-01Sector GO record fully decoded; full quaternions recovered
  • mcp-01Unreal MCP runbook written (52 toolsets, .mcp.json config)
  • tex-02Textured .glb export: 15-prop showcase, 732/732 corpus
  • cat-02Catalog crossref: texture_ids live; sector-file gap identified
  • prop-01.prop cracked: 100% embedded geo, oracle 10→1,350, all pass
  • txa-01.txa cracked: DXT/BGRA + cubemaps, 99.91% of 16,209 files
  • cat-01catalog_build.py: 119,357 entries; placement join confirmed
  • city-01City Sample researched: PCG data-table pattern viable → D-007
  • re-01.mga format cracked; 10 props → .glb, 9/10 oracle match
  • slicer-01pkb_slicer.py built; WAV validation 6/6, oracle pairs staged
  • conv-01CONVENTIONS.md + CATALOG-SCHEMA.md written
  • wksp-01Extraction workspaces up on dev + VPS
  • survey-01cortana-python surveyed: sector files only, no geometry code
  • survey-02Rajkosto+Lithtech tooling: dead links, but FBX oracle found
  • invent-01Client inventoried: 217 .pkb + plain-text manifest
  • ops-01DB backups + log rotation scheduled on VPS
  • docs-01Governance docs drafted + committed
  • secur-01SQL parameterized + admin gate, deployed
  • acct-01AccountTool built, RSA selftest passing
  • commis-01Server commissioned as WinSW service
  • provis-01VPS provisioned: .NET 8, MariaDB, firewall
  • audit-01Linux portability audit → docs/LINUX-PORT-NOTES.md

NEXT UP

  • MXO-UE5 · P2Bulk prop export (running) → Interchange import w/ 0.01 unit fix
  • MXO-UE5 · P2City Sample batch 1 migration (running) → batches 2-4
  • MXO-UE5 · P2Mara Central map: World Partition setup + placement importer (PCG/DataTable)
  • MXO-HD · BValidate deployed view-lifecycle fix in next two-player session
  • MXO-HD · BParked per owner: mob attack implementation (diagnosed, plan ready)