A Config (short for configuration file) is a data-driven structure that defines how specific systems, mechanics, or content behave — without modifying the source code. It separates design data from logic, enabling safe and scalable iteration.
A config is not code. It’s a design surface.
1️⃣ Definition
A config is an external file or asset used to store tunable parameters for gameplay systems, balance, content, or UI — allowing designers, tech artists, or LiveOps teams to make controlled changes without engineering support.
📍If it changes behavior — but not logic — it belongs in a config.
2️⃣ Why Configs Matter
Purpose | What It Enables | Example |
Rapid iteration | Tune without waiting on engineers | Change boss HP from 800 → 600 for playtest |
Live tuning | Adjust balance or events without patching | Update gacha rates server-side during event |
Content pipelines | Import quests, levels, stats from spreadsheets | CSV to JSON → into engine |
Design safety | Isolate balance from system logic | Fix typo in XP curve without risking crash |
Scalability | Make 100+ enemies editable without rewriting code | EnemyConfig.json for every mob |
📍Good config structure = fast learning, fewer bugs, better scaling.
3️⃣ What Configs Typically Control
Area | Examples |
Combat | Damage, cooldowns, abilities |
Economy | Prices, income, rewards |
Progression | XP curves, unlock gates |
AI Behavior | Aggro range, attack delay |
Loot / Gacha | Drop rates, item pools |
UI/UX | Menu structure, scaling, tooltips |
Events / LiveOps | Dates, conditions, bonus modifiers |
📍If it might need to change post-launch — put it in a config.
4️⃣ Formats and Tools
Format | Notes |
JSON | Lightweight, human-readable, nested |
CSV | Excel/Sheets-friendly, great for batch editing |
XML | Verbose, legacy standard |
YAML | Clean syntax, useful in build/devops |
ScriptableObjects (Unity) | Editor-based configs for non-programmers |
DataTables (Unreal) | Row-driven configs via structs |
📍Choose format by who edits it: designer? dev? spreadsheet pipeline?
5️⃣ Example – Ability Config (JSON)
{
"name": "Fireball",
"damage": 45,
"manaCost": 20,
"cooldown": 3.0,
"statusEffect": "burn",
"aoeRadius": 2.5
}
A change to damage = 50
instantly updates behavior — no code touched.
6️⃣ Configs in Live Games
Feature | Impact |
Hotfixes | Adjust reward, fix bad numbers instantly |
A/B Testing | Serve different config sets to user groups |
Event Schedules | Activate content without client patch |
Offer Rotation | Dynamic shop entries via remote config |
📍LiveOps = config-driven by default. Design your game with remote tuning in mind.
7️⃣ Risks and Best Practices
Risk | Solution |
Typos / bad values | Use validation scripts or schema checks |
Version mismatches | Track configs in Git + build sync rules |
Over-complex nesting | Favor flat, readable structures |
Designer error | Add preview tools, undo history, sandbox testing |
📍The best config systems come with tools, not just files.
✅ Config System Checklist
📍Configs aren’t just convenience. They’re core to sustainable game operations.
Summary
Term | Config |
What it is | External file or asset that defines tunable system behavior |
Why it matters | Enables fast iteration, balance safety, and LiveOps flexibility |
How it works | Through structured formats like JSON, CSV, or ScriptableObject |
Design goal | Make content and balance editable, testable, and scalable |
📍Config is not just data. It’s designer power — without the deployment risk.