BigBangPlay — короткие и длинные нарды онлайн
Сервис нард в реальном времени: короткие и длинные, игра с человеком или ботом, гостевой вход и приглашение друга по ссылке. Уже доступен для игры и продолжает развиваться.
- Сайт
- bigbangplay.ru
- Год
- 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 — игровые сценарии
Что можно применить в вашем проекте
- Правила и состояние контролирует сервер: клиент показывает доску и отправляет команды, но не может сам назначить результат хода или броска.
- Общее ядро для сервера, интерфейса и бота уменьшает расхождения: одна и та же позиция везде имеет одинаковые допустимые ходы.
- Для сервиса в реальном времени важен весь путь действия: обработка на сервере, передача по сети и отклик интерфейса проверяются отдельно.