ObservedCU2 content and binaries, checked 2026-07-26

Multiplayer investigation

Halo Campaign Evolved ships four-player campaign co-op and a large amount of dormant competitive multiplayer machinery. The current goal is a minimal red-versus-blue CTF session in an existing campaign world, then a custom world once the runtime path is known.

Current verdict

No hidden multiplayer world package was found.

The competitive rules, object definitions, messages, and simulation code remain, but this build does not expose a named multiplayer map in either content index.

132,091

unique IoStore paths

14,240

umap chunks

77

named non-generated maps

0

classic CE map names

Packed-content inventory

  • All Halo world packages are under Levels/Halo1/Solo; there is no Multi branch.
  • Eleven apparent CTF or KOTH map hits were random World Partition cell IDs.
  • No Blood Gulch, Beaver Creek, Sidewinder, or other classic CE map name is indexed.
  • The 27 companion pak files contain 200,029 entries, primarily Wwise audio and resources, with no map or asset package entries.
  • The IoStore containers are indexed, Oodle-compressed UE5.5 containers and are not encrypted.
Root world package paths
  • /Game/Levels/Halo1/Solo/A15/A15
  • /Game/Levels/Halo1/Solo/A30/A30
  • /Game/Levels/Halo1/Solo/A50/A50
  • /Game/Levels/Halo1/Solo/B30/B30
  • /Game/Levels/Halo1/Solo/B40/B40
  • /Game/Levels/Halo1/Solo/C10/C10
  • /Game/Levels/Halo1/Solo/C20/C20
  • /Game/Levels/Halo1/Solo/C45/C45
  • /Game/Levels/Halo1/Solo/D20/D20
  • /Game/Levels/Halo1/Solo/D40/D40
  • /Game/Levels/Halo1/Solo/Extra/E10/E10
  • /Game/Levels/Halo1/Solo/Extra/E20/E20
  • /Game/Levels/Halo1/Solo/Extra/E30/E30

What remains

Verified

Packaged support assets

713 indexed paths sit under explicit multiplayer directories. They include multiplayer globals, object types, team names, messages, respawn audio, map overrides, loadouts, Megalo, Sandbox, the Oddball weapon, and assault-bomb assets.

Observed

Simulation rules

The native simulation module contains CTF, Slayer, Oddball, King of the Hill, Infection, Juggernaut, Assault, Territories, Forge, team, respawn, and loadout identifiers. Presence does not yet prove that the shipping UE5 layer can activate them.

Live runtime result

Verified

UE4SS found a live BlamEngineGlueOuterSubsystemImpl and four campaign variant objects. With A30 loaded, the campaign-flow subsystem owned one variant while three remained transient. The world scan found the A30 root world plus 90 World Partition cell worlds.

The exposed variant classes are BlamGameEngineBaseVariant and BlamGameEngineCampaignVariant. The previously suspected BlamGameEngineVariant path is not an exposed runtime class. Reflected APIs include social options, campaign flags, per-player traits, team ally/enemy/friendly/traitor tests, Blam player-index resolution, network co-op detection, session readiness, replicated session-running state, and endpoint IDs.

Fourteen high-level session, lobby, and travel hooks registered but produced no callbacks during the captured interval. This is an observation, not proof that the official flow bypasses them: tracing may have begun after an earlier transition. The next probe snapshots reflected variant and network-component state and traces endpoint assignment directly.

Verified

Solo transition baseline

A controlled frontend-to-A30 run with no second player captured SetActiveCampaign. Four campaign variants appeared and CurrentCampaign resolved to DA_FirstPlayableCampaign. Endpoint generation advanced from 0 to 1, but both endpoint IDs stayed 0, bSessionRunning stayed false, and lobby player count stayed 1. Endpoint generation alone therefore does not prove a network peer exists.

A second human tester is not currently available. The solo-versus-co-op differential, custom-travel session preservation, and competitive-mode activation remain unverified.

Shortest prototype route

  1. 1. Reuse co-op transport. Host and join through the supported campaign session flow so PlayFab, Party, identity, and replication already work. Compare a real two-human capture against the recorded solo baseline.
  2. 2. Travel to a known campaign world. Test plain travel first, then the same path with a listen-server option. A15 is the smallest initial target: /Game/Levels/Halo1/Solo/A15/A15.
  3. 3. Activate a game variant. Discover the live base and campaign variant objects, then trace the shell startup structures that choose campaign versus CTF.
  4. 4. Supply map metadata. Campaign maps do not necessarily contain team spawns, flag stands, boundaries, or objective markers. Spawn these at runtime before treating the mode as playable.

Custom-map path

A custom map is a second-stage problem. The game can index unencrypted UE5.5 IoStore containers, and Retoc can produce pak, utoc, and ucas output. The unresolved constraint is cooking a compatible UE5.5 world with the game's custom versions, script imports, and required Blam components. A tiny travel-only test world should precede a full CTF arena.

Repository status

MJOLNIRMultiplayer now uses the verified CU2 root-world paths and dispatches plain or listen-server travel through the live player controller. It still does not create or advertise a session, and travel has not yet been verified in HCE.

mjolnir_maps
mjolnir_travel a15
mjolnir_listen a15
mjolnir_scan_blam
mjolnir_scan_worlds
mjolnir_trace_network
mjolnir_dump_state

Working notes and reproduction history are rendered in full at Multiplayer investigation notes.