Download

Calling nonexistent functions from blueprints

So, I’m trying to figure out if I could make my game moddable. It is kind of a 3D platformer, where you have to run/jump through a level within a time limit.

Currently, modding the game requires basically just level design skills and a tiny bit of blueprinting experience. With the current version, the whole thing you have to do to make your level game-compatible is to create two trigger volumes at the start and finish of the level and these volumes will call API_StartTime() and API_StopTime() functions from the current HUD blueprint. Very simple.

The problem is that to be able to call these two (and a couple of other) functions, the HUD blueprint needs to be present in the project UE (of course). You just can’t call a function from a blueprint that doesn’t exist in the project. If I wanted to make the game publicly moddable, I wouldn’t like to expose the whole game project to anyone who wants to try to make a level to my game.

The best scenario would be if a potential modder could just create a new empty UE project, create the level completely independent to the game, then somehow add calls to the game’s API functions from the level blueprint without having the actual game’s blueprints available (maybe an engine plugin could do, somehow?). And finally to test the level, would then migrate it to the game’s levels directory and run the game, which would offer to play the newly added level.

Can you think of any way how to achieve this in general?

I’m looking for any tips, thoughts or even anyone who would like to help me with this “research” in practice.

Sounds like a job for C++, and not even some normal C++ code, but a piece of code that could retrieve data from other projects for usage of functions, etc… :confused: Also, your game looks great, and just gave me a fantastic game idea of my own :smiley:

Glad to help.