Перейти к содержимому

Онлайн-игры

Totometeo

Онлайн-игра в прогнозы погоды с лигами: игроки угадывают реальную погоду, а очки начисляются автоматически по данным Open-Meteo.

ТипОнлайн-игры

Задача

Каждый думает, что умеет угадывать погоду. Идея Totometeo — превратить это в игру с лигами по образцу футбольного тотализатора TotoMondiale: игроки прогнозируют погоду в городе на заданный час, а реальные данные решают, кто получает очки. Игра должна работать сама: вовремя закрывать прогнозы, получать фактическую погоду, начислять очки и обновлять таблицы — без ручной работы.

Что я сделал

Я создал Totometeo — онлайн-игру в прогнозы погоды с публичными и частными лигами и автоматическим подсчётом очков по реальным метеоданным.

  • Лиги — игроки создают публичные или частные лиги и приглашают друзей кодом из 6 символов, в котором нет похожих друг на друга символов вроде I, O, 0 и 1. В общую лигу входят все.
  • Туры и прогнозы — каждый тур включает погодные события с городом, временем и дедлайном. Для каждого события игрок прогнозирует состояние неба, температуру, будет ли дождь, количество осадков в миллиметрах, скорость ветра и, по желанию, редкое явление вроде града или сильного ветра. Прогнозы можно менять до дедлайна, после чего они фиксируются.
  • Реальные метеоданные — после события приложение берёт почасовые значения из Open-Meteo, а если прогнозных данных нет, обращается к историческому архиву. Погодные коды WMO сопоставляются с 7 состояниями игры, а редкие явления определяются по данным, например ветер 50 км/ч и сильнее.
  • Движок подсчёта очков — 10 правил начисления и 2 допуска: от 5 очков за точное состояние до бонуса в 10 очков за редкое явление. Каждый результат сохраняется с расшифровкой, так что игрок видит, откуда взялось каждое очко.
  • Автоматизация — одна задача по расписанию каждую минуту закрывает просроченные события; другая каждые 15 минут получает фактическую погоду и подсчитывает очки максимум для 25 событий за цикл.
  • Таблицы и администрирование — таблицы лиги, общая и историческая, а также админ-панель для туров, событий, загрузки метеоданных, подсчёта очков, правил, пользователей и лиг, с журналом действий администраторов.

Технологии

Node.js и Express с серверным рендерингом страниц на EJS. MySQL или MariaDB через ORM Prisma, 10 моделей данных. Сессии на express-session, пароли хешируются bcrypt. Задачи по расписанию на node-cron, процессами управляет PM2 за Nginx. Метеоданные поступают из Open-Meteo, которому не нужен API-ключ.

Почему именно так

Правила подсчёта очков хранятся в базе данных, а не в коде. Значения по умолчанию из спецификации игры загружаются один раз при установке, а дальше администратор может менять очки и допуски из панели без нового релиза. Поскольку у каждого результата сохраняется расшифровка, любое изменение правил остаётся прозрачным для игроков.

Есть идея?
Давайте обсудим.

Сайт, приложение, видео, песня или что-то масштабнее — я готов помочь вам это реализовать.

Связаться со мной
  • Неаполь
  • Идеи
  • Проекты
  • Люди
  • Всегда вперед