Sobre o projeto

Gamend é um backend open-source para jogos multiplayer, escrito em Elixir. Ele é projetado para ser auto-hospedado: não há serviço hospedado para comprar, e o projeto se posiciona como a camada de servidor em torno de um jogo, não o jogo em si. O jogo ainda renderiza e simula localmente, enquanto o scripting do servidor permite que lógica real seja executada no servidor, então pontuação, recompensas, regras de matchmaking e validação são decididas onde os jogadores não podem editá-las. Trabalhos em segundo plano e agendados também são executados lá. Conjunto de recursos descrito no README: - Autenticação: email/senha, link mágico, OAuth (Discord, Google, Apple, Facebook, GitHub, Steam) e tokens de API JWT. - Usuários: perfis, metadados, tokens de dispositivo e ciclo de vida da conta. - Lobbies: gerenciados pelo host, máximo de usuários, estados ocultos/bloqueados, senhas e atualizações em tempo real. - Grupos: comunidades públicas, privadas ou ocultas com papéis, solicitações de entrada e convites. - Festas: grupos efêmeros baseados em convites, 2–32 jogadores por padrão, integrados com lobbies. - Amigos: solicitações, aceitar/rejeitar e bloqueio. - Chat: mensagens diretas de lobby, grupo, festa e amigos com cursores de leitura e contagens de não lidas. - Notificações: notificações tipadas para eventos sociais, estado lido/não lido e entrega em tempo real, além de push móvel direto via FCM e APNs roteado por token de dispositivo. - Missões e progressão: um motor orientado a eventos cobrindo conquistas, missões diárias/semanais, janelas de eventos e cadeias, com recompensas exatamente-uma-vez na economia. - Rankings: classificações globais e por usuário. - Pagamentos: fluxos de Stripe Checkout, Google Play, App Store e Steam com validação de recibo, webhooks, direitos, reembolsos e ferramentas administrativas. - Armazenamento chave-valor: armazenamento no servidor com ganchos de controle de acesso. - Scripting de servidor: ganchos em eventos do servidor, como login, lobby criado ou missão concluída, escritos em Elixir, GDScript (compilado em vez de interpretado) ou qualquer linguagem BEAM. - Trabalhos em segundo plano: trabalhos duráveis e repetíveis em segundo plano e cron a partir de ganchos do servidor, em Postgres ou SQLite. - Economia e inventário: carteiras de moeda virtual com um livro-razão atômico e auditável, além de pilhas de itens; concessão/gasto/consumo autoritativo do servidor com atualizações de saldo em tempo real. - Armazenamento de objetos: uploads de avatar e UGC com backend plugável, seja disco local ou qualquer serviço compatível com S3, como AWS S3, Cloudflare R2 ou MinIO. - Portal administrativo: um painel web integrado para gerenciar recursos. SDKs de cliente são fornecidos para Godot (também listado na Godot Asset Library), Rune via addons Balaur, C++17 com transportes plugáveis, JavaScript no npm, e um SDK Elixir de módulos stub para autocompletar IDE em ganchos personalizados. Os SDKs Godot, Balaur e C++ são reconstruídos a cada mudança no main e anexados ao lançamento mais recente. Executar localmente requer Elixir 1.20 e Erlang/OTP 29, Rust para a dependência nativa WebRTC (ex_sctp), e opcionalmente PostgreSQL — o desenvolvimento usa SQLite por padrão, com o adaptador de banco escolhido no tempo de compilação. A primeira execução é `cp .env.example .env`, `mix setup`, `mix dev.start`, e depois visitar localhost:4000. Arquivos Docker Compose cobrem uma instância única e uma configuração multi-instância com nginx, PostgreSQL e Redis. Orientação de implantação e um modelo inicial visam implantação de produção no fly.io. O README também inclui um gráfico de desempenho comparando jogadores ociosos concorrentes por tamanho de máquina, memória e preço mensal, citando uma medida de 37.854 jogadores ociosos concorrentes em um núcleo com 3 GB contra uma figura de comparação publicada, com links para documentação de desempenho e teste de carga para detalhes de reprodução. Um arquivo AGENTS.md é fornecido para ferramentas de IA.