Repository navigation
MJOLNIR Code Mods mods-v0.49.0
Smoother hosting, lighter flags, and spawns by game type
The loader can give each game type its own spawn points, CTF flags cost far less to wave, hosts stutter far less, with or without bots, and converted maps no longer freeze as they finish loading.
Changed
In MJOLNIRLevelLoader 0.13.3.
- Spawns by game type, ready for the maps. A converted map can now give
each game type its own spawn points, as CE and Halo 2 did: Slayer at
Slayer's starts and not in the CTF bases, CTF only in the bases, and Race,
Oddball and King at their own starts. Maps change once they are updated;
until then they play as before. - Lighter flags in Capture the Flag and Assault. A flag's cloth was moved
30 times a second whenever you were within 50 m of it, on screen or not,
and the loop ran on every map. A flag now waves only while you can see it:
15 times a second at rest, still 30 while it's carried so its trail swings
round smoothly, and maps without flags are checked once a second. On Chill
Out, with no flag carried, the cloth now takes 1–6 ms of each second
instead of 11–16. It has six panels instead of eight. - Flags waved by your graphics card. With a CE runtime pack that carries
the new flag cloth material, the cloth waves on the graphics card: the
loader moves nothing while a flag stands still and only tells the material
which way a carried flag trails. On Chill Out that is under 1 ms of each
second at rest and about 3 while you carry a flag, down from about 5 and 11.
Until that runtime pack is out, flags wave as in the entry above.
In MJOLNIRLobby 0.25.2 and MJOLNIRLevelLoader 0.13.3.
- Halo 2's lifts push from the simulation. Gravity lifts, jump pads and
vents now push players on every simulation tick, from MJOLNIRLobby's
native code, instead of from a Lua loop that ran 20 times a second near a
lift. A push no longer trails the player by up to 50 ms, and the loader's
lift work drops from 1.4–3 ms a second (worst 25 ms) to about 0.2. Each
game pushes its own players, so this holds for everyone who joined a game
as well as for its host. - Lifts that hold gravity off use the game's real gravity. They had been
making up for Halo 1's (978 cm/s² rather than the 1,270 this game applies);
riders now hold the lift's own top speed.
Fixed
In MJOLNIRLobby 0.25.2.
- A stutter every five seconds while hosting. Every five seconds the host
searched the whole game for the players' connections, even with nobody
else in the game, and each search made a frame of 50–70 ms. The host now
searches again only when someone joins or leaves, or the map changes. It
also stops re-reading the launcher's list of installed maps when that list
hasn't changed. - Freezes as the game starts and at the first bot start. A few seconds
after the game started, the lobby searched the game's code for the places
it hooks, and the game froze for over a second. It searched again
the first time the main menu came up (about a tenth of a second) and the
first time bots started (about 25 ms). The searches now run in the
background from the moment the mod loads, so none of these moments
stutters, on Steam or the Xbox app: the lobby's setup now takes a few
milliseconds. A public host whose search failed, as can happen after a
game update, also stops searching again every second.
In MJOLNIRHud 0.19.1 and MJOLNIRLevelLoader 0.13.3.
- Stutters when hosting with bots. When bots started, and again whenever
one was slow to appear, the host searched the whole game for every kind of
bot body. Each search froze the game for up to a third of a second. The HUD
now notes each body as the game makes it and never searches. On Blood Gulch
with eight bots, the HUD's longest moment went from 308 ms to 10 ms.
In King with eight bots, it went from 58 ms to 8 ms. - Bots cost the host less all the time. Four times a second the host
checked where every body the game keeps ready for bots was standing, 271 of
them on Blood Gulch. It now checks only the bodies in play, and the rest
only while a bot is coming in. With eight bots the HUD's share of the game
went from 11.6 to 5.0 ms each second. - Less work in King, CTF, Assault and Oddball. Drawing King's hill looked
up the same engine objects for every panel of its wall, and the flag and
ball markers did the same for every flag, five times a second. Each lookup
is now made once. - A stutter every two seconds on maps with gates and shields. When one of
a map's gates or shields never found its machine, the loader searched the
whole game for it every two seconds, for the rest of the match, at 25 ms a
search (seen on Yoyorast). It now waits longer after each search that finds
nothing, and stops after eight.
In MJOLNIRLevelLoader 0.13.3.
- No more freeze as a converted map finishes loading. As a remastered
map came in, the game stopped for a second or more while the loader
dressed it with its trees, grass, rocks, ground and machines: 1.7 s on
Timberland, 1.4 s on Zanzibar, 1.0 s on Blood Gulch. Some of that work
changed nothing (setting thousands of pieces to the materials they
already had, searching the whole game for things it could find
directly), and the map's file was read twice. That is gone, and the rest
is now done a little at a time over the following frames while the map
loads, at most about 55 ms of it in any one frame. Maps look the same as
before.
The signed set of UE4SS script mods. Every artifact's hash is in
manifest.json, and manifest.json.sig is its Ed25519 signature
over the manifest — verify with keys/mod-signing.pub from this
repository. The launcher does this automatically and installs
nothing that fails verification.
Script mods ship only from this repository's reviewed pull
requests — see docs/contributing_code_mods.md to contribute one.