The Airport CEO Mod Loader project is a project that aims to completely change the way code-based modding works, so it is easier to use for everybody. Simply, it consists of moving all modding to the steam workshop and moving from the UMF modding system to a new system. Both code-mods (like Tweaks and Custom Buildables) and the mod loader would be on the workshop. This gives the AirportCEO community full control over its modding system, while also making it simpler to use for users:
There would be a new AirportCEO Mod Loader workshop item. This item would be the equivalent of the UMF system. Then, mods like Airport CEO Custom Buildables and Airport CEO Tweaks would have their workshop items. Upon subscribing to the Mod Loader and a code-mod, the installation would already be complete and you could just play and enjoy.
- The biggest benefit of the whole system is its ease of use. The workshop-based system allows for no external downloads to be required, thus making it simpler. For Windows users, no interaction with the system is needed other than reloading the game once. Further, the usage of the workshop means dependencies are very obvious, showing clearly what you need to download. A mod can require Tweaks, which requires the aircraft pack and the mod loader. This is simply and effortlessly communicated to users.
- Since the mod loader is used by everyone and can include anything, this allows the community to pretty much add things to the game themselves. For example, performance improvements and minor bug fixes could be added, to help improve the gameplay quality of anyone playing.
- This is the least applicable to most players, but BepInEx has a wide array of tools to make developing easier and a great community. This means that development time can be decreased, thus increasing the amount of features that can be added. The mod loader can also contain simple-to-use utilities, which means that new mods don’t have to have their own systems (to deal with save/load, the workshop, etc) they can just quickly use the Mod Loaders.
There are lots of reasons why moving to the mod loader is a good idea, and most of them are directly tied to one of the benefits mentioned above. But here are some of the reasons why:
- The current system relies on external downloads, which introduce complications for some users
- The current system is “hidden” from users, it’s not easily findable through Steam
- Dependencies are an absolute mess using the current system
- UMF is a closed-source system that is generally not preferred by the code-based modding community - BepInEx provides better support and a better community
- It’s hard to ship fixes and improvements to everyone as there are multiple different mods with different authors
- The development of Airport CEO has been largely complete, yet has a community interested in adding more features. Airport CEO is a good game in a good place for modding - and this project allows that to happen better, easier, and faster
But, there are some drawbacks to this plan
- It requires a major shift in users between two incompatible systems (This can be solved by notifying users of the switch through updating the UMF mods)
- It does require some work by the game developers (See the How? section for more info)
- Steam workshop mods can be updated by one person only - this is a Steam limitation. This makes it hard for multiple people to work on something, and creates the risk that unmaintained mods become outdated while people use them (This is fixable in many ways. Contributors can be added to mods that can update their title and description to redirect people, the ACEO mod part of the mod loader can be made so that it can work for any workshop item with certain attributes, everything will be open source)
- Less support and ease of use on Mac (the new system will still be better than UMF though)
The AirportCEO Mod Loader has already been partially developed, the GitHub is linked. About half the project still needs to be developed, but this is not an issue as it is mostly just fleshing out features. The biggest issue is getting the mod loader to work in the game. BepInEx only needs one thing so it can load - it must be in the games directory where the .exe file is. This is sadly not where workshop mods land normally, so the game itself has to move the mod loader from where it is found in the workshop folder, to the place where the .exe is. The game must do this, as I have not found another way to do it.
So, we need to convince our dear game devs to implement this change! If you think that this should be added to Airport CEO, please voice your opinion below!! Thank you.
Technical Details for Devs (or anybody)
The most complicated part of this is successfully getting the mod loader from the workshop item to the game folder so it can start working. This does present some security risk, but nothing more than someone purposefully modding the game.
As mentioned, the mod loader files need to be moved from one folder to another. There are a couple of ways of doing this. One difference is how the game tells the difference between the mod loaders Steam mods and other mods:
- Search Method (Prefered) - At Awake, the game will search through all mods and see if it finds a specific “version” subfolder of a mod. Then it will move files based on that. This has worse performance and slightly worse security, but it means if necessary a new mod loader can be implemented by the community easily.
- Steam Workshop Item ID method (Hardcoded) - This means that at Awake, the game will search through all mods available. And then if it finds the ID number of the Mod Loader, it will move the respective files. This has better performance and security, but it means there can only be one mod loader (issue if the person who owns the item leaves the community, and so on)
There are a couple of issues with this entire method in the first place:
- The Lagging Issue - Since BepInEx only loads when the executable is loaded, so whenever the mod is downloaded/updated, it will make the user A) start the game, the stuff is moved to the new directory, B) quit the game, and C) relaunch the game, and now BepInEx is loaded.
- Solution: A message (popping up if the move was made) could warn the user that the game must be reloaded on the initial install, this could remove nearly all confusion. If its an update, when it is applied does not matter, the lag is okay
- Update Complications - Since the game would only update mods at game load, updates would be very delayed - Up to two restarts late. But the bigger issue is how to tell if an update has happened
- Solution: Have some file with a version number in it. If workshop one is higher than game one, move, otherwise don’t. Easy solution.
Thank you for reading. Devs, I really hope you see the immense value in this system and are willing to implement it!