Skip to content

0.3.4 - the documentation audit, and the refactor it deferred

Choose a tag to compare

@drohack drohack released this 16 Sep 19:51
· 29 commits to main since this release

Seeds from 0.3.3 still work. Location ids did not move - verified by
building both id tables and comparing them, 18 items and 432 locations,
byte-identical. Nothing needs regenerating.

Install

Three files, and they carry the same version on purpose. See
docs/installation.md.

  • ALTTLArchipelago-0.3.4.zip - the mod. Extract into the game folder. You
    need BepInEx 6 for Unity IL2CPP
    installed first
    - it is not included, and the setup guide used to say it was.
  • alttl.apworld - only whoever generates the seed needs it. Goes in
    Archipelago's custom_worlds/. Requires Archipelago 0.6.7 or newer.
  • A Little to the Left.yaml - your settings. Edit the name and hand it to
    whoever generates.

What a player will notice

Very little, and that is deliberate - this release is mostly about the project
being honest with itself. The one visible fix: the connection pane could print
Reconnecting, attempt 4 of 0 on a stock install, because the version of that
string with a guard was fixed and its twin was not.

The documentation, though, was lying in ways that cost people time. The setup
guide Archipelago serves for this game had opened with "This randomizer is
not finished
... there is nothing to connect with yet" since four days before
the first release. It also said the mod release includes BepInEx - it does not

  • and then never told you to install BepInEx at all, so following it exactly
    produced a mod that could not load, which is the exact symptom its own
    troubleshooting section describes. All of that is corrected.

What changed underneath

The audit. Four surviving copies of a pack behaviour removed in 0.3.2,
twenty-five doc comments stranded on the wrong member, three source comments
citing line ranges that had drifted to unrelated content, and a pile of dead
code including two C# reimplementations of logic that ships in Python and had
since diverged from it.

Nothing in the repo had ever validated a single .md file, and Archipelago's
own compliance suite only checks the tutorial file exists, never what is in it.
So a wrong document passed CI, passed compliance, and passed the release gate.
tools/check-docs.py runs in CI now, and each of its four checks was proved to
fail on a deliberately broken tree before being trusted.

The refactor. The Core csproj had recorded for two weeks that four
Unity-free files were stranded in the plugin with no tests, and that two of
five bugs in an earlier audit were in exactly that code. Two had moved; two had
not. The run state and the guard a login has to pass are in Core now, tested
in CI - 273 tests to 303.

Two files that were several files got split: Badges.cs (seven unrelated HUD
overlays under a doc describing one) and DevTools' Plugin.cs (a plugin plus
seventy commands). Both as partial classes, verified line-for-line, no caller
edited. Reading the second found two commands that could never run - one of
them the one the docs described.

Verified

Release gate 23/23 against these exact files, Core 303, apworld 114,
check-game-facts.py PASS on a dump taken with the mod parked out of plugins,
and CI green on all eight jobs before this was published.

Full detail in the CHANGELOG.


This project was built with AI assistance.