KB: Население (Population)
Статус: верифицирован (сессия 2026-03-15)
Суть
Расчётный домен. Собирает персонал всех доменов, считает семьи, общее население, кризисное покрытие. Итерация до сходимости.
Ориентир
Общее население поселения — до 500+ человек. Не хардкап, а ориентир для проектирования инфраструктуры.
Константы
| Константа | Значение | Описание |
|---|---|---|
| FAMILY_MULT | 2.5 | Всего людей на 1 работника (работник + 1.5 доп.) |
| CRISIS_BUFFER | 1.25 | Кризисное покрытие (ферма кормит × 1.25) |
| CHILDREN_SHARE | 0.22 | Доля детей в населении (22%) |
| SOC_TAX | 1.43 | Коэффициент налогов на ФОТ |
Слайдеры
| Слайдер | Мин | Макс | Дефолт | Шаг | Описание |
|---|---|---|---|---|---|
| familyMult | 0.5 | 3.0 | 1.5 | 0.1 | Доп. людей на 1 работника (2.5 total при дефолте) |
| housingPct | 0% | 100% | 100% | 10% | % персонала в доходном доме УК (остальные — свой дом на участке) |
| seloNative | 0 | 150 | 100 | 1 | Местные жители Уожана |
| villaLoadPct | 10% | 100% | 50% | 10% | % резидентов вилл на месте (ежедневная нагрузка) |
| enrollPct | 20% | 100% | 70% | 10% | % детей, посещающих школу |
Формула (итерация)
do {
prevPop = totalPop
// Персонал с семьями
staffWithFamily = totalStaff × FAMILY_MULT
// Население (все живут в Уожане)
seloPop = staffWithFamily + seloNative
villaPop = villas × 4
totalPop = seloPop + villaPop // всегда все
crisisCov = round(totalPop × CRISIS_BUFFER)
// Для жилья (capex/revenue):
housedPop = staffWithFamily × housingPct // % в доходном доме УК
// Производный персонал (зависит от населения)
farmStaff = f(crisisCov) // из kb-farm
schoolStaff = f(totalPop × CHILDREN_SHARE × enrollPct) // из kb-selo
seloServiceStaff = 1 + max(2, ceil(totalPop / 120)) // из kb-selo
utilStaff = max(2, ceil(totalPop / 150)) // из kb-utilization
// Итого персонал
totalStaff = farmStaff + villaStaff + sanStaff
+ engStaff + secStaff + ukStaff
+ schoolStaff + seloServiceStaff + utilStaff
} while (abs(totalPop - prevPop) > 5)
Производные величины
// Дети
totalChildren = totalPop × CHILDREN_SHARE
enrolledChildren = totalChildren × enrollPct
// Разбивка детей (для revenue школы)
seloChildren = seloPop × CHILDREN_SHARE × enrollPct
villaChildren = villaPop × CHILDREN_SHARE × enrollPct
// Ежедневная нагрузка (вода, ФАП, магазин)
villaPopDaily = villaPop × villaLoadPct
dailyPop = seloPop + villaPopDaily
// Вода/канализация (для инженерии)
waterPop = totalPop + sanPop
Правила
- housingPct влияет только на capex/revenue жилья (доходный дом УК), НЕ на население
- seloPop = staffWithFamily + seloNative (все 100% персонала с семьями живут в Уожане)
- housedPop = staffWithFamily × housingPct (% в доходном доме; остальные — свой дом на участке)
- Ферма кормит всех (crisisCov = totalPop × 1.25)
- Итерация до сходимости (дельта < 5 чел), обычно 2–3 раунда
- Домен выключен (toggle off) → его staff = 0
- villaPop = villas × 4 (постоянные, для школы и кризиса)
- villaPopDaily = villaPop × villaLoadPct (для ежедневной нагрузки)
- seloNative — интегрированы (школа, магазин, ФАП), но мы за них не платим
Связь с доменами
| Домен | Что берёт из населения |
|---|---|
| Ферма | crisisCov → размер фермы |
| Село (жильё) | housedPop → м² жилья (доходный дом) |
| Село (школа) | enrolledChildren → персонал, capex, revenue |
| Село (сервис) | totalPop → персонал |
| Инженерия | waterPop → capex воды/канализации |
| Утилизация | totalPop → capex, персонал |
| Земля | totalPop → благоустройство |