Add foundational phase documentation for mod development
ci / server (push) Failing after 3m39s
ci / client (push) Successful in 14s

This commit is contained in:
Leonid Pershin
2026-08-19 23:35:30 +03:00
parent 5eabc90d53
commit c27d43f66a
9 changed files with 495 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
# Фаза 23. Настоящий пример мода
## Зависимости
- [Фаза 22](22-mod-identity.md) — пример должен нести удостоверение, как все
## Зачем
Дорога от папки на диске до школы не проверена ни разу: в `mods/` лежит только `core`, а last-wins
и патчи живут в тестах на документах в памяти. Один маленький настоящий пак делает весь путь
проверяемым — и заодно служит образцом для мод-автора.
## Задачи
- [ ] Пак `mods/example` рядом с `core`: `pack.jsonc`, свои локали, пара черт, набор имён,
патч чужого def и одна комната
- [ ] Пак нарочно скучный: он образец и фикстура, а не контент. Ванильную игру он не меняет,
пока не выбран
- [ ] Пак едет в вывод сборки тестов теми же правилами, что и `core`
- [ ] Короткий `README.md` внутри пака: что где лежит и как добавить своё
- [ ] Ориентир в [`../design/defs.md`](../design/defs.md) показывает на него как на образец
## Тесты, без которых фаза не закрыта
- [ ] `GET /api/catalog?mods=example` отдаёт типы и подписи пака поверх `core`
- [ ] Школа создаётся с паком и поднимается с ним после перезапуска
- [ ] Патч пака виден в каталоге школы, а без пака его нет
- [ ] Одинаковый `defName` в `core` и в паке — побеждает пак, в логе предупреждение
- [ ] Карта пака проходит валидацию и годится для создания школы
## Критерий готовности
- Создать школу с включённым паком и увидеть его содержимое внутри школы
- Снять пак — школа создаётся прежней
- `dotnet test` проходит
## Стоп
Не превращать пример в контент-пак: чем он меньше, тем дольше проживёт.