GES integration
Send GCS battle events to GES or trigger Behavior from GES events while retaining internal GCS subscriptions
Integration boundary and directions
The diagram above shows both directions between GCS and GES, mapped GCS events, Raise GES Event, and Encounter Bootstrap send notifications to GES, while On GES Event starts Behavior from GES events, use a built-in event or configure a node for the timing you need
After event synchronization, all 47 built-in GCS events notify both internal subscribers and their mapped GES events, internal subscriptions still work without a mapping
Detection and setup
Install Game Event System in the same Unity project, GCS detects the TinyGiants.GES.Runtime Assembly Definition and synchronizes TG_GES_INSTALLED across Standalone, Android, iOS, WebGL, and the current Build Target Group
Install GES and synchronize its events
- Import GES, or leave the existing installation unchanged
- Wait for Unity to compile and complete a Domain Reload
- The detector finds
TinyGiants.GES.Runtimeand addsTG_GES_INSTALLED - The
Raise GES EventandOn GES Eventnodes are fully wired, and Encounter Bootstrap showsUse GES Events - Open Game Card System and click Initialize GES Events in GES Event Bridge
- Wait for event generation and Unity compilation, then check 47 / 47 Events Synced, use Repair GES Events if existing mappings need repair
After GES is removed, the detector clears the Define and GCS falls back to its internal event channel
Raise events from Encounter Bootstrap
Select the scene's GameCardEncounterBootstrap and expand Events, the default mode uses On Bootstrap UnityEvent, enabling Use GES Events switches to the On Bootstrap Events list
Bootstrap raises the GES list in order after the encounter starts, the modes are exclusive, GES mode does not invoke UnityEvent and UnityEvent mode does not raise the GES list
Raise GES events from GCS
Add Raise GES Event from the Event category and choose an event in its GES Event field, the picker groups events by database and fills the Argument and Sender types automatically
The node supports parameterless, single Argument, and Sender Argument events, use Picker and Source fields to select constants, Unity Objects, structured data, or the current execution context
See the Raise GES Event node manual for fields, dynamic options, context sources, and Primitive type limits
Start a Behavior from a GES event
Add On GES Event from Entry and select an event to listen for, GCS runs the connected Behavior when it fires during battle
GCS binds active GES events when the battle starts, events activated later take effect from the next battle, raising a bound event runs matching entries on these objects
-
cards currently in the draw, hand, discard, or exhaust pile
-
statuses sitting on living units
-
Behaviors of living enemies
The entry supports parameterless, single Argument, and Sender Argument events, GES Payload is not passed to FlowGraph, Behavior reads data from the current battle state
FlowGraph validation reports an empty reference when On GES Event has no selected event
Behavior without GES
Without GES, GCS compiles and runs using its internal event channel, Raise GES Event is ignored and logs this Console warning
[GCSEventChannelInternal] RaiseGesEvent('...') ignored: GES integration not installed.
Cards containing this node remain usable without GES, the Console warning identifies the skipped cross-system notification
Keep system responsibilities separate
-
Use GES to notify achievements, quests, progression, analytics, or scene objects, such as unlocking an achievement after a Boss dies or updating progression after victory
-
Handle damage, healing, statuses, card movement, energy, and targeting in GCS so battle rules remain in the card FlowGraph
Troubleshooting
| Symptom | Check |
|---|---|
Raise GES Event logs that the integration is not installed | Confirm GES is in the project and TinyGiants.GES.Runtime exists, then let Unity reload so TG_GES_INSTALLED updates |
Warning: GameEventManager not found in scene | Add or initialize the GES manager in the scene before the battle raises the event |
| Warning: the GES event GUID was not found | Repick the event on the node; the stored GUID no longer matches an existing GES event |
| The argument arrives as null | The argument type must resolve and the selected source must produce a value of that type; repicking the event refills the type |
| GES rejects the Sender or Argument | Source values must match the event parameter types, check the Console type warning and repick the event |
On GES Event never fires | The event must be picked on the node and active when the battle starts, and its owner (card, status, or enemy) must be in a pile or alive when the raise happens |
| GCS events fire but GES listeners stay silent | Check that GES Event Bridge has all 47 mappings synchronized and the scene's GameEventManager has registered and enabled the event database |