GS_Core
Categories:
GS_Core is the required foundation for every GS_Play project. All other GS gems depend on it. It provides game lifecycle management (startup, shutdown, standby), persistence (save/load), level loading, input handling, triggerable actions, and a shared utility library.
For usage guides and setup examples, see The Basics: GS_Core.
Contents
GS_Managers
The lifecycle and startup management system. The Game Manager is a singleton placed in every level — it spawns all registered manager prefabs, coordinates their two-stage initialization, and provides global game navigation and standby mode.
All built-in GS_Play managers (Save, Stage, Options, UI, Unit, Camera, Audio) and any custom managers you create extend the Manager base class and plug into this system automatically.
| Component | Purpose |
|---|---|
| Game Manager | Top-level lifecycle controller. Spawns managers, handles navigation, standby, and debug mode. |
| Manager (Base) | Base class for all managers. Handles two-stage initialization automatically. |
GS_Save
The persistence system. The Save Manager orchestrates save and load operations across the project. Savers are per-entity components that serialize component state. The Record Keeper stores flat key-value progression records independently of the Saver system.
| Component | Purpose |
|---|---|
| Save Manager | Coordinates all save and load operations. |
| Savers | Per-entity components that serialize transform and physics state. |
| Record Keeper | Key-value progression store (flags, counters, unlock states). |
GS_StageManager
The level loading and navigation system. The Stage Manager owns the ordered stage list for the project and handles all level transitions. Stage Data components are placed in each level as anchors and spin-up controllers for that level’s systems.
| Component | Purpose |
|---|---|
| Stage Manager | Manages stage list and handles transition requests. |
| Stage Data | Per-level anchor, spawn point, and activation controller. |
GS_Options
The configuration system, covering two branches. Settings are the player-facing options a game exposes — declared as data, applied to the engine, persisted between sessions, and applied at boot where they need to be right before the window is created. Input is group-based binding that can be rebound and toggled at runtime.
| Page | Purpose |
|---|---|
| Options Manager | Merges option profiles, applies and persists values, holds the active input profile. |
| Settings | Option profiles, option types, apply targets, presets, persistence and the launch path. |
| Display & Window Modes | What the window apply targets do, and the platform limits. |
| Input Profiles | Data asset for input binding mappings. |
Systems
Core framework systems used across multiple gems: the GS_Motion track-based animation engine and the GS_Actions triggerable behavior system.
| System | Purpose |
|---|---|
| GS_Motion | Track-based animation and tween engine — abstract base classes extended by domain gems. |
| GS_Actions | Triggerable, composable, data-driven behaviors attachable to any entity. |
Debug
In-game debugging surfaces. Debug Mode adapts startup so pressing play on a level runs that level instead of booting the whole game. The GS_Play ImGui menu is a content-free anchor that any gem contributes its own menu and windows to.
| Page | Purpose |
|---|---|
| Debug Mode | What the Game Manager’s debug flag changes across the framework, and how to use it in your own systems. |
| ImGui Debug Menu | The extension pattern, the shipped menus, and how to add one to your gem. |
Interfaces
The cross-gem contract layer. Feature gems depend on neutral contracts collected in GS_Core instead of on each other’s internals. Contracts come in three kinds, distinguished by their class/bus suffix.
| Kind | Pattern | Extend by |
|---|---|---|
| TypeBase | Strategy | Subclass a *Type base, reflect it → it appears in the editor’s type-picker. |
| Emit | Observance | Handle the *EmissionBus and override the event you care about. |
| Exchange | Mediator | Call the *Exchange query bus (mostly forward-looking). |
Utilities
A general-purpose library of components and math helpers.
| Area | Contents |
|---|---|
| Physics | Physics Trigger Volume |
| Easing Curves | 40+ curve types (Linear, Quad, Cubic, Sine, Expo, Circ, Back, Elastic, Bounce) |
| Spring Dampers | 6 spring types, each in float, Vector2 and Vector3 forms plus a quaternion variant, all halflife-parameterised |
| Orbital Solver | Pivot-aware position and pose blending — linear, cylindrical and spherical |
| Noise | Perlin 1D/2D/3D, fractal multi-octave, and authorable layered noise stacks |
| Envelope | Reflected ADSR envelope with evaluation and completion helpers |
| Gradients | Color, float, and Vector2 gradients |
| Entity Helpers | Entity lookup by name |
| Random | Weighted random selection |
| Splines | Closest point, fraction, and local/world conversion |
| Angle Helpers | Yaw, quaternion from direction, section-by-angle mapping |
| Comparisons | Data-authored boolean comparisons for float and integer values |
| Debug Logging | Per-component logging depth mix-in |
Installation
GS_Core is required by all GS_Play projects. Add it to your project before any other GS gem.
- Follow the Simple Project Setup guide for full walkthrough.
- Configure collision layers and physics per the Setup Environment guide.
- Create a Game Manager prefab and place it in every level.
- Add the managers you need to the Game Manager’s Startup Managers list.
See Also
For conceptual overviews and usage guides:
For related resources:
Get GS_Core
GS_Core — Explore this gem on the product page and add it to your project.