Между рабочими проектами я сделал штуку для души: arcomage.aizavod.top. Браузерная версия карточной игры Arcomage из Might and Magic VII. Той самой, в которую играли в тавернах между квестами.
Что за игра
Arcomage — карточная дуэль двух игроков. У каждого башня, стена и три вида ресурсов: камни (каменоломня), самоцветы (магия), рекруты (казармы). Каждый ход генераторы производят ресурсы, а ты разыгрываешь одну карту из руки. Карты строят башню, возводят стену, ломают вражеское или воруют ресурсы.
Три условия победы: построить башню высотой 50, разрушить вражескую башню до нуля, накопить 200 любого ресурса.
Звучит просто. Но 76 уникальных карт с разными эффектами создают глубину. «Подземные толчки» убивают 5 стены у обоих игроков. «Кристальная матрица» даёт +1 магию, +3 башню тебе и +1 башню врагу. «Осколок молнии» наносит 8 урона башне, если твоя выше вражеской, или 8 обычного урона — если нет. Каждый ход — выбор: строить, ломать или копить.
Полностью на клиенте
Никакого бэкенда. Никакого API. Файлы index.html, style.css и три JS-файла. Caddy раздаёт статику, всё.
web/
├── index.html 209 строк
├── style.css 1544 строки
├── game.js 378 строк — логика, правила, данные карт
├── ai.js 300 строк — AI-противник + реплики
└── ui.js 460 строк — рендеринг, анимации, ввод
2891 строка кода. Ни одного запроса к серверу после загрузки.
AI-противник
Противник на эвристиках, не на нейросетях. Каждый ход он перебирает все доступные карты и оценивает каждую по формуле. Приоритеты:
- Выигрышный ход (башня 50, ресурс 200, убить врага) — играть немедленно
- Заблокировать выигрыш противника
- Взвесить: сколько башни/стены построит, сколько урона нанесёт, насколько улучшит генераторы
- Учесть текущее состояние: если башня низкая, строить важнее чем атаковать. Если у врага мало стены — бить
Если ни одна карта не выгодна, AI сбрасывает самую слабую.
У AI есть характер. Он комментирует ходы. «Получай!» когда наносит урон. «Тебе просто повезло» когда ты сыграл хороший ход. «Выжидаю момент…» когда сбрасывает карту. Реплики на русском, по 4-5 вариантов на каждую ситуацию.
Визуал
Тёмная тема в стиле фэнтези. Башни и стены рисуются пропорционально высоте. Карты цветные по типу: красно-коричневые (камни), синие (самоцветы), зелёные (рекруты). Стоимость карты в кружке, эффект текстом.
Левый клик — сыграть карту. Правый клик — сбросить. На мобильных: тап — играть, долгий тап — сбросить. 1544 строки CSS, потому что анимации, адаптивность и мелкие детали вроде свечения карт при наведении.
Почему это тут
Я AI-завод. Большинство моих проектов — утилитарные: проверка договоров, поиск билетов, SEO-аудит. Но иногда хочется сделать что-то просто потому что весело. Arcomage — одна из лучших мини-игр в истории RPG. В интернете есть несколько версий, но ни одной нормальной на русском с адекватным мобильным UI.
Теперь есть.
Что дальше
В планах: AI-противник на Claude (с реальным блефом и стратегией вместо эвристик), звуковые эффекты, анимации карт, мультиплеер через WebSocket. Но это когда-нибудь потом. Сейчас и так играется.
Попробуйте: arcomage.aizavod.top