# Пепельные луга

Изометрическая пиксельная RPG с сюжетом — и собственный жанронезависимый игровой движок под неё.

- **Движок**: свой (`packages/engine`), TypeScript, PixiJS 8 как низкоуровневый рендер-бэкенд. Спроектирован под переиспользование в других жанрах.
- **Игра**: одиночная сюжетная RPG (`apps/game`), сначала браузер, дальше — планы на Steam и Android.
- **Стек**: TypeScript (strict), Vite (dev + сборка), Vitest (тесты движка).

## Быстрый старт

```bash
npm install
npm run dev                          # http://localhost:5173
npm test                             # 81 юнит-тест движка
npm run build                        # прод-сборка
node tools/pixelart/gen.mjs          # перегенерация пиксель-арта
```

## Структура

```
docs/engine          # документация движка: архитектура, все подсистемы, рецепты
docs/world.md        # библия мира: сеттинг, локации, персонажи, сюжет
docs/art-style.md    # арт-библия: палитра, размеры, стиль, чеклист ассетов
packages/engine      # движок: цикл, сцены, ввод, камера, изометрия, A*, сейвы,
                     #   диалоги, твины, GameState, UI-кит, частицы, аудио, карты
apps/game            # RPG: сцены, локации, NPC, диалоги, сюжет
apps/game/assets     # пиксель-арт (генерируется tools/pixelart)
tools/pixelart       # генератор арта: PNG из кода, палитра в одном месте
```

Правила: игра использует только публичный API `@rpg/engine`; движок ничего не знает о жанре игры; тёплый цвет в арте — только жизнь (цветы, бронза, огонь).

## Документация движка

Начни с `docs/engine/README.md` — там карта документации и принципы архитектуры.

| Файл | О чём |
|---|---|
| `getting-started.md` | новая игра на движке с нуля: bootstrap, сцены, ассеты |
| `core.md` | Engine, GameLoop, Tween, GameState, StateMachine, Settings |
| `render.md` | Renderer, pixel-perfect, Camera, IsoDepthLayer, частицы |
| `input.md` | действия, клавиатура, мышь, тач, геймпад |
| `maps.md` | изометрия, A*, формат карт (JSON+RLE), импорт из Tiled |
| `ui-and-dialogue.md` | UI-кит, шрифт VT323, DialogueRunner и формат графов |
| `assets-audio-save.md` | ассеты и атласы, аудио-шины, сейвы |
| `art-pipeline.md` | генератор арта, палитра, замена на рисованный |
| `recipes.md` | «как сделать»: локация, NPC, квест, анимация, частицы |

Правила: игра использует только публичный API `@rpg/engine`; движок ничего не знает о жанре игры; тёплый цвет в арте — только жизнь (цветы, бронза, огонь).

## Мир

Сорок лет назад Северные Печи горели девять дней — и пепел накрыл край. Пепел гасит звук
и цвет; против него работает только резонанс. Звонари прозванивают дороги, лунные
колокольчики пьют пепел из земли. Полная библия — в `docs/world.md`.

Первый акт: выжженные луга, Серые пруды, старейшина Ирвин и безгласная торговка Мила.