Sobre el proyecto
Gamend es un backend de código abierto para juegos multijugador, escrito en Elixir. Está pensado para ser autoalojado: no hay un servicio hospedado que comprar, y el proyecto se posiciona como la capa del lado del servidor alrededor de un juego, no como el juego en sí. El juego sigue renderizando y simulando localmente, mientras que el scripting del lado del servidor permite que la lógica real se ejecute en el servidor, de modo que la puntuación, las recompensas, las reglas de emparejamiento y la validación se deciden donde los jugadores no pueden editarlas. Los trabajos en segundo plano y programados también se ejecutan allí.
Conjunto de características descrito en el README:
- Autenticación: correo electrónico/contraseña, enlace mágico, OAuth (Discord, Google, Apple, Facebook, GitHub, Steam) y tokens de API JWT.
- Usuarios: perfiles, metadatos, tokens de dispositivo y ciclo de vida de la cuenta.
- Lobbies: gestionados por el anfitrión, máximo de usuarios, estados ocultos/bloqueados, contraseñas y actualizaciones en tiempo real.
- Grupos: comunidades públicas, privadas u ocultas con roles, solicitudes de unión e invitaciones.
- Partidas: grupos efímeros basados en invitaciones, de 2 a 32 jugadores por defecto, integrados con los lobbies.
- Amigos: solicitudes, aceptar/rechazar y bloqueo.
- Chat: mensajes directos de lobby, grupo, partida y amigos con cursores de lectura y recuentos de no leídos.
- Notificaciones: notificaciones tipadas para eventos sociales, estado leído/no leído y entrega en tiempo real, además de notificaciones push móviles FCM y APNs directas enrutadas por token de dispositivo.
- Misiones y progresión: un motor basado en eventos que cubre logros, misiones diarias/semanales, ventanas de eventos y cadenas, con recompensas exactamente una vez en la economía.
- Tablas de clasificación: clasificaciones globales y por usuario.
- Pagos: flujos de proveedores de Stripe Checkout, Google Play, App Store y Steam con validación de recibos, webhooks, derechos, reembolsos y herramientas de administración.
- Almacén clave-valor: almacenamiento del lado del servidor con ganchos de control de acceso.
- Scripting de servidor: ganchos en eventos del servidor como inicio de sesión, lobby creado o misión completada, escritos en Elixir, GDScript (compilado en lugar de interpretado) o cualquier lenguaje BEAM.
- Trabajos en segundo plano: trabajos en segundo plano y cron duraderos y reintentables desde ganchos del servidor, en Postgres o SQLite.
- Economía e inventario: monederos de moneda virtual con un libro mayor atómico y auditable, además de pilas de objetos; concesión/gasto/consumo autorizados por el servidor con actualizaciones de saldo en vivo.
- Almacenamiento de objetos: subidas de avatares y UGC con un backend conectable, ya sea disco local o cualquier servicio compatible con S3 como AWS S3, Cloudflare R2 o MinIO.
- Portal de administración: un panel web integrado para gestionar recursos.
Se proporcionan SDKs de cliente para Godot (también listado en la Godot Asset Library), Rune a través de los complementos Balaur, C++17 con transportes conectables, JavaScript en npm, y un SDK de Elixir de módulos stub para autocompletado en el IDE en ganchos personalizados. Los SDKs de Godot, Balaur y C++ se reconstruyen en cada cambio en main y se adjuntan a la última versión.
Ejecutarlo localmente requiere Elixir 1.20 y Erlang/OTP 29, Rust para la dependencia nativa de WebRTC (ex_sctp) y opcionalmente PostgreSQL; el desarrollo usa SQLite por defecto, con el adaptador de base de datos elegido en tiempo de compilación. La primera ejecución es `cp .env.example .env`, `mix setup`, `mix dev.start`, y luego visitar localhost:4000. Los archivos de Docker Compose cubren una instancia única y una configuración de múltiples instancias con nginx, PostgreSQL y Redis. La guía de despliegue y una plantilla inicial apuntan al despliegue en producción en fly.io.
El README también incluye un gráfico de rendimiento que compara jugadores inactivos concurrentes por tamaño de máquina, memoria y precio mensual, citando una cifra medida de 37.854 jugadores inactivos concurrentes en un núcleo con 3 GB frente a una cifra de comparación publicada, con enlaces a la documentación de rendimiento y pruebas de carga para detalles de reproducción. Se proporciona un archivo AGENTS.md para herramientas de IA.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.