TheTrackerCouncil / SMZ3Randomizer

Tracker presents: a casual standalone version of the Super Metroid & A Link to the Past Crossover Randomizer with built-in automatic item tracking and Twitch integration
https://vivelin.net/projects/smz3
MIT License
25 stars 8 forks source link

(Proposal) Bingo / Random Objective Mode #378

Open MattEqualsCoder opened 10 months ago

MattEqualsCoder commented 10 months ago

So VARIA has a feature to add more objectives to be able to access Tourian. These can be to defeat additional minibosses like spore spawn or botwoon as well as some meme ones like killing Shaktool (gross), visiting the animals, tickling the red fish, etc.

I think it would be neat to add something like this as an additional gameplay mode. You could just get like 5 random objectives, or if we can come up with enough, we could even do a bingo mode. But we'd probably need like 50 different objectives to make a bingo mode random enough.

Vivelin commented 10 months ago

Replace killing Shaktool with visiting Shaktool and I'm in.

MattEqualsCoder commented 8 months ago

So my current thought for this is to introduce a sort of "Game Mode" interface/abstract class that will basically have different methods which would be called at different points in time during both generation and tracking. This could then be used to for both this mode, and other modes like the discussed spazzer mode.

Here are the main spots I think these game modes would need access to:

  1. Initial item pool selection - Modify what items are to be spawned
  2. Pre world generation - Specify items at locations if needed
  3. Patching - Set specific patches that need to be applied to the rom
  4. On item collection/boss defeated/dungeon tracked - Used to track win conditions
  5. On Zelda/Metroid game state changes - Used to track win conditions

It would be really cool if we could actually have injections into the logic to add conditional logic to locations easily, but that may need to wait for graph logic to be done easiest.

Vivelin commented 8 months ago

That sounds good to me. Some of the refactoring work I had done before is probably helpful here, but there's still a lot necessary to really make this work. It would go a long way to make things more customizable, more easily, though.