Skip to content

v0.3.3 - A Little To The Left Archipelago

Choose a tag to compare

@drohack drohack released this 16 Sep 15:41
· 76 commits to main since this release

A maintenance release. droha asked for an audit after a packaging bug turned
up in 0.3.2 - "can you do a full audit that we're not missing/half
implementing other things like this?" - and this is what it found.

Seeds from 0.3.2 still work. Location ids did not move; the tables are
byte-identical. Nothing needs regenerating.

Which file do you need?

File Who needs it
ALTTLArchipelago-0.3.3.zip every player of this game
A Little to the Left.yaml every player of this game
alttl.apworld only whoever GENERATES the multiworld

The mod and the apworld carry the same version and are meant to be used
together. The mod now checks that when it connects, and refuses a pair that
disagrees - see below.

Installing

  1. BepInEx 6 for Unity IL2CPP, x64 - the bleeding-edge builds, not BepInEx
    5. Extract into the game folder, launch once, and quit. That first run
    generates the interop assemblies the mod needs.
  2. Extract ALTTLArchipelago-0.3.3.zip into the same game folder. The files
    land in BepInEx/plugins/ALTTLArchipelago/.
  3. Launch. The main menu gains an Archipelago entry - open it, enter the
    address, port and your slot name, and press Connect.

Hosting: put alttl.apworld in your Archipelago installation's
custom_worlds/ folder. Requires Archipelago 0.6.7 or later.

A run finished offline now reports its goal

The worst thing the audit found, and a regression introduced by 0.3.2's own
credits change. Reporting the goal requires the credits to have been PLAYED,
and that fact lived only in memory - discarded on every reconnect and every
relaunch.

So: finish your run offline, play the credits, reconnect. The goal was never
sent, and the multiworld waited forever on a slot that had genuinely finished.
Nothing logged it. If that happened to you, this build fixes it and the goal
will be sent the next time you connect.

The mod refuses a seed built by a different apworld

Location ids move between releases, so a 0.3.1 mod playing a 0.3.2 seed sent
the wrong checks under the right names and said nothing at all. The seed now
carries the version that made it, and the mod says so plainly instead of
playing a subtly wrong game.

A seed generated before this release cannot say which version made it. Those
are allowed with a warning rather than refused.

The apworld's manifest is readable again

Archipelago could not read the manifest inside alttl.apworld in 0.3.0, 0.3.1
or 0.3.2. It logged an error and carried on, so everything appeared to work -
but the minimum_ap_version we declared was never actually enforced,
and a player on too old an Archipelago got no warning at all.

Also

  • !hint and exclude_locations understand groups now - Abilities,
    Traps, and one per puzzle. Excluding a puzzle you dislike no longer means
    listing every solution and part of it by hand.
  • A run whose settings you changed - volume, resolution - keeps them when you
    go back to the campaign. That was already true; a release check wrongly read
    it as the mod damaging your campaign save.
  • Star-goal runs stopped saying "beaten". The toast read "Puzzle beaten (3/20
    starred)".
  • The game page no longer claims packs widen as you go, that every hint page
    gets an item, or that the credits card needs only the puzzle count.
  • Two settings that are read once at startup now say so in their own help
    text.

Everything, with the measurements behind it:
CHANGELOG.md.

What was tested

The release gate cleans the install to vanilla, installs these exact assets,
generates a seed and plays it through: 23 of 23 checks, 8 of 8 puzzles
beaten
, goal reported and acknowledged by the server. Plus 280 Core unit
tests and 112 apworld tests.

The offline-goal fix was proved separately in a real game: finish the run,
kill the server, play the credits offline, bring the server back, watch the
goal arrive.

Two of the gate's eight puzzles are still finished with Skip items rather than
solved, because the harness cannot drive a phased level's real drag path. Both
of those levels were beaten BY HAND for 0.3.2, holding only the abilities
their tables declare, and both completed.