# Synthesis — Implementation Plan ## Overview **Target:** Vertical Slice — один полный ран через один биом (Каталитические Пустоши) **Approach:** Каждая фаза даёт тестируемый, играбельный инкремент **Method:** Полностью агентная разработка (AI пишет код, проверяет через Playwright и vitest) --- ## Phase 0: Project Setup ✅ **Цель:** Собираемый, запускаемый проект с dev-инструментарием | # | Задача | Статус | |---|--------|--------| | 0.1 | Инициализация npm + зависимости (Phaser, bitECS, Vite, Vitest) | ✅ | | 0.2 | TypeScript strict конфигурация | ✅ | | 0.3 | Vite конфигурация (HMR, chunk splitting) | ✅ | | 0.4 | Phaser game config (1280x720, pixel-art, arcade physics) | ✅ | | 0.5 | BootScene с титульным экраном | ✅ | | 0.6 | Cursor rules (6 правил под предметную область) | ✅ | | 0.7 | Implementation plan + progress tracking | ✅ | **Критерий готовности:** - `npm run dev` запускает dev-сервер - Титульный экран виден на localhost:5173 - TypeScript компилируется без ошибок --- ## Phase 1: Chemistry Engine **Цель:** Ядро химической системы — элементы, реакции, соединения **Зависимости:** Phase 0 **Это чистая логика — идеальна для TDD (vitest)** | # | Задача | Описание | |---|--------|----------| | 1.1 | Типы и интерфейсы | `Element`, `Reaction`, `Compound`, `ReactionResult`, `ElementCategory`, `MatterState` | | 1.2 | Данные: 20 элементов | H, He, C, N, O, Na, Mg, Al, Si, P, S, Cl, K, Ca, Fe, Cu, Zn, Sn, Hg, Au — из реальной таблицы Менделеева | | 1.3 | Реестр элементов | Загрузка из JSON, lookup по symbol/atomicNumber, валидация | | 1.4 | Движок реакций | Ввод: элементы + условия → вывод: продукт ИЛИ причина неудачи. Lookup по отсортированному ключу реагентов (O(1)) | | 1.5 | Данные: 50 реакций | Базовые: горение, окисление, кислотно-щелочные, синтез солей, органика. Каждая с описанием науки | | 1.6 | Соединения | Свойства: формула, название, игровой эффект, состояние, масса. Реестр с lookup | | 1.7 | Тесты | Загрузка элементов, lookup, все 50 реакций (корректные продукты), невалидные реакции (корректные причины отказа) | **Критерий готовности:** - `npm run test:run` — все тесты химии проходят - Na + Cl → NaCl, H + H + O → H₂O, и т.д. - Невалидная реакция возвращает человекочитаемую причину - Все данные элементов соответствуют реальной таблице Менделеева --- ## Phase 2: ECS Foundation **Цель:** Работающая ECS с мостом к Phaser-рендерингу **Зависимости:** Phase 0 | # | Задача | Описание | |---|--------|----------| | 2.1 | World setup | bitECS world + контейнер времени (delta, elapsed, tick) | | 2.2 | Core components | `Position`, `Velocity`, `SpriteRef`, `Health`, `ChemicalComposition` | | 2.3 | Movement system | Обновляет Position по Velocity * delta | | 2.4 | Phaser ↔ bitECS bridge | Синхронизация: ECS Position → Phaser sprite.x/y. Создание/удаление спрайтов по enterQuery/exitQuery | | 2.5 | Entity factory | `createEntity(world, components)` → eid. Фабрика для типовых сущностей | | 2.6 | Health system | Урон, лечение, смерть при health ≤ 0 | | 2.7 | Визуальный тест | 10-20 цветных кругов двигаются по экрану — проверить скриншотом | **Критерий готовности:** - Сущности рендерятся как спрайты/графика - Движение работает (видно на скриншоте) - Удаление сущности убирает спрайт с экрана --- ## Phase 3: World Generation **Цель:** Процедурный тайлмап для Каталитических Пустошей **Зависимости:** Phase 2 | # | Задача | Описание | |---|--------|----------| | 3.1 | Tilemap система | Phaser Tilemap из data-driven определений тайлов | | 3.2 | Biome data | `biomes.json` — Каталитические Пустоши: типы тайлов, распределение, цвета | | 3.3 | Noise генерация | simplex-noise для terrain. Высота → тип тайла. Seed-based для воспроизводимости | | 3.4 | Типы тайлов | Выжженная земля, кислотные озёра, кристаллические формации, гейзеры, минеральные жилы | | 3.5 | Размещение ресурсов | Руды/минералы на основе параметров биома и noise-карты | | 3.6 | Камера | Следование за игроком, zoom (колесо мыши), clamp по границам карты | | 3.7 | Миникарта | Упрощённая мини-карта в углу (цветные пиксели по тайлам) | **Критерий готовности:** - Карта генерируется с разнообразным рельефом - Разные тайлы визуально отличимы - Камера плавно следует за «игроком» - Каждый запуск даёт уникальную карту --- ## Phase 4: Player Systems **Цель:** Играбельный персонаж: движение, сбор, крафт, бросок **Зависимости:** Phase 2, Phase 1, Phase 3 | # | Задача | Описание | |---|--------|----------| | 4.1 | Player entity + контроллер | WASD движение, мышь — направление/взаимодействие | | 4.2 | Инвентарь | Весовой (атомные массы!), слоты, stack одинаковых элементов | | 4.3 | Сбор элементов | Взаимодействие с объектами мира (руда, озеро, растение) → элемент в инвентарь | | 4.4 | Крафтинг | Выбрать элементы → химический движок → результат/ошибка → в инвентарь | | 4.5 | Система броска | ПКМ — запуск элемента/соединения как снаряда. Arcade physics для полёта | | 4.6 | Quick slots | Клавиши 1-2-3-4 для быстрого переключения подготовленных предметов | | 4.7 | HUD | UIScene поверх GameScene: кольцо здоровья, полоска инвентаря, инфо об элементе при наведении | **Критерий готовности:** - Игрок ходит по карте WASD - Подбирает элементы с земли - Комбинирует на верстаке — видит результат или причину неудачи - Бросает натрий в воду — экзотермическая реакция - HUD показывает здоровье, инвентарь, quick slots --- ## Phase 5: Creatures & Ecology **Цель:** Живая экосистема в Каталитических Пустошах **Зависимости:** Phase 2, Phase 3 | # | Задача | Описание | |---|--------|----------| | 5.1 | Данные существ | 3 типа: Кристаллиды (медленные, прочные), Ацидофилы (кислотные), Реагенты (парные, взрывоопасные) | | 5.2 | AI поведение | FSM: idle → wander → feed → flee → attack. Переходы по условиям (голод, угроза, территория) | | 5.3 | Метаболизм | Что ест, что выделяет. Ацидофилы едят минералы → выделяют кислоту | | 5.4 | Популяционная динамика | Упрощённые Лотка-Вольтерра: рождаемость, смертность, хищничество | | 5.5 | Жизненный цикл | Яйцо → юность → зрелость → старение → смерть → разложение (→ нутриенты) | | 5.6 | Взаимодействие | Наблюдение (кодекс), атака, базовое приручение | | 5.7 | Тест экосистемы | Запустить без игрока: популяции должны колебаться, не вымирать полностью | **Критерий готовности:** - Существа спавнятся, двигаются, едят, размножаются, умирают - Популяция без вмешательства достигает динамического равновесия - Истребление хищников → перенаселение травоядных → коллапс (эмерджентно!) - Существа реагируют на игрока --- ## Phase 6: Run Cycle **Цель:** Полный рогалик-цикл: рождение → смерть → перерождение **Зависимости:** Phase 3, Phase 4, Phase 1 | # | Задача | Описание | |---|--------|----------| | 6.1 | Споровая Колыбель | Сцена пробуждения: выбор школы (Алхимик для начала) | | 6.2 | Триггер смерти | Health ≤ 0 → запуск death sequence | | 6.3 | Анимация смерти | Тело Адепта распадается на элементы (реальный состав: 65% O, 18% C, 10% H...) | | 6.4 | «Момент между» | WebGL fractal shader — психоделическая визуализация перерождения | | 6.5 | Мета-прогрессия | Кодекс (открытые элементы/реакции), споры (валюта), persistence (IndexedDB) | | 6.6 | Фазы рана | Пробуждение → Исследование → Эскалация → Кризис → Развязка. Таймер/прогрессия | | 6.7 | Эскалация | Нарастающая энтропия: нестабильные реакции, агрессивные существа | | 6.8 | Кризис: Химическая Чума | Цепная реакция отравляет атмосферу. Нужна химия для нейтрализации | | 6.9 | Школа: Алхимик | Стартовый набор (H, O, C, Na, S, Fe), принцип (химическое равновесие) | **Критерий готовности:** - Полный цикл: spawn → explore → gather → craft → die → fractal → respawn - Кодекс сохраняется между ранами - Споры начисляются за открытия - Эскалация ощутимо меняет поведение мира - Кризис запускается и решается через химию - Fractal shader работает (даже простой вариант) --- ## Phase 7: Mycelium **Цель:** Подземная сеть, связывающая раны **Зависимости:** Phase 6 | # | Задача | Описание | |---|--------|----------| | 7.1 | Граф Мицелия | Структура данных (ngraph): узлы, рёбра, метаданные | | 7.2 | Грибные узлы | Точки на карте, где Мицелий выходит на поверхность. Визуально — светящиеся споты | | 7.3 | Запись знаний | Депозит открытий в Мицелий для будущих ранов | | 7.4 | Извлечение знаний | «Вспышки» — фрагменты воспоминаний из прошлых ранов | | 7.5 | Микоз | Визуальное искажение при долгом контакте с узлом. Открывает скрытую информацию | | 7.6 | Интеграция с Колыбелью | Стартовые бонусы за споры | **Критерий готовности:** - Узлы видны на карте - Взаимодействие с узлом показывает память прошлого рана - Знание из рана N появляется как подсказка в ране N+1 - Микоз-эффект визуально работает - Споры тратятся на бонусы при старте рана --- ## Phase 8: First Archont — Ouroboros **Цель:** Первый босс-бой (головоломка, не рефлексы) **Зависимости:** Phase 5, Phase 6 | # | Задача | Описание | |---|--------|----------| | 8.1 | Уроборос entity | Змей, поедающий хвост. Циклические фазы атаки | | 8.2 | Паттерн-механика | Бой = петля с нарастающей сложностью. Игрок определяет паттерн и ломает его в нужный момент | | 8.3 | Арена | Специальная генерируемая комната на подступах к Сердцу Синтеза | | 8.4 | Множественные решения | Химическое, физическое, наблюдательное — минимум 3 пути к победе | | 8.5 | Награда | Архонтова Память — лор-фрагмент в Кодексе, спорная щедрая награда | **Критерий готовности:** - Бой имеет узнаваемый повторяющийся паттерн - Паттерн усложняется с каждым циклом - Минимум 2 валидных стратегии победы работают - Победа добавляет лор в Кодекс --- ## Vertical Slice = Phase 0–8 После Phase 8 игра содержит: - ✅ Один полный биом (Каталитические Пустоши) - ✅ Работающая химия (~20 элементов, ~50 реакций) - ✅ Живая экосистема (3 вида существ с динамикой популяций) - ✅ Полный цикл рана (рождение → смерть → перерождение) - ✅ Мета-прогрессия между ранами (Кодекс, споры) - ✅ Мицелий (память между ранами) - ✅ Один босс (Уроборос) - ✅ Фрактальная сцена смерти - ✅ Одна школа (Алхимик) - ✅ Один тип кризиса (Химическая Чума) Это — вертикальный срез, описанный в GDD Section X. --- ## Beyond Vertical Slice (Post-MVP) | Фаза | Содержание | |-------|-----------| | Phase 9 | +2 биома (Кинетические Горы, Вердантовые Леса), +20 элементов, +100 реакций | | Phase 10 | +3 школы (Механик, Натуралист, Навигатор), принципы физики и биологии | | Phase 11 | Великий цикл (7 ранов): следы между ранами, Великое Обновление | | Phase 12 | +3 Архонта (Спора Прайма, Энтропа, Когнитон) | | Phase 13 | Оставшиеся биомы + школы + существа | | Phase 14 | Сердце Синтеза (финальный регион), нарратив | | Phase 15 | Аудио: лупы, эмбиент, циклические саундскейпы | | Phase 16 | Полировка: шейдеры, частицы, UI/UX, accessibility |