Интерактивная веб-версия классических длинных нард на Ruby on Rails 8 с современным UI, быстрой реакцией интерфейса через Hotwire и строгой серверной валидацией правил.
- Репозиторий: https://github.com/RubyArtm/backgammon
- Live demo: https://art-backgammon.onrender.com/
Главный экран матча с доской, индикатором хода, кубиками и управлением.
Открытая боковая панель: статистика бросков и история ходов (replay-ready интерфейс).
Актуальный экран победы с анимированным оверлеем и кнопкой быстрого рестарта.
- Полная игровая логика длинных нард с серверной проверкой каждого хода.
- Корректная обработка дублей (4 хода вместо 2).
- Правило головы: одна шашка за ход (с исключением первого подходящего дубля).
- Проверка блока из 6 подряд и запрет нелегального блока.
- Снятие шашек только после полного входа в дом.
- Автопас хода при отсутствии легальных ходов.
Undoдо броска кубиков соперника.- История ходов и режим replay (пошаговый просмотр партии).
- Статистика кубиков по игрокам: выпало/использовано/дубли.
- Отзывчивый интерфейс и обновления без перезагрузки страницы (Turbo Streams).
- Стартовая расстановка: по 15 шашек на голове у каждого игрока.
- Ход белых и черных идет по заранее заданным путям на 24 пункта.
- Перемещение возможно только на значения активных кубиков.
- Нельзя занимать пункт с шашками соперника.
- При дубле игрок получает 4 доступных перемещения.
- После исчерпания всех значений кубиков ход автоматически переходит сопернику.
- Победа фиксируется при выбросе всех 15 шашек.
- Backend: Ruby
3.3, Rails8.1.3 - Frontend: Hotwire (
turbo-rails,stimulus-rails) - UI: Tailwind CSS 4 (
tailwindcss-rails) - Asset pipeline: Propshaft + Importmap
- Хранилище состояния партии: JSON-поля в таблице
games - БД (development/test): SQLite
- БД (production): PostgreSQL (primary/cable/queue/cache)
Ключевые компоненты:
Game+Backgammon::GameStateдля состояния и сценариев партииBackgammon::Rulesдля валидации правил и легальности ходовGamesControllerдля действийroll_dice,move,undo_move,resetStimulus game_controllerдля клиентского UX, подсветки и управления UI-предпочтениями
- Ruby
3.3 - Bundler
- SQLite3 (для локального запуска)
git clone https://github.com/RubyArtm/backgammon.git
cd backgammon
bundle install
bin/rails db:preparebin/devПосле запуска приложение доступно по адресу http://localhost:3000.
Запуск тестов:
bin/rails testПолный CI-профиль локально:
bin/brakeman --no-pager
bin/bundler-audit
bin/importmap audit
bin/rubocop -f github
bin/rails db:test:prepare test test:systemGET /- игровое полеPOST /games/:id/roll_dice- бросок кубиковPOST /games/:id/move- ход шашкойPOST /games/:id/undo_move- откат последнего ходаPOST /games/:id/reset- новая партия (preserve_stats=trueдля сохранения статистики)GET /up- Rails health check
В проекте предусмотрены:
Dockerfileдля контейнеризации- конфигурация Kamal (
config/deploy.yml)
Для продакшена используются PostgreSQL и Solid Queue/Cache/Cable.