# Фазы Индекс. Статус: ⬜ не начата, 🔄 в работе, ✅ готова. ## Срез 1. Оболочка и карта Дизайн закрыт: [`../design/near-term.md`](../design/near-term.md), [`../design/defs.md`](../design/defs.md), [`../design/runtime.md`](../design/runtime.md), [`../design/projects.md`](../design/projects.md). Новых игровых фич в эти фазы не добавлять. 1 и 2 можно вести параллельно (клиент / сервер). | Фаза | Статус | Зачем | | --- | --- | --- | | [0. Убрать PixiJS](00-drop-pixi.md) | ✅ | Сцена не планируется | | [1. Оболочка менеджера](01-manager-shell.md) | ✅ | Панели с секциями среза, пока без данных | | [2. Работник школы и диск](02-school-worker.md) | ✅ | Поток + World + сейв — основа | | [3. Каталог def и карта](03-defs-map.md) | ✅ | JSONC, core, валидация раскладки | | [4. Моды и редактор в create](04-create-editor.md) | ✅ | Выбор модов, карта в POST, снимок при открытии | ## Срез 2. Люди Дизайн: [`../design/people.md`](../design/people.md). Школа наполняется людьми. Ученики, работники и родители существуют, показываются и обновляются раз в год — но **ничего не делают**: ни расписания, ни перемещений, ни влияния характеристик. Фазы идут по порядку, кроме 8 и 9: обе зависят только от 7 и могут вестись параллельно (клиент / симуляция). | Фаза | Статус | Зачем | | --- | --- | --- | | [5. Дефы человека](05-people-defs.md) | ✅ | Навыки, черты, тело, нужды, наборы имён в каталоге | | [6. Библиотека генерации](06-people-generator.md) | ✅ | `HSchool.People`: семьи из карты и сида | | [7. Люди в школе](07-people-in-school.md) | ✅ | Сущности в `World`, ростер на диске, 11 кабинетов в `core` | | [8. Просмотр людей](08-people-browser.md) | ✅ | Панель со списком, фильтрами и карточкой | | [9. Годовой набор](09-yearly-intake.md) | ✅ | Первое сентября: переход, выпуск, набор | ## Срез 3. Штат Дизайн: [`../design/staffing.md`](../design/staffing.md). Первый срез, где игрок принимает решения. Школа открывается пустой: надо нанять людей из пула соискателей, раздать им предметы и уложиться в выделенную на месяц сумму. Уроков по-прежнему нет — предмет это запись в нагрузке, а не событие в кабинете. Фазы идут строго по порядку: каждая опирается на данные предыдущей. | Фаза | Статус | Зачем | | --- | --- | --- | | [10. Предметы и мебель](10-subjects.md) | ✅ | `SubjectDef`, одна учительская должность, кабинет как число мест | | [11. Пустая школа и пул](11-applicants.md) | ✅ | Школа без сотрудников, соискатели с запросом по зарплате | | [12. Наём и бюджет](12-hiring-budget.md) | ✅ | Наём, назначение предметов, предел фонда оплаты | | [13. Раздел «Управление»](13-management-tab.md) | ✅ | Деньги, соискатели, штат и назначения на экране | ## Срез 4. Расписание Дизайн: [`../design/schedule.md`](../design/schedule.md). Часы учебного плана раскладываются по дням и кабинетам. Школа начинает жить по времени: видно, что идёт в комнате прямо сейчас. Люди при этом по-прежнему **не ходят** — они находятся там, где их застало расписание. | Фаза | Статус | Зачем | | --- | --- | --- | | [14. Каркас дня и каникулы](14-school-calendar.md) | ✅ | Звонки, длина недели, каникулы | | [15. Планировщик](15-timetable-planner.md) | ✅ | Раскладка часов по слотам, четыре запрета | | [16. Расписание в школе](16-timetable-in-school.md) | ✅ | Сейв, снимок, «кто где сейчас» | | [17. Расписание на экране](17-timetable-screen.md) | ✅ | Скобки в дереве, сетка класса, расписание учителя | ## Срез 5. Жизнь школы Дизайн: [`../design/ai.md`](../design/ai.md). Люди начинают ходить и решать. Присутствие перестаёт вычисляться из расписания и становится состоянием: человек приходит утром, идёт коридором, может уйти с урока в туалет и вернуться. Срез идёт **двумя этапами**, и между ними можно остановиться — школа останется целостной. **Этап A — присутствие.** Люди ходят по обязанности; выбора у них ещё нет. | Фаза | Статус | Зачем | | --- | --- | --- | | [18. Присутствие и ходьба](18-presence-walking.md) | ✅ | `HSchool.Ai`, место человека, маршруты, приход и уход | | [19. Присутствие на экране](19-presence-screen.md) | ✅ | Своё сообщение ~2 Гц, числа в дереве, статический снимок карты, пропуск пустого времени | **Этап B — поведение.** Появляются нужды, действия и выбор между ними и обязанностью. | Фаза | Статус | Зачем | | --- | --- | --- | | [20. Нужды и действия](20-needs-actions.md) | ✅ | `ActionDef` с полями, декей, восполнение | | [21. Выбор действия](21-decisions.md) | ✅ | Цели и веса, «дойти → сделать», уход с урока, рост навыка | ## Срез 6. Фундамент Дизайн: [`../design/foundation.md`](../design/foundation.md). Срез без единой новой кнопки для игрока. Мод становится настоящим объектом, числа поведения уезжают из кода в данные, сид перестаёт быть идентификатором, у сейва появляется версия, а то, что ревью ловило глазами, начинает ловиться тестом. Всё здесь дёшево поодиночке и заметно упрощает следующие срезы. Порядок свободный: 25, 26 и 27 ни от чего не зависят, 23 стоит на 22. Начинать разумно с 25 — она страхует всё остальное. | Фаза | Статус | Зачем | | --- | --- | --- | | [22. Удостоверение пака](22-mod-identity.md) | ✅ | Название, версия, зависимости и порядок загрузки | | [23. Пример мода](23-example-pack.md) | ✅ | Настоящая папка вместо документов в памяти | | [24. Числа поведения](24-behavior-numbers.md) | ✅ | Веса целей в `BehaviorDef`, а не в коде | | [25. Золотые файлы](25-golden-fixtures.md) | ✅ | Отпечаток ростера, старый сейв, кривая голода, нехватка учителей | | [26. Свой сид](26-school-seed.md) | ✅ | Состав школы перестаёт зависеть от порядка создания | | [27. Версия сейва и дамп](27-serviceability.md) | ✅ | Формат читается, внутрь школы можно заглянуть | | [28. Тесты экранов](28-screen-tests.md) | ✅ | DOM-окружение и логика клиента под тестом | ## Срез 7. Одежда, вещи и климат Дизайн: [`../design/inventory.md`](../design/inventory.md). Человек одевается, несёт вещи, мёрзнет и переодевается. Игрок смотрит гардероб и выбирает правила школы; надевает не он. Погода видна у часов. Срез можно остановить после этапа A — школа останется одетой, даже если климат ещё не живой. **Этап A — данные и гардероб.** Страна вместо набора имён, вещи умеют быть одеждой, генератор одевает. | Фаза | Статус | Зачем | | --- | --- | --- | | [29. Страна](29-country.md) | ✅ | `CountryDef`, create выбирает страну, климат-пресет от сида | | [30. Слои и палитра](30-apparel-defs.md) | ✅ | Поля `ThingDef`, `ColorDef`, ванильная одежда и ноша | | [31. Генератор одевает](31-dress-generator.md) | ✅ | Гардероб на человеке, ноша-число, `people.json` | 29 и 30 независимы; 31 стоит на обеих. **Этап B — климат.** Улица, нужда тепла, техник, раздевалки. | Фаза | Статус | Зачем | | --- | --- | --- | | [32. Погода и тепло](32-weather-warmth.md) | ✅ | Пресет крутит улицу, кадр часов, нужда, две черты | | [33. Техник и шкафчики](33-lockers-technician.md) | 🔄 | Комната техника, две раздевалки, раздача шкафчиков | 32 стоит на 29; 33 — на 31 и 32. **Этап C — жизнь одежды.** Износ, переодевание, экран. | Фаза | Статус | Зачем | | --- | --- | --- | | [34. Износ и дом](34-wear-home.md) | ✅ | Прочность, утренняя замена, из ветхого не выходят | | [35. Уместность](35-appropriateness.md) | ⬜ | Правила, переодевание действием, физкультура | | [36. Вкладки карточки](36-person-card-tabs.md) | 🔄 | Одежда, ноша, сейчас + история за сегодня | | [37. Правила школы](37-school-rules.md) | ⬜ | Вкладка в «Управлении», четыре комбобокса, с завтра | 34 стоит на 31; 35 — на 32–34; 36 — на 31 и может идти параллельно с 35 в части вкладок одежды, история — после 35; 37 стоит на 35 и 36.