Skip to content

Chore/merge 20261016 - #185

Merged
lallaria merged 22 commits into
mainfrom
chore/merge-20261016
Oct 17, 2026
Merged

lallaria merged 22 commits into
mainfrom
chore/merge-20261016

Conversation

@lallaria

Copy link
Copy Markdown
Contributor

No description provided.

Mysteryem and others added 22 commits September 5, 2024 17:26
To determine if an item in a sphere is required, playthrough calculation
would remove the item from its location and then use can_beat_game to
sweep through locations until either the game can be beaten (the item is
not required) or until the sweep runs out of reachable locations (the
item is required).

This patch changes how it is determined if an item is required.

The advancement locations in each higher sphere that have already been
culled must be reached for the game to be beatable, so iterate through
the advancement locations in each higher sphere after attempting to cull
an item. If one of the locations in a higher sphere is unreachable, then
the game is unbeatable and the item is therefore required to beat the
game.

For items which are required to beat the game, this aborts faster than
exhausting all reachable locations to determine that the game is
unbeatable.

For items which are not required to beat the game, the locations which
should be reachable from the current sphere are known in advance, so
this only has to check reachability of the locations in the closest
higher sphere before moving onto the next closest sphere, rather than
repeatedly checking all filled locations which have yet to be reached.

This results in a faster playthrough calculation that also scales
better than the previous implementation as the number of advancement
items in the multiworld increases.

This new implementation seems to not quite cull as many items on average
as before, but I am unsure if this is an issue with the new
implementation or an issue with the logic of the worlds being generated,
e.g. missing indirect connections causing a region to not be reachable
when it should be, which could cause a required location in a higher
sphere to not be reachable when it should be, which would give a false
positive that an item is required to beat the game.

Playthrough calculation duration averaged over 5 generations of the same
seed recorded before/s -> after/s.
57 unique games: 671.2 -> 133.5 (80.1% reduction)
28 unique games: 149.2 -> 34.9 (76.6% reduction)
14 unique games: 7.0 -> 3.1 (55.9% reduction)
7 unique games: 4.6 -> 2.5 (45.4% reduction)
Doesn't scale as well as before, but is still a good improvement.

Because the spheres are re-arranged and new spheres are added while
iterating, there is no longer a need to calculate the final spheres
because the result is already in its final spheres.

This should now match the original playthrough implementation.

The type hint in create_paths has been changed from List[Set[Location]]
to Collection[Set[Location]] to allow passing it a deque.
This was unnecessary because locations are removed from their spheres
instead.

This fixes issues that arise from the fact that some worlds have logic
that changes when a specific item is at a specific location.
The playthrough provides a path for all players to reach their goals.
If the goals cannot be reached by following the playthrough, then raise
an error.
Bumps [werkzeug](https://github.com/pallets/werkzeug) from 3.1.6 to 3.1.9.
- [Release notes](https://github.com/pallets/werkzeug/releases)
- [Changelog](https://github.com/pallets/werkzeug/blob/main/CHANGES.rst)
- [Commits](pallets/werkzeug@3.1.6...3.1.9)

---
updated-dependencies:
- dependency-name: werkzeug
  dependency-version: 3.1.9
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…cv_dos, dredge, mmzero3, momodoramoonlitfarewell, outer_wilds, pokemon_crystal, pokemon_frlg, rac3, stardew_valley, taylorswift, tloz_ph, ttyd
Bumps [werkzeug](https://github.com/pallets/werkzeug) from 3.1.6 to 3.1.9.
- [Release notes](https://github.com/pallets/werkzeug/releases)
- [Changelog](https://github.com/pallets/werkzeug/blob/main/CHANGES.rst)
- [Commits](pallets/werkzeug@3.1.6...3.1.9)

---
updated-dependencies:
- dependency-name: werkzeug
  dependency-version: 3.1.9
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
inno_setup.iss: point the new .apmmzero3 association at MultiworldGGLauncher.exe instead of the retired BizHawk client exe.
WebHostLib/templates/macros.html: restore the room-action-link Jigsaw button and give the Isles of Trials and Build a Jetpack links the same style.
data/game_details.json: remove again; beta dropped it in the 2026-09-21 sync and nothing reads it.
@lallaria
lallaria merged commit 89ee4ff into main Oct 17, 2026
16 checks passed
@lallaria
lallaria deleted the chore/merge-20261016 branch October 17, 2026 04:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants