Files
h-school/docs/phases/README.md
T
2026-08-20 00:31:08 +03:00

116 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Фазы
Индекс. Статус: ⬜ не начата, 🔄 в работе, ✅ готова.
## Срез 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-окружение и логика клиента под тестом |