Overview
Gameplay Module Architecture
Combine Flow Core gameplay modules without giving several systems ownership of the same decision.
- Audience
- System designers and developers
- Time
- 10 minutes
- Requires
- Flow Core in Five Concepts
- Modules
- Flow Core Gameplay
On this page
Flow Core gameplay modules provide focused runtime surfaces for common game systems. Use normal Flow to orchestrate them, typed data to communicate, and one module to own each gameplay responsibility.
Module map
| Module | Owns | Does not decide for you |
|---|---|---|
| Flow Character | Movement, facing, animation States, Gestures, Markers, and configured IK | Combat rules, inventory, dialogue, or networking |
| Flow Camera | Camera Shots, Channels, priority selection, transitions, and lens control | Cinematic timeline, rendering pipeline, or input policy |
| Flow Interaction | Candidate scanning, focus, blur, and interaction routing | Inventory result, quest result, dialogue content, or input binding |
| Flow Stats | Stat calculation, Resource values, Status Effect lifecycle, and Stats events | Character control or general Blackboard ownership |
Each module can expose Instructions, Conditions, Triggers, event graphs, or runtime APIs. That does not mean every behavior belongs inside the module. Keep project-specific consequences in the graph or system that owns them.
Compose through explicit handoffs
An interactable healing shrine can use four owners:
- Flow Interaction decides which shrine is focused and raises Interact.
- Normal Flow sequences prompt feedback, character Gesture, and timing.
- A Marker identifies the hand-contact moment.
- Flow Stats changes the Health Resource or applies a Status Effect.
- Flow Camera briefly activates a feedback Shot.
No module needs to know every detail. Interaction owns target intent, Character owns animation timing, Stats owns numeric state, Camera owns shot selection, and Flow owns the visible sequence.
Data boundaries
Use the narrowest channel that preserves ownership:
- Pass event-specific objects through
payload. - Use
TempPayloadfor intermediate results in the current chain. - Store shared or persistent facts in typed Blackboards.
- Use a module’s own runtime state for values it natively owns.
- Use supported Instructions or runtime APIs rather than rewriting module internals.
Flow Stats is intentionally able to operate as a standalone component. Do not add FlowCoreProcess or Blackboard only because a Stats owner exists; add them when an authored graph path actually requires them.
Build one observable slice
When introducing a module, validate one end-to-end result before combining modules. For Camera, switch between two Shots. For Interaction, focus and use one Target. For Character, enter one State and play one Gesture. For Stats, change one Resource and observe the Debug view.