26 mayo 2024

Curso "Godot 4 Multiplayer: Make Your Own Online Game" de GameDev.TV

Hace unos días que finalicé el curso que da título a este artículo y ya estoy listo para contaros lo que me pareció. 

Hice el curso en Udemy. También se encuentra en la plataforma propia de GameDevTV, aunque como ya tengo otros cursos de otras temáticas en Udemy prefiero seguir comprándomelos allí para tenerlos todo en un mismo sitio. Otra ventaja de Udemy es que suele contar con subtítulos en inglés, lo cual puede ser un auténtico salvavidas si el profesor tiene un acento muy cerrado. En teoría, la plataforma de GameDevTV debería permitir activar subtítulos, pero no he visto cómo en los pocos cursos que tengo allí.

En Udemy, el curso se anuncia prometiendo cubrir los siguientes temas:

  • Construcción de un juego online multijugador usando las librerías de Godot 4.
  • Crear mecánicas habituales en los juegos multijugador como baldosas interruptoras, objetos movibles, puertas a desbloquear, etc.
  • Sincronización de estas mecánicas a través de internet para permitir que los jugadores puedan interactuar entre sí y colaborar para superar los retos.
  • Usar la infraestructura de W4 Games para permitir que los jugadores puedan conectarse entre sí aunque no estén en la misma red local.
El juego que desarrolla para explicar estos principios es un sencillo plataformas 2D, en el que 2 jugadores podrán colaborar para alcanzar baldosas interruptoras que abran puertas y hagan aparecer puentes que permitirán acceder a zonas previamente inalcanzables. También se incluye la mecánica de abrir un cofre, para recoger una llave con la que abrir la llave de finalización de nivel. Como verás, el juego en si mismo es muy sencillo, pero permite cubrir una serie de mecánicas muy habituales en este tipo de juegos. 

Todo el primer bloque del curso, se dedica a darle forma al juego base. Si hace tiempo que no tocas Godot, te puede servir como repaso. Si nunca has tocado Godot, también te puede valer como tutorial introductorio.

En el segundo bloque es donde se empieza a implementar que los jugadores puedan conectarse entre sí, dentro de una misma red local. Al final resulta que, a Godot, le bastan 2 nodos especializados para ofrecer una experiencia multijugador completa. Todo un alarde de sencillez y elegancia que dice mucho de este engine. Entre esos 2 nodos especializados y las llamadas RPC desde el código, ya tienes todo lo que necesitas para montar tu juego online.

En el tercer bloque, el más largo, es donde se va explicando cómo aplicar los conceptos del bloque anterior para que las distintas mecánicas del juego se puedan sincronizar a todos los jugadores al mismo tiempo y que estos vean siempre el mismo estado del juego.

El curso implementa su código en GDScript, pero yo lo he seguido implementando mi código en C# y no he tenido problema alguno.

El profesor se explica muy bien, su pronunciación es buena y no divaga. El proyecto que ha elegido para sustentar sus explicaciones es lo suficientemente sencillo como para no estorbar por complejo, pero más que suficiente para cubrir las mecánicas más habituales que se suelen implementar en un plataformas. Al final del curso acabas teniendo una idea bastante buena de cómo articular un juego multijugador básico. 

Aun así, hay cosas mejorables. Para empezar, las herramientas multijugador de Godot (los 2 nodos y las llamadas RPC) se cubren de una manera bastante práctica, lo cual no está mal, pero me he quedado con las ganas de que profundizase en la parte teórica. Al final acabas intuyendo lo que hace cada cosa, pero no con la seguridad de saber lo que hace por dentro. Por ejemplo, se tratan las llamadas RPC y se usan ampliamente en el curso, pero me habría gustado que se detuviera más en ellas para explicar su funcionamiento general y cómo se utilizarían en otros contextos.

Otra cosa mejorable, es que a pesar de mencionar los servicios de W4 Games, en el curso no se les menciona para nada. Es cierto que en la letra pequeña advierten que esos contenidos no están disponibles aún y que llegarán más adelante, pero hace tiempo que W4 Games abrió su beta para que la gente probase sus servicios y esperaba que a estas alturas hubieran incluido esa parte en el curso, o que al menos hubiesen dicho cuándo lo harían. Nada de eso ha ocurrido y esa es la razón por la que no le he dado 5 estrellas en Udemy. Si finalmente, acaban incluyendo el bloque explicando cómo usar los servicios de W4 Games, revisaré al alza la puntuación.

A pesar de eso, el curso es muy recomendable, si bien no al precio completo con el que lo anuncian en Udemy y en GameDevTV. Mi consejo es que espera a que esté de oferta en alguna de esas dos plataformas para comprártelo. En GameDevTV no lo sé, pero en Udemy las ofertas son muy frecuentes, así que mi consejo es que no cometas la novatada de comprarlo por 50 o 90 € cuando es muy frecuente verlo ofertado por 10 o 15.

08 mayo 2024

"Programming Game AI by Example" por Mat Buckland

No es fácil encontrar buenos libros sobre inteligencia artificial (IA) aplicada a juegos. La mayoría no pasan del nivel introductorio y cuando llegan a explicar el algoritmo A*, lo consideran ya material avanzado y lo dejan ahí.

En mi opinión, la gran joya en esta materia es el "AI for Games" de Ian Millington, que combina unos contenidos vastísimos con unas explicaciones claras, detalladas y realmente pertinentes para el desarrollo de juegos. Desde que lo leí no me había encontrado con otra obra que se le pudiera comparar hasta que me topé con este al que le dedicamos el artículo. No en vano, el libro de Buckland fue una de las referencias de Millington.

Es cierto que "Programming AI by Example" no alcanza en amplitud de contenidos a "AI for Games", pero sí es cierto que los que trata lo hace con gran profundidad y claridad. También hay que reconocerle que trata varios temas ausentes de la obra de Millington, como la integración de sistemas de scripting en nuestros juegos (para simplificar el diseño de los algoritmos de IA) y el capítulo sobre agentes guiados por objetivos.

El libro está lleno de buenas figuras ilustrativas que permiten seguir las explicaciones. 

A diferencia de Millington, las implementaciones no las ilustra en pseudocódigo, sino en C++; lo que para mi gusto es un punto negativo porque no se trata precisamente del lenguaje más intuitivo del mundo. También es cierto que el libro acumula ya algunos años y, cuando se publicó por primera vez, la única alternativa para crear juegos era C++. En todo caso, las explicaciones son lo suficientemente extensas y claras como para que el entendimiento pleno del código no sea imprescindible.

Me ha llamado también la atención la insistencia en mostrar diagramas de UML de las jerarquías de clases de las diferentes implementaciones. Entiendo por qué lo hace y tampoco es que sobren, pero es algo que me ha hecho sonreír por lo pasado de moda que está. Ya no se suelen ver diagramas de UML en los libros.

A pesar de todas esas señales del tiempo transcurrido desde la publicación del libro, el campo de la IA para juegos no ha avanzado tanto como para dejar desfasado su contenido. Estos siguen estando vigentes. Si acaso, se echan en falta algunas herramientas que han surgido posteriormente como los árboles de comportamiento o el aprendizaje neuronal.

Conclusión: el libro me ha parecido excelente. Recomiendo que lo leas lectura  antes del de Millington. De esa manera, se puede potenciar su utilidad como pieza introductoria para facilitar la comprensión posterior del Millington y ampliar con este lo que deja pendiente el de Buckland. Con esta aproximación creo que cubrirás lo mejor que se ha escrito hasta el momento en el campo de la IA para juegos.