This issue encompasses small improvements which I think could be made or thoughts which I plan to expand on later.
Improvements to-do:
Change file config provider to not throw exception if it can't find config file. Perhaps return null?
Returning null is not ideal, but would be good enough.
Intent: help streamline mod development by reducing likelihood of mod killing exceptions.
Known bugs:
I made a new mod to implement something and found that the default metadata for it isn't loading properly. Displays as blank in the logs. This needs investigation.
So I opened the injector exe file and it does its thing, but the mod folder doesn't appear. I revert to original Assembly_Csharp.dll file repeat injector exe file and still doesnt appear. Tried using the older version from jan same thing, doesn't work.
As a part of the vision for PPML, I always wanted to make it possible to have an in-game UI for the configuration of mods. This issue encompasses this effort.
I currently have a few paths forward to make this a reality:
Use the Vortex In-Game Overlay by building compatibility with Vortex's Harmony Patcher.
Develop a bespoke solution to inject UI elements into the game.
Currently I'm leaning towards approach no. 1. It would mean that the API for UI definition is already available and documented. On top of that, it would be nice to have the tighter integration with Vortex. I am currently attempting to find out what the level of difficulty is around this.
Approach no. 2. would possibly require more effort to get working. I would need to define the UI generation code as well as the mod author API. But, it would integrate directly with the game (in the options menu, perhaps) and probably look better.
Currently the only method available to mod authors to edit data definitions is to use the mod ppdefmodifier by @tracktwo.
I intend to replicate this behavior to allow for arbitrary, user directed, editing of game data assets. I foresee this requiring these tasks to be complete:
Develop service for mods which allows for access to and alteration of arbitrary types.
Develop service for mods which allows for access to and alteration of data definitions.
Develop a built-in mod which parses files identical or similar to ppdefmodifier's file format.
This is for ease of migration for users of ppdefmodifier.
I would like to make this feature set a part of a v0.4 release.
Some modders have left the game and will probably never update their mods. So there are players who want to keep using their mods and therefore stay with the initial version of ModLoader.
I, as a modder, have therefore to handle two branches of my code. The tested one (with initial ModLoader), and the untested (hopefully working) ModLoader 0.2+ branch.
If retro compatibility is brought to ModLoader, modders will be able to focus developpment on only one version (the most recent) and players will be forced to update their ModLoader version without fear of having mods that don't work anymore.
PPML is stuck on Harmony 1.2 for the time being. Harmony 1.2 has been deprecates and 2.0 is the suggested route forward.
There is one main issue with this: Harmony patches for 1.2 are not inherently compatible with 2.0. Meaning this could break compat... again. I'm loathe to commit to doing that so another way will have to be made available.
Options:
Ship with Harmony 1.2 for those mods which use it anyway, but port PPML to 2.0.
The injector in its current state is fairly sloppy. It is mostly copied code from the battletech mod loader and isn't really suitable for long term support.
Options:
Re-write injector and keep it as a CLI tool.
Write injector specifically for use with Vortex as the mod loader GUI.
I'll likely end up doing a mix of the two in which I make a new injector CLI application but with the intent for it to be used by Vortex easily.