This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Всегда общайся с пользователем на русском.
npm install # установка зависимостей (npm workspaces) npm run dev # Vite dev-сервер с HMR (apps/game) npm run build # прод-сборка игры npm test # все тесты (Vitest) npx vitest run packages/engine/src/map/__tests__/pathfinding.test.ts # один файл тестов npm run typecheck # tsc --noEmit для обоих пакетов
Dev-сервер по умолчанию на http://localhost:5173; для отдельного порта: npm run dev -- --port 5199.
Monorepo из двух workspace-пакетов с жёсткой границей API:
packages/engine (@rpg/engine) — жанронезависимый движок-библиотека. Не должен знать ничего о RPG-контенте (квесты, предметы, сюжет). Вся игра импортирует движок только через packages/engine/src/index.ts — другие внутренние пути движка импортировать нельзя.apps/game (@rpg/game) — сама RPG: контент, сцены, геймплейные системы.packages/engine/src/core, scene, input, render). Pixi используется как низкоуровневый слой отрисовки спрайтов.Game.VIRTUAL_W/H), канвас растягивается целым числом (pickScale в main.ts) с image-rendering: pixelated, roundPixels: true, antialias: false. При изменении разрешения следи, чтобы масштаб всегда оставался целым.GameLoop (60 Гц update) + аккумулятор с ограничением 5 шагов/кадр; InputManager.endTick() очищает «just pressed» в конце каждого тика — не вызывать update вне цикла движка.isoToScreen/screenToIsoExact в math/iso.ts — источник истины для позиций. Тайловые координаты всюду именуются {x, y} (как Grid в pathfinding), экранные тоже {x, y}.SaveManager принимает StorageLike (в браузере — localStorage), чтобы тесты работали без DOM. Чистую математику (iso, A*, ECS) держи без зависимостей от Pixi — она тестируется в Vitest без браузера.apps/game/src/data/ — весь контент: карта (map.ts, id тайлов + генератор), диалоги (dialogues.ts), NPC (npcs.ts).apps/game/src/scenes/ — BootScene → MenuScene → LocationScene; сцены меняются через SceneManager.replace/push/pop.apps/game/src/systems/ — геймплейные механики: движение героя (A* + плавный путь), диалоги с флагами сюжета.DialogueSystem.flags и сохраняются в автосейв autosave (Esc в локации).Graphics-ом в коде (пока нет арта); настоящий пиксель-арт в будущем кладётся в apps/game/assets/.