Repository navigation
Chore/merge 20261016 - #185
Merged
Merged
Conversation
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.
…cull # Conflicts: # BaseClasses.py
…cull # Conflicts: # BaseClasses.py
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.