Repository navigation
MJOLNIR CLI cli-v0.3.0
Classic maps, game types, and every object in play
Convert classic Halo CE maps and package them for the hub, write the multiplayer game types the simulation runs, and list every object in the running game with live objects.
This release carries the tooling behind the classic multiplayer maps: what
turns a Halo CE map into one the game loads, what packages it for the hub, and
the game types it is played under.
Added
mjolnir level collision <collision_N.json> --out <bsp>converts a
classic CE collision BSP (halo2ue's export) into a structure BSP the
simulation walks on, and writes the transform that places everything else on
it.--own-bspbuilds a BSP holding only the CE map, with its own Havok
collision, so nothing of the host mission's geometry is used.level bake --standalonegained the pieces a map of its own needs.
--bsp INDEX=PAYLOADgives the map its own structure BSP,--worldships its
own Unreal world under the map's codename,--world-objectpoints it at a
shipped world instead, and--write-tagkeeps the baked scenario for
mjolnir tag-file.mjolnir level registerrebuilds the registration container and the
multiplayer menu's map list from every installed map. The launcher runs it
after a map is installed or removed.mjolnir map pack <dir> --code XYZ --version Vpackages a converted map
as a signed.mjolnirmap pack for the hub, andmjolnir map runtime
packages the CE runtime pack every map depends on.--signsigns with this
machine's device key.mjolnir megalo write --mode slayer|ctf --out x.mglowrites a
multiplayer game type the simulation's own Megalo interpreter runs: Slayer,
and Capture the Flag with Halo CE's rules, with CE health packs. It takes
the score to win, the number of rounds, and the base options a host can
change:--time-limit(the round ends when it runs out), lives, respawn and
suicide times, what the map may place, and player and respawn traits
(--trait shields=1).mjolnir megalo readprints what a variant holds.mjolnir live objects [--group bipd] [--filter text] [--tsv out]: every
object in play. Each row has its handle, its type (biped, weapon,
equipment…), its definition tag, its position, its body and shield as a
percentage of the maximum, and its parent if it is attached. The row for the
unit a player controls is marked with that player. The simulation keeps its
objects, players, AI and script state in named tables in its thread-local
storage, andmjolnirnow finds them there. Each table names itself, so
nothing is read at an address one build hard-codes.mjolnir live players: each player, the unit it controls, and where
that unit is.mjolnir live arrays: all 59 of the simulation's per-game tables, with
how full each one is. It needs no build profile.mjolnir live statusalso names the simulation thread and says how many
objects are in play.mjolnir compilewrites each node's source offset, and decompiling turns
acondback into acond.
Fixed
mjolnir compileresolves name literals (objects, trigger volumes, squads,
flags and the rest) against the scenario it compiles for. Every one pointed
at the first element of its block.- Compiled scripts keep the 0x1000-byte reserve at the end of the script
string data that the engine expects.
Known limits
liveis read only. Positions and vitality can be read but not yet written.- An attached object's position is relative to its parent.
- The layout inside an object was measured on the current Steam build (CU4).
A game update that moves it is caught by a consistency check, and the
command stops instead of printing wrong values.
Install
Windows
scoop bucket add mjolnir https://github.com/devnull9090/mjolnir-core
scoop install mjolnirmacOS and Linux (Homebrew)
brew tap devnull9090/core https://github.com/devnull9090/mjolnir-core
brew install mjolnirDebian, Ubuntu — sudo dpkg -i mjolnir_0.3.0_amd64.deb
Fedora, RHEL, CentOS, openSUSE — sudo rpm -i mjolnir-0.3.0-1.x86_64.rpm
Or take an archive below, unpack it anywhere, and put that folder on
your PATH. The Linux binary is statically linked, so it runs on any
distribution without installing anything alongside it.
Downloads
| File | SHA-256 |
|---|---|
| mjolnir-0.3.0-windows-x64.zip | fb770e7ffd603bac4990e713cf4a788a8dee3704c111512c28a490667cbb8928 |
| mjolnir-0.3.0-linux-x64.tar.gz | 58d68458a1a27fe77ea6698f4e562a372e41250f0b43b30c70d991a21254a1f3 |
| mjolnir-0.3.0-macos-universal.tar.gz | 434ecb5b045fd78ac76a38dc0df1fd80cb66800c0a661480d48b22e60d1d7997 |
The macOS build is a universal binary — the same file runs on Intel
and on Apple Silicon. .deb and .rpm checksums are in the
checksums file attached below.
Verify your download
(Get-FileHash .\mjolnir-*.zip -Algorithm SHA256).Hashshasum -a 256 mjolnir-*.tar.gzCompare the output with the checksum above. They must match exactly.