Об этом проекте

Gamend — это открытый бэкенд для многопользовательских игр, написанный на Elixir. Он предназначен для самостоятельного хостинга: платного хостингового сервиса нет, и проект позиционирует себя как серверный слой вокруг игры, а не как саму игру. Игра по-прежнему рендерится и симулируется локально, тогда как серверные скрипты позволяют выполнять реальную логику на сервере, поэтому начисление очков, награды, правила матчмейкинга и валидация определяются там, где игроки не могут их изменить. Фоновые и запланированные задачи также выполняются там. Набор возможностей, описанный в README: - Аутентификация: email/пароль, magic link, OAuth (Discord, Google, Apple, Facebook, GitHub, Steam) и JWT API-токены. - Пользователи: профили, метаданные, токены устройств и жизненный цикл аккаунта. - Лобби: управляемые хостом, максимальное число пользователей, скрытые/закрытые состояния, пароли и обновления в реальном времени. - Группы: публичные, приватные или скрытые сообщества с ролями, заявками на вступление и приглашениями. - Пати: временные группы на основе приглашений, по умолчанию от 2 до 32 игроков, интегрированные с лобби. - Друзья: запросы, принятие/отклонение и блокировка. - Чат: личные сообщения в лобби, группах, пати и между друзьями с курсорами прочтения и счётчиками непрочитанного. - Уведомления: типизированные уведомления о социальных событиях, состояние прочитано/не прочитано и доставка в реальном времени, а также мобильные push-уведомления через FCM и APNs-direct с маршрутизацией по токену устройства. - Квесты и прогрессия: событийный движок, охватывающий достижения, ежедневные/еженедельные квесты, окна событий и цепочки, с наградами ровно один раз в экономику. - Лидерборды: глобальные и по пользователям рейтинги. - Платежи: потоки Stripe Checkout, Google Play, App Store и Steam с проверкой чеков, вебхуками, правами доступа, возвратами и административными инструментами. - Хранилище ключ-значение: серверное хранилище с хуками контроля доступа. - Серверные скрипты: хуки на серверные события, такие как вход, создание лобби или завершение квеста, написанные на Elixir, GDScript (компилируемом, а не интерпретируемом) или любом языке BEAM. - Фоновые задачи: надёжные, повторяемые фоновые и cron-задачи из серверных хуков, на Postgres или SQLite. - Экономика и инвентарь: кошельки виртуальной валюты с атомарным, аудируемым реестром, а также стеки предметов; серверно-авторитетные grant/spend/consume с обновлением баланса в реальном времени. - Объектное хранилище: загрузка аватаров и UGC с подключаемым бэкендом — либо локальный диск, либо любой S3-совместимый сервис, такой как AWS S3, Cloudflare R2 или MinIO. - Админ-панель: встроенная веб-панель для управления ресурсами. Клиентские SDK предоставляются для Godot (также указаны в Godot Asset Library), Rune через аддоны Balaur, C++17 с подключаемыми транспортами, JavaScript на npm и Elixir SDK из заглушечных модулей для автодополнения в IDE в пользовательских хуках. SDK для Godot, Balaur и C++ пересобираются при каждом изменении в main и прикрепляются к последнему релизу. Для локального запуска требуются Elixir 1.20 и Erlang/OTP 29, Rust для нативной зависимости WebRTC (ex_sctp) и, опционально, PostgreSQL — в разработке по умолчанию используется SQLite, а адаптер базы данных выбирается во время компиляции. Первый запуск: `cp .env.example .env`, `mix setup`, `mix dev.start`, затем переход на localhost:4000. Файлы Docker Compose охватывают один экземпляр и многоэкземплярную конфигурацию с nginx, PostgreSQL и Redis. Руководство по развёртыванию и стартовый шаблон ориентированы на продакшн-развёртывание на fly.io. README также включает график производительности, сравнивающий одновременных простаивающих игроков по размеру машины, памяти и месячной цене, ссылаясь на измеренное значение 37 854 одновременных простаивающих игроков на одном ядре с 3 ГБ против опубликованного сравнительного значения, со ссылками на документацию по производительности и нагрузочному тестированию для деталей воспроизведения. Для ИИ-инструментов предоставляется файл AGENTS.md.