Arena Game Type
Reference for the arena game type — designer configuration and player rules.
For platform-level configuration shared across all game types, see Shared Game Configuration.
Arena is a team combat game. Designers author classes, fighters, actions, and statuses; players draft a team of three fighters and issue per-fighter orders across three combat phases each turn, fighting AI-controlled opponent teams.
> v1 engine scope: the studio lets designers author more than the current combat engine consumes. Where a feature is authorable but not yet used in combat resolution, it is flagged (not yet wired) below. This keeps the reference honest about what actually affects play today.
Game Parameter
| Parameter | Default | Description |
|---|---|---|
| Max turns | 10 | Maximum turns before the match ends on remaining-health percentage; 0 means no limit. Active — overridable per run |
| Actions per turn | 3 | Action slots each fighter has per turn (one per phase). Fixed at 3 by the three-phase structure |
| Base pool | 16 | Intended stat-point budget for level 1 fighters. Advisory — describes the stat economy but is not enforced by the engine |
| Points per level | 4 | Intended additional stat points per fighter level. Advisory — not enforced by the engine |
Designer Configuration
How the Game Fits Together
Game
├── Class (base stats: health / speed / power / defense, each > 0)
│ └── Class Resource ──> Resource (min / max / start / regen per turn)
├── Tag (category label)
├── Chain Rule (required tags, min chain length, bonus effects) [not yet wired]
├── Status (duration type, max stacks, is debuff, is removable)
│ └── Status Effect (trigger × effect × target, value formula) ──> applies a Status
├── Action (target rule, priority, phase restrictions, costs, conditions)
│ ├── Action Effect (effect × target, value formula, scaling stat) ──> applies a Status
│ ├── Action Tag ──> Tag
│ └── Fallback Action ──> Action
├── Fighter (a Class + stat modifiers summing to 0, a passive Status)
│ ├── Fighter Action ──> Action (may be a signature)
│ └── Fighter Variant (gender, stat deltas, passive override)
├── Opponent Team (difficulty rating)
│ └── Opponent Team Slot ──> Fighter
└── Phase Config (exactly 3; slot 1, 2, or 3)
Class
The stat archetype fighters are built on.
| Field | Required | Description |
|---|---|---|
| Name | yes | Display name |
| Description | no | Narrative description |
| Health base | yes | Base health; must be greater than 0 |
| Speed base | yes | Base speed; must be greater than 0 |
| Power base | yes | Base power (offensive scaling); must be greater than 0 |
| Defense base | yes | Base defense (damage reduction); must be greater than 0 |
Requirement: at least one class must exist before a run can be created.
Resource
A designer-defined pool a class can hold (e.g. energy), spent by action costs.
| Field | Required | Description |
|---|---|---|
| Name | yes | Display name |
| Description | no | Narrative description |
| Min value | no | Lower bound of the pool |
| Max value | no | Upper bound of the pool |
| Start value | no | Value at the start of a match |
| Regen per turn | no | Amount restored each turn |
Class Resource grants a resource to a class (a class-to-resource link). Resources and action costs are authorable but not yet wired into combat resolution in v1.
Status
A buff or debuff a fighter can carry.
| Field | Required | Description |
|---|---|---|
| Name | yes | Display name |
| Description | no | Narrative description |
| Duration type | no | How the status expires — see values below |
| Max stacks | no | How many times it can stack; 0 means uncapped |
| Is debuff | no | Whether it is harmful (affects presentation and cleanse logic) |
| Is removable | no | Whether it can be cleansed |
Duration type values: turns, until_cleansed, until_triggered, permanent.
Status Effect — ordered effect rows attached to a status, each fired on a trigger window:
| Field | Required | Description |
|---|---|---|
| Trigger type | yes | When the effect fires (see trigger types below) |
| Effect type | yes | What it does (see effect types below) |
| Target | yes | Who it affects (see effect targets below) |
| Value formula | no | Magnitude — see Value Formula below |
| Apply status | no | The status applied when the effect type is apply_status |
| Condition | no | Optional JSON condition |
Action
A move a fighter can perform in a phase.
| Field | Required | Description |
|---|---|---|
| Name | yes | Display name |
| Description | no | Narrative description |
| Class | no | Restricts the action to a class; blank means any |
| Target rule | yes | Default targeting (see target rules below); defaults to enemy |
| Priority | no | Resolution order within the same speed tier — lower resolves earlier |
| Phase restrictions | no | Which phases the action may be used in |
| Costs | no | Resource costs (authorable; not yet wired) |
| Conditions | no | Optional JSON conditions (authorable; not yet wired) |
| Fallback action | no | An action used when this one cannot resolve |
Action Effect — ordered effect rows attached to an action:
| Field | Required | Description |
|---|---|---|
| Effect type | yes | What it does (see effect types below) |
| Target | yes | Who it affects (see effect targets below) |
| Value formula | no | Magnitude — see Value Formula below |
| Scaling stat | no | Stat the effect scales with (see scaling stats below) |
| Duration | no | For status-applying effects, how long the status lasts |
| Apply status | no | The status applied when the effect type is apply_status |
| Sort order | no | Order effects resolve within the action |
Action Tag attaches a tag to an action (used by chain rules).
Tag
A label applied to actions, used to group them for chain rules.
| Field | Required | Description |
|---|---|---|
| Name | yes | Display name |
| Category | no | Free-text grouping (conventionally damage_type, theme, combo_label, or class_tag) |
Tag categories are conventions only — they are not a validated enum.
Chain Rule
A combo rule that rewards chaining actions sharing required tags. Authorable but not yet wired into combat resolution in v1.
| Field | Required | Description |
|---|---|---|
| Name | yes | Display name |
| Description | no | Narrative description |
| Required tags | no | Tags an action sequence must share to trigger the chain |
| Min chain length | no | Minimum actions in the chain; floored to 2 |
| Bonus effects | no | Effects granted when the chain triggers |
Fighter
A concrete, playable character built on a class.
| Field | Required | Description |
|---|---|---|
| Name | yes | Display name |
| Description | no | Narrative description |
| Class | yes | The class this fighter is built on |
| Health modifier | yes | Adjustment to class Health base |
| Speed modifier | yes | Adjustment to class Speed base |
| Power modifier | yes | Adjustment to class Power base |
| Defense modifier | yes | Adjustment to class Defense base |
| Passive status | no | An always-on status the fighter carries |
Balance rule: the four stat modifiers must sum to exactly 0 — a fighter redistributes its class budget rather than adding to it.
Fighter Action grants an action to a fighter (optionally marked as a signature action). Fighter Variant is an alternate version of a fighter:
| Field | Required | Description |
|---|---|---|
| Name | yes | Variant display name |
| Gender | yes | male or female |
| Health / Speed / Power / Defense modifier delta | no | Stat deltas stacked on top of the fighter (no sum-zero constraint) |
| Passive status | no | Overrides the fighter's passive when set |
Each fighter variant can carry a portrait image (see Turn Sheet Background Images for the platform image rules).
Requirement: at least three fighters must exist before a run can be created; each fighter should have at least one action.
Opponent Team
A pre-built enemy team players fight.
| Field | Required | Description |
|---|---|---|
| Name | yes | Display name |
| Description | no | Narrative description |
| Difficulty rating | no | Relative difficulty indicator |
Opponent Team Slot places a fighter into a team roster position. A team should have at least three slots.
Requirement: at least one opponent team must exist before a run can be created.
Phase Config
Names the three combat phases (for example Opening, Clash, Finale).
| Field | Required | Description |
|---|---|---|
| Slot number | yes | Must be 1, 2, or 3 |
| Name | yes | Display name for the phase |
Requirement: a game must have exactly three phase configs before a run can be created.
Value Formula
Effect magnitudes (on both action effects and status effects) use a small formula grammar:
| Form | Meaning |
|---|---|
| (empty) | No value |
N | A plain integer, e.g. 12 |
power / defense / health / speed | The named stat's value |
stat N or stat N.N | The named stat scaled, e.g. power * 1.5 |
Any other expression is rejected at save time.
Enum Reference
The values below are the closed sets used by the fields above. In the studio each shows a localized label and hint. Values marked (v1) are those the current combat engine actually applies; the others are authorable but inert until later engine work.
Effect types — what an effect does:
damage (v1), heal (v1), apply_status (v1), block_damage (v1), repeat_action (v1), remove_status, modify_resource, modify_priority, redirect_target, cancel_action, trigger_assist, modify_cooldown, cleanse, transform_status, consume_status, generate_barrier.
Effect targets — who an effect affects: self, target, ally, all_allies, all_enemies, all.
Trigger types — when a status effect fires:
on_turn_start (v1), before_damage (v1), after_damage (v1), on_turn_end, on_phase_start, on_phase_end, before_action, after_action, on_hit, on_miss, on_blocked, on_status_applied, on_status_removed, on_ally_action, on_enemy_action, on_chain_started, on_chain_continued, on_chain_broken, on_fighter_defeated, on_resource_gained.
Action target rules — default targeting for an action: enemy, ally, self, lowest_health_enemy, lowest_health_ally, marked, random_enemy, random_ally, all_enemies, all_allies.
Scaling stats — the stat an effect scales with: power, defense, health, speed, none.
Turn Sheets
| Sheet | Presentation order | Purpose |
|---|---|---|
| Join game | — | Sent when a player joins; used to draft the team |
| Turn recap | 1st | Read-only narrative and tactical summary of the previous turn |
| Orders | 2nd | Issue each fighter's action for every phase |
Turn Sheet Background Images
When uploading a background image for an arena game, select the sheet type it applies to.
| Sheet | Description |
|---|---|
arena_game_join_game | Join game / draft sheet — required; sent when a player first joins |
arena_game_orders | Per-turn orders sheet |
arena_game_turn_recap | Read-only turn summary sheet |
Player Rules
Drafting a Team
On the join game sheet you draft exactly three fighters to form your team. For each slot you choose a fighter and, optionally, a variant, and may set a display name. Your drafted fighters become the fighter instances that fight for you all match.
Issuing Orders
Each turn you fill in the orders sheet. For every one of your fighters you assign one action per phase across the three phases (rounds). For each order you pick the action and, optionally, a target — leaving the target blank lets the action pick automatically according to its target rule. Manual targeting is honoured only when it matches the action's rule (opposing fighters for enemy/marked, a same-team ally for ally); otherwise the engine resolves the target for you.
How a Turn Resolves
- Turn start —
on_turn_startstatus effects fire for every active fighter. - Phases 1 → 2 → 3, in order. Within each phase:
- Every fighter with an order for that phase acts.
- Fighters act in Speed order, highest first. Ties are broken by the action's Priority, lowest first.
- Fighters with equal speed act as a simultaneous batch — they all read the battlefield as it was at the start of the batch, so a fighter defeated earlier in the batch still gets to act.
- The engine checks for a winner after each phase.
- Turn end — active statuses tick down; those reaching zero duration expire. Permanent statuses never tick down.
Effects in Combat
The engine applies these effect types in v1:
- Damage — the formula value, reduced by any
block_damagein effect, floored at 0. Damage triggers fire on both attacker and defender afterwards. - Heal — restores health, capped at the fighter's maximum.
- Apply status — attaches a status for its duration, respecting its max-stacks cap (0 = uncapped).
- Block damage — reduces incoming damage this turn.
- Repeat action — re-runs the action; repeats are capped at a depth of 10 to prevent runaway loops.
A fighter's stats are its class base plus its fighter modifier plus any variant delta. Its passive is the variant's passive if the variant sets one, otherwise the fighter's.
Winning and Losing
- If all of the opponent's fighters are defeated, you win.
- If all of your fighters are defeated, you lose.
- If both teams are wiped out together, the match is a draw.
- If the match reaches Max turns without a wipeout, the team with the higher aggregate remaining-health percentage wins; an exact tie is a draw.
A fighter is defeated when its current health reaches 0.
Game Validation
Before a run can be created, an arena game must pass a readiness check. The game designers shows any issues.
Errors (must be resolved):
- At least one class exists
- At least three fighters exist
- Exactly three phase configs exist
- At least one opponent team exists
Warnings (advisory):
- Each fighter has at least one action
- Each opponent team has at least three slots