Game Configs System
Configuration data that defines game difficulty, levels, and balance.
See also: GameConfigsParsing.md for detailed documentation on JSON parsing, level inheritance, and where config values are used.
Key Files
| File | Location | Purpose |
|---|---|---|
RunDifficulty | Assets/_Game/Scripts/Data/RunDifficulty.cs | Difficulty presets |
LevelConfig | Assets/_Game/Scripts/Data/LevelConfig.cs | Individual level definitions |
LevelDefinitionData | Assets/_Game/Scripts/Data/Config/LevelDefinitionData.cs | JSON-loadable level data |
GameConfigData | Assets/_Game/Scripts/Data/Config/GameConfigData.cs | Global game settings |
GameConfigManager | Assets/_Game/Scripts/Managers/GameConfigManager.cs | Config loading and access |
RunDifficulty
ScriptableObject defining difficulty presets:
[CreateAssetMenu]public class RunDifficulty : ScriptableObject{ public string difficultyName; public float scoreMultiplier; public bool EndGameOnTargetScore; // ... more settings}Located in: Assets/_Game/Data/Difficulties/
LevelConfig
Defines a single level’s gameplay parameters:
| Property | Type | Description |
|---|---|---|
Id | string | Unique identifier |
scoreRequired | int | Target score to pass |
timeLimit | float | Session duration in seconds |
catSpawnsConfig | CatSpawnInfo[] | Which cats appear and when |
availableCategories | CakeCategory[] | Cake types available |
catBaseOrderTimeMultiplier | float | Patience modifier |
numberOfTables | int | Active table positions |
GameConfigData
Root container for JSON-loaded configuration:
[Serializable]public class GameConfigData{ public GlobalGameSettings globalSettings; public List<ItemConfigData> items; public List<LevelDefinitionData> levels; public List<UniqueCatsConfigData> uniqueCats;}Remote Config System
Location: Assets/_Game/Scripts/Systems/GameConfig/
RemoteGameConfigManager- Handles config selection and cachingRemoteGameConfigService- HTTP requests to config server- Supports: Default (StreamingAssets), Dev (Editor), Remote (server)
- Disk caching via
Application.persistentDataPath
Adding New Configs
-
ScriptableObject approach:
- Create asset in
Assets/_Game/Data/Configs/ - Assign to appropriate database or campaign
- Create asset in
-
JSON approach:
- Add to
GameConfigDatastructure - Load via
GameConfigManager
- Add to
-
Test via Unity Test Runner