content-and-balance

Structures Unity ScriptableObject configs for game balance, waves, economy, and difficulty curves.

Updated Apr 27, 2024
One-click install
npx skills add https://github.com/IgorGribowsky/rts-sandbox --skill content-and-balance-igorgribowsky
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: content-and-balance
Source: https://github.com/IgorGribowsky/rts-sandbox/tree/main/rts-sandbox-src/.claude/skills/content-and-balance
Command: npx skills add https://github.com/IgorGribowsky/rts-sandbox --skill content-and-balance-igorgribowsky

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Game balance numbers buried in code force designers to ask a developer for every tweak, and careless edits to ScriptableObject structure silently corrupt existing assets. This Skill guides the creation and modification of balance configs so the game designer can change numbers directly without breaking existing content. ## Core Features & Use Cases - Config Architecture: Organizes one config per system in Assets/_Project/Configs/, wired through prefab fields instead of Resources loading, with no duplicated values. - Safe Schema Changes: Handles field additions, renames, type changes, and asset renames while preserving serialized data and .meta GUID references in existing assets. - Balance Documentation Discipline: Keeps mechanic docs and docs/CHANGELOG.md synchronized with every number change, and expresses difficulty curves as rules rather than hand-tuned tables. - Use Case: When adding a new enemy type or adjusting wave difficulty, define the wave composition and pacing as data in a config, verify edge cases like empty lists and zero counts, and update the design doc in the same pass. ## Quick Start Ask the assistant to create or modify a balance config for waves, economy, or unit stats while keeping existing Unity assets intact.

Frequently Asked Questions about content-and-balance

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I structure Unity ScriptableObject configs for game balance?

Create one config per system, such as player, weapons, or waves, stored in Assets/_Project/Configs/ with descriptive names. Components receive the config through a prefab field rather than searching by name or loading from Resources, and each value exists in exactly one place.

What happens to existing assets when I rename a ScriptableObject field?

Renaming a field loses the serialized data stored under the old name in every existing asset. Preserving it requires an explicit former-name mapping as a deliberate step, and type changes require a migration that reads the old value, writes the new one, then removes the old field.

How should difficulty curves be defined in game configs?

Express difficulty as a rule rather than a hand-filled table, for example each wave adds 15 percent more enemies with a cap of 40. A rule is verifiable and editable in one line, while twenty manual table values cannot be maintained reliably.

Why should levels be data configs instead of separate Unity scenes?

Five levels as five configs and one scene beats five scenes because scenes do not diff meaningfully and cannot be edited in bulk. Wave configs describe composition and pacing, so new enemy types are added in data without touching code.

What edge cases should balance configs be tested against?

Test empty lists, zero counts, and missing references, since a human edits the config and will eventually enter a zero. The game must not throw an exception on these inputs, and accumulated resources need explicit caps to prevent overflow.