So, I am currently working on a game, and we want the game to be modded by users. The game is Musical Range, a rhythm shooting game where you shoot along songs. The idea is that users can create their own custom songs, by simply creating a midi file in a outside program, and then sync that to a youtube video. The game would read the Youtube Video (Already done) and then simply play the midi to generate the track.
The problem I have is that the game is too good at protecting the game itself. First, I though that maybe the users only need to put the files in a project template, take the uassets, and place them inside the game folder where it is installed, and the game would find those assets. Wrong! Game won’t read anything that is not cooked and packed in. How to read uassets outside of packaged game? - UE4 AnswerHub
Then, a helpful community member made a function so that the game can read any pak files that you add to the packaged game inside content/pak. https://forums.unrealengine.com/showthread.php?140142-Functioning-UE4-Modding-Example-Code-No-Engine-Customization-Required .Brilliant I thought. Got his code working, until I figured out that creating DLC Paks is so complicated.
The guide used to create the paks is back from UE4.9 https://wiki.unrealengine.com/Modding:_Adding_mod-support_to_your_Unreal_Engine_4_project. Not only that it is based on the fact that you need a project to package first before you can create the DLC package. I thought of creating a template for mod that users just download and put their files in, so that can be helpful, but I have no idea if it will work as I can’t even get to pakage the DLC. It always throws errors and using unrealpak to check shows that the pak is empty. This DLC system is very outdated, and ugly workaround.
Then, I though, well maybe I don’t need to do a DLC package, just put the content in and package the game like I normally would, but I end up with 60MB of engine content which I dont need, and those add up quickly. Maybe there is a way to remove those using UnrealPak, but the cpp documentation doesn’t offer a parameter for that on UnrealPak.
How can I expect a User to go to all this trouble, when its way more complicated than it should be? We just have to be working with workarounds everywhere, when all this could be much, much simpler from the get go.
All I need is the user to create 2 files in the editor. Lets say in Content/ModName, and then a way to tell the engine to just cook and pak the files in Content/ModName, because then I can just grab that ModName.pak with the AssetRegistry.bin, have the user place them in the games content/pak folder and then ModRegistry could mount those pak in.
Or even better, a way to directly read uassets placed in the game’s files even if they are not cooked and packaged in the original game.
In short, UE4 needs a more friendly modding system for Developers and Users, as User Generated Content becomes very valuable to a game’s lifetime and enjoyment.