
Unreal Engine Sprint & Stamina System Without Event Tick – Optimized Performance
Create an optimized sprint & stamina system in Unreal Engine using timers instead of Event Tick. Improve performance with clean, scalable Blueprints.
This is Rambod and in this tutorial we build a sprint and stamina system without Event Tick. Many tutorials rely on Event Tick, but that drains performance. Here we use Set Timer by Function Name and Clear Timer by Function Name for a clean, scalable, and efficient solution.
1) Why not Event Tick?
- Event Tick runs every frame.
- Works for small projects, but scales poorly.
- Timers run at fixed intervals, saving resources.
- Cleaner, more production-ready approach.
2) Input setup
- Go to Project Settings → Input.
- Add an Action Mapping called
Sprint
. - Bind it to Left Shift.
3) Variables to create
Inside BP_ThirdPersonCharacter
:
IsSprinting
(Boolean, default = false).Stamina
(Float, default = 100).StaminaConsumptionRate
(Float, default = 1).StaminaRecoveryRate
(Float, default = 1).WalkSpeed
(Float, default = 300).SprintSpeed
(Float, default = 600).MaxStamina
(Float, default = 100).
4) Functions
- SprintTimerFunction: handles draining stamina.
- StaminaRecoveryFunction: handles stamina regen.
5) Sprint logic
- In Event Graph:
- On InputAction Sprint (Pressed):
- Set
IsSprinting = true
. - Use Set Timer by Function Name →
SprintTimerFunction
. Interval = 0.2s, looping.
- Set
- On Released:
- Set
IsSprinting = false
. - Reset walk speed to
WalkSpeed
. - Clear Timer for sprint.
- Start stamina recovery with another timer.
- Set
- On InputAction Sprint (Pressed):
6) Sprint timer function
- Clear stamina recovery timer (don’t regen while sprinting).
- If
IsSprinting = true
andStamina > 0
:- Set walk speed to
SprintSpeed
. - Subtract
StaminaConsumptionRate * 0.1
. - Update
Stamina
.
- Set walk speed to
- If stamina ≤ 0:
- Stop sprinting.
- Reset walk speed.
- Clear sprint timer.
- Start stamina recovery timer.
7) Stamina recovery function
- If
Stamina < MaxStamina
:- Add
StaminaRecoveryRate * 0.1
. - Clamp between
0
andMaxStamina
.
- Add
- If stamina is full:
- Clear recovery timer.
8) UI setup
- Create a Widget Blueprint (
WBP_Stamina
). - Add Text Block and bind it to display
Stamina
. - In Character Blueprint, on Begin Play, create and add this widget to the viewport.
9) Bonus: progress bar
- Add a Progress Bar to
WBP_Stamina
. - Bind Percent:
Stamina / MaxStamina
. - Updates in real time as stamina drains and recovers.
Wrap up
This system gives you:
- Efficient stamina logic without Event Tick.
- Smooth sprinting at defined speed.
- Automatic stamina drain and regen.
- A clean UI with progress bar feedback.
This approach scales much better than Tick-based logic and is production-ready.
For more Unreal Engine tutorials, visit rambod.net, subscribe on YouTube, or watch this tutorial here: Watch on YouTube.