Sudoku Club - solo, coop and versus multiplayer
  • TypeScript 68.1%
  • CSS 30.3%
  • Dockerfile 0.9%
  • HTML 0.7%
Find a file
2026-07-14 14:16:33 +03:00
infra ops: deploy victory timer hotfix 2026-07-14 14:16:33 +03:00
server feat: add pre-game lobbies and advanced difficulties 2026-07-14 13:48:46 +03:00
src fix: freeze victory timer at player finish 2026-07-14 14:13:41 +03:00
.dockerignore feat: launch multiplayer Sudoku Club 2026-07-14 13:10:28 +03:00
.gitignore feat: launch multiplayer Sudoku Club 2026-07-14 13:10:28 +03:00
Dockerfile feat: launch multiplayer Sudoku Club 2026-07-14 13:10:28 +03:00
index.html feat: launch multiplayer Sudoku Club 2026-07-14 13:10:28 +03:00
package-lock.json feat: launch multiplayer Sudoku Club 2026-07-14 13:10:28 +03:00
package.json feat: launch multiplayer Sudoku Club 2026-07-14 13:10:28 +03:00
README.md feat: add pre-game lobbies and advanced difficulties 2026-07-14 13:48:46 +03:00
tsconfig.app.json feat: launch multiplayer Sudoku Club 2026-07-14 13:10:28 +03:00
tsconfig.json feat: launch multiplayer Sudoku Club 2026-07-14 13:10:28 +03:00
tsconfig.node.json feat: launch multiplayer Sudoku Club 2026-07-14 13:10:28 +03:00
vite.config.ts feat: launch multiplayer Sudoku Club 2026-07-14 13:10:28 +03:00

Sudoku Club

Полноценная браузерная игра в судоку с тремя режимами:

  • Соло — локальная партия с заметками, таймером и проверкой ошибок.
  • Вместе — общая доска, которая синхронизируется между участниками через WebSocket.
  • Дуэль — одинаковая головоломка и отдельная доска для каждого игрока, живой прогресс и рейтинг по времени.

Сетевая игра начинается с лобби на 26 мест. Хост запускает партию только после подключения и подтверждения готовности всех приглашённых игроков. Комната открывается по короткому коду или ссылке. При кратковременном обрыве клиент автоматически переподключается с нарастающей задержкой, а серверный heartbeat удаляет зависшие соединения. Повторный вход восстанавливает игрока по локальному токену.

Доступно семь уровней: от «Новичка» до «Экстрима». Первые уровни генерируются с контролем единственности решения; продвинутые используют сложный банк с безопасными структурными преобразованиями. «Эксперт», «Мастер» и «Экстрим» оцениваются по глубине и объёму поискового дерева, а не только по количеству открытых клеток. Сервер является источником истины: решение головоломки не отправляется участникам сетевой партии.

Локальный запуск

npm install
npm run dev

Frontend откроется на http://localhost:5173, API и WebSocket — на http://localhost:3000.

Проверка

npm run check
npm test
npm run build

Production

Приложение собирается многоэтапным Dockerfile и запускается непривилегированным пользователем. Kubernetesресурсы находятся в infra/: один экземпляр приложения намеренно обслуживает все WebSocketкомнаты в памяти. Это обеспечивает согласованность комнат без внешнего Redis; при переходе к нескольким репликам потребуется общий realtime/state слой.

Публичный адрес: https://sudoku.serjiklife.com.