Idea: one path for randomizers, restoration mods and co-op, with a mod interface in tiers #42
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
needs measurements
question
testing wanted
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot#42
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 Longshot fork. I would also like multiplayer to use 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 on Longshot
Proposed tiers
These are proposed interfaces, not finished features. A scripting or WebAssembly layer could use the same services later; I would not add a VM first. Longshot compiles the game's instructions ahead of time: the interfaces would call compiled host services, not patch instructions while the game runs. A checked location and a granted item must remain different events, because another player's reward can complete a check without adding anything locally.
Anything else
Questions for the maintainers:
With your agreement, I can test the existing RomFS path on Linux with a locally generated Clawshot seed, copied saves and controller prompts, then test the expanded Mods work when its Longshot port is available. I can bring a small chest-table draft and a written item/check interface for review with hiKareeem and the Archipelago author; the two questions to Clawshot are still open. Those tests would not establish native-module support, Archipelago compatibility or Windows behavior.
Moved from NotRexed/Hookshot#2892.
There is a small part we can do without deciding the later interfaces: document the RomFS loader we already have and exercise an authored example through it. That is now pull request 93 (work in progress), without a new manifest, loader or runtime behavior. The example checks full-path ordering, nested discovery, disabling and restart, both mod-root choices and ignored ExeFS content. It uses invented text only, not a game dump or seed. The command is
python -I -B tests/test_mods_size_table.py; the expanded test also passes against main's loader.One distinction matters for the next step: pull request 51, head
d5b2ff117, supplies the shared menu text editor (text_edit,MkwVkHost.take_text), not the older Mods-tab proposal. Pull request 68, headcca2aebb, uses that editor and implements co-op in the core. Itscoop_on_eventandcoop_on_messageare internal session hooks, not a loadable-module interface. It has progress-schema checks and save-backup/acceptance gates, but no public checked-location or successful-grant service.The remaining choices are still open:
My recommendation is to keep the independent RomFS example small, then agree question 2 and the save/identity rules with the Clawshot and Archipelago authors before fixing a new format. Nothing in the example chooses a catalog, claims Archipelago compatibility or changes the module-first preference.
No game run is claimed. The example is a filesystem test and cannot show chest rewards or controller prompts in play. A separate real-mod proof would use a locally generated Clawshot seed and disposable copied saves: a bounded five-minute start, seed load, known changed reward and prompt inspection, then a one-minute restart with the mod disabled. That would show only the file route on that build and platform, not the later tiers.