# Balance Parameters — Стартовые настройки симуляции

> `/layerplan/spec/balance-params.md` · v1.0  
> Все параметры, определяющие интересность игры. Без них Alpha = мёртвая симуляция.  
> Каждый параметр → одна строка в `config.json`.

---

## Глобальные параметры симуляции

| Параметр | Значение | Диапазон | Почему такое |
|----------|---------|----------|-------------|
| `ticks_per_second` | 10 | 1–60 | 1 тик = ~6 игровых минут. Слишком быстро — не видно анимации. Слишком медленно — скучно. |
| `max_ticks` | 500000 | — | ~3.5 игровых лет при 10 tps. Достаточно для полной кампании. |
| `seed` | 42 | — | Фиксированный для детерминизма. Менять для новых карт. |

## Карта

| Параметр | Значение | Обоснование |
|----------|---------|-------------|
| `map.width` | 128 | В 2× больше чем OpenTTD medium (64) |
| `map.height` | 96 | Соотношение 4:3 |
| `water_pct` | 15 | 15% воды — достаточно для портов, не блокирует карту |
| `mountain_pct` | 12 | Горы создают bottlenecks для маршрутов |
| `forest_pct` | 20 | Леса — source древесины (ранняя эпоха) |
| `towns_initial` | 8 | 8 городов на старте создают конкуренцию за ресурсы |
| `mines_per_type` | 3 | По 3 шахты каждого типа. Запас на 2000+ тиков |

## Экономика (L1)

| Параметр | Значение | Обоснование |
|----------|---------|-------------|
| `r_efficiency` | 0.85 | R=0.85 на старте эпохи 1. Без рециклинга — коллапс к 5000 тику. |
| `r_degradation_lambda` | 0.0001 | R падает на 0.01% за тик. За 5000 тиков → R=0.5. |
| `inflation_rate` | 0.002 | 0.2% за тик. За 5000 тиков цены ×2.7. |
| `base_price_coal` | 50 | Базовый юнит цены. Всё остальное относительно. |
| `base_price_steel` | 200 | ×4 от угля (переработка). |
| `base_price_electronics` | 800 | ×4 от стали (high-tech). |
| `base_price_goods` | 400 | ×2 от electronics (сборка). |
| `price_spread_km` | 0.02 | +2% к цене за каждый км расстояния. Стимул строить близко. |
| `s_d_elasticity` | 0.5 | Эластичность D/S: при D/S=2 цена ×1.5. При D/S=0.5 цена ×0.75. |

## Транспорт (L0→L2)

| Параметр | Значение | Обоснование |
|----------|---------|-------------|
| `train_speed_base` | 1.5 | 1.5 тайла/тик = ~9 тайлов/сек при 10 tps. Комфортно глазу. |
| `train_capacity_base` | 100 | 100 единиц груза. Достаточно для 2 городов с 1 маршрута. |
| `train_fuel_per_tick` | 0.1 | 0.1 угля/тик. При маршруте 100 тиков = 10 угля. |
| `max_vehicles_per_edge` | 3 | Больше 3 поездов на ребре → congestion → deadlock risk. |
| `deadlock_timeout_ticks` | 50 | Если deadlock дольше 50 тиков → emergency resolve (сброс). |

## Надёжность (L0 Maintenance)

| Параметр | Значение | Обоснование |
|----------|---------|-------------|
| `durability_decay_per_tick` | 0.001 | -0.1% за тик. За 1000 тиков durability=0. → поломка. |
| `breakdown_threshold` | 0.3 | При durability < 0.3 — риск поломки. |
| `breakdown_probability` | 0.01 | 1% шанс поломки за тик ниже порога. ~63% за 100 тиков. |
| `breakdown_duration_ticks` | 20–50 | Поломка длится 20–50 тиков = 2–5 секунд. |
| `repair_cost_pct` | 0.3 | Ремонт стоит 30% цены нового транспорта. |

## Социальные (L1 Stability)

| Параметр | Значение | Обоснование |
|----------|---------|-------------|
| `stability_decay_unemployment` | 0.005 | -0.5% stability за тик при безработице > 20%. |
| `stability_decay_gini` | 0.003 | -0.3% stability за тик при Gini > 0.4. |
| `stability_recovery_ubi` | 0.01 | +1% stability за тик при активном UBI. |
| `revolt_threshold` | 0.2 | При stability < 0.2 → протесты, блокировка путей. |
| `gini_initial` | 0.35 | Стартовое неравенство. Типичное для рыночной экономики. |

## Города (L0 Population)

| Параметр | Значение | Обоснование |
|----------|---------|-------------|
| `population_initial_min` | 500 | Минимальный город — 500 жителей. |
| `population_initial_max` | 2000 | Максимальный — 2000. |
| `growth_rate_base` | 0.001 | +0.1% за тик при полном обеспечении. |
| `growth_rate_starving` | -0.01 | -1% за тик при недостатке еды. Город умирает за 100 тиков! |
| `demand_food_per_capita` | 0.01 | 1 еда на 100 жителей за тик. |
| `demand_goods_per_capita` | 0.005 | 1 goods на 200 жителей за тик (эпоха 1). |

## Технологическое дерево

| Эпоха | Триггер | Что открывает |
|-------|---------|---------------|
| 1 · Steam (1830) | Старт | Паровозы, угольные шахты, базовые фабрики |
| 2 · Diesel (1920) | Построено 10+ маршрутов | Дизельные поезда (×2 скорость), нефть |
| 3 · Electric (1980) | A(t) > 5, R > 0.7 | Электровозы, electronics_fab, роботы |
| 4 · Autonomous (2030) | A(t) > 20, R > 0.9 | Автономные роботы, recycling_plant, ИИ-диспетчер |
| 5 · Fusion (2070) | A(t) > 100, R > 0.95 | Термояд, plasma_separation, космическая добыча |

---

## Файл config.json (полный)

```json
{
  "simulation": { "seed": 42, "ticks_per_second": 10, "max_ticks": 500000 },
  "map": { "width": 128, "height": 96, "water": 0.15, "mountain": 0.12, "forest": 0.20, "towns": 8, "mines_per_type": 3 },
  "economy": {
    "r_efficiency": 0.85, "r_degradation_lambda": 0.0001, "inflation_rate": 0.002,
    "base_prices": { "coal": 50, "iron": 80, "copper": 90, "aluminum": 120, "silicon": 100, "lithium": 200,
      "water": 5, "food": 30, "steel": 200, "electronics": 800, "energy": 25, "goods": 400 },
    "price_spread_km": 0.02, "s_d_elasticity": 0.5
  },
  "transport": { "train_speed_base": 1.5, "train_capacity_base": 100, "train_fuel_per_tick": 0.1,
    "max_vehicles_per_edge": 3, "deadlock_timeout_ticks": 50 },
  "maintenance": { "durability_decay": 0.001, "breakdown_threshold": 0.3, "breakdown_probability": 0.01,
    "breakdown_duration_min": 20, "breakdown_duration_max": 50, "repair_cost_pct": 0.3 },
  "social": { "stability_decay_unemployment": 0.005, "stability_decay_gini": 0.003,
    "stability_recovery_ubi": 0.01, "revolt_threshold": 0.2, "gini_initial": 0.35 },
  "towns": { "pop_min": 500, "pop_max": 2000, "growth_base": 0.001, "growth_starving": -0.01,
    "demand_food": 0.01, "demand_goods": 0.005 },
  "tech_era": "steam",
  "distribution_mode": "market",
  "difficulty": "normal"
}
```
