Set Game Paused¶
At a glance
Lives in: Blueprint API / Game -
Target: Gameplay Statics -
Input: Paused Boolean -
Returns: Boolean: whether the game was successfully paused or
unpaused -
Can fail by: not finding a valid game world/controller path or having
pause rejected by game-mode/controller rules -
Official docs: Set Game Paused,
Set Input Mode Game Only,
and Creating User Interfaces
The one-minute version¶
Set Game Pausedchanges the world's paused state.truepauses;falseunpauses.- The Return Value is a Boolean. Branch on it if the rest of your graph assumes the game actually paused or unpaused.
- Pause affects game-world time and normal gameplay simulation. It does not create a pause menu, add a widget, show the cursor, focus a button, or change input mode.
- UI can still be useful while the game is paused, but only if you route input to it and give the close/resume path a way to run.
- The open/close menu pattern is a bundle: create/show widget, set paused state, set input mode/focus, show cursor, then restore those choices in reverse.
- In multiplayer, do not treat pause as a private per-client gameplay freeze. Use local UI for menus, and let the server/game rules decide whether the shared game world can pause.
What it actually does¶
Set Game Paused is a Gameplay Statics helper around the engine's pause path.
It asks the current game world to enter or leave a paused state and tells you
whether that request succeeded.
pseudocode of the engine behavior - not engine source
OpenPauseMenu:
create or reuse the pause widget
add it to the viewport
bPauseSucceeded = SetGamePaused(true)
if bPauseSucceeded:
set input mode to UI Only or Game and UI
show mouse cursor
focus the menu widget
else:
remove or downgrade the menu because gameplay did not pause
Paused game-world time affects normal gameplay systems that are driven by the world tick and game time:
| System | Beginner read while paused |
|---|---|
| Actor movement/tick | Normal gameplay ticking usually stops unless specifically configured to tick while paused. |
| Timers | Timers that depend on world/game time usually stop advancing while the world is paused. |
| Physics and movement components | Normal simulation is paused with the game world. |
| UMG/Slate UI | UI can still render and handle input if focus/input mode are set up. |
| Audio/VFX | Existing presentation may continue, stop, or ignore pause depending on asset/component settings. Treat this as content setup, not proof of pause success. |
| Real-time clocks | Real-time values are separate from paused game time. |
The node is not a UI node. It is valid to pause without a menu, or show a menu without pausing. The common pause menu uses both because the player expects the world to stop and the menu to accept input.
What the Return Value means¶
The Return Value answers:
Was the pause/unpause request accepted?
Use it like this:
Set Game Paused true
-> Branch Return Value
true:
Set bMenuOpen true
Set Input Mode UI Only
Show Mouse Cursor true
false:
Print String "Pause request failed"
Remove menu or keep gameplay controls unchanged
If you ignore the Boolean, your UI state can lie:
- the menu says "paused" while the game is still running;
- input gets switched to UI-only even though the world did not pause;
- the resume button tries to unpause a game that never paused;
- in multiplayer, one client UI may imply authority it does not have.
Calling Set Game Paused false also returns whether the unpause request
succeeded. If it returns false, do not immediately restore a normal gameplay UI
state without understanding why the game is still paused.
The pause-menu pattern¶
Put the open/close flow where player UI and input already belong: usually the
PlayerController, or a UI manager owned by it. Avoid putting the whole pause
menu in a respawnable pawn if death, possession changes, or level transitions
can replace that pawn.
For a simple single-player menu in a PlayerController Blueprint:
Input Pause
-> Branch bPauseMenuOpen
false path:
Branch IsValid(PauseMenuWidget)
false:
Create Widget WBP_PauseMenu
Owning Player = Self
Set PauseMenuWidget
Add to Viewport
Set Game Paused true
Branch Return Value
true:
Set Show Mouse Cursor true
Set Input Mode UI Only
Player Controller = Self
In Widget to Focus = PauseMenuWidget
Flush Input = true
Set bPauseMenuOpen true
false:
Remove from Parent
Print String "Pause failed"
true path:
ClosePauseMenu function
Close from the widget or controller:
ClosePauseMenu
-> Set Game Paused false
-> Branch Return Value
true:
PauseMenuWidget Remove from Parent
Set Show Mouse Cursor false
Set Input Mode Game Only
Player Controller = Self
Flush Input = true
Set bPauseMenuOpen false
If UI Only stops the controller's Pause input from firing again, that is not
a pause bug. The menu owns input. Add a Resume button, give the focused widget
a keyboard/controller close path, or deliberately use Game and UI after
understanding that unhandled game input may still reach gameplay graphs.
Close input while paused¶
This is the trap behind many broken pause menus:
Input Pause
-> Set Game Paused true
-> Set Input Mode UI Only
Later:
player presses Escape
-> nothing happens
The usual causes are:
- The close input is bound on a pawn or controller path that is not receiving input in the current input mode.
- The widget was not focused or is not focusable.
- The input event/action is not configured to execute while paused in the input system you are using.
- The opening key was still considered pressed because input was not flushed.
- The widget was removed but the input mode/cursor state was not restored.
The robust beginner solution is to make the menu itself able to request close:
WBP_PauseMenu
-> ResumeButton OnClicked
-> Call ResumeRequested dispatcher
PlayerController
-> Bind ResumeRequested to ClosePauseMenu
For keyboard/controller close, put the handler on the focused widget or on an
input path you have proven still runs while paused. Legacy key events expose an
Execute when Paused option. Enhanced Input setups should be checked with the
actual input action, input mode, and focus path in your project rather than
assuming the same old key-event setting covers everything.
When it fails (and what failure does)¶
Failure is a false Return Value. There is no Failed execution pin.
Common causes:
- No valid game world or wrong context. The helper cannot apply pause to a useful world.
- The request is not accepted by the game-mode/controller pause rules. Multiplayer and custom framework code can restrict who may pause or unpause.
- You called it from a context that is not the authority for the shared world state. A client-side menu can be local UI without being allowed to pause the server's world.
- Unpause is blocked by existing pause rules. Native pause paths can track whether a pause can be cleared.
- You assumed UI setup was part of pause. The game paused, but the menu did not work because widget/input/cursor setup failed separately.
Failure does not automatically close the menu, restore input mode, hide the cursor, print a guaranteed warning, or call a fallback event. Branch on the Return Value and decide how your UI should recover.
What Set Game Paused does not do¶
- It does not create, add, remove, focus, or destroy a widget.
- It does not set input mode.
- It does not show or hide the mouse cursor.
- It does not make a widget focusable.
- It does not guarantee that the same key can close the menu after input mode changes.
- It does not replicate a private per-client pause menu as a gameplay pause.
- It does not save game state, open a level, or reset actors.
- It does not pause real time outside the game world.
- It does not make every actor, component, timer, sound, or effect obey pause the same way if that object is configured to tick/play while paused.
Lookalikes - which one do I want?¶
| Node / setting | Use when | It does not |
|---|---|---|
| Set Game Paused | You want the game world paused or unpaused. | Show a menu or route input. |
| Is Game Paused | You need to read the current paused state. | Change it. |
| Set Input Mode UI Only | A menu should receive input while gameplay input stops. | Pause simulation. |
| Set Input Mode Game and UI | UI gets focus but game input may still run. | Guarantee movement/look is blocked. |
| Set Input Mode Game Only | Returning to normal gameplay. | Hide cursor or unpause by itself. |
| Set Show Mouse Cursor | You want a visible cursor for the local player. | Focus widgets or pause the world. |
| Remove from Parent | Hide/remove a widget from the viewport. | Destroy gameplay state or unpause. |
| Set Global Time Dilation | Slow time instead of a true pause. | Stop all simulation or solve UI input. |
| Disable Input / Set Ignore Move Input | Stop a specific actor/controller input path. | Pause the world. |
Rule of thumb: pause stops the world; input mode routes controls; widgets show the menu. A working pause menu needs all three decisions.
Going deeper¶
- Set Input Mode & Show Mouse Cursor - the input/cursor/focus half of pause menus.
- Create Widget + Add to Viewport - creating and storing the pause menu widget.
- Remove from Parent and widget lifetime - closing widgets without confusing removal and destruction.
- Buttons, Progress Bars, and basic UMG events - Resume button events and UI-owned interaction.
- Get Player Character / Pawn / Controller -
why the
PlayerControlleris the usual pause-menu owner. - GameMode & friends, single-player edition - server-only GameMode rules and framework ownership.
- Replication basics - why local UI and shared game state are different in multiplayer.
- Set Timer by Event / Clear Timer by Handle - timers and world-time expectations while paused.
- Official docs: Set Game Paused, Set Input Mode Game Only, Set Input Mode UI Only, Set Input Mode Game and UI, Creating User Interfaces, UGameplayStatics, and AGameModeBase::SetPause.
- Engine source (requires engine access - we do not reproduce it here):
UGameplayStatics::SetGamePausedandUGameplayStatics::IsGamePausedinEngine/Source/Runtime/Engine/Private/GameplayStatics.cpp; pause permission and unpause checks inAGameModeBase::SetPauseandAGameModeBase::ClearPauseinEngine/Source/Runtime/Engine/Private/GameModeBase.cpp; world paused-state checks aroundUWorld::IsPausedinEngine/Source/Runtime/Engine/Classes/Engine/World.h; input mode helpers inEngine/Source/Runtime/UMG/Private/WidgetBlueprintLibrary.cpp.