Skip to main content

Validation and Where Used

GCS ยท Authoring

Two safety rails built into the Workbench: validation reports what is structurally broken, and the Used By panel reports which assets a change will touch.

For anyone editing shared GCS content. Read this before your first delete.

The two tools answer different questions. Validation answers "what is structurally wrong in this database?". The Used By panel answers "what references this asset?". Run validation before every Play Mode session; check Used By before renaming, replacing, or deleting anything another asset might depend on.


Where validation shows upโ€‹

The Workbench validates the database currently selected in the mode's list column and reports the result as a badge in the window header. The badge reads 3 Issues when errors are present, 2 Warnings when only warnings remain, and disappears entirely when the database is clean. Click it to open the issue list. Each entry carries a jump action that opens the offending asset, focuses the broken field, or opens the FlowGraph editor when the problem lives in a behavior graph.

A practical loop:

  1. Open the mode you are editing (Card, Deck, Player, Enemy, Status, or Encounter).
  2. Glance at the badge after each edit; it refreshes with the content.
  3. Click through the issues, jump, fix, and repeat until the badge disappears or only intentional warnings remain.
  4. Enter Play Mode.

The editor already knows when a reference is missing. The runtime symptom for the same problem is far less direct: an effect that silently does nothing, an empty reward screen, a list that never populates.


What each mode checksโ€‹

ModeErrorsWarnings
CardEmpty NameFlowGraph issues in the card's Behavior
DeckEntry with no card assigned; Copies below 1none
PlayerEmpty NameMissing Starting Deck; missing Template prefab
EnemyEmpty Name; HP Min above HP MaxFlowGraph issues in the enemy's Behavior
StatusEmpty Display NameMax Stacks of 0 (use -1 for unlimited or a positive count); FlowGraph issues
EncounterMissing Player Unit; no enemy unitsMissing Reward Deck; empty Difficulty

Validation is structural. It can prove a deck entry has no card; it cannot know whether that card is balanced, whether a status is fun, or whether a description reads well. Player-facing quality still needs an author's eye.


Reading severityโ€‹

There are exactly two levels:

SeverityMeaning
ErrorThe content is broken or unsafe to run. Fix it before testing.
WarningPossibly intentional, but worth a decision before testing.

Warnings deserve a decision, not a reflex dismissal. A missing reward deck is fine on a rewardless test encounter and wrong on a normal victory flow. Only you know which one you are looking at, which is exactly why the editor does not upgrade it to an error.


The Used By panelโ€‹

Select any asset in the Workbench and the Preview column ends with a Used By foldout. It lists every asset that references the selection, each labeled with how: Starting deck, Reward deck, Player unit, Enemy unit, Deck entry ร—2, Upgrades into this, or Behavior ยท Change Status when the reference sits inside a behavior graph node. Click a row to open that asset in its own Workbench mode.

Workbench Status mode with Strength selected; the Used By panel lists every referencer with its kind: the cards Rally, Intimidate, and Lord of Ruin, the status Ritual, and the enemies Pyre Effigy, Lantern Sister, and Order Knight

What it finds depends on what you selected:

Selected assetListed references
CardDecks containing it (with copy count), cards that upgrade into it, and card / status / enemy behavior graphs whose nodes reference it
DeckPlayer units using it as their starting deck; encounters using it as their reward deck
Player unitEncounters that field it
Enemy unitEncounters that include it in the lineup
StatusCard / status / enemy behavior graphs whose nodes apply or read it
EncounterNone. Encounters are top-level; they get launched, never referenced.

The behavior scan understands both direct asset references and nodes that name a card or status by its display name, it descends into groups, and it reports the node so you know where in the graph to look. In the demo databases, selecting the Poison status lists Poison Arrow under Behavior ยท Change Status, because the card's graph applies two stacks of Poison on play.

When nothing references the selection, the panel says so explicitly rather than staying blank. Treat that message as a green light for deletion, not as a malfunction.

Scene context required

Used By resolves references through the databases registered on the scene's GameCardManager. Without a manager in the open scene it cannot enumerate anything, and the panel says so instead of showing a misleading empty list.


Check before you changeโ€‹

Before doing thisAsk Used By
Deleting a cardWhich decks and behavior graphs still include it?
Renaming or replacing a statusWhich cards, enemies, or statuses apply it?
Reworking an enemyWhich encounters field it?
Swapping a player unitWhich encounters start with it?
Editing a shared deckWhich player units and encounters draw from it?

When a deck or status is shared across many encounters, duplicate it and experiment on the copy. Editing the shared original turns one risky change into twelve.


Tracing a runtime symptomโ€‹

When a battle misbehaves, trace the content chain before touching any graph logic. Most authoring bugs are a missing database, deck, or encounter reference:

SymptomLikely authoring problem
A card never appearsThe deck or player-unit chain to that card is broken.
Encounter starts with no enemiesThe enemy list has missing references.
Applying a status does nothingThe status database is inactive, or a graph points at the wrong status.
Reward screen has no cardsThe reward deck is missing, empty, or unreachable.
Workbench list is emptyThe scene manager has no active database for that mode.

Fix from evidenceโ€‹

  1. Read the validation message.
  2. Use the jump action to land on the field or graph.
  3. Confirm the referenced asset exists.
  4. Confirm the asset sits inside an active database.
  5. Confirm the scene uses the expected manager and encounter.
  6. Retest with the smallest encounter that reproduces the issue.

Change one asset at a time. If you edit a card, a deck, a player unit, and an encounter in one pass, you will not know which edit fixed the problem, and you will not know which one broke the next thing either.


What validation does not replaceโ€‹

Validation catches bad structure early so the later checks are spent on real questions. It does not replace Play Mode testing, FlowGraph logic review (a graph can be structurally valid and still wrong), card text review, balance passes, or presentation QA.