#
Quick Start Guide
Get up and running with AP Cooldown Suite in minutes.
Support: discord.gg/n5HxmrkpC4
#
1. Installation
- Copy the
AfterPrimeCooldownSuite/folder into your project'sPlugins/directory. - Open your project in UE5.
- Go to Edit → Plugins, search for CooldownSuite, and enable it under the Gameplay category.
- Restart the editor when prompted.
- Recompile if prompted after restart.
#
2. Add the Component
- Open your Character Blueprint in the Blueprint editor.
- Click Add Component in the Components panel.
- Search for AP_CooldownSuite and select
UAP_CooldownSuiteComponent. - The component appears as AP_CooldownSuite in the hierarchy.
That's it
Your character can now manage, track, and replicate cooldown state.
#
3. Set Up the Player Controller
The plugin ships with BP_AP_PlayerController — a ready-to-use Player Controller that handles HUD initialization and UI mode toggling.
- Open your map's World Settings.
- Set Player Controller Class →
BP_AP_PlayerController. - Set HUD Class →
BP_AP_CooldownHUD.
Tab Toggle
Press Tab at runtime to toggle UI edit mode. In UI mode the mouse cursor appears and cooldown bars become draggable. Press Tab again to return to game input.
#
4. Create a Cooldown Definition Data Asset
Cooldowns are defined as Data Assets — no code required.
- In the Content Browser, right-click in your desired folder.
- Choose Miscellaneous → Data Asset.
- Select AP_CooldownDefinition as the class.
- Name it with the
CDA_prefix (e.g.,CDA_Fireball). - Open it and configure:
#
5. Build Your HUD — No Graph Setup Required
AP Cooldown Suite is designed so you never need to touch the Blueprint graph. Everything is configured in the Widget Designer.
#
Step 1 — Open WBP_HUDRoot
Navigate to Plugins/APCooldownSuite/UI/ and open WBP_HUDRoot.
#
Step 2 — Add Cooldown Bars
- In the Hierarchy panel you will see a Canvas Panel as the root.
- From the Content Browser, drag BP_CooldownBar onto the Canvas Panel in the hierarchy.
- Position it visually in the Designer canvas.
- Repeat for as many bars as you need.
#
Step 3 — Add Cooldown Buttons to Each Bar
- Expand your
BP_CooldownBarinstance in the hierarchy. - Expand ButtonSlot (ButtonContainer).
- Drag a Horizontal Box (or Vertical Box for a vertical layout) into the ButtonSlot.
- Drag BP_CooldownButton instances from the Content Browser into the Horizontal/Vertical Box.
- For each button, set its Cooldown Definition in the Details panel to your
CDA_Data Asset.
No graph work required
At runtime, bars automatically discover your Character's AP_CooldownSuiteComponent and each button self-initializes using its assigned Cooldown Definition.
#
Step 4 — Play
Hit Play. Your cooldown bars appear at the positions you set in the Designer. Trigger your abilities — the bars update automatically.
#
6. Horizontal vs Vertical Bars
Horizontal bar — standard ability bar layout:
- Add a Horizontal Box into the ButtonSlot
- Drag buttons in left to right
Vertical bar — side panel / utility bar layout:
- Add a Vertical Box into the ButtonSlot instead
- Drag buttons in top to bottom
Both layouts work identically at runtime. Mix and match in the same HUD.
#
7. Runtime Bar Repositioning
Players can reposition cooldown bars at runtime:
- Press Tab to enter UI edit mode (cursor appears).
- Click and drag any cooldown bar to a new position.
- Release to drop — the position saves automatically.
- Press Tab again to return to game input.
Bar positions persist between sessions via the built-in save system. Positions are stored per bar name in a Save Game slot (CooldownLayout).
Bar Naming
Name your bars clearly in the Designer hierarchy (e.g., CooldownBar_Abilities, CooldownBar_Items) — these names are used as save keys. Renaming a bar after players have saved positions will reset that bar to its Designer default position.
#
8. Start a Cooldown
- Drag off your component reference in the Event Graph.
- Search for Start Cooldown From Definition.
- Connect your
UAP_CooldownDefinitionData Asset reference. - Returns
trueon success,falseif the definition is null or all stacks are consumed.
- Drag off your component reference.
- Search for Start Cooldown.
- Connect a Gameplay Tag and a float duration.
- Returns
trueif the cooldown started,falseif all stacks are already consumed.
Server Authority Required
StartCooldown and StartCooldownFromDefinition require server authority. If triggering from a client (e.g., local input), use the Server RPC variants instead — ServerStartCooldown and ServerStartCooldownFromDefinition. The server processes the request and replicates state back to all clients automatically.
#
9. Cancel a Cooldown
Call Cancel Cooldown on the component with the tag to cancel. Fires OnCooldownCancelled with the remaining time. Requires server authority — use ServerCancelCooldown from clients.
#
10. Query Cooldown State
All query functions are BlueprintPure — no execution pin, safe to call on any machine.
Client Accuracy
GetRemainingTime and GetProgress use a client-side snapshot pattern — clients record the time the replication delta arrived and compute elapsed time locally. This means accurate cooldown display without server round-trips or network lag artifacts.
#
11. Bind Delegates
The component provides 4 delegates to bind in Blueprint:
#
Binding in Blueprint
- Select the AP_CooldownSuite component in the Components panel.
- In the Details panel scroll to the Events section.
- Click + next to any delegate to create a bound event node.
Right-click in the Event Graph and search Assign On Cooldown Started — the binding node is created automatically.
Multiplayer Binding
Delegates fire on whichever machine the event originates on — directly on the server after state mutation, and from FastArray replication callbacks on clients. Bind on both server and client if you need the event everywhere. Do not gate bindings behind HasAuthority.
#
12. Modifier System
Modifiers reduce or increase cooldown durations at start time. They are server-only and do not retroactively affect running cooldowns.
#
Adding a Modifier
Call Add Modifier on the component with an FAP_CooldownModifier:
#
Duration Formula
EffectiveDuration = (BaseDuration × all Multipliers) + sum of FlatOffsets
EffectiveDuration = max(EffectiveDuration, MinimumCooldownDuration)
#
Removing a Modifier
Call Remove Modifier with the ModifierTag you used when adding it. Call Clear All Modifiers to remove everything at once.
Modifier Timing
Modifiers only affect new cooldowns started after they are added. They do not change the duration of cooldowns already running.
#
13. Gameplay Tag Setup
The plugin ships with demo tags registered automatically at startup:
Adding Your Own Tags
Add your own tags in your project's Config/DefaultGameplayTags.ini. Do not modify the plugin's .ini file directly — it will be overwritten on plugin updates.
#
14. Multiplayer Checklist
- Configure PIE: Edit → Editor Preferences → Level Editor → Play → set Number of Players to 2, enable Run Dedicated Server
- Client-initiated cooldowns use
ServerStartCooldownorServerStartCooldownFromDefinition— not the direct functions - Cooldown state replicates automatically server → clients via FastArray
- Delegates are bound on both server and client — not gated behind
HasAuthority -
GetRemainingTimeandGetProgressare called freely on clients — snapshot pattern handles accuracy
#
Next Steps
- API Reference — complete class, function, delegate, enum, and struct documentation
- Changelog — version history
AfterPrime Systems — Building the Gameplay Foundation