Skip to main content

Player authoring

Guide

Define who the player controls, which deck they bring, and how health and energy appear

Iron Resolve is complete and assigned to Squire. Player mode stores the character name, battle Prefab, health, base energy, resource UI, and starting deck in one GamePlayerUnit. Before editing, confirm that the current scene's GameCardManager has at least one Player Unit Database enabled. Database setup determines which player characters Game Card Editor can list, create, and edit.

Open Game Card Editor:

Tools > TinyGiants > GCS > Game Card Editor

Select Player at the top, then locate Squire in List.

Player mode in Game Card Editor, showing the Squire asset list, character configuration, presentation preview, and Encounter references

The workspace above follows Squire. List on the left selects the character. Inspector in the center stores the name, battle Prefab, 70 health, 3 base energy, and Iron Resolve. Preview on the right checks UI and the Prefab, while Used By shows the direct reference from The Threshing Field to Squire.

tip

The GamePlayerUnit selected in List is the data source for the whole workspace. Inspector, Preview, and Used By all follow that selection.

Select the player character to editโ€‹

Player mode lists nonnull characters from Player Unit Databases enabled on the current GameCardManager.

List operationsโ€‹

OperationMethod and result
Select databaseSelect the target Player Unit Database under Database. Later creation, paste, and sorting operations affect this database
Create+ creates a sub-asset with NewPlayerUnit as the base name. New characters default to 70 health, 3 base energy, and resource name Energy. Name, Icon, Template, and Starting Deck remain empty
CopyThe copy button preserves every field. The copy initially keeps the original Name and changes its sub-asset name only after you enter a new nonempty name
Deleteโˆ’ deletes the current character after confirmation
Search and filterSearch and name sorting read the sub-asset name. The Tags multiselect keeps characters that match any selected tag
Sort and dragThe sort button cycles through database order, name ascending, and name descending. Dragging a List row changes only authoring order in the database
Batch operationsSelect several characters with Ctrl/Cmd or Shift, then use Duplicate, Tag +, Tag โˆ’, or Delete
Copy across databasesCtrl/Cmd+C and Ctrl/Cmd+V copy a character into another enabled database of the same type

See Game Card Editor for complete List interaction.

Every List row shows the character Icon, name, Base HP, and Base Energy, so you can compare basic health and energy without opening Inspector.

The player list in PresetPlayerUnitDatabase, with the Squire row showing 70 HP and 3 Energy

PresetPlayerUnitDatabase contains 12 included player characters. Squire shows 70 HP ยท 3 Energy in List. Keep Squire selected, configure the name, description, and portrait used by List and project UI, then assign the Prefab created in battle.

Configure character identity and battle presentationโ€‹

Basicโ€‹

Basic stores Name, Description, and Tags for display name, character description, and tag matching.

FieldConfiguration and use
NameCharacter display name. A new nonempty Name also changes the sub-asset name. If Name is empty, UI falls back to the sub-asset name, but Validation still reports an error
DescriptionCharacter description read by Display and project character UI. The included Demo shows this text in the character hover panel
TagsFree-form labels used by List filters and project logic. FlowGraph Filter is case-sensitive and accepts a unit when its Tags match any requested tag

Set Name to Squire, keep A burlap recruit still learning to take a hit., then add Warrior and Novice.

The Basic configuration for Squire, with character name, description, and Warrior and Novice tags

Display reads Name and Description from Squire. List search reads the sub-asset name, and unit filters read Tags. See Target selection for how tags participate in FlowGraph target collections.

Visualโ€‹

Icon is the portrait used by List, Display, and project character UI. The included Demo also uses it in character hover information. Template writes to GameUnit.Prefab, and Preview Render instantiates this Prefab in an isolated view. The GCS core battle state machine does not create scene objects for the project. In the included Demo, BattleBoard instantiates the Template and binds UnitView.

Assign the Warrior Avatar and Prefab to Squire.

The Visual configuration for Squire, with Avatar as Icon and the Warrior Prefab as Template

The UI portrait and battle Prefab are now assigned separately. Use Attributes to set the health and base energy that Squire brings into battle.

Configure starting attributes and deckโ€‹

Attributesโ€‹

FieldRuntime meaning
Base HPSets both current and maximum HP when the player enters battle. Normal healing does not exceed maximum HP. The Editor clamps input to at least 1
Base EnergyBase energy at the start of each player turn. The Editor clamps input to at least 0

Set Base HP on Squire to 70 and Base Energy to 3.

The Attributes configuration for Squire, with Base HP 70 and Base Energy 3

At battle startup, the new PlayerUnitState has 70/70 HP and 3 current energy. Each later player turn recalculates energy for that turn.

When BattleRules.StartingEnergy is greater than 0, it replaces Base Energy. The runtime then adds Run Energy Bonus and passes the result to the OnEnergyPerTurn Hook. If the Hook does not cancel, the result is clamped to at least 0; if it cancels, the value from before adjustment remains. See Battle loop for the exact turn position.

tip

GainEnergy() can temporarily raise current energy above the per-turn limit. SetEnergy() clamps the result to the current MaxEnergy. Name, Description, and Icon under Energy Display do not participate in either calculation.

After setting health and energy, assign a Starting Deck to Squire so battles without a Master Deck have an initial card set.

Starting Deckโ€‹

The first button on the right side of the deck card selects or replaces Starting Deck. The second opens the assigned deck in Game Card Editor. ร— clears the reference. Double-clicking the card also opens the selector. The selector first reads Deck Databases enabled in the current scene. One nonempty database appears as a flat list, several databases appear in groups, and only when no group is available does it fall back to all GameDeck assets in the project.

Select the completed Iron Resolve for Squire.

The Starting Deck configuration for Squire, with Iron Resolve showing 17 cards and 0.71 average cost

The deck card shows 17 total cards in Iron Resolve and an average base cost of 0.71, calculated from valid card references and copies. Fix missing references or invalid copies in Deck authoring.

GCS builds a temporary battle deck from the Copies in Iron Resolve only when the persistent Master Deck is empty. It does not write this fallback back to the Master Deck. When a Master Deck exists, it replaces Starting Deck completely. GamePlayerUnit has no separate Behavior. Player actions come from card Behaviors, while statuses, the Encounter, and runtime Hooks provide persistent rules. See FlowGraph model for execution relationships and Cards, hand, and piles for movement from the initial draw pile into Hand, Discard, and Exhaust.

After assigning the deck, configure the UI name, description, and icon for the card-cost resource under Energy.

Configure energy displayโ€‹

FieldDisplay responsibility
NameResource name such as Energy, Mana, or Focus
DescriptionResource text that project UI can use in a Tooltip or rule explanation
IconResource icon that project UI can display beside the energy count

Set the energy name on Squire to Energy, the description to Per-turn resource for playing cards., then assign the Warrior energy icon.

The Energy configuration for Squire, with Energy name, per-turn resource description, and icon

These three fields are presentation metadata only. They do not change Base Energy, Starting Energy, Run Energy Bonus, or the value calculated by Hooks. Energy Display in Game Card Editor previews the name, description, and icon together. In Play Mode, UnitEnergyDisplay in the included Demo currently reads Name and Icon only. Project UI can also read Description when needed.

After these static fields are ready, Preview checks the character card, Template, and energy resource separately.

Inspect the character previewโ€‹

Display informationโ€‹

Display combines Icon, Name, and Description in a compact character card. Confirm first that the portrait and text belong to the same character.

The Display preview for Squire, showing the Warrior portrait, character name, and description

Display confirms that the portrait, name, and description work together. Render then checks whether the Template assigned under Visual can be instantiated and drawn by the Editor.

Prefab renderingโ€‹

Render instantiates the Template in an isolated preview scene. Hold the left mouse button to rotate, use the right or middle button to pan, scroll to zoom, and use the button in the upper-right corner to restore automatic framing.

The Render preview for Squire, with the Warrior Template drawn in the isolated view

This preview confirms only that the Editor can instantiate and draw the Prefab. Check actual battle position, root scale, scene anchors, and component dependencies in Play Mode. The included Demo also uses Unit Scale and Unit Offset from BattleBoard to adjust final layout.

tip

After the Template renders correctly, use Energy Display to confirm that the energy icon, name, and description match.

Energy Displayโ€‹

Energy Display shows Icon, Name, and Description. When Icon is empty, it uses a circular placeholder containing Base Energy. It does not read live energy from a current battle.

The Energy Display preview for Squire, with the Warrior energy icon, Energy name, and description

After all three Preview results are correct, check the Issue Badge for missing Name, StartingDeck, or Template fields in the current Player Unit Database.

Handle validation issuesโ€‹

The Issue Badge in Player mode scans every character in the selected Player Unit Database, not only Squire.

LevelTrigger
ErrorName is empty
WarningStartingDeck is empty
WarningTemplate reference is empty

Important boundaries:

  • These Issues do not block saving, deletion, or Play Mode. Ping on an Issue only locates the affected character or field.

  • Validation does not check Icon, Description, Tags, Base HP, Base Energy, or Energy Display. It also does not inspect card entries inside Starting Deck or runtime components on Template.

  • Editing Base HP and Base Energy through the Editor applies minimum values. Player Validation does not repair invalid values left by external serialization or old assets.

After handling these structural problems, use Used By to confirm which GameEncounter assets reference the current character directly through Player Unit.

Inspect Encounter referencesโ€‹

Used By scans direct references only in Encounter Databases enabled on the current scene's GameCardManager. It lists GameEncounter.PlayerUnit references to the current character. Clicking a result switches to Encounter mode and locates the asset. Disabled databases, other scenes, Prefabs, code references, and indirect runtime references are outside the scan, and deletion has no reference protection.

Used By for Squire, with The Threshing Field referencing the current character through Player Unit

The Threshing Field above stores Squire as Player Unit. This proves only that the direct reference exists. A playable Encounter also needs enemies, a reward deck, Battle Rules, and scene integration. See Encounter authoring for the complete field set.

Verify the character in Play Modeโ€‹

Open the included 1-The Threshing Field scene and enter Play Mode. Confirm that the Template, 70 health, 3 energy, and Iron Resolve on Squire all take effect together.

The Threshing Field in Play Mode, with Squire at 70 health and 3 energy and drawing the Iron Resolve opening hand against Strawman

Squire enters the battle with 70/70 HP and 3/3 energy. The 5 cards in hand and 12 in Draw total 17, matching the card count in Iron Resolve. This run also confirms that the Warrior Template can be created, character attributes take effect, and The Threshing Field uses Squire as its player.

tip

GamePlayerUnit is a reusable character definition. After battle starts, GCS creates an independent runtime instance. HP, armor, energy, and status changes remain in the current battle and never write back to the character asset.

See Definitions and runtime instances for this boundary, GCSApi guide for project-code access, and Demo scene index for the other 11 runnable battles.

Squire now brings Iron Resolve, 70 health, and 3 base energy per turn into The Threshing Field. Switch to Enemy at the top of Game Card Editor and continue with Enemy authoring to inspect Strawman in the same battle.