Fork of Archipelago Multi-Game Randomizer and Server that runs on https://ap.hollymcfarland.com
Go to file
lordlou 941dcb60e5
SM: fixed flawed and limited comeback check (#1398)
The issue at hand is fixing impossible seeds generated by a lack of properly checking if the player can come back to its previous region after reaching for a new location, as reported here: https://discord.com/channels/731205301247803413/1050529825212874763/1050529825212874763

The previous attempt at checking for comeback was only done against "Landing Site" and the custom start region which is a partial solution at best. For exemple, generating a single player plando seed with a custom starting location at "red_brinstar_elevator" with a forced red door at "RedTowerElevatorBottomLeft" and 2 Missiles set at "Morphing Ball" and "Energy Tank, Brinstar Ceiling" would generate an impossible seed where the player is expected to go through the green door "LandingSiteRight" with no Supers to go to the only possible next location "Power Bomb (red Brinstar spike room)". This is because the comeback check would pass because it would consider coming back to "Landing Site" enough.

The proposed solution is keeping a record of the last accessed region when collecting items. It would then be used as the source of the comeback check with the destination being the new location. This check had to be moved from can_fill() to can_reach() because the maximum_exploration_state of the AP filler only use can_reach().

Its still not perfect because collect() can be called in batch for many items at a time so the last accessed region will be set as the last collected item and will be used for the next comeback checks.

This was tested a bit with the given exemple above (its now failing generation) and by generating some 8 SM players seed with many door color rando, area rando and boss rando enabled.
2023-01-23 00:36:18 +01:00
.github Tests: now autoload tests from /worlds/*/test (#1318) 2022-12-11 13:15:23 +01:00
WebHostLib SSL support (#1340) 2023-01-21 17:29:27 +01:00
data Ocarina of Time 7.0 (#1277) 2022-12-11 04:11:40 +01:00
docs Docs: code_of_conduct.md (#1350) 2023-01-07 10:24:41 +01:00
test LTTP: fix open pyramid for real this time (#1393) 2023-01-19 16:17:16 +01:00
typings/kivy Zillion: map tracker in client (#1136) 2022-10-27 02:30:22 -07:00
worlds SM: fixed flawed and limited comeback check (#1398) 2023-01-23 00:36:18 +01:00
.gitignore Lufia II Ancient Cave: implement new game (#1218) 2022-12-12 02:36:18 +01:00
BaseClasses.py Core: convert mixture of Plando Options and Settings into just Options 2023-01-19 17:20:23 +01:00
ChecksFinderClient.py ChecksFinder: Linux support via wine (#795) 2022-07-19 07:44:04 +02:00
CommonClient.py Clients: retry connection with ssl (#1341) 2023-01-02 20:24:54 +01:00
FF1Client.py MultiServer and clients: async coroutine starter in Utils.py (#1143) 2022-11-02 15:51:35 +01:00
FactorioClient.py FactorioClient: Warn about Windows console input. 2022-11-04 18:00:22 +01:00
Fill.py Core: Fill fix local logic conflict (#1271) 2022-11-28 07:03:09 +01:00
Generate.py Core: convert mixture of Plando Options and Settings into just Options 2023-01-19 17:20:23 +01:00
LICENSE update Copyright 2022-02-17 19:03:11 -08:00
Launcher.py New Game: Zillion (#1081) 2022-10-20 19:41:11 +02:00
LttPAdjuster.py Core: SNI Client Refactor (#1083) 2022-10-25 19:54:43 +02:00
Main.py Core: convert mixture of Plando Options and Settings into just Options 2023-01-19 17:20:23 +01:00
MinecraftClient.py MinecraftClient: Linux fixes (#668) 2022-06-19 04:54:10 -07:00
ModuleUpdate.py SoE: update to v042 and balancing changes (#1125) 2022-10-21 23:26:40 +02:00
MultiServer.py SSL support (#1340) 2023-01-21 17:29:27 +01:00
NetUtils.py Network: allow sending frozenset 2023-01-02 20:23:31 +01:00
OoTAdjuster.py Ocarina of Time 7.0 (#1277) 2022-12-11 04:11:40 +01:00
OoTClient.py Ocarina of Time 7.0 (#1277) 2022-12-11 04:11:40 +01:00
Options.py Core: convert mixture of Plando Options and Settings into just Options 2023-01-19 17:20:23 +01:00
Patch.py Core: SNI Client Refactor (#1083) 2022-10-25 19:54:43 +02:00
PokemonClient.py Pokemon R/B: Bug fixes and add trap weights (#1319) 2022-12-11 13:51:28 -06:00
README.md Lufia II Ancient Cave: implement new game (#1218) 2022-12-12 02:36:18 +01:00
SNIClient.py CommonClient & SNIClient: Fixes for reconnecting (#1193) 2022-11-04 17:57:58 +01:00
Starcraft2Client.py SC2: Various bugfixes (#1267) 2022-12-11 13:46:24 -06:00
Utils.py Core: mark version as 0.3.8 2023-01-21 17:30:30 +01:00
WebHost.py Tests: make sure DB overwrite actually takes 2023-01-02 20:23:00 +01:00
ZillionClient.py ZillionClient: fix manual disconnect (#1266) 2023-01-07 10:27:43 +01:00
host.yaml MultiServer/WebHost: rename all references to forfeit and deprecate it (#1243) 2023-01-02 12:29:21 -06:00
inno_setup.iss Lufia II Ancient Cave: implement new game (#1218) 2022-12-12 02:36:18 +01:00
kvui.py CommonClient & SNIClient: Fixes for reconnecting (#1193) 2022-11-04 17:57:58 +01:00
meta.yaml meta.yaml: update progression balancing (#1283) 2022-12-05 22:26:44 +01:00
playerSettings.yaml update LTTP player template to add all universal AP options (#1372) 2023-01-07 10:09:33 +01:00
pytest.ini use pytest for github unittests 2020-04-29 18:44:03 +02:00
requirements.txt Core: update modules 2022-09-03 09:55:47 +02:00
setup.py Core: Make apworlds function mostly before Python 3.10 2022-12-20 17:24:04 +01:00

README.md

Archipelago Discord Shield | Install

Archipelago provides a generic framework for developing multiworld capability for game randomizers. In all cases, presently, Archipelago is also the randomizer itself.

Currently, the following games are supported:

  • The Legend of Zelda: A Link to the Past
  • Factorio
  • Minecraft
  • Subnautica
  • Slay the Spire
  • Risk of Rain 2
  • The Legend of Zelda: Ocarina of Time
  • Timespinner
  • Super Metroid
  • Secret of Evermore
  • Final Fantasy
  • Rogue Legacy
  • VVVVVV
  • Raft
  • Super Mario 64
  • Meritous
  • Super Metroid/Link to the Past combo randomizer (SMZ3)
  • ChecksFinder
  • ArchipIDLE
  • Hollow Knight
  • The Witness
  • Sonic Adventure 2: Battle
  • Starcraft 2: Wings of Liberty
  • Donkey Kong Country 3
  • Dark Souls 3
  • Super Mario World
  • Pokémon Red and Blue
  • Hylics 2
  • Overcooked! 2
  • Zillion
  • Lufia II Ancient Cave

For setup and instructions check out our tutorials page. Downloads can be found at Releases, including compiled windows binaries.

History

Archipelago is built upon a strong legacy of brilliant hobbyists. We want to honor that legacy by showing it here. The repositories which Archipelago is built upon, inspired by, or otherwise owes its gratitude to are:

We recognize that there is a strong community of incredibly smart people that have come before us and helped pave the path. Just because one person's name may be in a repository title does not mean that only one person made that project happen. We can't hope to perfectly cover every single contribution that lead up to Archipelago but we hope to honor them fairly.

Path to the Archipelago

Archipelago was directly forked from bonta0's multiworld_31 branch of ALttPEntranceRandomizer (this project has a long legacy of its own, please check it out linked above) on January 12, 2020. The repository was then named to MultiWorld-Utilities to better encompass its intended function. As Archipelago matured, then known as "Berserker's MultiWorld" by some, we found it necessary to transform our repository into a root level repository (as opposed to a 'forked repo') and change the name (which came later) to better reflect our project.

Running Archipelago

For most people all you need to do is head over to the releases page then download and run the appropriate installer. The installers function on Windows only.

If you are running Archipelago from a non-Windows system then the likely scenario is that you are comfortable running source code directly. Please see our doc on running Archipelago from source.

This project makes use of multiple other projects. We wouldn't be here without these other repositories and the contributions of their developers, past and present.

Contributing

For contribution guidelines, please see our Contributing doc.

FAQ

For Frequently asked questions, please see the website's FAQ Page.

Code of Conduct

Please refer to our code of conduct.