Играть онлайн: https://game-zmeika-lilac.vercel.app
Современная «Змейка» с таблицей лидеров в реальном времени, показом онлайн‑игроков, мобильным управлением, анимациями GSAP, бонус‑едой и двуязычным интерфейсом (RU/EN).
-
Интерфейс и графика
- Адаптивный дизайн (десктоп и мобильные)
- Экранные кнопки управления (touch‑friendly)
- Частицы, свечение еды, всплывающие очки, пауза с оверлеем
- Переключатель языка (русский/английский)
-
В реальном времени
- Таблица лидеров (без дублей по нику: берётся лучший результат)
- Онлайн‑присутствие игроков (статус playing/idle)
- Флаги стран в топ‑10 и в списке онлайн‑игроков
- Firebase Realtime Database (клиент‑сайд)
- ПК: стрелки; пробел — пауза
- Мобильные: экранные стрелки; виброотклик при событиях
- Красная еда: +1; золотой бонус: +5 и кратковременное замедление
public/— исходники (ES‑модули)index.html— оболочка UI + выбор языкаstyle.css— стили (адаптив, мобильные, анимации)game.js— основной цикл, управление, эффектыsnake.js,food.js,bonusFood.js,particles.js,scoreManager.jsleaderboardManager.js,onlinePlayersManager.js— логика FirebasefirebaseConfig.js— Firebase app, анонимная auth, базаi18n.js— простой помощник для i18n
dist/— билд (копияpublic/)
- Установить зависимости (опционально):
npm install- Сборка статики:
npm run build- Запуск локального сервера:
npx serve dist
# или
python3 -m http.server 5173 -d distОткройте адрес из вывода (в одной сети можно открыть и с телефона).
- Создайте проект в Firebase Console
- Включите Realtime Database (рекомендуется регион
europe-west1) и Анонимную авторизацию:- Authentication → Sign‑in method → Anonymous → Enable
- Скопируйте Web SDK config (Project settings → Your apps → Web) в
public/firebaseConfig.js - Правила БД (Realtime Database → Rules):
{
"rules": {
".read": false,
"online": {
".read": true,
"$uid": {
".write": "auth != null && auth.uid === $uid",
".validate": "newData.hasChildren(['username','lastActive','isPlaying'])",
"countryCode": { ".validate": "newData.isString() && newData.val().length <= 2" }
}
},
"leaderboard": {
".read": true,
"$uid": {
".write": "auth != null && auth.uid === $uid",
"score": { ".validate": "newData.isNumber() && newData.val() >= 0" },
"username": { ".validate": "newData.isString() && newData.val().length > 0 && newData.val().length <= 15" },
"date": { ".validate": "newData.isString()" },
"lastActive": { ".validate": "newData.isNumber() || newData.val() == now" },
"countryCode": { ".validate": "newData.isString() && newData.val().length <= 2" },
"countryName": { ".validate": "newData.isString() && newData.val().length <= 56" }
}
}
}
}- Готово: откройте приложение, введите имя — результаты и онлайн‑статус будут сохраняться по вашему
uid.
- Подключите репозиторий к Vercel
- Settings → Build & Output
- Build Command:
npm run build - Output Directory:
dist
- Build Command:
- Пуш в
main→ автодеплой на https://game-zmeika-lilac.vercel.app
Play online: https://game-zmeika-lilac.vercel.app
Modern Snake with a realtime leaderboard, online presence, mobile controls, GSAP animations, bonus food, and bilingual UI (EN/RU).
-
UI/UX
- Responsive layout (desktop + mobile)
- On‑screen mobile controls (touch friendly)
- Particles, glow food, floating scores, pause overlay
- Language switcher (English/Russian)
-
Realtime
- Leaderboard (dedup by username: best score only)
- Online presence (playing/idle)
- Country flags in Top‑10 and online list
- Firebase Realtime Database (client‑side only)
- Desktop: Arrow keys; Space to pause
- Mobile: On‑screen arrows; vibration feedback
- Red food: +1; golden bonus: +5 with short slow‑down
public/— source (ES modules):index.html,style.css,game.js,snake.js,food.js,bonusFood.js,particles.js,scoreManager.js,leaderboardManager.js,onlinePlayersManager.js,firebaseConfig.js,i18n.jsdist/— build output (copied frompublic/)
npm install
npm run build
npx serve dist
# or
python3 -m http.server 5173 -d dist- Create a Firebase project
- Enable Realtime Database (prefer
europe-west1) and Anonymous auth - Add Web SDK config into
public/firebaseConfig.js - Rules (Realtime Database → Rules): see JSON above
- Open the app, enter a name — data is stored by your
uid
- Connect repo → set Build Command
npm run build, Outputdist - Push to main → deploys to https://game-zmeika-lilac.vercel.app