# Feature Highlights

## Purpose

Summarize what FlowCore is designed to solve in typical Visual Scripting workflows and how its features address those problems.

## Common Visual Scripting pain points

* Hidden data flow makes debugging slow.
* Runtime reflection and dynamic typing create unpredictable performance.
* Large graphs become unreadable and hard to review.
* Finding the right node in a large catalog is slow.
* Event-driven logic, state-driven logic, and behavior trees live in separate systems.
* Long-distance wiring turns graphs into spaghetti.
* Character animation timing, interaction prompts, and gameplay effects drift into separate scripts.
* Persistence and scene references break on rename/move.
* Debugging tools are afterthoughts or editor-only toys.

## FlowCore responses (problem → feature)

* Hidden data flow → typed Blackboard + explicit FlowValue paths.
* Unpredictable performance → reflection-free runtime and chain-level Runtime Cost.
* Graph sprawl → Subgraphs + breadcrumb navigation + detail toggles.
* Slow node discovery → node search with category grouping and flat-results threshold.
* Split logic systems → Flow + FSM + BT in one graph.
* Long-distance wiring → Remote In/Out node pairs.
* Split character/interaction timing → Flow Character State/Gesture/Marker + Flow Interaction Owner / Flow Interaction Target event payload.
* Fragile references → GUID-based persistence for scenes and prefabs.
* Scene targeting → SceneReference stored in Blackboard (GUID/path/build index).
* Weak debugging → Debug Context + summary previews + chain tracing.

## Feature highlights (what you can rely on)

Authoring and UI

* Graph Editor + Node Editor (single-node view) with port previews and jump.
* Port-drag filtered node creation + searchable node catalog (category grouping, flat-results threshold).
* Detail Level toggles for compact vs full node UI.
* Subgraph extraction and breadcrumb navigation.
* BT authoring: child list add/remove/reorder; decorator control inputs for Gate/Once.

Graph models

* Flow graph with explicit inputs/outputs and chain semantics.
* FSM states with Enter/Update/Exit instruction stacks.
* Behavior Trees with BTRoot boundary, composites, decorators, and leaves.
* Stack Root/Stack Layer for layered stacks (Stack Layer Push + top-only Update).
* SubFlowGraph and BtSubGraph for reusable logic.
* One editor covers Flow/FSM/BT. GOAP is planned and not shipped yet.

Character and interaction

* Flow Character provides State/Gesture authoring for sustained identity and bounded actions.
* Marker routes normalized-time animation events by limb or custom Id and supports semantic cooldown.
* Flow Interaction Owner and Flow Interaction Target split actor scanning from object response.
* Focus/blur/interact events carry payload data for owner-side and target-side graphs.

Data and persistence

* Strongly-typed Blackboard with Local/Scene/Global scopes.
* FlowValue typed access paths for data reads/writes.
* SceneReference in Blackboard (GUID/path/build index) for stable scene targeting.
* GUID-based persistence for scenes, prefabs, and graph elements.
* Scene-level GUID-safe pooling for runtime prefab instances (Addressable key).
* Built-in Flow nodes for pooling (spawn/despawn/clear + technical pool conditions).
* Runtime blackboard list mutation without rebuilding graphs.

Execution semantics and control

* Invoke Mode (Queue/Bypass/Abort/Invalid) and Guard Reject Result.
* Pass Enabled gate: Enable/Disable control inputs toggle per-node execution routing without touching the node Enabled flag.
* Abort/Invalid control inputs on Flow nodes and BTRoot (BT non-root nodes do not expose them).
* Abort/Invalid control inputs cancel matching active chains only (Root or current executing node), including chains started inside SubFlowGraph; non-matching chains are unaffected.
* Start New Chain for independent branches.
* Built-in control nodes: Once, Gate, Gather, Manual Gate, Try/Catch/Final, timeout variants.

Debugging and profiling

* Debug Context with Summary previews for edit-time validation.
* Graph Debugging: chain tracing, node/edge highlights, result coloring.
* BT debugging views for child activity and result flow.
* Runtime Cost tooling and Flow process profiling.

Integration and extensibility

* FlowEventBus with Global/Local event channels.
* Unity UI event triggers and Input (old/new) trigger nodes.
* Codegen pipeline for instructions, conditions, enums, drawers, and types; registry generator tooling.
* Auto UI tags and reflection-driven editor UI builder.

## Non-goals (explicit boundaries)

* Not a full gameplay framework.
* Not a UI framework.
* Not a network replication layer.

## Who benefits

* Designers who need stable behavior contracts and clear authoring workflow.
* Programmers who need explicit extension points and predictable runtime behavior.
* Teams that require safe persistence across scenes and prefabs.

## Related

* [What Is FlowCore](/flow-core-docs/documentation/core-concepts/what-is-flow-core.md)
* [Concepts Overview](/flow-core-docs/documentation/core-concepts/concepts-overview.md)
* [Flow Character](/flow-core-docs/documentation/gameplay-modules/flow-character.md)
* [Flow Interaction](/flow-core-docs/documentation/gameplay-modules/flow-interaction.md)
* [Character Interaction Catalog](/flow-core-docs/documentation/reference/character-interaction-catalog.md)
* [Architecture](/flow-core-docs/documentation/runtime-guide/architecture.md)
* [FlowCore Settings](/flow-core-docs/documentation/reference/flow-core-settings.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://flow-core.gitbook.io/flow-core-docs/documentation/core-concepts/feature-highlights.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
