Y lo hacemos en tres áreas principales: herramientas para desarrolladores, arquitectura de software y creación de contenido. Veamos cada una de ellas con más detalle.
Comencemos con las herramientas para desarrolladores. En primer lugar, sería negligente si no mencionara algunos de los increíbles software de código abierto en los que confiamos. Obviamente, hay cosas regulares que todas las compañías de software usan hoy en día, como Kubernetes y otras cosas. Pero en cuanto al diseño del juego y su aspecto, estas dos herramientas, Corsius y Pixie, nos han sido de gran ayuda. Corsius es una red multijugador y Pixie es una biblioteca gráfica que utilizamos para renderizar nuestros juegos. Dependemos mucho de estas herramientas de terceros, pero también hemos estado desarrollando estratégicamente nuestras propias herramientas donde sentimos que necesitamos más flexibilidad. Por ejemplo, Play es una herramienta para el emparejamiento, los lobbies y también tenemos servicios de amigos. Esto nos brinda mucha flexibilidad para poder juntar a los niños adecuados para que todos se diviertan y nadie se sienta excluido, entre otras cosas. También hemos construido nuestra propia versión de Zoom, básicamente, el sistema de audio y video, que llamamos Synthesis A V, y eso es lo que se muestra aquí a la derecha. Así que puedes ver que mientras juegan, también pueden interactuar con sus amigos y compañeros de equipo y planificar qué deben hacer a continuación, entre otras cosas. Construir estas cosas nosotros mismos le da a los juegos mucha flexibilidad para decidir qué equipos deben ir juntos y cambiar los equipos a mitad del juego, entre otras cosas. Ha sido muy útil contar con equipos de ingeniería que puedan desarrollar todo esto y que los juegos puedan... Y que puedan soportar los juegos.
Esa es la parte de las herramientas para desarrolladores, ahora veamos la arquitectura de software. Básicamente, en cuanto a la arquitectura multijugador, seguimos una arquitectura nativa del servidor, que es bastante común en los juegos. Y para aquellos que no lo sepan, aquí hay una breve introducción, pero básicamente tienes todos estos clientes que están conectados a algún servidor. Y cuando recibes alguna entrada del usuario a través del teclado o el mouse, el cliente... Básicamente, la idea aquí es que el cliente es un cliente muy ligero, por lo que no realiza demasiada lógica. Simplemente toma tu entrada y la envía directamente al servidor. Y luego en el servidor se ejecutan estos sistemas, que explicaré en un momento. Pero básicamente es toda la lógica para actualizar algo. Por ejemplo, supongamos que quieres mover la nave espacial hacia adelante, entonces presionarías la tecla de flecha hacia arriba en tu teclado, y el cliente simplemente lo enviaría al servidor. Y luego el servidor realmente movería la nave espacial y también decidiría si colisionó con algo. Entonces, si la nave espacial estuviera justo al lado de un planeta o algo así, se produciría esa colisión, se decidiría qué le sucede al planeta y a la nave espacial, y luego se resolvería eso. Y luego ese nuevo estado se pasa a todos los clientes para que todos estén sincronizados y podamos seguir adelante. Este ciclo se repite una y otra vez. Y esa es la idea principal de la conexión en red autoritativa del servidor. Pero hay algunos casos en los que no queremos eso, como por ejemplo, el movimiento de la nave espacial.
Comments