Классическая 2048 с аккаунтами, таблицей лидеров и небольшой внутриигровой механикой: за успешные слияния начисляются монеты, а за 50 монет можно очистить верхний ряд.
Главное отличие этой версии от обычной браузерной игры — сервер авторитетен. Клиент отправляет только направление хода. Новая доска, слияния, счёт, рекорд и баланс считаются на Node.js, поэтому их нельзя подменить обычным запросом из DevTools.
- Express и Passport Local для HTTP-сервера и аккаунтов;
- MongoDB для пользователей, рекордов и баланса;
- отдельный игровой движок без зависимости от браузера;
- состояние текущей партии в серверной сессии;
- demo-режим, которому не нужны MongoDB и регистрация;
- тесты правил слияния, перемещения, окончания игры и очистки ряда.
npm install
npm run demoПосле запуска откройте http://localhost:3000. Demo-аккаунт создаётся в памяти и сбрасывается при перезапуске процесса.
Скопируйте пример настроек и задайте свой session secret:
cp .env.example .env
npm install
npm startPORT=3000
MONGODB_URI=mongodb://127.0.0.1:27017/game2048
SESSION_SECRET=replace-with-a-long-random-value
DEMO_MODE=falseФайл .env не попадает в git.
npm testИгровая логика находится в game/engine.js, HTTP API — в server.js, тонкий браузерный клиент — в public/script.js.
