Roguelike Web Client & UI Overhaul

July 21, 2026
Разработчики:
wratixor-y-avatar Wratixor
Einstein would turn over in his grave. Not only does God play dice, the dice are loaded. (c) Chairman Sheng-ji Yang, Sid Meier's Alpha Centauri

En

Geno-Dice Devlog: Roguelike Web Client & UI Overhaul

We’ve replaced the old CLI-based roguelike with a fully interactive web experience. The new SPA (Single Page Application) lets players recruit, battle, and evolve their units directly in the browser, with real-time feedback and deep meta integration.

Roguelike Web Client

  • Team Recruitment: Choose 6 units from 12 candidates presented as fantasy-styled cards. Each card shows skill, ultimate, league, rank, and win rate—powered by the new /api/meta/batch endpoint.
  • Room Selection: The team is displayed as compact vertical cards. Four difficulty-graded rooms (Easy → Very Hard) appear as colored "banks" – square buttons with ELO targets and difficulty labels.
  • Battle Preview: Both teams are shown in a 3×4 grid (enemy back, enemy front, player front, player back). Player’s units are draggable to rearrange order before battle. Enemy cards are tinted purple, player cards blue.
  • Battle Result: A full battle log viewer with Play/Pause, step-by-step navigation, and a 4-row unit grid. Clicking a log entry highlights the actor and target directly on the unit grid. Unit stats (attack/skill/ultimate success rates) are shown as percentages.
  • Post-Battle Distribution: Drag-and-drop units into 5 colored banks (Leave, Mutate, Cross, Chimerize, Delete) with inline percentage stats and validation (even cross, 0 or 6 chimera).
  • Team Finalization: Same recruitment screen after distribution, reusing the unified unit selector component.

UI & Design System

  • Unit Cards: Three variants – full MTG-style (150×200), compact square with battle stats (105×105), and compact vertical with portrait (100×140) – used consistently across all screens.
  • Fantasy-Meets-Cyberpunk: Card colors, skill colors, and fonts evoke a D&D/MTG fantasy feel, while the overall layout keeps the site’s neon cyberpunk aesthetic.
  • New Meta System: Leagues are now 100-ELO ranges (0–1150, 1150–1250, … 2450+), stored in a leagues table with bilingual names (e.g., “Свалка / Scrapheap”). A batch endpoint provides meta info for any unit on the fly.

Backend Updates

  • Added /api/meta/batch public endpoint for bulk meta queries.
  • Migration: created leagues and skill_ultimate_meta_prev tables, updated update_skill_ultimate_meta() function.
  • Fixed SPA fallback and middleware to correctly serve HTML for all client routes.

What’s Next

  • Visual unit portraits (currently placeholders).
  • Real-time battle animations (Canvas-based).
  • Player laboratory with calibration history.
  • Ascension timer and PvP arena.

РУ

Geno-Dice Devlog: Веб-клиент рогалика и обновление интерфейса

Мы полностью перенесли рогалик из консольного CLI в интерактивный веб-интерфейс. Теперь весь цикл игры — от подбора команды до распределения юнитов после боя — доступен в браузере, с живыми подсказками и интеграцией меты.

Веб-клиент рогалика

  • Набор команды: выбор 6 юнитов из 12 кандидатов, представленных в виде фэнтези-карточек. На каждой карточке — навык, ультимейт, лига, место в рейтинге и винрейт (через /api/meta/batch).
  • Выбор комнаты: команда показана компактными вертикальными карточками. Четыре уровня сложности (Лёгкий → Очень сложный) — цветные квадратные кнопки с целевым ELO.
  • Превью боя: обе команды в сетке 3×4 (задний врага, передний врага, передний игрока, задний игрока). Своих юнитов можно перетаскивать, меняя порядок перед боем.
  • Результат боя: зритель лога с кнопками Play/Pause и пошаговой навигацией. Клик по строке лога подсвечивает актора и цель прямо на поле юнитов. Проценты успешных атак/скиллов/ультов отображаются на карточках.
  • Распределение: перетаскивание юнитов в пять цветных «банков» (Оставить, Мутация, Скрещивание, Химера, Удалить) с валидацией и отображением боевых процентов.
  • Финальный выбор: та же механика подбора команды после распределения, через общий компонент unitSelector.

Дизайн-система

  • Карточки юнитов: три варианта — полная MTG (150×200), компактная квадратная с процентами (105×105) и компактная вертикальная с портретом (100×140) — используются единообразно на всех экранах.
  • Стиль: фэнтезийные шрифты и цвета навыков создают атмосферу D&D/MTG, вписанную в неоновый киберпанк интерфейса.
  • Новая система лиг: диапазоны по 100 ELO (0–1150, 1150–1250, …, 2450+), хранятся в таблице leagues с названиями на двух языках. Эндпоинт /api/meta/batch позволяет получать мету для любого юнита мгновенно.

Серверные изменения

  • Добавлен публичный batch-эндпоинт /api/meta/batch.
  • Созданы миграции для таблиц leagues и skill_ultimate_meta_prev, обновлена функция update_skill_ultimate_meta().
  • Исправлены middleware и SPA fallback — клиентские маршруты корректно отдают index.html.

Дальнейшие планы

  • Визуальные портреты юнитов (сейчас заглушки).
  • Анимации боя на Canvas.
  • Лаборатория игрока с историей калибровок.
  • Таймер вознесения и PvP-арена.

Скриншоты и концепт-арты

Метки записи:

client dev web