Game Development Workflows
This skill provides structured workflows for game development, from early prototyping through mechanics iteration, balancing, and testing. It covers core game dev patterns that apply across engines and genres.
Prerequisites
- A game engine or framework (Unity, Godot, Unreal, or custom)
- Basic understanding of game loops and real-time systems
- Version control (git) for iterative development
When to Use This Skill
- Prototyping a new game idea or mechanic
- Designing and iterating on gameplay systems
- Balancing difficulty, economy, or progression
- Building player feedback and juice/polish systems
- Structuring game projects for iterative development
- Writing game-specific tests and validation
Core Workflows
1. Prototyping
Goal: Validate the core fun factor before investing in production.
Rapid Prototype Process
- Identify the core loop — What does the player do repeatedly?
- Strip to minimum — Remove everything that isn't the core mechanic
- Time-box to 48 hours — Prototypes that take longer are too complex
- Playtest immediately — If it's not fun in 5 minutes, redesign
Prototype Structure
prototype/
├── core_mechanic/ # The one thing the game is about
├── player_input/ # Minimal input handling
├── feedback/ # Visual/audio response to actions
└── win_lose/ # Success and failure states
Prototype Checklist
Key Questions
- What is the one verb the player uses most? (jump, shoot, build, negotiate)
- What makes that verb interesting? (timing, strategy, creativity, reflexes)
- What's the minimum needed to test if that verb is fun?
2. Mechanics Design
Goal: Build systems that create interesting decisions.
Mechanics Framework
Every mechanic should answer:
| Element |
Question |
Example |
| Trigger |
When can the player use it? |
When holding a weapon, during combat |
| Action |
What does the player do? |
Press attack button |
| Cost |
What does it consume? |
Stamina, ammo, cooldown time |
| Effect |
What happens in the game? |
Deal damage in a cone |
| Feedback |
How does the player know it worked? |
Screen shake, hit particles, sound |
| Counter |
How can enemies/players respond? |
Block, dodge, interrupt |
Designing for Depth
- Orthogonal mechanics: Each mechanic should solve a different problem. Avoid overlap.
- Emergent interactions: Mechanics should combine in unexpected ways.
- Risk/reward: Every powerful option should have a meaningful cost.
- Counter-play: Every strategy should have a viable counter.
Systems Architecture Pattern
// Component-based mechanic design
class Mechanic {
constructor(config) {
this.trigger = config.trigger; // When it activates
this.cost = config.cost; // Resource cost
this.effect = config.effect; // Game state change
this.feedback = config.feedback; // Player-facing response
this.cooldown = config.cooldown; // Timing constraint
}
canActivate(playerState) {
return this.trigger.isMet(playerState)
&& this.cost.canPay(playerState)
&& this.cooldown.isReady();
}
activate(playerState, worldState) {
if (!this.canActivate(playerState)) return false;
this.cost.pay(playerState);
this.effect.apply(playerState, worldState);
this.feedback.play();
this.cooldown.start();
return true;
}
}
3. Game Balancing
Goal: Create the right difficulty curve and progression pacing.
Balance Types
| Balance Type |
What It Controls |
Example |
| Difficulty |
Challenge over time |
Enemy health, AI aggression |
| Economy |
Resource flow |
Gold income vs. item costs |
| Progression |
Player power growth |
XP curve, unlock schedule |
| Pacing |
Tension and relief |
Combat density, rest areas |
| Options |
Strategic viability |
Build diversity, weapon balance |
Balancing Process
- Define target experience — "Player should feel challenged but never stuck"
- Instrument the game — Log every relevant metric
- Establish baselines — Average completion time, death count, resource levels
- Adjust one variable at a time — Never tune multiple things simultaneously
- Playtest with fresh players — You're immune to your own difficulty
Difficulty Curve Design
Difficulty
│ ╭──────╮
│ ╱ ╲ ← Boss spikes
│ ╱╱ ╲╱╱
│ ╱╱ ╲╱╱ ← Gradual ramp
│ ╱╱ ╲
│╱ ╲
└──────────────────────────▶ Time/Progression
▲ ▲
Learn mechanics Mastery test
Balancing Spreadsheet Structure
| Item/Enemy |
HP |
Damage |
Speed |
Cost |
DPS |
Value |
Notes |
| Slime |
10 |
2 |
Slow |
— |
2 |
Low |
Tutorial enemy |
| Goblin |
25 |
5 |
Med |
— |
5 |
Med |
First real threat |
| Dragon |
500 |
40 |
Fast |
— |
40 |
Boss |
End-of-act challenge |
Key ratios to track:
- Time-to-kill vs. time-to-die (player should win by a comfortable margin in normal encounters)
- Resource income vs. expenditure per encounter
- Damage output of each build relative to content difficulty
4. Game Testing
Goal: Verify mechanics work correctly and the experience matches intent.
Testing Layers
| Layer |
Scope |
Frequency |
| Unit |
Individual mechanics, damage calc, inventory |
Every change |
| Integration |
Mechanic interactions, save/load, progression |
Daily |
| Balance |
Difficulty, economy, pacing |
Weekly |
| Playtest |
Full experience, new player onboarding |
Per milestone |
Test Patterns for Games
# Damage calculation test
def test_damage_with_armor():
player = Player(attack=50)
enemy = Enemy(armor=20, hp=100)
damage = calculate_damage(player.attack, enemy.armor)
enemy.take_damage(damage)
assert damage == 30 # 50 - 20
assert enemy.hp == 70
# Economy balance test
def test_economy_over_10_levels():
income_per_level = [100, 120, 150, 180, 220, 270, 330, 400, 480, 580]
expenses_per_level = [80, 100, 130, 160, 200, 250, 310, 380, 460, 560]
total_gold = 0
for i in range(10):
total_gold += income_per_level[i] - expenses_per_level[i]
assert total_gold >= 0, f"Player goes broke at level {i+1}"
assert total_gold <= 500, f"Player too rich at level {i+1}"
Playtest Protocol
- Brief the tester minimally — "Figure out how to play" tests onboarding
- Observe without helping — Note where they struggle, not how to fix it yet
- Track key metrics: Time to first success, death locations, confusion points
- Debrief after: What was confusing? What was fun? What would you change?
- Document findings before implementing changes
5. Player Feedback and Juice
Goal: Make every action feel satisfying and every event readable.
Feedback Hierarchy
| Priority |
Type |
Purpose |
Example |
| 1 |
Critical |
Player must not miss this |
Health low, objective updated, death |
| 2 |
Important |
Player should notice this |
Damage dealt, item collected, level up |
| 3 |
Enhancing |
Makes things feel better |
Screen shake, particles, sound variants |
| 4 |
Ambient |
World feels alive |
Footstep sounds, idle animations, weather |
Juice Checklist Per Mechanic
Error Handling
Common Prototyping Pitfalls
- Scope creep: Cut features ruthlessly. If it's not core, it's not prototype.
- Premature polish: Gray boxes and placeholder sounds are fine. Fun first, pretty later.
- No failure state: A prototype where you can't lose isn't testing the right thing.
Common Balancing Pitfalls
- Over-tuning numbers before testing systems: Get systems right first, then tune.
- Balancing for yourself: You've played it 100 times. You are not the player.
- Flat difficulty: Players learn. Difficulty must escalate to match growing mastery.
Common Testing Pitfalls
- Only testing happy paths: Test edge cases — zero resources, max level, save corruption.
- Testing on powerful hardware: Profile on target minimum spec.
- Skipping playtests: Developer testing catches bugs. Playtesting catches bad design.
Project Structure
game-project/
├── src/
│ ├── core/ # Game loop, state machine, manager singletons
│ ├── mechanics/ # Individual gameplay mechanics
│ ├── entities/ # Player, enemies, items, obstacles
│ ├── systems/ # AI, physics, economy, progression
│ ├── feedback/ # VFX, SFX, camera, haptics
│ └── data/ # Balance tables, level data, configs
├── tests/
│ ├── unit/ # Mechanic and system tests
│ ├── integration/ # Cross-system interaction tests
│ └── balance/ # Data-driven balance validation
└── docs/
├── gdd/ # Game design document sections
├── balance/ # Spreadsheets, analysis
└── playtest/ # Observation notes, findings
Tips
- Prototype the riskiest mechanic first — the thing you're least sure will be fun
- Keep a "kill list" of features you cut — they might work in a different context
- Session length matters: design knowing whether players play for 5 minutes or 5 hours
- Replayability comes from meaningful variation, not just randomization
- The best tutorials teach by doing, not by showing text
Cline Workflow Notes
- Install location: Copy this skill directory to
.cline/skills/game-dev/ (project-level) or ~/.cline/skills/game-dev/ (global)
- Activation: Cline will suggest this skill when you're building games, prototyping gameplay, or designing game mechanics
- Progressive loading: Only metadata loads initially; full game dev patterns activate via
use_skill when game work begins
1---2name: game-dev3description: Game development workflows covering prototyping, mechanics design, balancing, testing, and iteration cycles. This skill should be used when building games, prototyping gameplay systems, designing mechanics, balancing difficulty curves, or implementing game loops and player feedback systems.4---56# Game Development Workflows78This skill provides structured workflows for game development, from early prototyping through mechanics iteration, balancing, and testing. It covers core game dev patterns that apply across engines and genres.910## Prerequisites1112- A game engine or framework (Unity, Godot, Unreal, or custom)13- Basic understanding of game loops and real-time systems14- Version control (git) for iterative development1516## When to Use This Skill1718- Prototyping a new game idea or mechanic19- Designing and iterating on gameplay systems20- Balancing difficulty, economy, or progression21- Building player feedback and juice/polish systems22- Structuring game projects for iterative development23- Writing game-specific tests and validation2425## Core Workflows2627### 1. Prototyping2829**Goal:** Validate the core fun factor before investing in production.3031#### Rapid Prototype Process32331. **Identify the core loop** — What does the player do repeatedly?342. **Strip to minimum** — Remove everything that isn't the core mechanic353. **Time-box to 48 hours** — Prototypes that take longer are too complex364. **Playtest immediately** — If it's not fun in 5 minutes, redesign3738#### Prototype Structure3940```41prototype/42├── core_mechanic/ # The one thing the game is about43├── player_input/ # Minimal input handling44├── feedback/ # Visual/audio response to actions45└── win_lose/ # Success and failure states46```4748#### Prototype Checklist4950- [ ] Player can perform the core action within 10 seconds51- [ ] Core loop is clear: action → feedback → consequence → repeat52- [ ] There is a clear success and failure state53- [ ] The game communicates its rules without a tutorial54- [ ] It's fun (or at least interesting) for 2+ minutes5556#### Key Questions5758- What is the **one verb** the player uses most? (jump, shoot, build, negotiate)59- What makes that verb interesting? (timing, strategy, creativity, reflexes)60- What's the minimum needed to test if that verb is fun?6162### 2. Mechanics Design6364**Goal:** Build systems that create interesting decisions.6566#### Mechanics Framework6768Every mechanic should answer:6970| Element | Question | Example |71|---------|----------|---------|72| **Trigger** | When can the player use it? | When holding a weapon, during combat |73| **Action** | What does the player do? | Press attack button |74| **Cost** | What does it consume? | Stamina, ammo, cooldown time |75| **Effect** | What happens in the game? | Deal damage in a cone |76| **Feedback** | How does the player know it worked? | Screen shake, hit particles, sound |77| **Counter** | How can enemies/players respond? | Block, dodge, interrupt |7879#### Designing for Depth8081- **Orthogonal mechanics**: Each mechanic should solve a different problem. Avoid overlap.82- **Emergent interactions**: Mechanics should combine in unexpected ways.83- **Risk/reward**: Every powerful option should have a meaningful cost.84- **Counter-play**: Every strategy should have a viable counter.8586#### Systems Architecture Pattern8788```javascript89// Component-based mechanic design90class Mechanic {91 constructor(config) {92 this.trigger = config.trigger; // When it activates93 this.cost = config.cost; // Resource cost94 this.effect = config.effect; // Game state change95 this.feedback = config.feedback; // Player-facing response96 this.cooldown = config.cooldown; // Timing constraint97 }9899 canActivate(playerState) {100 return this.trigger.isMet(playerState) 101 && this.cost.canPay(playerState)102 && this.cooldown.isReady();103 }104105 activate(playerState, worldState) {106 if (!this.canActivate(playerState)) return false;107 this.cost.pay(playerState);108 this.effect.apply(playerState, worldState);109 this.feedback.play();110 this.cooldown.start();111 return true;112 }113}114```115116### 3. Game Balancing117118**Goal:** Create the right difficulty curve and progression pacing.119120#### Balance Types121122| Balance Type | What It Controls | Example |123|-------------|-----------------|---------|124| **Difficulty** | Challenge over time | Enemy health, AI aggression |125| **Economy** | Resource flow | Gold income vs. item costs |126| **Progression** | Player power growth | XP curve, unlock schedule |127| **Pacing** | Tension and relief | Combat density, rest areas |128| **Options** | Strategic viability | Build diversity, weapon balance |129130#### Balancing Process1311321. **Define target experience** — "Player should feel challenged but never stuck"1332. **Instrument the game** — Log every relevant metric1343. **Establish baselines** — Average completion time, death count, resource levels1354. **Adjust one variable at a time** — Never tune multiple things simultaneously1365. **Playtest with fresh players** — You're immune to your own difficulty137138#### Difficulty Curve Design139140```141Difficulty142 │ ╭──────╮143 │ ╱ ╲ ← Boss spikes144 │ ╱╱ ╲╱╱145 │ ╱╱ ╲╱╱ ← Gradual ramp146 │ ╱╱ ╲147 │╱ ╲148 └──────────────────────────▶ Time/Progression149 ▲ ▲150 Learn mechanics Mastery test151```152153#### Balancing Spreadsheet Structure154155| Item/Enemy | HP | Damage | Speed | Cost | DPS | Value | Notes |156|-----------|-----|--------|-------|------|-----|-------|-------|157| Slime | 10 | 2 | Slow | — | 2 | Low | Tutorial enemy |158| Goblin | 25 | 5 | Med | — | 5 | Med | First real threat |159| Dragon | 500 | 40 | Fast | — | 40 | Boss | End-of-act challenge |160161**Key ratios to track:**162- Time-to-kill vs. time-to-die (player should win by a comfortable margin in normal encounters)163- Resource income vs. expenditure per encounter164- Damage output of each build relative to content difficulty165166### 4. Game Testing167168**Goal:** Verify mechanics work correctly and the experience matches intent.169170#### Testing Layers171172| Layer | Scope | Frequency |173|-------|-------|-----------|174| **Unit** | Individual mechanics, damage calc, inventory | Every change |175| **Integration** | Mechanic interactions, save/load, progression | Daily |176| **Balance** | Difficulty, economy, pacing | Weekly |177| **Playtest** | Full experience, new player onboarding | Per milestone |178179#### Test Patterns for Games180181```python182# Damage calculation test183def test_damage_with_armor():184 player = Player(attack=50)185 enemy = Enemy(armor=20, hp=100)186 187 damage = calculate_damage(player.attack, enemy.armor)188 enemy.take_damage(damage)189 190 assert damage == 30 # 50 - 20191 assert enemy.hp == 70192193# Economy balance test 194def test_economy_over_10_levels():195 income_per_level = [100, 120, 150, 180, 220, 270, 330, 400, 480, 580]196 expenses_per_level = [80, 100, 130, 160, 200, 250, 310, 380, 460, 560]197 198 total_gold = 0199 for i in range(10):200 total_gold += income_per_level[i] - expenses_per_level[i]201 assert total_gold >= 0, f"Player goes broke at level {i+1}"202 assert total_gold <= 500, f"Player too rich at level {i+1}"203```204205#### Playtest Protocol2062071. **Brief the tester minimally** — "Figure out how to play" tests onboarding2082. **Observe without helping** — Note where they struggle, not how to fix it yet2093. **Track key metrics**: Time to first success, death locations, confusion points2104. **Debrief after**: What was confusing? What was fun? What would you change?2115. **Document findings** before implementing changes212213### 5. Player Feedback and Juice214215**Goal:** Make every action feel satisfying and every event readable.216217#### Feedback Hierarchy218219| Priority | Type | Purpose | Example |220|----------|------|---------|---------|221| 1 | **Critical** | Player must not miss this | Health low, objective updated, death |222| 2 | **Important** | Player should notice this | Damage dealt, item collected, level up |223| 3 | **Enhancing** | Makes things feel better | Screen shake, particles, sound variants |224| 4 | **Ambient** | World feels alive | Footstep sounds, idle animations, weather |225226#### Juice Checklist Per Mechanic227228- [ ] Visual feedback on action (flash, particle, trail)229- [ ] Audio feedback on action (hit sound, whoosh, chord)230- [ ] Camera response (shake, zoom, pan)231- [ ] Haptic feedback (if applicable)232- [ ] Numerical feedback (damage numbers, +XP popup)233- [ ] State change indicated (color shift, icon update)234235## Error Handling236237### Common Prototyping Pitfalls238239- **Scope creep**: Cut features ruthlessly. If it's not core, it's not prototype.240- **Premature polish**: Gray boxes and placeholder sounds are fine. Fun first, pretty later.241- **No failure state**: A prototype where you can't lose isn't testing the right thing.242243### Common Balancing Pitfalls244245- **Over-tuning numbers before testing systems**: Get systems right first, then tune.246- **Balancing for yourself**: You've played it 100 times. You are not the player.247- **Flat difficulty**: Players learn. Difficulty must escalate to match growing mastery.248249### Common Testing Pitfalls250251- **Only testing happy paths**: Test edge cases — zero resources, max level, save corruption.252- **Testing on powerful hardware**: Profile on target minimum spec.253- **Skipping playtests**: Developer testing catches bugs. Playtesting catches bad design.254255## Project Structure256257```258game-project/259├── src/260│ ├── core/ # Game loop, state machine, manager singletons261│ ├── mechanics/ # Individual gameplay mechanics262│ ├── entities/ # Player, enemies, items, obstacles263│ ├── systems/ # AI, physics, economy, progression264│ ├── feedback/ # VFX, SFX, camera, haptics265│ └── data/ # Balance tables, level data, configs266├── tests/267│ ├── unit/ # Mechanic and system tests268│ ├── integration/ # Cross-system interaction tests269│ └── balance/ # Data-driven balance validation270└── docs/271 ├── gdd/ # Game design document sections272 ├── balance/ # Spreadsheets, analysis273 └── playtest/ # Observation notes, findings274```275276## Tips277278- Prototype the riskiest mechanic first — the thing you're least sure will be fun279- Keep a "kill list" of features you cut — they might work in a different context280- Session length matters: design knowing whether players play for 5 minutes or 5 hours281- Replayability comes from meaningful variation, not just randomization282- The best tutorials teach by doing, not by showing text283284## Cline Workflow Notes2852861. **Install location**: Copy this skill directory to `.cline/skills/game-dev/` (project-level) or `~/.cline/skills/game-dev/` (global)2872. **Activation**: Cline will suggest this skill when you're building games, prototyping gameplay, or designing game mechanics2883. **Progressive loading**: Only metadata loads initially; full game dev patterns activate via `use_skill` when game work begins