Options & Input

How to work with the GS_Play options system — player settings with profiles and presets, plus input profiles, groups and runtime binding management.

The Options system covers two things a project needs and rarely wants to write itself:

  • Settings — the options a player changes: volume, graphics, resolution, accessibility. You declare them as data and the framework applies, saves and restores them.
  • Input — group-based input binding that can be rebound and toggled at runtime without code changes.

For architecture details, component properties, and extension patterns, see the Framework API reference.

Options Manager component in the O3DE Inspector

 

Contents


Options Manager

The Options Manager is the singleton that owns both halves of this system. It holds your option profiles and presets, and the active Input Profile. It responds to the Game Manager lifecycle automatically.

Assign three things to it: your option profiles, any presets, and your input profile.


Settings

Settings are the options a player changes — volume, graphics, resolution, accessibility. You declare them as data in an Options Profile asset, and the framework applies, saves and restores them.

Settings API


Input Profiles

Input Profile asset in the O3DE Asset Editor

An Input Profile is a data asset created in the O3DE Asset Editor. It contains named input groups, each holding a set of event mappings. Each event mapping binds a gameplay event name to one or more raw input bindings (key presses, axis movements, button presses) with configurable deadzones.

The key advantage over raw O3DE input bindings is the group system. Groups can be enabled and disabled independently at runtime — a pause menu can suppress gameplay input by disabling the “Gameplay” group, without tearing down and rebuilding bindings.


Enabling and Disabling Input Groups

ScriptCanvas

Enabling, Disabling, and Checking State of Input Groups in Script Canvas


How Input Flows

StageWhat Happens
1 — Raw InputO3DE’s input system captures key/axis/button events.
2 — Input ReaderThe GS_InputReaderComponent on the entity matches raw input against the active Input Profile’s event mappings.
3 — Event MappingMatched input fires a named gameplay event (e.g., “Jump”, “MoveForward”).
4 — ConsumerOther components on the entity (controllers, reactors) handle the gameplay event.

Input Readers filter by group — if a group is disabled, none of its event mappings fire.


Quick Reference

NeedBusMethod / Event
Disable an input groupInputReaderRequestBusDisableInputGroup(groupName)
Enable an input groupInputReaderRequestBusEnableInputGroup(groupName)
Check if group is disabledInputReaderRequestBusIsGroupDisabled(groupName)
Get the active profileOptionsManagerRequestBusGetActiveInputProfile

Glossary

TermMeaning
Input ProfileA data asset containing named input groups with event mappings
Input GroupA named collection of event mappings that can be enabled or disabled at runtime
Event MappingA binding from a gameplay event name to one or more raw input sources
Input ReaderA component that matches raw input against the active Input Profile

For full definitions, see the Glossary.


See Also

For the full API, component properties, and C++ extension guide:


Get GS_Core

GS_Core — Explore this gem on the product page and add it to your project.