Skip to content

Core: Multiple-game or non-game expansion for manifest #6339

Description

@duckboycool

What feature would you like to see?

Currently with the manifest/apworld spec, things work off of the assumption that .apworlds will contain exactly one World in them, which is what the fields all refer to. This has caused some friction for both non-world tools released as an .apworld (which is probably a good way to release these otherwise) and also multiple world classes within one .apworld package with Pokemon for instance. I think both of these cases are worth addressing, and to me these seem like good ways without having to change too much of the current system:

  • For non-Worlds, they can put "game": null into the manifest to indicate this. This already seemingly works okay (and got some agreement as a way to handle this case when it's been discussed in the discord before), but this should be given explicit mention in the docs and the APWorld builder tool should be reworked so that it can package these since currently it just goes through world_types (and so you have to manually put what I'm pretty sure are meaningless version/compatible_version given they're not actually APWorldContainers). Potentially they could also be given a separate extension like .aptool if that seems desirable.
  • For multi-Worlds, as an alternative to Core: Allow multiple games per APWorld #6233, I think it may be better to stick to keeping a single World allowed and instead introduce a separate "world" type that the common parts can be separated out to as a dependency of the .apworlds (feasible from Core: Do not process datapackage attributes for abstract world subclasses #5468 improving support for "abstract" worlds with no game set). I think this one should get its own extension, say something like .apdep. This keeps the manifest handling for worlds simpler and also more flexible since worlds shipped this way can also have separate fields like authors without having to also add some way to indicate which belongs to which world. It also means that updates for either the core or the dependent worlds can be made separately if wanted, and if there's a nontrivial amount of per-world information, users using only one of them don't have to download it. I also think that keeping to a one world per .apworld system might be simpler for players/hosts as well (although there might be some issues with players handling the dependencies themselves). Core has also mentioned something similar as a possible way to handle common external dependencies for custom worlds, and this could be a better way to ensure things needed by worlds are loaded first, like _bizhawk or generic.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    affects: coreIssues/PRs that touch core and may need additional validation.is: enhancementIssues requesting new features or pull requests implementing new features.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions