Files
h-school/docs/design/01-shell/near-term.md
T

6.4 KiB

Ближайший горизонт: что видит игрок

Это не текущее состояние кода, а договорённости на ближайшее планирование. Как устроено сейчас — в architecture.md.

Решение: не PixiJS, а менеджер на DOM

Внутри школы нет 2D-сцены, камеры и спрайтов. Интерфейс ближе к менеджеру, чем к классическому QSP: не «полотно текста + список действий», а панели.

Ориентир по экрану школы (после часов и паузы, которые уже есть):

  • Карта — дерево локаций (tree view).
  • Выбранная локация — что происходит именно там.

Отдельной панели общих событий нет: пока ленты событий не существует, постоянно пустая треть экрана только мешала, и место отдано вкладкам «Карта» и «Люди». Появится лента — вернётся и панель; решение принято в фазе 8, здесь оно записано.

Картинок локаций и портретов в этом горизонте нет; позже можно добавить, не ломая панели. Анимация пока только переходы панелей/списков и живые цифры (часы, счётчики). Графики — когда появятся числа, которые ими стоит показывать, не раньше.

Клиент остаётся plain DOM + CSS. WebGL-сцены нет.

Симуляция по-прежнему на сервере: ученики и комнаты могут существовать как данные в Arch ECS, даже если клиент рисует строки списка, а не человечков.

Типы комнат, предметов и действий описываются defs (JSONC), конкретная школа — картой-инстансом. Подробности: defs.md. Дерево в UI — территория (ещё и ходибелая локация) → здания → этажи → помещения.

Первый срез (закрыто)

Это и реализуем. Нового геймплея сверх этого не закладываем.

Экран школы. Часы, пауза, скорость. Две панели:

  • дерево карты (позже к нему вкладкой встанут «Люди»);
  • выбранная локация (комната, этаж, корпус или двор): имя, предметы, персонажи (пусто), действия на месте (пусто), должности. Секции те же; где данных нет — пустое состояние.

Клик по дереву — фильтр на клиенте. Сервер один раз отдаёт снимок. Язык подписей модов: ?lang= на HTTP-каталоге (диалог создания) и то же значение в Hello на сокете (снимок при открытии). Не Accept-Language: его легко разъехать с переключателем RU/EN.

Create. Моды (core заблокирован) → каталог → редактор карты или стереть дефолт → имя, дата → школа на диске и в своём потоке.

Не в этом срезе: исполнение действий, живые персонажи, записи в ленте событий, смена модов у живой школы, Pixi, DLL-моды.

Что уже зафиксировано

Тема Решение
Вид внутри школы Менеджер: дерево (вкладкой с «Людьми») + содержимое локации
Рендер DOM, не WebGL/Pixi
Картинки Нет в этом горизонте
Анимация Переходы и живые цифры
Часы, пауза, скорость Остаются; это не отменяется панелями
Логика игры Только сервер; клиент шлёт намерения и рисует то, что сказали
Данные игры Defs (типы) + карта (инстанс), см. defs.md
Дерево карты Территория (= двор, узел графа) → здание → этаж → помещение
Редактор карты Только при создании школы
Моды core всегда; остальные — выбор при создании; поздний мод побеждает при споре имён
Поток школы Основа среза: один поток и один ECS world на школу, см. runtime.md
Сохранения На диск; часы не писать на каждом тике
События Отдельной панели нет; место отдано вкладкам «Карта» и «Люди». Появится лента — вернётся и панель
Локация Одни секции для двора, корпуса, этажа и комнаты
Двор TerritoryDef, узел графа и корень дерева
Язык модов HTTP ?lang=, то же в Hello; не Accept-Language
Проекты Каталог не в Server и не в Simulation, см. projects.md
Выбор в дереве Клиентский фильтр
Этаж FloorDef (тонкий тип); узел карты ссылается на def

Заведомо не сейчас

  • Портреты, арт локаций, схема этажа в пикселях.
  • Управление персонажем от первого/третьего лица.
  • Победа/кампания, живые персонажи, исполнение «сесть», записи событий.
  • Смена модов у живой школы, код модов (DLL).