Skip to content

Move mod loader to MonoMod reorg/new HarmonyX #2

@BadMagic100

Description

@BadMagic100

Background

The newest version of MonoMod and HarmonyX support ARM processors; this is critical long-term for supporting Macs because Apple is not intending to keep Rosetta around forever. We had initially planned to help with the update to BepInEx 7 to make this happen, but then we got scope creeped and stonewalled, so we need another solution. This could be a fork of BepInEx or potentially a completely custom solution

Requirements

  • ARM compatibility. This is solved by the newer versions of MonoMod/HarmonyX but worth stating explicitly
  • No replacement of game files at any point; it should be trivial to launch the game vanilla by changing config only (for Mac and Linux, this looks like running the original executable rather than the wrapper script).
  • Binary compatibility with the BepInEx 5 API. This means that plugins and preloader plugins should work, config API should work, Harmony should work, etc. We know that even people in the discord do not follow our guidance accurately so we should be accommodating for the majority of mods just to work even if they didn't pay close attention to what they're supposed to do. Even for HK, we are now starting to see the usage of BepInEx crop up and cause problems, so we cannot ignore it and pretend things will be fine because Big Mod X uses our approach.
  • Nice to have - plugins using monomod directly are not broken; ie there is a compatibility layer to bring people to reorg with no effort
  • Nice to have - preloader plugins can be written in modern-er .net

Implementation Idea

Just fork BepInEx v5-lts branch and do the monomod/harmony update. It does mean maintaining a fork but it's a super easy approach in theory.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions