Ijwu / PhoenixPointModLoader

Provides an interface for injecting code into the game Phoenix Point. Based on the BattleTech Mod Loader.
Apache License 2.0
3 stars 1 forks source link
csharp modding phoenix-point-game

discord | Wiki | Current Release

Phoenix Point Mod Loader

The Phoenix Point Mod Loader (PPML) may be used to easily patch or alter Phoenix Point (PP) game code. It is based off of the BattleTech Mod Loader (https://github.com/BattletechModders/BattleTechModLoader).

The project uses, and expects mods to use, the Harmony library (https://github.com/pardeike/Harmony) to patch game behavior. Modding in its current state consists mainly of assembly patching.

Installation

Place the contents of the .zip file in your PhoenixPoint\PhoenixPointWin64_Data\Managed directory. Run the executable titled PhoenixPointModLoaderInjector.exe.

Run the game to have it generate the Mods folder for the Mod Loader. Place all mod directories/files into this folder.

Contributing

All contributions welcome! I intend to enforce a few base guidelines for the repository:

  1. Follow MSFT guidelines on code convention. Assume anything not currently following convention is legacy and will be changed.
  2. All development happens in the develop branch (and preferably in feature branches ala Git Flow).
  3. master branch is for releases only and may only be PR'd into.

After cloning the repository you will need to put your game assemblies into the GamePackages folder. These assemblies are from your PhoenixPoint/PhoenixPointWin64_Data/Managed folder. The assemblies that need to be copied are:

The PPML relies on types from these assemblies and will not build without these references resolved. I have not included the references in the repository to preserve the copyright integrity of Snapshot Games.

Mod Developer Information

The mod loader will recursively search the Mods directory in order to obtain all DLLs it can find. It will then look for all types implementing the IPhoenixPointMod interface.

Once all IPhoenixPointMod objects have been instantiated and sorted by ModLoadPriority in order of High, Normal, Low; the mod loader will execute the Initialize() method on each instance.

Development To-Do List

Contact

Find me on the Phoenix Point discord under the username Ijwu. Please reach out as needed, however do not expect a guarantee of service.