Иерархия мира
Status: 🟢 реализовано (спека 8.5 + 8.7).
Структура
Country (страна)
├── PresidentPlayerID — глава, NULL = страна "спящая" (не основана)
├── CapitalRegionID — столичный регион, NULL пока не основана
│
├── Region (регион / субъект страны)
│ ├── GovernorPlayerID — глава региона, NULL = нейтральный
│ ├── CapitalCityID — столичный город региона
│ ├── RulingCountryID — какой стране принадлежит, NULL = нейтральный
│ │
│ ├── City (город / округ)
│ │ ├── MayorPlayerID — мэр города, NULL = нет мэра
│ │ ├── RulingCountryID — страна-владелец, NULL = нейтральный
│ │ │
│ │ └── Territory (земельный лот, 1 км²)
│ │ ├── owner_kind: city_gov / private_player
│ │ ├── owner_player_id (если private)
│ │ │
│ │ └── Building (постройка)
│ │ ├── owner_kind: city_gov / private_player / country_gov
│ │ └── building_type (завод, магазин, школа, ...)
│ │
│ └── ... (другие города региона)
│
└── ... (другие регионы страны)
Auto-наследование главы через capitals
💡 Президент по должности правит всей цепочкой: страна → столичный регион → столичный город. Без отдельных полей governor/mayor.
Псевдокод резолвера:
headOfRegion(region) =
if region.id == country.capital_region_id → country.president
else → region.governor
headOfCity(city) =
if city.id == region.capital_city_id → headOfRegion(region)
else → city.mayor
Почему так:
- Реальные деньги/ресурсы/оборона страны находятся в «Кремле» (столичный город столичного региона).
- Захватить страну = захватить Кремль. Президенту не нужны параллельные роли «Губернатор столицы» и «Мэр Кремля».
Типы Region
Region.type | Назначение | Лейбл UI |
|---|---|---|
oblast | Область (Подмосковье, Калужская и т.д.) | «область» |
republic | Республика (Татарстан, Башкортостан) | «республика» |
krai | Край (Алтайский, Краснодарский) | «край» |
federal_city | Город федерального значения (Москва, СПб, Севастополь) | «город федерального значения» |
aut_oblast | Автономная область | «автономная область» |
aut_okrug | Автономный округ | «автономный округ» |
Типы City
City.type | Назначение | Лейбл UI |
|---|---|---|
regional_capital | Столица региона (динамическая, может меняться) | «региональный центр» |
town | Обычный город / городской округ | «город» |
village | Село | «село» |
rural_settlement | Посёлок | «посёлок» |
Особый случай: federal_city (Москва)
Москва — Region.type=federal_city. Внутри Москвы как региона — 12 Cities-округов:
- ЦАО (
type=regional_capital— столица Москвы по умолчанию) - САО, СВАО, ВАО, ЮВАО, ЮАО, ЮЗАО, ЗАО, СЗАО, Зеленоградский АО, Новомосковский АО, Троицкий АО (все
type=town)
Дубля Region+City с одним именем нет. ЦАО — это City, Москва — это Region.
Спящая страна — старт мира
На старте никаких государств не существует. Country=РФ есть в БД с пустым
PresidentPlayerID. Все регионы — нейтральные (Region.RulingCountryID=NULL).
Государство рождается когда первая партия захватывает первый нейтральный регион через войну с NPC-армией. См. Пути к власти.
Текущее состояние мира (тестовый сценарий)
В seed для тестов:
- 🇷🇺 Российская Федерация — основана тестовым профилем 1003 «Президент РФ».
- Москва (RU-MOW, federal_city) — столичный регион.
- ЦАО (regional_capital, столичный город РФ) — под РФ.
- САО — под РФ. Мэр: 1002.
- ВАО — под РФ. Приватный завод 1004.
- 9 других округов — нейтральные.
- Москва (RU-MOW, federal_city) — столичный регион.
- ⚪️ Подмосковье (RU-MOS, oblast) — нейтральный регион. 56 городов, все нейтральные.
Auto-генерация при расширении мира
При добавлении новых регионов в seed (например СПб RU-SPE) карта автоматически их подхватит если в frontend/public/assets/maps/russia-admin-1.json есть feature с этим iso_3166_2. Без правок UI-кода. Это закладывалось в спеке 8.7.
See also
- Стройка и территории
- Ресурсы и региональные резервы
- Налоговая система
- Пути к власти
- Внутренний GDD:
gdd/01-world-hierarchy.md