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.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.