Proposal: one path for randomizers, restoration mods and co-op (a mod interface in tiers) #2892
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot#2892
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The idea
Players should be able to choose a randomizer seed or restoration mod, then play without finding a separate Hookshot fork.
I would also like multiplayer to be built on that same mod system, as its first module, rather than land as a special case in the core, and I accept that this delays it.
What exists
Proposed tiers
These are proposed interfaces, not features I am claiming are finished. A scripting or WebAssembly layer could use the same services later; I would not add a VM first.
Hookshot compiles the game's instructions ahead of time. These interfaces would call compiled host services, not patch instructions while the game runs. [1]
A checked location and a granted item must remain different events: another player's reward can complete a check without adding anything locally. [6]
Questions for maintainers
What I can offer first
With your agreement, I can test #2478 on Linux with a locally generated Clawshot seed, copied saves and the controller prompts.
I can then bring a small chest-table draft and a written item/check interface for review with hiKareeem and the Archipelago author.
The first test would not establish Archipelago compatibility, native-module support or Windows behavior.
Sources
[1] Hookshot
65a4d874, host/mods.c:1–13; Clawshot755317b3, src/clawshot/pack/runtime.py:135–163.[2] #2478
f654ef20, host/mods.c:1–28, host/cheats.c:1–20.[3] #2739
123e14a6, launcher/README.md:3–23; #23735ccc2f16, builder/linux/hookshot_launcher.py:1–15; #195861d19af6, builder/linux/profiles.py:1–10.[4] Hookshot
65a4d874, docs/control.md:30–88; #229245310b24, docs/control.md:264–301.[5] #2274
a4c080e0, host/coop.h:63–137; agreement with itzdaface.[6] Clawshot #6
3111c69f, docs/archipelago.md:8–34,84–90; hiKareeem's scope decision.