À propos du projet

Gamend est un backend open source pour jeux multijoueurs, écrit en Elixir. Il est conçu pour être auto-hébergé : aucun service hébergé n'est proposé à l'achat, et le projet se positionne comme la couche côté serveur autour d'un jeu plutôt que comme le jeu lui-même. Le jeu effectue toujours le rendu et la simulation localement, tandis que le scripting côté serveur permet à la logique réelle de s'exécuter sur le serveur, de sorte que le score, les récompenses, les règles de matchmaking et la validation sont décidés là où les joueurs ne peuvent pas les modifier. Des tâches en arrière-plan et planifiées s'y exécutent également. Ensemble de fonctionnalités décrit dans le README : - Auth : e-mail/mot de passe, lien magique, OAuth (Discord, Google, Apple, Facebook, GitHub, Steam) et jetons d'API JWT. - Utilisateurs : profils, métadonnées, jetons d'appareil et cycle de vie du compte. - Lobbies : gérés par l'hôte, nombre maximal d'utilisateurs, états caché/verrouillé, mots de passe et mises à jour en temps réel. - Groupes : communautés publiques, privées ou cachées avec rôles, demandes d'adhésion et invitations. - Équipes : groupes éphémères basés sur invitation, de 2 à 32 joueurs par défaut, intégrés aux lobbies. - Amis : demandes, acceptation/refus et blocage. - Chat : messages directs de lobby, groupe, équipe et amis avec curseurs de lecture et compteurs de non-lus. - Notifications : notifications typées pour les événements sociaux, état lu/non lu et livraison en temps réel, plus push mobile FCM et APNs-direct routé par jeton d'appareil. - Quêtes et progression : un moteur piloté par événements couvrant les succès, les quêtes quotidiennes/hebdomadaires, les fenêtres et chaînes d'événements, avec des récompenses exactement-une-fois vers l'économie. - Classements : classements globaux et par utilisateur. - Paiements : flux Stripe Checkout, Google Play, App Store et Steam avec validation de reçu, webhooks, droits, remboursements et outils d'administration. - Stockage clé-valeur : stockage côté serveur avec hooks de contrôle d'accès. - Scripting serveur : hooks sur les événements serveur tels que la connexion, la création de lobby ou la complétion de quête, écrits en Elixir, GDScript (compilé plutôt qu'interprété) ou tout langage BEAM. - Tâches en arrière-plan : tâches en arrière-plan et cron durables et réessayables depuis les hooks serveur, sur Postgres ou SQLite. - Économie et inventaire : portefeuilles de monnaie virtuelle avec un registre atomique et auditable, plus des piles d'objets ; attribution/dépense/consommation faisant autorité côté serveur avec mises à jour de solde en direct. - Stockage d'objets : téléversements d'avatars et de contenu généré par les utilisateurs avec un backend enfichable, soit disque local, soit tout service compatible S3 tel qu'AWS S3, Cloudflare R2 ou MinIO. - Portail d'administration : un tableau de bord web intégré pour gérer les ressources. Des SDK clients sont fournis pour Godot (également listé sur la Godot Asset Library), Rune via les addons Balaur, C++17 avec transports enfichables, JavaScript sur npm, et un SDK Elixir de modules stub pour l'autocomplétion IDE dans les hooks personnalisés. Les SDK Godot, Balaur et C++ sont reconstruits à chaque modification de main et attachés à la dernière version. L'exécution locale nécessite Elixir 1.20 et Erlang/OTP 29, Rust pour la dépendance native WebRTC (ex_sctp), et éventuellement PostgreSQL — le développement utilise SQLite par défaut, avec l'adaptateur de base de données choisi à la compilation. Le premier lancement est `cp .env.example .env`, `mix setup`, `mix dev.start`, puis visiter localhost:4000. Les fichiers Docker Compose couvrent une instance unique et une configuration multi-instance avec nginx, PostgreSQL et Redis. Les conseils de déploiement et un modèle de démarrage ciblent un déploiement en production sur fly.io. Le README inclut également un graphique de performance comparant les joueurs inactifs simultanés selon la taille de machine, la mémoire et le prix mensuel, citant une mesure de 37 854 joueurs inactifs simultanés sur un cœur avec 3 Go face à un chiffre de comparaison publié, avec des liens vers la documentation de performance et de tests de charge pour les détails de reproduction. Un fichier AGENTS.md est fourni pour l'outillage IA.