Transformar un juego local en una experiencia multijugador online requiere comprender cómo funciona la comunicación entre computadoras a través de Internet. Aquí se explican los fundamentos de la arquitectura cliente-servidor, el protocolo HTTP y el uso de una API para intercambiar datos en tiempo real, todo aplicado a un proyecto práctico con JavaScript y Node.js.
¿Cómo funciona la comunicación cliente-servidor en Internet?
Internet es, a grandes rasgos, una red global de computadoras conectadas entre sí [0:42]. Existen muchas formas en que estas máquinas se comunican, pero la más popular cuando accedemos a la web es la estructura cliente-servidor.
En este modelo siempre hay dos roles bien definidos:
- Cliente: es el dispositivo desde el cual consumes un servicio, por ejemplo, tu computadora o teléfono cuando ves una clase en Platzi [1:06].
- Servidor: es la computadora que provee el servicio, almacena los recursos y responde a las solicitudes del cliente.
La comunicación siempre inicia con una petición del cliente y termina con una respuesta del servidor [1:42]. Por ejemplo, cuando escribes platzi.com/cursos en tu navegador, estás solicitando un recurso y el servidor devuelve la lista de cursos disponibles.
¿Qué es el protocolo HTTP y por qué es importante?
Para que clientes y servidores se entiendan, necesitan hablar el mismo idioma. Ese idioma es HTTP (Hypertext Transfer Protocol), el protocolo de transferencia de hipertexto [1:26]. Es la forma estándar en la que los navegadores se conectan a cualquier servidor.
A través de HTTP se pueden transferir distintos tipos de recursos:
- Archivos de texto, imágenes y vídeos.
- Código HTML, JavaScript y CSS.
- Cualquier archivo que un servidor pueda entregar.
Si el navegador puede interpretar el archivo recibido, como ocurre con HTML, lo muestra en pantalla. Si no, lo descarga o ejecuta alguna acción con él [2:28].
¿Qué diferencia hay entre archivos, streaming y datos crudos?
Además de transferir archivos, existen otras formas de enviar información:
- Streaming de datos: permite enviar contenido multimedia orientado por el tiempo, fotograma a fotograma, para que muchos clientes lo consuman simultáneamente [2:44]. Es lo que ocurre cuando ves televisión online o una transmisión en vivo en redes sociales.
- Transferencia de datos por medio de una API: en lugar de enviar archivos o multimedia, se envían datos crudos con una estructura específica [3:22]. Por ejemplo, enviar el nombre y la edad de una persona empaquetados en un formato ordenado.
¿Qué es una API y cómo se aplica a un juego multijugador?
Cuando cliente y servidor intercambian datos, surge la necesidad de estandarizar la estructura en la que viajan esos datos [3:52]. Ambas partes deben estar de acuerdo en el formato y las reglas de comunicación.
API significa Application Programming Interface [4:10]. Es la interfaz que define cómo el servidor y el cliente se comunican, eliminando confusiones en el intercambio de información.
En el proyecto de Mokepon, la API funciona como un intermediario central entre los jugadores [4:30]:
- Cada jugador recibe un identificador único (A, B, C) y el servidor se identifica como S.
- El servidor centraliza y redistribuye la información del estado de cada jugador.
- Los datos que se intercambian incluyen el mokepon seleccionado, las coordenadas en el mapa y los ataques elegidos para resolver el combate [5:06].
De esta forma, cuando el jugador A selecciona su mokepon, el servidor recibe esa información y la comparte con los demás jugadores conectados.
¿Por qué se necesita Node.js para el backend del juego?
Hasta este punto, todo el código del juego vive en el navegador, es decir, en el frontend. Para que el juego sea multijugador, se necesita un backend: un servidor que gestione la comunicación entre todos los clientes [0:18].
Node.js permite ejecutar JavaScript del lado del servidor [5:30], lo que significa que puedes usar el mismo lenguaje tanto en el frontend como en el backend. Con Node.js se construye el servidor central que recibe peticiones, almacena el estado de los jugadores y devuelve respuestas estructuradas a través de la API.
El siguiente paso es instalar Node.js y comenzar a escribir el código del servidor. Si ya conoces los conceptos de petición, respuesta y API, estás listo para llevar tu juego al siguiente nivel. ¿Qué parte del proceso te genera más curiosidad? Compártelo en los comentarios.