📄 General

Getting Started

🎨 Creating Visuals

Cosmetics

Audio

⚙️ Custom Mechanics

Blueprints

Maps

📩 Mod Distribution

Pak Files

<aside> ⚠️ Advanced Guide: This guide assumes you have prior Unreal Engine experience and have followed the Unreal Engine installation in Getting Started.

</aside>

Creating your first mod

<aside> 💡

This guide assumes you are using Horologium Core, but everything will work regardless of how you load your mod

</aside>

This section will show you how to create a basic jump mod

The very first thing you will need is a place for all of your mods assets to go, I place all my mods in ModData/[Mod Name] to keep everything in the same place. In this case ModData/JumpMod, inside of this directory you will right click and select Blueprint Class and then select actor. Name this actor BP_JumpMod.

⚙ Setup mod loading

Next you will need this blueprint to load, to do this create the directory HorologiumMods/Gameplay. Inside of this directory create a new blueprint which is a child of BP_JumpMod, to do this right click and select Blueprint Class and then search for JumpMod, or whatever you have named your mod.

The “Pick Parent Class” selection box with “BP_JumpMod” in the search field

The “Pick Parent Class” selection box with “BP_JumpMod” in the search field

Select BP_JumpMod and name the new actor BP_HorologiumMod_111, you can replace 111 with any number between 1-255. You wont need to do anything in this new actor, this is only here so your main actor BP_JumpMod loads.

🎮 Enable Input

Next, in your original blueprint, BP_JumpMod, you will need to enable input. After the node Event BeginPlay add the node EnableInput then connect the nodes GetGameInstance > GetDBDGameInstance > GetLocalPlayerController and connect each node and finally connect GetLocalPlayerController to the PlayerController pin on the EnableInput node. The Target pin will stay unconnected as it will default to self since it is inside of the actor you want to enable input on.

Example of how to enable input

Example of how to enable input

<aside> 💡

If you don’t see an Event BeginPlay node, you can right click in the node graph and search for BeginPlay

</aside>

⏳ Set Default Max Hold Time

Next, you’ll want to update the jump height or JumpMaxHoldTime variable, to do this add the node GetDBDGameMode, then add and connect it to the node GetLocallyControlledCharacter. Then drag from the return value pin on GetLocallyControlledCharacter and search for JumpMaxHoldTime, add the Set JumpMaxHoldTime node. Change the default value from 0.0 to whatever you want, Eg 0.4. Connect the Set JumpMaxHoldTime nodes execution pin to the EnableInput node from earlier.

Example of the Set JumpMaxHoldTime node

Example of the Set JumpMaxHoldTime node

✔ Adding the Input Event

Next, right click on the node graph and search for Anykey and add the Any key node. Then click on the node and over in the details panel, under input, click the keyboard button in the Input Key section and then press the key you want players to use to jump. Alternatively, where it says Any Key with the downward chevron, click to open a drop down that will allow you to search for any button.

The details panel with keyboard button highlighted in red

The details panel with keyboard button highlighted in red

I would also recommend unticking Consume Input and Override Parent Binding.

🔧 Adding the Jump nodes

Next, add the Node GetDBDGameMode, then add and connect it to the node “GetLocallyControlledCharacter”. Then drag from the ReturnValue pin on the GetLocallyControlledCharacter node and search for Jump, add both Jump and Stop Jumping. Connect the Jump node to the Pressed execution pin on your key input node and Stop Jumping to the Released node. Make sure both Jump And Stop Jumping nodes are connected to the ReturnValue pin for GetLocallyControlledCharacter.

Example of the Jump nodes

Example of the Jump nodes

At this point the mod is pretty much done, now just go to File > Cook Content for windows, it should cook and return no errors.

image.png

Widgets

An example of the context menu with “User Interface > Widget Blueprint” selected