@root root authored 10 hours ago
apps/ game Батч 3: взаимодействие с миром шире (знаки, моты, колокол) 10 hours ago
docs Батч 3: взаимодействие с миром шире (знаки, моты, колокол) 10 hours ago
packages/ engine Батч 0: агентный набор инструментов (мост, валидация, CLI, доки) 11 hours ago
tools Батч 3: взаимодействие с миром шире (знаки, моты, колокол) 10 hours ago
.gitignore Скелет проекта: свой движок + изометрическая RPG 18 hours ago
CLAUDE.md Батч 2: интерьеры и интерактивные объекты 10 hours ago
README.md доки: docs/demo.md (витрина среза), обновление docs/engine, README, CLAUDE 15 hours ago
package-lock.json Фиксы рендера, камера с границами, смоук-тест 17 hours ago
package.json Батч 0: агентный набор инструментов (мост, валидация, CLI, доки) 11 hours ago
tsconfig.base.json Скелет проекта: свой движок + изометрическая RPG 18 hours ago
README.md

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

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

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

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

npm install
npm run dev                          # http://localhost:5173
npm test                             # 158 юнит-тестов (движок + игра)
npm run build                        # прод-сборка
npm run art                          # перегенерация пиксель-арта
npm run maps                         # перегенерация карт-файлов (.map)

Структура

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

Правила: игра использует только публичный 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.

Первый акт — вертикальный срез-витрина движка: выжженные луга, Серые пруды, старейшина Ирвин, безгласная торговка Мила, квест «Три цветка» и бой с пепельными сгустками в реальном времени (удар-конус, резонанс, звук как ресурс). Управление: клик — идти/атаковать, Space — удар (удержать — резонанс), I — сумка, F3 — отладка, Esc — меню/сейв.