Entre bastidores, un servidor de juego sin NINGUNA dependencia
Si alguna vez has metido el dedo en el desarrollo web, conoces la broma: la carpeta `node_modules` de un proyecto moderno pesa más que una foto de la galaxia. Cientos de bibliotecas externas apiladas, de las que nadie sabe muy bien qué hacen todas. Al desarrollar nuestro juego en Node.js, tomamos el camino contrario, y es uno de nuestros orgullos de desarrolladores: el servidor de Dovion funciona sin NINGUNA dependencia externa. Cero. Ni una sola biblioteca de terceros al arrancar.
En la práctica, ¿qué significa eso?
Cuando un estudio monta un servidor de juego en línea, el reflejo es montar piezas ya hechas: una biblioteca para los WebSockets (la conexión en tiempo real entre tu navegador y el servidor), otra para servir archivos, otra para esto, otra para lo otro. Es rápido al principio.
Nosotros lo escribimos todo a mano. Incluida la pieza más intimidante: el propio servidor WebSocket, es decir, el protocolo que hace circular en tiempo real las posiciones de los barcos, los disparos y los eventos entre el servidor y cada jugador. Es el tipo de componente que el 99 % de los proyectos importa sin hacerse preguntas. Nosotros preferimos entenderlo hasta la última línea.
¿Por qué imponerse esto?
No es (solo) masoquismo. Esta decisión tiene ventajas muy concretas:
- Fiabilidad. Cada dependencia es un riesgo: una actualización que rompe todo, una vulnerabilidad de seguridad descubierta en un tercero, un proyecto abandonado por su autor. Cero dependencias es igual a cero sorpresas desagradables venidas de fuera. Nuestro servidor de hoy arrancará igual dentro de cinco años.
- Ligereza. Sin capas intermedias: el código hace exactamente lo que le pedimos, ni más ni menos. Para un servidor que debe simular salas enteras en tiempo real —te contamos por qué en los bastidores del servidor autoritativo— cada milisegundo cuenta.
- Control total. Cuando surge un error a las 2 de la madrugada, está forzosamente en NUESTRO código. No hace falta rebuscar en las entrañas de una biblioteca escrita por otra persona. Podemos arreglarlo todo, porque lo construimos todo.
- Despliegue trivial. Instalar el servidor es copiar los archivos y arrancarlo. Sin instalación de paquetes, sin versiones incompatibles, sin ritual mágico.
El plan B de las redes bloqueadas
Un ejemplo concreto de lo que permite este control: algunas redes —colegios, empresas— bloquean las conexiones WebSocket. En la mayoría de los juegos, eso se traduce en una pantalla de conexión que gira en el vacío. Como controlamos toda nuestra pila de red, pudimos construir un transporte de respaldo por HTTP/SSE: si el WebSocket está bloqueado, el juego cambia solo a esta ruta alternativa, y puedes seguir jugando igual. Este tipo de red de seguridad es mucho más difícil de instalar cuando la capa de red es una caja negra importada.
Los inconvenientes (porque los hay)
Seamos honestos, esta filosofía tiene un coste: el tiempo. Escribir uno mismo lo que otros importan en una línea son semanas de trabajo extra, especificaciones técnicas que leer, casos raros que gestionar. Es un lujo de proyecto pequeño y apasionado; un equipo con plazos comerciales probablemente no podría permitírselo. No pretendemos que sea EL método correcto para todo el mundo — es el nuestro, y encaja con nuestra escala.
Esta filosofía de hacerlo a mano va, además, más allá del servidor: el propio mundo del juego lo dibuja el código, sin archivos de imagen, como explicamos en los bastidores del renderizado estilo Ghibli. Resultado global: un juego ligero, que carga rápido y funciona incluso en máquinas modestas — la prueba está en Dovion en un PC modesto.
Todo este trabajo invisible tiene un único objetivo: que tú hagas clic y que funcione. Compruébalo tú mismo: Juega gratis a Dovion.