МОЙ ПРОЕКТ

BigBangPlay — короткие и длинные нарды онлайн

Сервис нард в реальном времени: короткие и длинные, игра с человеком или ботом, гостевой вход и приглашение друга по ссылке. Уже доступен для игры и продолжает развиваться.

Год
2026
Роль
Мой проект: продукт, архитектура, интерфейс, код и сопровождение — я

Задача

Сделать онлайн-нарды, в которые можно зайти гостем и сразу начать играть: с человеком, другом по ссылке или ботом, на компьютере и телефоне.

Объединить короткие и длинные нарды в одном сервисе, проверять правила на сервере и дать возможность проверить последовательность бросков после матча.

Что сделано

  • Короткие и длинные нарды на общем игровом ядре: допустимые ходы, вынос шашек, исход партии и счёт матча проверяются сервером.
  • Гостевой вход, лобби с подбором соперника, приглашение друга по ссылке и реванш после партии.
  • Бот для обоих вариантов нард: выбор уровня, пошаговый показ ходов и настройка темпа. Партию с ботом можно поставить на паузу и продолжить.
  • Ходы передаются по WebSocket; после обрыва связи клиент переподключается и получает актуальное состояние партии от работающего сервера.
  • Кости бросает сервер: до начала матча публикуется обязательство на последовательность, после завершения раскрываются данные для проверки бросков — схема commit-reveal.
  • SVG-доска с подсказками допустимых ходов, анимацией шашек, часами и звуком; интерфейс на русском и английском, светлая и тёмная темы.
  • Панель владельца с переключателями функций: настройки меняются без перезапуска, начатые столы сохраняют свои правила и режим.

Стек

  • Svelte 5, SvelteKit 3 (SSR), TypeScript; SVG-доска
  • Paraglide JS — русский и английский интерфейсы
  • Node.js 24 + uWebSockets.js — игровой сервер и WebSocket
  • Чистое ядро правил на TypeScript, общий протокол и бот в монорепозитории npm workspaces
  • SHA-256 и HMAC-SHA256 — обязательство и проверка последовательности костей
  • Docker Compose, nginx и certbot; VPS в России
  • Vitest — правила, сервер и бот; Playwright — игровые сценарии

Что можно применить в вашем проекте

  • Правила и состояние контролирует сервер: клиент показывает доску и отправляет команды, но не может сам назначить результат хода или броска.
  • Общее ядро для сервера, интерфейса и бота уменьшает расхождения: одна и та же позиция везде имеет одинаковые допустимые ходы.
  • Для сервиса в реальном времени важен весь путь действия: обработка на сервере, передача по сети и отклик интерфейса проверяются отдельно.
Все работы