Skip to content
maker27Public

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Date Run

Кооперативный платформер для двоих: три локации, подарки и общий финиш. Один создаёт комнату и отправляет ссылку, второй подключается. Оба нажимают «Готов».

Стек

  • TypeScript, Node.js 24.
  • Клиент: Preact, PixiJS 8, Vite.
  • Сервер: HTTP на Node.js, WebSocket через ws, валидация данных через Zod.
  • Тесты: Vitest, Testing Library, Playwright; линтинг: ESLint. Для E2E нужны nginx, openssl и Chromium из Playwright.
  • Деплой: Docker, Docker Compose, nginx.
  • Хранение комнат: в памяти сервера, без базы данных.

Запуск

npm ci
npm run dev:server
# в другом терминале
npm run dev

Открыть http://localhost:5173/date-run/.

Для телефона в той же сети откройте http://<IP-компьютера>:5173/date-run/. При запуске dev:server добавьте этот origin (схема, IP и порт, без /date-run/) в ALLOWED_ORIGINS через запятую вместе с адресами localhost. После изменения переменной сервер нужно перезапустить.

Стрелки или A/D - движение, пробел/W/↑ - прыжок, E - взять свой подарок. На телефоне есть экранные кнопки. После подарков нужно одновременно встать на две площадки и встретиться у арки.

npm run lint
npm run typecheck
npm test
npm run build
ALLOWED_ORIGINS=http://localhost:3000 npm start

Сборка доступна на http://localhost:3000/date-run/. Для production нужны ALLOWED_ORIGINS, NODE_ENV=production и APP_REVISION (40 символов Git SHA). Шаблоны Docker и nginx - в deploy/. Лаунчер deploy/launcher.sh требует существующий коммит и чистую рабочую копию; незакоммиченные изменения к релизу не допускаются.

Комнаты хранятся в памяти одного сервера: перезапуск завершает игры. При обрыве связи место сохраняется 30 секунд после обнаружения отключения.

npm run test:e2e запускает обычный E2E-набор в CI. Для отдельной проверки под CPU-нагрузкой запустите npm run test:e2e:slow: Chromium замедляется в 4 раза на каждой странице. На Linux можно ограничить весь процесс двумя доступными CPU: taskset -c 0,1 npm run test:e2e:slow (номера CPU проверьте через taskset -pc $$). Замедленный профиль временно выполняется отдельно от CI на время разбора reconnect-сбоя; прогоны используют общие порты и запускаются последовательно. Повторы упавших сценариев отключены.

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages