ArchipelagoMW-HollowKnight / Archipelago.HollowKnight

Hollow Knight mod enabling Archipelago multiworld interoperability.
MIT License
6 stars 10 forks source link

Generic Plugin Support #147

Open BadMagic100 opened 1 year ago

BadMagic100 commented 1 year ago

Rando4 provides a system for "connections," mods which can add their own items and locations to the randomization pool. Many feature requests we receive are for things which rando4 connections have implemented already, and most well-implemented connections allow any mod to reuse those items and locations.

We should include support for connections in the HK client using a plug-and-play model. This will involve:

  1. A way to fail out of file creation if the required mods are not installed
  2. A way to ingest connection settings on the generator side (likely this means getting the logic extractor running again)
  3. An API for connections with special requirements (e.g. TRJR) to make changes to IC savedata during file creation based on the Archipelago settings
BadMagic100 commented 1 year ago

I'm very keen on taking this up but won't assign myself until prereqs are met

KonoTyran commented 1 year ago

related to this, I'm currently avoiding the bit of code in the map mod that deals with logic overrides. probably just going to disable this bit until its figured out how plugin support will work. Just a thought to keep in mind that the APmm will need access to the logic overrides somehow.

BadMagic100 commented 1 year ago

Logic-wise I am considering a few possibilities:

  1. All supported connections perform logic edits (somehow) which collects all logic in one place statically which can be pulled in by both the extractor and the map mod
  2. Now that APworlds are a thing that exist we might be able to take an approach closer to rando4, where connections dynamically make their logic edits, and then an APWorld is generated locally with their own variations of static logic

Both of these have pretty major downsides, but even without the map consolidation of logic rules is very concerning (and I think whatever solution gets landed on, whether it's one of those or something else, will probably end up being able to easily accommodate the map just by accident)