19 julio 2024

Curso "Unity C# Mobile Game Development: Make 3 Games From Scratch" de GameDevTV

El curso que hice sobre desarrollo de juegos en Godot, para plataformas móviles, me supo a poco. Así que decidí hacer el equivalente para Unity y comparar las dos plataformas. En concreto, elegí otro curso de GameDevTV: "Unity C# Mobile Game Development: Make 3 Games From Scratch". En este caso lo compré en Udemy, donde ya tengo otros cursos.

Se basa en desarrollar tres proyecto: una especie de Angry Birds, un juego de carreras y un Asteroids. Todos son muy sencillos, pero tocan lo básico: configuración de físicas, tratamiento de cámara y mucho, muchísimo, de configuración de UI.

A nivel específico de plataformas móviles, el curso explica:

  • Configuración del editor para simular plataformas móviles.
  • Compilación para Android e iOS.
  • Gestión de entradas a través de pantallas táctiles, incluidas las entradas multidedo (multi-touch)
  • Notificaciones.
  • Anuncios (Ads).
  • Microcompras (in-app purchases).
Está bien en general, pero hay varios puntos en los que se nota que necesita una actualización. Lo más sangrante es que el mismo profesor reconoce alguno de esos puntos. Por ejemplo, al llegar a la parte de los Ads, la plataforma de Unity te ofrece dos opciones. El profesor admite que la opción clásica ya está obsoleta y que el desarrollo de Unity va por la segunda opción, ¿pero adivinas cuál explica al final? justo la opción que ha reconocido que es obsoleta.

También ocurre que hay varios momentos en los que Unity ha evolucionado y los componentes que usa en la clase no aparecen o no se comportan exactamente como en la clase. Cuando te pase eso y te quedes atascado te recomiendo que eches un ojo a la sección de comentarios de la clase de turno. Verás que está hasta arriba de alumnos preguntando, pero el profesor no contesta nunca. Aun así, hay que reconocer que GameDevTV pone a profesores asociados a responder las preguntas, aunque en la mayor parte de las ocasiones sus respuestas creo que no aportan mucha ayuda. Al final, las mejores pistas las consigues de los comentarios de otros alumnos. Yo he dejado también algunas aportaciones, por si sirven de ayuda a alguien.

Como plataforma, Unity está muchísimo más madura para hacer juegos, y obtener ganancias con ellos en plataformas móviles, que Godot. Se nota que tienen componentes para todo, si bien es cierto que en muchos momentos he echado de menos la mayor claridad de Godot y, sobre todo, su mayor rapidez a la hora de desarrollar. Se me llevan los demonios cada vez que modifico un script de Unity, cambio al editor para probarlo y tengo que quedarme 5 o 6 segundos mirando a la pantalla mientras Unity hace uno de sus famosos "domain reload". En comparación, el flujo de trabajo en Godot es mucho más ágil, con ejecuciones prácticamente instantáneas (incluso usando C#), por lo que no resulta tan cansino. En mi opinión, si quieres hacer un juego para móviles con la intención de sacarle rendimiento mediante anuncios o microcompras, la mejor opción es Unity, aunque yo no descartaría Godot para hacer un prototipo, ni mucho menos para juegos de PC (para los que Godot creo que está muy bien preparado).

Como conclusión: el curso está bien, merece la pena. A mí me ha permitido asentar conceptos, algunos de los cuales ya me había presentado el curso de Godot, y además me ha permitido entender por fin cómo configurar UIs en Unity (parece mentira, pero no les había cogido el tranquillo hasta ahora). Pero, en todo caso, ten en cuenta que algunos contenidos están antiguos y no funcionarán como esperas. Así que, si te atascas, lo mejor es que acudas a la sección de comentarios porque lo mismo descubres que la culpa no es de tu código. Con esa salvedad en mente, creo que es un curso al que se puede sacar mucho partido.

12 julio 2024

Curso "Master Mobile Game Development with Godot 4: From Concept to App Stores" de GameDev.TV

Sigo avanzando con los cursos incluidos en el último pack de Humble Bundle que compré con cursos de GameDev.TV.

Esta vez le ha tocado al curso "Master Mobile Game Development with Godot 4: From Concept to App Stores". Se puede encontrar tanto en GameDev.TV como en Udemy. Comprar el curso en uno u otro portal dependerá de tus preferencias y del que te ofrezca un mayor descuento en un momento determinado. El curso al final acaba siendo exactamente el mismo.

Está enfocado a la programación de juegos para plataformas móviles Android o iOS.

Se supone que el curso tiene un nivel intermedio aunque en realidad los primeros dos bloques de lecciones, en los que construyes un juego de plataformas muy básico sin tocar un móvil, funcionan muy bien como introducción (o recordatorio, si es tu caso) de toda la parte 2D de Godot.

El tercer bloque ya se mete en la parte más específica del curso y explica cómo configurar Godot para generar paquetes instalables en Android e iOS. A nivel de jugabilidad para móviles, se queda en enseñar cómo usar el acelerómetro del terminal y a detectar si la pantalla tiene escalado y a corregirlo.

El cuarto y el quinto bloques se me hicieron muy pesados, porque se centran en montar toda la parte de UI y a dotar de funcionalidad a los botones de los menús. Está bien, si no has visto ese tema antes para Godot, pero si ya te pilla sabiéndolo esos dos bloques se te pueden hacer largos. Aún así, tampoco recomiendo saltárselos porque lo que viene después se apoya en gran parte en el UI que montemos en esta parte.

El sexto bloque es el más interesante de todos porque se centra en cómo interactuar con la API de Google Play para ofrecer microcompras en tus juegos. Para ello, usa el plugin oficial de Godot. Este bloque tiene bastante complejidad y un par de puntos que no están bien explicados, no por dejadez del autor, sino porque son cosas que me parece que sólo ocurren cuando usas Google Play por primera vez y, una vez resueltas, ya no vuelven a pasar y te olvidas de ellas. Como el autor ya ha hecho varios proyectos en Google Play, no le han pasado esas cosas, y su lección avanza como un tiro, sin darse cuenta de que a los que hacemos esto por primera vez vamos a sufrir más eventualidades de las que salen. Así, por ejemplo, me ha parecido corta la explicación sobre cómo darse de alta como desarrollador en Google Play. También hay una lección, la 6.12 "Acknowledging", donde hay un hilo entero de comentarios de gente que nos hemos estrellado con lo mismo, sin que el autor hay acudido al rescate. Al final, tras muchas búsquedas por Internet, conseguí resolver mi problema y dejé mi solución en los comentarios. La solución fue desbloquear el modo desarrollador, no en el móvil (que eso sí se explica en el curso), sino en la misma aplicación de Play Store. Sospecho que el autor del curso no lo explicó porque es la típica cosa que desbloqueas al principio y luego te olvidas... hasta que vuelves a estrellarte con ello. Pero en un curso introductorio como este es un fallo no mencionarlo. 

El séptimo bloque es sobre cómo publicar la aplicación, pero, comparando con todo lo anterior, es una auténtica tontería por su sencillez.

El autor utiliza GDScript, pero yo iba traduciéndolo a Godot C# sobre la marcha, sin problema alguno hasta la parte de las microcompras, que me forzó a practicar cómo llamar a un componente en GDScript (el plugin) desde C#. Nada complejo. Una vez que te das cuenta de que se trata de cargar el plugin como un GodotObject y, a partir de ahí, llamar a sus métodos internos con el método Call(), todo se vuelve sencillísimo. Si acaso hay que tener en cuenta que el plugin te devuelve tipos propios de Godot, como Array o Dictionary, que no son exactamente los nativos de C#. En ese último caso reconozco que tuve que analizar el código fuente (en java) del plugin para entenderlo. Al autor del curso, todo esto de los tipos le resultó transparente, dado el tipado dinámico de GDScript.

El autor se explica bien. Es turco, pero su inglés es uno de los más claros que he oído en un curso, y si aun así lo de oír inglés fuera un problema para ti tienes los subtítulos, los cuales son bastante certeros por las pocas veces que he tenido que tirar de ellos. Me ha parecido también que las prácticas de programación que emplea el autor son "sanas" y que por ello acabas armando un programa bien estructurado. Eso de "aguas abajo tiras de los métodos de las referencias, mientras que aguas arriba devuelves señales" es un principio que yo ya venía sospechando por mi propia experiencia, pero que esta es la primera vez que lo oigo explícitamente mencionado, y es un principio de diseño que me ha gustado mucho. 

Por tanto, la sensación general es que, con sus pequeñas faltas, el curso es globalmente bueno e interesante. Lo recomiendo.