Plataforma en la nube · Bajo demanda
game-on-demand
Servidores de juego que nacen cuando alguien los pide y desaparecen cuando termina. Sin nada encendido esperando.
l4d2.ventrax.dev ↗- 43 s
- de reserva a jugable
- 0,066 $
- coste por partida
- 0
- servidores encendidos en reposo
- 935
- FPS mínimos con 14 jugadores
Resumen
Este proyecto lleva la flota anterior al siguiente paso: en vez de máquinas encendidas todo el mes, cada partida arranca su propio servidor dedicado y lo destruye al acabar. Quien reserva pulsa un botón y en menos de un minuto tiene el servidor listo para entrar.
Incluye un modo competitivo 4v4 completo: cola por franjas de MMR, emparejamiento equilibrado, votación de mapa, lista blanca que solo deja entrar a los ocho emparejados, y puntuación al terminar.
El reto real no fue el juego sino la economía: hacer que una plataforma de servidores bajo demanda cueste menos que alquilar máquinas fijas, y que la espera sea corta a pesar de crear una máquina desde cero en cada partida.
Arquitectura
El plano de control vive en AWS sin servidores: la web es una SPA en S3 tras CloudFront, la API son funciones Lambda, el estado va en DynamoDB y un único reloj de un minuto mueve todo lo temporal. Los servidores de juego corren en Oracle Cloud, elegidos tras medir precios y latencia de las dos nubes.
Cada instancia nace de una imagen horneada con Ansible que lleva el juego dentro, y descubre a qué partida sirve leyendo los metadatos de la nube al arrancar. Un agente en la máquina reporta cada quince segundos por A2S y RCON, y la nube decide desde fuera cuándo el servidor está listo, cuándo se quedó vacío y cuándo hay que destruirlo.
Para que reservar no tarde minuto y medio hay una instancia parada e hidratada esperando: encenderla deja el servidor jugable en unos cuarenta segundos en vez de noventa, y cuesta dos dólares al mes porque parada solo paga su disco.
Decisiones
Oracle sobre AWS para el juego: medido, la mitad de precio por núcleo equivalente, tráfico de salida gratuito —una partida mueve un giga por hora— y 35 ms de latencia desde Lima contra 86-104 ms. El plano de control se quedó en AWS.
Una partida, una máquina. Meter varias por núcleo habría sido más barato, pero un servidor de juego que comparte CPU se nota en el tick, y eso es exactamente lo que la gente viene a buscar.
Cada servidor recibe una credencial firmada que solo vale para él y caduca, en vez del secreto compartido de toda la flota: lo que se filtre desde una máquina vale una partida, no el sistema entero.
Las 57 miniaturas de mapa se ampliaron por IA con Upscayl: el juego solo trae 256×128 y la tarjeta las pinta al triple. Se probaron los siete modelos y ganó el único que aguanta a la vez rótulos, geometría fina y niebla sin desviar el tono, ampliando a 1024 y reduciendo después con Lanczos —sale hasta un 38 % más nítido que pedir el aumento directo—.
Stack
- AWS Lambda
- DynamoDB
- CloudFront
- CDK
- Oracle Cloud
- Terraform
- Ansible
- React
- TypeScript
- Python
- SourcePawn
- systemd
- Upscayl