
En la búsqueda de nuevos caminos para explorar en el desarrollo de videojuegos, uno de los grandes retos que surgió fue cómo implementar multijugador en un juego WebGL, pensando en su futura publicación en plataformas como Poki.com o Itch.io.
En el mundo de los navegadores, el multijugador tiene un punto en común: todo debe funcionar sobre WebSockets. Esto es por las restricciones de seguridad de los navegadores, que no permiten el uso de protocolos como UDP, habituales en los juegos nativos.
Con esta limitación en mente, decidí comenzar explorando algunas de las tecnologías más sonadas para multijugador WebGL.
Mi primera parada: Colyseus
La primera tecnología que probé fue Colyseus, un framework open source que combina un servidor en Node.js con clientes en varios lenguajes (incluido Unity).
Lo que más me llamó la atención de Colyseus fue su propuesta:
- Salas (rooms): donde los jugadores se conectan y comparten estado.
- Schemas: estructuras de datos que se sincronizan automáticamente entre el servidor y el cliente.
La idea me parecía elegante: en lugar de enviar cada posición o evento manualmente, defines un “schema” que representa el estado del juego, y Colyseus se encarga de mantenerlo sincronizado.
Pero… también me encontré con algunos retos:
- La curva de aprendizaje no es trivial. Los schemas requieren compilarse y aprender a trabajar con su formato.
- Es necesario instalar varias dependencias y manejar un entorno Node.js.
- Si solo quieres algo simple (por ejemplo, mandar posiciones y disparos), puede sentirse que estás “cargando una maquinaria grande para un problema pequeño”.
En otras palabras: Colyseus no es plug & play. Es poderoso, pero implica aprender y adoptar su forma de hacer las cosas.
¿Y ahora qué sigue?
Después de probar Colyseus, me quedó claro que necesito evaluar qué tanto de esa complejidad vale la pena para mi proyecto.
Mis siguientes pasos son:
- Probar WebSockets puros.
- Montar un pequeño servidor en Node.js con ws.
- Enviar datos básicos (conexión, movimiento, disparos) y entender bien el flujo.
- Explorar Unity Netcode con transporte WebSockets.
- Ver si puedo mantenerme dentro del ecosistema Unity sin perder flexibilidad.
- Decidir cuál es la mejor tecnología según el tipo de multijugador que quiero:
- ¿Algo casual, donde basta con ver a otros jugadores moviéndose?
- ¿O algo más profundo que necesite sincronización compleja del estado del juego?
Conclusión
Por ahora, Colyseus me dejó una buena impresión como tecnología potente, pero con una curva que debo evaluar si realmente necesito recorrer.
Mi siguiente meta es probar WebSockets desde cero para entender las bases, y luego decidir si vuelvo a una solución más robusta o si mantengo un enfoque minimalista.
En el camino, iré compartiendo lo que aprendo sobre estas tecnologías y cómo encajan en el desarrollo de un juego WebGL.