Files
h-school/docs/phases/README.md
T

17 KiB
Raw Blame History

Фазы

Индекс. Статус: не начата, 🔄 в работе, готова.

Регрессии уже сделанного — ../bugs/README.md, не сюда.

Срез 1. Оболочка и карта

Дизайн закрыт: ../design/near-term.md, ../design/defs.md, ../design/runtime.md, ../design/projects.md.

Новых игровых фич в эти фазы не добавлять. 1 и 2 можно вести параллельно (клиент / сервер).

Фаза Статус Зачем
0. Убрать PixiJS Сцена не планируется
1. Оболочка менеджера Панели с секциями среза, пока без данных
2. Работник школы и диск Поток + World + сейв — основа
3. Каталог def и карта JSONC, core, валидация раскладки
4. Моды и редактор в create Выбор модов, карта в POST, снимок при открытии

Срез 2. Люди

Дизайн: ../design/people.md.

Школа наполняется людьми. Ученики, работники и родители существуют, показываются и обновляются раз в год — но ничего не делают: ни расписания, ни перемещений, ни влияния характеристик.

Фазы идут по порядку, кроме 8 и 9: обе зависят только от 7 и могут вестись параллельно (клиент / симуляция).

Фаза Статус Зачем
5. Дефы человека Навыки, черты, тело, нужды, наборы имён в каталоге
6. Библиотека генерации HSchool.People: семьи из карты и сида
7. Люди в школе Сущности в World, ростер на диске, 11 кабинетов в core
8. Просмотр людей Панель со списком, фильтрами и карточкой
9. Годовой набор Первое сентября: переход, выпуск, набор

Срез 3. Штат

Дизайн: ../design/staffing.md.

Первый срез, где игрок принимает решения. Школа открывается пустой: надо нанять людей из пула соискателей, раздать им предметы и уложиться в выделенную на месяц сумму. Уроков по-прежнему нет — предмет это запись в нагрузке, а не событие в кабинете.

Фазы идут строго по порядку: каждая опирается на данные предыдущей.

Фаза Статус Зачем
10. Предметы и мебель SubjectDef, одна учительская должность, кабинет как число мест
11. Пустая школа и пул Школа без сотрудников, соискатели с запросом по зарплате
12. Наём и бюджет Наём, назначение предметов, предел фонда оплаты
13. Раздел «Управление» Деньги, соискатели, штат и назначения на экране

Срез 4. Расписание

Дизайн: ../design/schedule.md.

Часы учебного плана раскладываются по дням и кабинетам. Школа начинает жить по времени: видно, что идёт в комнате прямо сейчас. Люди при этом по-прежнему не ходят — они находятся там, где их застало расписание.

Фаза Статус Зачем
14. Каркас дня и каникулы Звонки, длина недели, каникулы
15. Планировщик Раскладка часов по слотам, четыре запрета
16. Расписание в школе Сейв, снимок, «кто где сейчас»
17. Расписание на экране Скобки в дереве, сетка класса, расписание учителя

Срез 5. Жизнь школы

Дизайн: ../design/ai.md.

Люди начинают ходить и решать. Присутствие перестаёт вычисляться из расписания и становится состоянием: человек приходит утром, идёт коридором, может уйти с урока в туалет и вернуться.

Срез идёт двумя этапами, и между ними можно остановиться — школа останется целостной.

Этап A — присутствие. Люди ходят по обязанности; выбора у них ещё нет.

Фаза Статус Зачем
18. Присутствие и ходьба HSchool.Ai, место человека, маршруты, приход и уход
19. Присутствие на экране Своё сообщение ~2 Гц, числа в дереве, статический снимок карты, пропуск пустого времени

Этап B — поведение. Появляются нужды, действия и выбор между ними и обязанностью.

Фаза Статус Зачем
20. Нужды и действия ActionDef с полями, декей, восполнение
21. Выбор действия Цели и веса, «дойти → сделать», уход с урока, рост навыка

Срез 6. Фундамент

Дизайн: ../design/foundation.md.

Срез без единой новой кнопки для игрока. Мод становится настоящим объектом, числа поведения уезжают из кода в данные, сид перестаёт быть идентификатором, у сейва появляется версия, а то, что ревью ловило глазами, начинает ловиться тестом. Всё здесь дёшево поодиночке и заметно упрощает следующие срезы.

Порядок свободный: 25, 26 и 27 ни от чего не зависят, 23 стоит на 22. Начинать разумно с 25 — она страхует всё остальное.

Фаза Статус Зачем
22. Удостоверение пака Название, версия, зависимости и порядок загрузки
23. Пример мода Настоящая папка вместо документов в памяти
24. Числа поведения Веса целей в BehaviorDef, а не в коде
25. Золотые файлы Отпечаток ростера, старый сейв, кривая голода, нехватка учителей
26. Свой сид Состав школы перестаёт зависеть от порядка создания
27. Версия сейва и дамп Формат читается, внутрь школы можно заглянуть
28. Тесты экранов DOM-окружение и логика клиента под тестом

Срез 7. Одежда, вещи и климат

Дизайн: ../design/inventory.md.

Человек одевается, несёт вещи, мёрзнет и переодевается. Игрок смотрит гардероб и выбирает правила школы; надевает не он. Погода видна у часов. Срез можно остановить после этапа A — школа останется одетой, даже если климат ещё не живой.

Этап A — данные и гардероб. Страна вместо набора имён, вещи умеют быть одеждой, генератор одевает.

Фаза Статус Зачем
29. Страна CountryDef, create выбирает страну, климат-пресет от сида
30. Слои и палитра Поля ThingDef, ColorDef, ванильная одежда и ноша
31. Генератор одевает Гардероб на человеке, ноша-число, people.json

29 и 30 независимы; 31 стоит на обеих.

Этап B — климат. Улица, нужда тепла, техник, раздевалки.

Фаза Статус Зачем
32. Погода и тепло Пресет крутит улицу, кадр часов, нужда, две черты
33. Техник и шкафчики Комната техника, две раздевалки, раздача шкафчиков

32 стоит на 29; 33 — на 31 и 32.

Этап C — жизнь одежды. Износ, переодевание, экран.

Фаза Статус Зачем
34. Износ и дом Прочность, утренняя замена, из ветхого не выходят
35. Уместность Правила, переодевание действием, физкультура
36. Вкладки карточки Одежда, ноша, сейчас + история за сегодня
37. Правила школы Вкладка в «Управлении», четыре комбобокса, с завтра

34 стоит на 31; 35 — на 32–34; 36 — на 31 и может идти параллельно с 35 в части вкладок одежды, история — после 35; 37 стоит на 35 и 36.

Срез 8. Сессия и темп

Дизайн: ../design/session.md.

Несколько браузеров на одном сервере: общий пароль альфы, имя игрока, свои школы и чужие отдельным списком. Часы становятся смотрибельными — минута за секунду, на высоких скоростях тяжёлые системы тикают реже. Срез можно остановить после этапа B: мультиплеер жив, даже если темп ещё старый.

Этап A — кто вошёл. Пароль, имя, кука.

Фаза Статус Зачем
38. Сессия Пароль альфы, имя, кука, сокет после входа

Этап B — чьи школы. Хозяин, слоты, гость только смотрит.

Фаза Статус Зачем
39. Хозяин школы 🔄 owner, 2 слота на игрока, мои / чужие, гость без управления

39 стоит на 38.

Этап C — темп. Не зависит от A/B, можно вести параллельно с 38.

Фаза Статус Зачем
40. Темп часов ×1 = минута/с, кнопки ×½ ×1 ×2 ×5 ×10, страйд тяжёлых систем

Срез 9. Общение и романтический пак

Дизайн: ../design/social.md.

Разговор становится кружком, мнение — числом, вражда — ссорой. Романтика не ваниль: отдельный пак. Срез можно остановить после этапа B — школа болтает, даже если драк и пака ещё нет.

Этап A — мнения. Число и вкладка.

Фаза Статус Зачем
41. Мнения и «Связи» −100…100, семья-старт, вкладка карточки

Этап B — разговоры. Кружок, язык, шёпот.

Фаза Статус Зачем
42. Темы и кружки TopicDef, 2–4 человека, учительская, телефон, вместе
43. Шёпот и учитель Шёпот на уроке, шанс оборвать, разговор после звонка

42 стоит на 41; 43 — на 42.

Этап C — конфликт и экран.

Фаза Статус Зачем
44. Ссора и драка Жертва задиры, заступник, извинение, двор/физкультура
45. Кружок в присутствии Id участников и темы в кадре, протокол +1

44 и 45 стоят на 42, можно параллельно.

Этап D — правила, дом, пак.

Фаза Статус Зачем
46. Политика речи и дом Комбобоксы речи с завтра; утреннее семейное событие
47. Пак romance Ориентация, симпатия, пара 18+, патч тем

46 стоит на 37 и 42; 47 — на 42 и 23. example не трогать.

Вне очереди

Дизайн: ../design/off-queue.md.

Склейка уже живых систем и мелкий DX, не новый кусок игры. Номера не спорят со срезом 10. После каждой игровой фазы школа целая. 50–52 стоят на 48; 53 — на 18 и 32, можно параллельно с 48. 49 от них не зависит. Баг в уже сделанном — ../bugs/README.md.

Фаза Статус Зачем
48. Учитель в кабинете Нет учителя на месте — нет роста навыка
49. Пропуск сборки при запуске run-aspire.cmd не гоняет MSBuild, если dll свежие
50. Навык учителя Соискатель 78 учит лучше, чем 41
51. Тепло на уроке 🔄 Замёрзший учится хуже, как голодный
52. Учебник на уроке Нет в сумке — половинный рост
53. Погода на дороге Снег и дождь добавляют минуты к приходу