I am looking around for an engine to use for a little hobby project I’m planning on developing in the next year or so, and one of the features I would really like to have is a relatively simple mechanism for adding and/or replacing textures, static meshes and, hopefully, even skeletal meshes by the end users. (Note: scripting was left out of the list intentionally, this is not something I need.)
To clarify, I’m OK with the mod/resource pack creation process being not-so-trivial (for example, requiring the modders to download UE and use the editor to pre-process the resources somehow, etc, is fine), but on the end user’s machine I would like the process to be ideally as simple as dropping files in a folder known by the game, then having an in game/pre-launch process for enabling/disabling the use of the individual mods/resource packs.
The problem is only with the loading of the assets; the logic for which of the assets to use in place of the vanilla assets, and which ones to use for creating new items/player skins, etc, and how to do that - that is not the problem.
I’ve been playing around with UE4 in little toy projects and I feel quite comfortable with it, to the point where I’m sure the other aspects of the project won’t be a problem, but the part with using additional assets, besides those that have been cooked & packed by the editor alongside the game - that I’m totally unsure about.
Now, it does seem like there are reasonable solutions for loading textures that were not packed alongside the game from arbitrary data sources ( e.g. https://wiki.unrealengine.com/Asynchronous_Image_Loading_from_Disk ), and for static meshes ( e.g. https://wiki.unrealengine.com/Procedural_Mesh_Component_in_C%2B%2B:Getting_Started , GitHub - GameInstitute/RuntimeMeshLoader: RuntimeMeshLoader for UE4 , https://github.com/Koderz/RuntimeMeshComponent ), though they may be not as efficient as using the cooked/packaged assets. But I have not seen something like this for skeletal meshes.
So, my questions are, given that I’m fine with doing things in C++, since that is what will be mostly used for the game anyway, and I’m fine with requiring modders to get and use the UE Editor:
- Is something along the lines of the manual “UTexture2D* UImageLoader::CreateTexture” method described in https://wiki.unrealengine.com/Asynchronous_Image_Loading_from_Disk the best I can do for textures?
- Is loading the static mesh data manually and treating it basically like a procedurally generated mesh when handing it off to UE the best I can do for static meshes?
- Is there, at least theoretically, something equivalent for skeletal meshes?
- Is all of the above unnecessary, and there is some way to let UE look for assets in multiple places - the original package distributed with the game, plus any additional packages/locations with resources prepared by UE Editor, that fully take advantage of any offline cooking/optimizations, just like in the original package?
- If the answer to #4 is no, is something like that planned for future UE releases? Or is this something that will never happen because of something inherent in the asset packaging/cooking/optimization process, that really requires all the usable assets to be packed at one time, into one package?
- Am I confused and totally missing something in my thinking about this?