Skip to main content

Databases

GCS ยท Setup

Six database types, one rule: content that is not in an active database on the GameCardManager is invisible to the Workbench and to runtime lookups.

For anyone whose card exists on disk but refuses to show up in a picker, a search, or a battle.

Databases are how GCS finds your content. The Workbench reads the active databases from the scene's GameCardManager, and runtime lookups walk the same lists. An asset that sits on disk but belongs to no active database is invisible to both, which is why most "my content does not show up" reports end here.

Workbench in Deck mode listing the decks of the active deck database, with the deck inspector and preview open

Six database typesโ€‹

DatabaseHolds
GameCardDatabaseGameCard assets
GameDeckDatabaseGameDeck assets
GamePlayerUnitDatabaseGamePlayerUnit assets
GameEnemyUnitDatabaseGameEnemyUnit assets
GameStatusDatabaseGameStatus assets
GameEncounterDatabaseGameEncounter assets

Each Workbench mode lists the entries of the active databases of its type: Card mode reads card databases, Deck mode reads deck databases, and so on.

Each database asset also carries its own Inspector. It shows a Summary of what the database holds, counted by type and rarity, plus an Open in Card Mode shortcut into the Workbench:

The native Inspector of a Game Card Database asset: the Card Database header, the asset path, and a Summary that counts entries by card type and rarity


Registration and the active toggleโ€‹

Select the scene's GameCardManager to register databases. Its Inspector lists six sections, one per type, in this order: Card, Deck, Player Unit, Enemy Unit, Status, Encounter. Each section registers databases three ways:

ControlWhat it does
+ AddOpens a dropdown of every database asset of that type not yet registered. Pick one and it is registered and active.
+ NewCreates a fresh database asset in the GCS user-data folder and registers it active in one step.
Drag and dropDrop one or more database assets from the Project window onto the section.

Every registered database appears as a row with an Active toggle, a locate button that pings the asset, and a remove button. Removing a database only unregisters it from this manager; the asset stays on disk and can be re-added later. Double-click a row's name to rename the asset in place.

Only active databases feed the Workbench and runtime lookups. A database that is registered but inactive hides its content the same way as one that was never registered. The section header shows how many registered databases are active and how many entries they contribute, so 1/2 Active means one database is inactive.

The GameCardManager's six database sections with their + New and + Add controls, each header reading 1/1 Active with the entry count it contributes

For a normal battle test the manager needs an active database of all six types. The System Dashboard fills them in one click by registering the six preset databases from Demo/Databases/; the Manager and Bootstrap page walks through what that button creates.

The first active database feeds the battle

When a battle starts, the state machine binds the first active status, card, and enemy-unit database for its in-battle lookups. If you keep several databases of the same type active, put the one your battles depend on first in the manager's list.


Organize with multiple databasesโ€‹

Splitting content across databases is an authoring choice, not a requirement. Common splits:

Split byExample
OwnershipDemo card database kept separate from your project card database
ClassWarrior cards, Mage cards, Hunter cards, Priest cards
Act or chapterAct 1 enemies, Act 2 enemies, boss encounters
Testing scopeSmall test decks and encounters isolated from production content

Keep the active set intentional. Activating every experimental database in every scene makes search noisy and hides mistakes, because a broken reference can silently resolve against content you never meant to ship.


Read active content from codeโ€‹

GCSApi exposes both the active database lists and the flattened content across them:

using TinyGiants.GCS.Runtime;

// Active database lists (never null)
var cardDbs = GCSApi.ActiveCardDatabases();
var deckDbs = GCSApi.ActiveDeckDatabases();
var statusDbs = GCSApi.ActiveStatusDatabases();

// Every entry across the active databases of a type
var cards = GCSApi.Cards();
var decks = GCSApi.Decks();
var statuses = GCSApi.Statuses();
var encounters = GCSApi.Encounters();
var players = GCSApi.PlayerUnits();
var enemies = GCSApi.EnemyUnits();

Each content call allocates a fresh list by walking the active databases, so cache the result if you read it every frame or on every UI refresh.


Symptoms of a missing registrationโ€‹

SymptomLikely gap
Workbench Card mode is emptyNo active card database
A new card is never drawableCard or deck database missing, or the card is not in the deck
A status fails to applyNo active status database, or it lacks that status
The encounter picker offers nothingNo active encounter database
An enemy is missing from pickersNo active enemy-unit database
The player-unit picker is emptyNo active player-unit database

Own your production databasesโ€‹

Do not grow your game inside the demo databases. Create project-owned databases and leave the presets untouched. Two ways to create one:

  • The manager's + New button, which puts the asset in the GCS user-data folder (Assets/TinyGiantsData/GameCardSystem/ by default; the folder can be moved anywhere under Assets/ without breaking references).
  • The Unity asset menu, which creates the asset wherever you are standing in the Project window:
Assets > Create > TinyGiants > GCS > Card Database

The same menu offers all six database types. Register your own databases on your game scenes and keep the presets as a known-good reference: when a custom setup misbehaves, comparing it against the preset registration usually reveals the difference in minutes.


Checklist before testing an encounterโ€‹

  • The encounter is in an active encounter database.
  • Its player unit is in an active player-unit database.
  • The player unit's starting deck is in an active deck database.
  • Every card in that deck is in an active card database.
  • Every status applied by cards or enemies is in an active status database.
  • Every enemy in the encounter is in an active enemy-unit database.

Most "content exists but does not show up" problems are registration problems, and this list finds them faster than Play Mode does.