06 diciembre 2024

Curso "Mastering Game Feel in Unity: Where Code Meets Fun!" de GameDev.tv

Portada curso
Sigo haciendo los cursos del ultimo pack de Humble Bundle que compré, con cursos de GameDev.tv. Esta vez le ha tocado a "Mastering Game Feel in Unity: Where Code Meets Fun!". Un curso de unas 8 horas enfocado a desarrolladores que ya hayan hecho cursos introductorios y quieran empezar a mojarse los dedos de los pies en materias más avanzadas. Lo puedes comprar en la misma plataforma de GameDev.tv o en Udemy.

Para ello, el autor parte de un juego ya hecho con lo que se aprende en el nivel básico. Un shoot'em up 2D, en el que movemos a nuestro personaje con el teclado y apuntamos con el ratón. En este punto, el juego es completamente funcional, pero es plano y aburrido. La tesis del autor es que basta añadir pequeños detalles puntuales para hacer que el juego de vuelva tremendamente atractivos y sugerente. Casi todos esos detalles responden a la idea de retroalimentar al jugador, reforzando visualmente sus acciones. Si el jugador dispara, la cámara debe vibrar levemente; si hace estallar una granada, la cámara debe vibrar con más fuerza. Si el jugador se mueve, su personaje debe oscilar en el sentido del movimiento y levantar una leve estela de polvo. Y así toda una larga serie de ejemplos, cada uno de los cuales sirve para probar una funcionalidad diferente de Unity.

Con las vibraciones de cámara se introduce muy por encima los impulsos de Cinemachine. Las estelas de polvo, o las explosiones, son una excusa para perderle el miedo a los sistemas de partículas. Se dota al personaje principal de la capacidad de volar con un jetpack, lo que sirve para configurar un Trail Renderer. Le aporta vida al escenario utilizando las capacidades de iluminación 2D del URP de Unity, y le saca un juego inesperado a los colores HDR con un mero postprocesado Boom. Tampoco descuida la parte del sonido, lo que sirve para usar por primera vez (al menos en mi caso) el AudioMixer de Unity.

Por tanto, toca muchas cosas. Todas a nivel de ejemplo. Ninguna con profundidad, pero sí con el suficiente detenimiento como para perderle el miedo a determinadas herramientas de Unity y que las puedas ubicar mentalmente, reconociendo en qué situaciones te pueden servir. Cuando llegue el momento de emplearlas ya tendrás tiempo para profundizar.

Donde me he separado bastante del curso es a nivel de código. No digo que el autor programe mal, ni mucho menos, pero su manera de organizar las cosas no me ha acabado de encajar. Es una cuestión de gustos. Por poner un ejemplo, tiende a usar eventos para suscribir métodos dentro de la misma clase del evento y, sin embargo, tiende a abusar (en mi opinión) de la referencia directa entre componentes. Yo tiendo a trabajar al revés, usando llamadas directas a métodos dentro de la misma clase, referencias a componentes que están por debajo del llamante y eventos para comunicar cosas hacia arriba en la jerarquía o entre componentes al mismo nivel. No digo que mi manera de programar sea mejor, pero sí que me siento más cómodo con ella que con el estilo del autor. Al final he ido implementando el código a mi manera y, conforme avanzaba el curso, este se ha ido pareciendo cada vez menos al del autor. No es nada grave. Te lo comento porque si haces el curso, y no te encaja cómo programa el autor, no tengas miedo a hacer las cosas a tu manera. Probablemente aprendas mucho más que limitándote a copiar el código del profesor. 

También es cierto que los cursos de GameDev.tv te dan margen para hacer las cosas a tu manera. Es una seña de identidad de ellos que, cada poco tiempo, te van proponiendo desafíos. En cada uno de ellos, el profesor te describe funcionalmente lo que se quiere conseguir y luego te propone que pares el video y que intentes implementarlo tú mismo. Al reanudar el video, el profesor te explica cómo lo ha resuelto él. Si te has quedado atascado, su implementación te ayuda a resolverlo; y si has conseguido resolverlo, la manera de hacerlo del profesor te puede descubrir nuevas opciones que puede que no hubieses tenido en cuenta. En todo caso, me parece una manera mucho más interesante, divertida y provechosa de hacer un curso que limitarse a seguir fielmente los pasos del profesor. 

Lo único que hay que tener en cuenta es que, con este método, lo normal es que tu implementación se vaya separando progresivamente de la del profesor, por lo que no es raro que en los capítulos finales tengas que invertir algo más de tiempo viendo cómo adaptar lo que va haciendo el profesor a tu propia versión del código. Es cierto que empleas mucho más tiempo que el que dice cada capítulo que vas a emplear, pero creo que el proceso es mucho más didáctico.

Por tanto, no me arrepiento de haber hecho el curso. Me ha resultado entretenido, interesante y lo he acabado habiendo aprendido bastantes posibilidades de Unity que antes ignoraba. Que un curso te aporte eso no está nada mal.