45 KiB
⚔️ Хроники Эйдона — Изометрическая RPG
Браузерная изометрическая RPG, написанная на чистом JavaScript + HTML5 Canvas. Без фреймворков, без зависимостей — только нативный веб. Полная игра с боевой системой, прогрессией персонажа, крафтом, зачарованиями, сюжетными квестами, лором и финальным боссом.
Содержание
- Технологии
- Архитектура
- Управление
- Классы персонажей
- Боевая система
- Заклинания
- Дерево перков
- Локации и мир
- Враги и боссы
- NPC и диалоги
- Квесты
- Инвентарь и экипировка
- Сеты экипировки
- Зачарования
- Крафт и алхимия
- Магазин
- Журнал лора
- Достижения
- Бестиарий
- Аудиосистема
- Система сохранений
- Визуальные эффекты
- Статистика контента
Технологии
| Технология | Применение |
|---|---|
| HTML5 Canvas | Изометрический рендеринг мира и персонажей |
| Web Audio API | Процедурная музыка и SFX без аудиофайлов |
| Vanilla JS (ES6+) | Вся игровая логика |
| CSS3 | UI панели, анимации, HUD |
| localStorage | Сохранение прогресса (3 слота) |
| File System Access API | Экспорт сохранений в JSON-файлы |
Файловая структура:
├── index.html — разметка UI (HUD, панели, боевой экран, меню)
├── style.css — стили всего интерфейса
├── game.js — основная игровая логика, ИИ боссов, квесты
├── renderer.js — изометрический рендерер, портреты, частицы
├── rpg.js — механики RPG: классы, заклинания, перки, формулы
├── audio.js — Web Audio API: SFX + процедурная музыка
├── saves.js — система сохранений (localStorage + JSON-файлы)
├── data-loader.js — загрузчик JSON-данных игры
├── menu.js — стартовый экран и выбор класса
└── data/
├── world.json — локации, спавны, NPC, декорации, погода
├── enemies.json — все типы врагов, боссов, уникальный лут
├── quests.json — все квесты с условиями и наградами
├── lore.json — записки лора с координатами на карте
├── items/
│ ├── loot.json — все собираемые предметы и материалы
│ ├── shop.json — ассортимент магазина
│ └── recipes.json — рецепты крафта
└── story/
└── story_quests.json — сюжетные квесты с диалогами
Архитектура
Игра использует паттерн «объект-синглтон» для каждого модуля:
Game— главный объект: игровой цикл, состояние, ввод, переходы между локациями, система квестов, достижений, бойRenderer— изометрический рендерер с камерой, системой глубины (depth sorting), частицами, плавающим текстом, тряской экранаRPG— все формулы и механики: урон, защита, крит, заклинания, перки, лут, крафт, зачарование, прокачкаAudio— процедурная музыка черезOscillatorNode+GainNode, 9 тем и 7 типов SFXSaves— сериализация/десериализация состояния игрока, поддержкаSetчерез Array при JSONDataLoader— асинхронная загрузка всех JSON-файлов перед стартом
Управление
| Клавиша | Действие |
|---|---|
WASD / ↑↓←→ |
Движение по карте |
I |
Инвентарь |
Q |
Журнал квестов |
T |
Дерево перков |
C |
Крафтинг |
B |
Бестиарий |
E |
Зачарование |
L |
Журнал лора |
H |
Достижения |
M |
Карта мира / быстрое путешествие |
P |
Сохранить |
1 |
Атака (в бою) |
2 |
Использовать предмет (в бою) |
3 |
Бежать (в бою) |
2–9 |
Заклинания (в бою, если изучены) |
ESC |
Закрыть все панели |
Также поддерживается клик мышью по соседней клетке для перемещения.
Классы персонажей
В игре 7 классов с уникальными стартовыми параметрами, бонусами за уровень, заклинаниями и деревьями перков.
| Класс | HP | MP | STR | DEF | MAG | SPD | Описание |
|---|---|---|---|---|---|---|---|
| ⚔️ Воин | 130 | 30 | 14 | 10 | 4 | 7 | Физический боец. Высокий HP и урон, низкая магия |
| 🔮 Маг | 65 | 110 | 4 | 4 | 16 | 6 | Маг с мощными заклинаниями, хрупкий в ближнем бою |
| 🏹 Лучник | 90 | 55 | 10 | 6 | 6 | 13 | Быстрый дальний боец. Максимальная скорость |
| 🛡️ Паладин | 115 | 65 | 10 | 13 | 8 | 6 | Защитник с исцелением и святым уроном |
| 💀 Некромант | 75 | 95 | 5 | 5 | 15 | 7 | Тёмный маг, похищающий жизнь и накладывающий проклятия |
| 🪓 Берсерк | 150 | 20 | 18 | 6 | 2 | 10 | Максимальная сила и HP, почти нет магии |
| 🌿 Друид | 85 | 85 | 7 | 7 | 11 | 9 | Универсальный класс с природной магией |
Бонусы за каждый уровень (HP / MP / STR / DEF / MAG / SPD):
- Воин: +15 / +3 / +3 / +2 / +1 / +1
- Маг: +5 / +15 / +1 / +1 / +3 / +1
- Лучник: +8 / +5 / +2 / +1 / +1 / +3
- Паладин: +12 / +8 / +2 / +3 / +2 / +1
- Некромант: +6 / +12 / +1 / +1 / +4 / +1
- Берсерк: +20 / +2 / +4 / +1 / +1 / +1
- Друид: +9 / +9 / +2 / +2 / +2 / +1
Стартовое снаряжение выдаётся автоматически по классу: оружие, реагенты, базовая броня.
Боевая система
Пошаговые бои. Порядок: ход игрока → ход врага.
Ход игрока
- Атака — базовый урон =
STR + weapon.damage, снижается защитой врага. Шанс крит-удара (×1.5–3.0 урон) зависит от перков. - Заклинание — урон/лечение по формулам с учётом
MAG. ТратитMP. - Предмет — использовать зелье из инвентаря (лечебное или боевое).
- Бежать — 50% шанс успешного побега.
Ход врага
Враг атакует по формуле: enemy.dmg - player.DEF (минимум 1). Поведение зависит от AI-типа.
Типы урона и слабости
| Тип | Иконка | Усиление при слабости |
|---|---|---|
| Физический | ⚔️ | ×1.5 |
| Огонь | 🔥 | ×2.0 |
| Лёд | ❄️ | ×2.0 |
| Святость | ✨ | ×2.0 |
| Магия | 🔮 | ×1.8 |
| Яд | ☠️ | — (DoT) |
Статус-эффекты (DoT)
- Яд (poison) — наносит урон каждый ход, несколько ходов
- Горение (burn) — то же, но с огненным уроном
- Заморозка (freeze) — пропуск хода
- Оглушение (stunned) — пропуск одного хода
Специальные механики
- Неуязвимость (
_invincible) — атаки полностью блокируются (используется некоторыми боссами) - Уклонение (shadow assassin, перк) — 35% шанс полностью уклониться
- Фазирование (призрак) — следующая атака игрока проходит насквозь
- Слепота (летучая мышь) — следующий удар игрока промахивается
- Вампиризм (перки, Корвус, Мрак) — восстанавливает HP от нанесённого урона
- Смертный рывок (паладин перк) — один раз за бой выжить с 1 HP
Заклинания
Всего 18 заклинаний. Некоторые доступны сразу по классу, остальные выбираются при повышении уровня или находятся в свитках.
| Заклинание | MP | Тип | Эффект |
|---|---|---|---|
| Огненный шар | 15 | 🔥 Огонь | 28 урона |
| Ледяная стрела | 12 | ❄️ Лёд | 20 урона + заморозка |
| Молния | 20 | ⚡ Электро | 35 урона |
| Исцеление | 10 | 💚 Лечение | +35 HP |
| Священный огонь | 22 | ✨ Святость | 30 урона |
| Похищение жизни | 18 | 💜 Тьма | 15 урона + 12 HP себе |
| Мощный удар | 12 | ⚔️ Физика | ×2.2 урон |
| Облако яда | 20 | ☠️ Яд | DoT яд на 4 хода |
| Огненный шторм | 30 | 🔥 Огонь | 55 урона (AoE) |
| Метель | 35 | ❄️ Лёд | 50 урона + заморозка |
| Цепная молния | 28 | ⚡ Электро | 45 урона |
| Берсеркерство | 8 | 💪 Бафф | STR ×1.8 на 8 сек |
| Каменная кожа | 20 | 🛡️ Бафф | DEF ×2 на 12 сек |
| Теневой шаг | 15 | 👁️ Бафф | SPD ×2 на 5 сек |
| Проклятие | 15 | 💀 Дебафф | ATK врага ×0.7 |
| Мощное исцеление | 25 | 💚 Лечение | +75 HP |
| Дождь стрел | 22 | 🏹 Физика | 40 урона |
| Землетрясение | 40 | 🌍 Физика | 60 урона |
| Вихрь | 18 | ⚔️ Физика | 25 урона |
| Воскрешение | 50 | 💚 Лечение | Полное восстановление HP |
Дерево перков
Каждый класс имеет 4 ветви по 3 перка (Tier 1–3). Перки открываются последовательно внутри ветви. За каждый уровень — +1 очко таланта.
Примеры перков по классам
Воин — Ветви: Мощь, Броня, Выживание, Скорость
- Сокрушающий удар T1: +15% крит-урон
- Несокрушимый T2: +20% физической защиты
- Кровавая ярость T3: вампиризм 15% от урона
Маг — Ветви: Арканум, Огонь, Лёд, Внутренняя сила
- Мастер заклинаний T1: -20% стоимость MP
- Огненное сердце T2: +30% урон огнём
- Ледяная кровь T3: иммунитет к заморозке
Лучник — Ветви: Меткость, Выживание, Яд, Скорость
- Острый глаз T1: +25% крит-шанс
- Яд на стрелах T2: удары ядовиты
- Ураганный залп T3: шанс двойного удара
Паладин — Ветви: Святость, Щит, Благодать, Крестовый поход
- Аура защиты T1: +10 к DEF
- Смертный рывок T2: выжить с 1 HP (1×/бой)
- Святой гнев T3: +50% урон нежити
Некромант — Ветви: Тьма, Нежить, Проклятие, Душа
- Тёмный пакт T1: +20% урон заклинаниями
- Личи T2: восстановление 5 MP при убийстве
- Власть над тьмой T3: шанс оглушить врага
Берсерк — Ветви: Ярость, Кровь, Жестокость, Буйство
- Боевой транс T1: +20% STR при HP < 50%
- Кровожадность T2: +8% вампиризма
- Неостановимый T3: иммунитет к оглушению
Друид — Ветви: Природа, Зверь, Земля, Возрождение
- Слияние с природой T1: регенерация 5 HP/ход
- Зов зверя T2: +15% к скорости и уклонению
- Перерождение T3: воскреснуть с 30% HP (1×/бой)
Локации и мир
Изометрическая сетка 15×15 тайлов. Камера следует за игроком со сглаживанием.
| Локация | Тип | Погода | Особенности |
|---|---|---|---|
| 🏘️ Деревня | Безопасная | Ясно, дождь | Стартовая. Торговец, Целитель, Стражник, Старик |
| 🌲 Лес | Опасная | Дождь, туман | Деревья, камни. Гоблины, волки, Зубастый |
| 🏚️ Подземелье | Опасная | Туман | Колонны, факелы. Скелеты, зомби, Корвус |
| 🪨 Пещера | Опасная | Туман | Кристаллы. Летучие мыши, орки, Дракон, Колосс |
| ⛰️ Горы | Опасная | Снег | Скалы. Йети, Голем, Ледяной Великан Скарр |
| 🌿 Болото | Опасная | Туман, дождь | Топи. Пауки, Ведьма, Лич, Гидра |
| 🏛️ Руины | Опасная | Туман | Столбы, факелы. Призраки, Виверны, Призрак Ирис, портал в Бездну |
| 🌑 Бездна | Опасная | Туман (всегда) | Финальная локация. Тени, Нежить, Мрак Безликий |
Система погоды
- Дождь (rain) — анимированные капли, снижает яркость
- Снег (snow) — кружащиеся снежинки
- Туман (fog) — анимированный туман поверх карты
- Ясно / Солнечно — нормальная видимость
День и ночь
Непрерывный цикл дня и ночи (настраиваемая скорость). Ночью карта темнее, источники света (факелы, кристаллы) отбрасывают динамические ореолы.
Система порталов
Порталы расположены на краях карт. Обозначены иконкой ⬛. Наступить на портал — мгновенный переход в локацию. Бездна доступна только из Руин.
Враги и боссы
Обычные враги (15 типов)
| Враг | HP | DMG | DEF | EXP | Слабость | Сопр. | ИИ |
|---|---|---|---|---|---|---|---|
| 👺 Гоблин | 32 | 8 | 2 | 20 | Огонь | — | Трус (паникует при низком HP) |
| 🧌 Орк | 55 | 13 | 4 | 40 | Магия | Физика | Берсерк (+50% урон при HP<30%) |
| 💀 Скелет | 42 | 11 | 6 | 30 | Святость | Яд | Нейтральный |
| 🟢 Слизень | 22 | 5 | 0 | 10 | Огонь | Физика | Кислота (DoT при ударе) |
| 🗡️ Разбойник | 38 | 10 | 3 | 25 | Святость | — | Кража (крадёт золото) |
| 🐺 Волк | 30 | 9 | 2 | 18 | Огонь | — | Боевой клич (буст урона) |
| 🕷️ Паук | 28 | 12 | 1 | 22 | Огонь | Яд | Яд (отравляет 40%) |
| 🧟 Зомби | 48 | 8 | 8 | 28 | Огонь | Яд | Разложение (снижает DEF) |
| 🦇 Летучая мышь | 18 | 7 | 0 | 12 | Святость | — | Рой (слепота) |
| 👹 Тролль | 110 | 20 | 8 | 90 | Огонь | Физика | Регенерация (+5% HP/ход) |
| 🏔️ Йети | 95 | 18 | 10 | 80 | Огонь | Лёд | Берсерк (+50% урон при HP<30%) |
| 🧙 Ведьма | 60 | 22 | 3 | 70 | Святость | Магия | Исцеление (55% при HP<45%) |
| 🗿 Голем | 130 | 16 | 20 | 100 | Магия | Физика | Оглушение (28% шанс) |
| 👻 Призрак | 55 | 20 | 0 | 80 | Святость | Физика | Фазирование (эфирный план) |
| 🐉 Виверна | 95 | 26 | 7 | 140 | Лёд | Огонь | Пике (+55% урон при HP<60%) |
Боссы (2)
| Босс | HP | DMG | DEF | EXP | Слабость | ИИ |
|---|---|---|---|---|---|---|
| 🐲 Дракон | 220 | 32 | 16 | 220 | Лёд | Ярость (двойной удар при HP<40%) |
| ☠️ Лич | 140 | 38 | 10 | 200 | Святость | Призыв скелета + саморегенерация |
Мини-боссы (6) — с боссбаром и уникальным лутом
| Мини-босс | Локация | HP | EXP | Механика | Уникальный лут |
|---|---|---|---|---|---|
| 👑 Зубастый | Лес | 145 | 280 | Боевой клич +30% урон, призыв гоблина | Корона Зубастого |
| 💜 Корвус Некромант | Подземелье | 180 | 420 | Призыв зомби, филактерий (2 хода неуязв.), вампиризм 25% | Посох Корвуса |
| 🐍 Болотная Гидра | Болото | 210 | 360 | Регенерация 7%/ход, 2–3 головы (доп. атаки) | Клык Гидры |
| 🧊 Ледяной Великан Скарр | Горы | 200 | 390 | Метель (оглушение + бонус урон), заморозка | Топор Великана |
| 🗿 Каменный Колосс | Пещера | 260 | 440 | Непробиваемая броня каждые 3 хода, сокрушение ×2.5 | Щит Колосса |
| 🗡️ Призрак Ирис | Руины | 160 | 410 | Уклонение 35%, удар из тени ×3, яд клинка | Клинок Ирис |
Финальный мега-босс
🌑 Мрак Безликий (Бездна)
| Параметр | Значение |
|---|---|
| HP | 700 |
| DMG | 55 |
| DEF | 22 |
| EXP | 3 000 |
| Gold | 800 |
| Слабость | Святость |
| Сопротивление | Магия |
Три фазы боя:
- Фаза 1 (HP < 70%) — призывает Призрака + Виверну
- Фаза 2 (HP < 50%) — принимает истинную форму (+35% DMG), становится неуязвим на 1 ход
- Фаза 3 (HP < 30%) — вампиризм 40% от урона + логируется «Мрак поглощает всё»
Дополнительно: 25% шанс случайного дебаффа каждый ход (яд / горение / оглушение)
Уникальный лут: 🌑 Корона Бездны — DEF+25, HP+80, MAG+15, STR+10 (Легендарная)
Поведение ИИ (17 типов)
| ИИ | Поведение |
|---|---|
coward |
Паника при HP<20%, пропускает ход |
berserk |
+50% урон при HP<30% |
regen |
+5% HP регенерация каждый ход |
hex |
Самоисцеление при HP<45% (55% шанс) |
summon |
Призыв скелета при HP<50% |
warcry |
+30% урон + призыв гоблина при HP<60% |
necroboss |
Призыв зомби + филактерий (2 хода неуязвимости) + вампиризм |
hydra |
Регенерация + доп. атаки из голов (2 и 3 при HP<50%/30%) |
frost |
Метель (оглушение) + заморозка |
colossus |
Каменная броня каждые 3 хода + сокрушение |
shadow |
Уклонение 35% + удар из тени ×3 + яд |
fury |
Двойной удар при HP<40% |
acid |
Кислота (горение) 35% |
stun |
Оглушение 28% |
venom |
Яд 40% |
howl |
Усиление следующей атаки при HP<50% |
steal |
Кража золота 20% |
phase |
Фазирование (следующая атака промажет) |
dive |
Пике +55% урон при HP<60% |
decay |
Снижение DEF игрока |
swarm |
Слепота (следующая атака промажет) |
chaos |
3-фазная система + случайные дебаффы |
NPC и диалоги
Разветвлённая диалоговая система с историей выборов, наградами и платными опциями.
| NPC | Локация | Функция |
|---|---|---|
| 🔵 Торговец | Деревня | Магазин с 18 предметами |
| 🔴 Стражник | Деревня | Квесты + советы о локациях (платный совет за 15 💰) |
| 🟢 Целитель | Деревня | Полное исцеление HP+MP за 20 💰 |
| ⚪ Старик | Деревня | Лор мира + благословение за 50 💰 |
| 🟩 Эльф | Лес | Квесты + информация об угрозах леса |
| 🟣 Шаман | Болото | Квесты + исцеление от яда |
| 🩵 Призрак | Подземелье | Квесты + тайна победы над Личем |
| 💙 Страж | Руины | Квесты + история замка |
Диалоговые ветки поддерживают:
- Платные опции (вычитают золото)
- Награды (опыт, предметы, баффы)
- Многоуровневые ветки (
next:переходы) - Отображение квест-маркеров над головами NPC (❗ новый квест / ❓ сдать / ✓ выполнен)
Квесты
26 квестов с цепочкой прогресса
Квесты открываются последовательно по мере выполнения предыдущих (система цепочки). Одновременно активно до 3 ближайших незавершённых квестов.
Квесты на убийство
| Квест | Цель | EXP | Золото |
|---|---|---|---|
| Первая кровь | 3 гоблина | 50 | 20 |
| Охота на волков | 3 волка | 60 | 30 |
| Зачистка леса | 5 врагов | 100 | 40 |
| Проблема слизней | 3 слизня | 45 | 25 |
| Убрать разбойников | 4 разбойника | 80 | 60 |
| Армия скелетов | 4 скелета | 120 | 60 |
| Пауки болота | 5 пауков | 90 | 55 |
| Орочья угроза | 5 орков | 150 | 80 |
| Зачистка болота | 3 паука + 2 зомби | 130 | 70 |
| Бой с троллем | 1 тролль | 200 | 100 |
| Убийца дракона | 1 дракон | 500 | 300 |
| Конец некромантии | 1 Лич | 450 | 250 |
| Снежный зверь | 1 йети | 160 | 100 |
| Охота на виверн | 2 виверны | 280 | 160 |
| Упокоить призраков | 3 призрака | 200 | 100 |
| Король Гоблинов | Зубастый | 450 | 250 |
| Конец Корвуса | Корвус | 550 | 300 |
| Гидра болот | Гидра | 480 | 280 |
| Ледяной Великан | Скарр | 510 | 290 |
| Каменный Колосс | Колосс | 560 | 310 |
| Призрак Ирис | Ирис | 530 | 295 |
| Конец Тьмы | Мрак Безликий | 3000 | 500 |
Квесты на посещение
| Квест | Цель | EXP | Золото |
|---|---|---|---|
| Вход в подземелье | Найти подземелье | 30 | 15 |
| Вход в пещеру | Найти пещеру | 50 | 20 |
| Исследователь | Посетить Руины | 80 | 40 |
Сюжетные квесты
Многоэтапные квесты от именных NPC. Каждый этап имеет диалог до и после выполнения, отдельные награды за каждый этап.
Инвентарь и экипировка
Слоты экипировки (7)
weapon (оружие) · shield (щит) · head (шлем) · chest (броня) · legs (поножи) · feet (сапоги) · acc (украшение)
Предметы в инвентаре
Каждый предмет имеет:
rarity— Common / Uncommon / Rare / Epic / Legendary (цветная рамка)slot— слот экипировки (если снаряжение)stackable+qty— стекируемые предметы (зелья, материалы)enchant— зачарование (иконка поверх предмета)combatEffect— яд/огонь при ударе (для некоторых оружий)
Drag & Drop
Предметы в инвентаре можно перетаскивать:
- Между ячейками инвентаря — меняет порядок
- На слот экипировки — автоматически надевает (если подходящий тип)
Материалы лута (22 типа)
Трава, ухо гоблина, клык орка, мясо, слизь, кость, волчья шкура, паучий яд, гнилая плоть, крыло летучей мыши, сердце тролля, шкура йети, зелье ведьмы, ядро голема, чешуя дракона, сердце дракона, эссенция призрака, чешуя виверны, яд виверны, чешуя гидры, сердце мороза, сердцевина колосса.
Сеты экипировки
При ношении нескольких предметов одного сета активируются бонусы.
⚔️ Стальной доспех (Steel)
Предметы: стальной меч, кольчуга, стальной щит, шлем воина
- 2 предмета: +4 DEF
- 4 предмета: +6 STR, +4 DEF, +20 HP
✨ Посох чародея (Arcane)
Предметы: посох силы, кольцо мага, посох бури
- 1+ предмет: +5 MAG, +20 MP
💀 Тёмные чары (Shadow)
Предметы: посох черепа, костяной кинжал, ночной клинок
- 2 предмета: +6 MAG, +4 STR
⛪ Доспех паладина (Holy)
Предметы: нагрудник паладина (из магазина или крафта)
- 1 предмет: +5 DEF, +15 HP
- 2 предмета: +8 DEF, +30 HP, +4 MAG
Зачарования
Система улучшения снаряжения с расходными материалами. Открывается клавишей E.
| Зачарование | Эффект | Материал | Золото | Тип предмета |
|---|---|---|---|---|
| 🔥 Огненный | +5 огненного урона | Чешуя дракона | 150 | Оружие |
| ❄️ Ледяной | +4 защиты | Шкура йети | 130 | Броня |
| ✨ Святой | +4 урона | Сердце тролля | 180 | Оружие |
| 💚 Жизненный | +25 HP | 3× Трава | 80 | Любое |
| 🔮 Магический | +4 MAG, +15 MP | 2× Слизь | 120 | Оружие |
| ⚡ Быстрый | +4 STR | 2× Крыло мыши | 100 | Любое |
| 🛡️ Стражника | +6 DEF | 3× Кость | 110 | Броня |
| ☠️ Ядовитый | +4 ядовитого урона | 2× Паучий яд | 70 | Оружие |
Крафт и алхимия
32 рецепта в 5 категориях. Открывается клавишей C.
Зелья
| Рецепт | Ингредиенты | Результат |
|---|---|---|
| Малое зелье HP | Трава + Слизь | +40 HP |
| Среднее зелье HP | 2× Трава + Слизь | +60 HP |
| Большое зелье HP | 3× Трава + Сердце тролля | +100 HP |
| Зелье маны | 2× Крыло мыши + Паучий яд | +50 MP |
| Антидот | Трава + Волчья шкура | Снятие яда |
Алхимия (боевые зелья)
| Рецепт | Ингредиенты | Результат |
|---|---|---|
| Зелье силы | 2× Трава + Клык орка | STR ×1.5 на 45 сек |
| Зелье камня | 2× Шкура + 2× Кость | DEF ×2 на 30 сек |
| Зелье регенерации | 3× Трава + Сердце тролля | +40 HP + рег. |
| Яд-склянка | 2× Паучий яд + Крыло | Яд на врага (3 хода) |
| Огненная колба | Чешуя дракона + Трава | 35 огненного урона |
| Оберег призраков | 2× Эссенция + 2× Трава | +30 HP, защита от нежити |
| Зелье тени | Паучий яд + Крыло мыши | Эликсир уклонения |
| Эликсир могущества | Сердце дракона + Зелье ведьмы | Легендарный усилитель всех стат |
Снаряжение из крафта
| Рецепт | Ингредиенты | Результат |
|---|---|---|
| Чешуйчатая броня | 2× Чешуя + 2× Шкура | DEF+14, редкое |
| Посох Смерти | Посох черепа + Ядро + 3× Ухо | DMG+22, MAG+12, эпик |
| Амулет жизни | Сердце дракона + Сердце тролля | +60 HP, +30 MP, акс. |
| Нагрудник паладина | Ядро + Сердце тролля + 3× Кость | DEF+16, HP+40 |
| Посох бури | Чешуя + Шкура йети + Ядро | DMG+12, MAG+18, эпик |
| Ледяной клинок | Сердце мороза + Чешуя | DMG+25, замораживание |
| Броня Колосса | Сердцевина + Ядро | DEF+22, HP+60, легенд. |
| Кольчуга Гидры | 2× Чешуя Гидры + Чешуя виверны | DEF+18, Яд при ударе |
Руны
| Рецепт | Ингредиенты | Результат |
|---|---|---|
| Руна Силы | Ядро голема + 2× Клык | +5 STR навсегда |
| Руна Магии | Чешуя + Некрономикон | +5 MAG навсегда |
| Руна Защиты | Шкура йети + 3× Кость | +4 DEF навсегда |
Магазин
18 предметов у Торговца в Деревне. Цены указаны в золоте.
| Предмет | Тип | Характеристики | Цена |
|---|---|---|---|
| ⚔️ Стальной меч | Оружие | DMG+12 | 120 |
| 🪓 Боевой топор | Оружие | DMG+14 | 160 |
| 🪄 Посох силы | Оружие | DMG+5, MAG+8 | 140 |
| 🛡️ Кольчуга | Броня | DEF+8 | 110 |
| 🛡️ Стальной щит | Щит | DEF+6 | 90 |
| ⛑️ Шлем воина | Шлем | DEF+4, HP+15 | 95 |
| 👟 Сапоги ловкости | Сапоги | DEF+2, STR+3 | 75 |
| 💍 Кольцо мага | Акс. | MAG+5, MP+20 | 200 |
| 💍 Кольцо защиты | Акс. | DEF+4, armor+3 | 180 |
| 🧪 Среднее зелье HP | Зелье | +60 HP | 35 |
| 🧪 Большое зелье HP | Зелье | +100 HP | 70 |
| 🧪 Среднее зелье MP | Зелье | +40 MP | 45 |
| 📜 Свиток огня | Свиток | Заклинание: Огненный шар | 80 |
| 📜 Свиток исцеления | Свиток | Заклинание: Исцеление | 60 |
| 🗡️ Ночной клинок | Оружие | DMG+18, STR+4 (Легенд.) | 600 |
| 🌩️ Посох бури | Оружие | DMG+8, MAG+14, MP+30 | 550 |
| 🛡️ Нагрудник паладина | Броня | DEF+14, HP+30 | 500 |
| 🧪 Зелье регенерации | Зелье | +40 HP + рег. | 90 |
Журнал лора
16 записок разбросаны по всем локациям. При наступлении на клетку с запиской она автоматически собирается и попадает в журнал (L). В журнале записки сгруппированы по локациям.
| Запись | Локация | Содержание |
|---|---|---|
| Старая записка | Деревня | Предупреждение о драконе |
| Объявление на столбе | Деревня | Розыск Зубастого |
| Эльфийский дневник | Лес | Изменения леса с появлением Шамана |
| Измятый пергамент | Лес | Предупреждение о Ведьме |
| Поваленное дерево | Лес | Указатель на логово Зубастого |
| Надпись на стене | Подземелье | Рисунок Лича, написано кровью |
| Дневник солдата | Подземелье | Записки заточённого бойца |
| Сожжённая страница | Подземелье | О захвате Корвусом подземелья |
| Записка исследователя | Пещера | Кристаллы поглощают магию |
| Рунный камень | Пещера | Загадка об огне и льде |
| Предостережение | Пещера | О Каменном Колоссе |
| Высеченный текст | Горы | История Первого Голема |
| Табличка на перевале | Горы | Предупреждение о Скарре |
| Страница гримуара | Болото | Рецепт зелья тени |
| Записка беглеца | Болото | Слабость Ведьмы |
| Болотный знак | Болото | Легенда о Гидре |
| Выцветший пергамент | Руины | Легенда об Ирис |
| Чёрный портал | Руины | Предчувствие чего-то тёмного |
| Записка Первого Героя | Бездна | Послание Эйдора I о Мраке |
Достижения
20 достижений. Открываются автоматически при выполнении условий. Тост-уведомление с анимацией. Панель достижений открывается клавишей H.
| Иконка | Название | Условие |
|---|---|---|
| 🩸 | Первая кровь | Убить первого врага |
| ⚔️ | Убийца | Убить 50 врагов |
| 👹 | Охотник за боссами | Убить любого мини-босса |
| 🏆 | Чемпион | Убить всех 6 мини-боссов |
| 💀 | Легенда | Убить Мрака Безликого |
| ⭐ | Опытный | Достигнуть 5 уровня |
| 🌟 | Ветеран | Достигнуть 10 уровня |
| 💰 | Богач | Накопить 500 золота |
| 👑 | Золотой король | Накопить 1000 золота |
| 🗺️ | Исследователь | Посетить все 8 локаций |
| 🌑 | Путь в бездну | Достигнуть локации Бездна |
| ⚗️ | Алхимик | Скрафтить 5 предметов |
| 📖 | Зоолог | Открыть 10 записей бестиария |
| 🛡️ | Непробиваемый | Выиграть бой без потери HP |
| 💥 | Снайпер | Нанести 10 критических ударов |
| ✨ | Чародей | Использовать заклинания 10 раз |
| 📜 | Летописец | Прочесть все записки на карте |
| 📋 | Герой | Выполнить 10 квестов |
| 🔮 | Зачарователь | Зачаровать предмет |
| 🎒 | Барахольщик | Собрать 20 предметов в инвентаре |
Бестиарий
Открывается клавишей B. Содержит карточки всех типов врагов. Неизвестные враги скрыты (???). После первого убийства открывается:
- Нарисованный портрет (canvas)
- Лорное описание
- Счётчик убийств
- Слабость и сопротивление
Аудиосистема
Полностью процедурная генерация звука через Web Audio API — никаких аудиофайлов.
Звуковые эффекты (SFX)
| Событие | Описание |
|---|---|
| Атака / крит | Sawtooth burst с экспоненциальным затуханием. Крит — выше частота |
| Заклинание | Огонь: нарастающий свип. Лёд: нисходящий. Исцеление: аккорд. Магия: арпеджио |
| Шаг | Тихий низкочастотный клик |
| Повышение уровня | Восходящее арпеджио C-E-G-C' |
| Победа | Фанфара 3 ноты |
| Смерть | Нисходящий минорный аккорд |
| Открытие сундука / записка | Короткий джингл |
Фоновые темы (9 локаций)
| Тема | BPM | Характер |
|---|---|---|
| Деревня | 80 | C-мажорная пентатоника, спокойно |
| Лес | 95 | Арпеджированный минор, быстрее |
| Подземелье | 50 | Низкий мрачный дрон |
| Болото | 55 | Эерная хроматика, неравномерный ритм |
| Горы | 60 | Медленный эпический минор |
| Пещера | 55 | Тёмная пещерная атмосфера |
| Бой | 140 | Быстрый стаккато минор |
| Руины | — | Тихий атмосферный |
| Бездна | 40 | Зловещий хроматический дрейф, контрабас |
Кнопка 🔊 в HUD переключает звук. Темы плавно меняются при переходе между локациями.
Система сохранений
3 слота сохранений
Каждый слот показывает: класс персонажа, уровень, количество часов игры, дату сохранения.
Автосохранение
Происходит автоматически: после каждого боя, после путешествия, при выполнении квеста.
Ручное сохранение
Клавиша P — мгновенное сохранение с анимацией индикатора.
Экспорт
Кнопка «📁 Папка сохранений» + «💾 Экспорт» — сохраняет все слоты в выбранную папку как JSON-файлы через File System Access API.
Формат данных
Сохраняется: персонаж (стат, инвентарь, квесты, перки, бестиарий, найденный лор, достижения), текущая локация, время суток, день.
Важно: Set-объекты (achievements, _visited) автоматически конвертируются в Array при JSON-сериализации и восстанавливаются при загрузке.
Визуальные эффекты
Изометрический рендерер
- Depth sorting — все объекты отрисовываются в правильном изометрическом порядке по значению
x + y - Плавное движение персонажа между тайлами (линейная интерполяция)
- Боб-анимация врагов (покачивание
sin(time)) - Эффект атаки врага (смещение вперёд при ударе)
Частицы
| Тип | Описание |
|---|---|
hit |
Красные искры при ударе |
heal |
Зелёные частицы при исцелении |
magic |
Фиолетовые звёздочки заклинаний |
death |
Рассеивающийся силуэт |
gold |
Золотые монеты |
holy |
Белые лучи святости |
fire |
Оранжевые искры |
ice |
Голубые кристаллы |
Плавающий текст
Урон, лечение, критический удар, статус-эффекты — всплывают над персонажами с анимацией подъёма и затухания.
Тряска экрана
Шейкер активируется при критических ударах и мощных ударах боссов (интенсивность 3–8 пикселей).
Динамическое освещение
Факелы и кристаллы создают анимированные световые ореолы с пульсацией. Ночью интенсивность возрастает.
Анимация портретов в бою
- Дыхание: CSS-анимация
translateY(-2px)— игрок 3.2s, враг 2.4s - Моргание: JS-интервал каждые 4–6 сек, перекрытие глаз на 120ms
Босс-бар
При встрече с мини-боссом или финальным боссом снизу экрана появляется расширенная полоска HP с именем и анимацией входа.
Меню
Анимированный canvas с изометрической сценой на фоне стартового экрана. Заголовок с пульсирующим золотым свечением.
Статистика контента
| Категория | Количество |
|---|---|
| Локации | 8 |
| Классы персонажей | 7 |
| Обычных врагов | 15 |
| Боссов и мини-боссов | 8 |
| Всего типов врагов | 23 |
| Типов ИИ поведения | 21 |
| Заклинаний | 19 |
| Перков в деревьях | 84 (7 классов × 4 ветви × 3 перка) |
| Квестов | 26 |
| Сюжетных квестов | +N этапных квестов |
| NPC с диалогами | 8 |
| Записок лора | 18 |
| Достижений | 20 |
| Зачарований | 8 |
| Рецептов крафта | 32 |
| Предметов в магазине | 18 |
| Уникальных материалов лута | 22 |
| Легендарных предметов | 8 |
| Сетов экипировки | 4 |
| Музыкальных тем | 9 |
| Слотов сохранения | 3 |
Запуск
Просто откройте index.html в браузере. Никаких сборщиков, серверов или зависимостей не требуется. Данные игры загружаются из data/*.json через fetch, поэтому при открытии с локального диска может потребоваться простой локальный сервер (например, Live Server в VS Code или npx serve .).
Разработано с помощью Claude Sonnet 4.6