30 octubre 2023

Robust Python: Write Clean and Maintainable Code by Patrick Viafore


Cuando no te ganas la vida con la programación sino que simplemente eres un aficionado al que le gusta programar, lo difícil no es aprender múltiples lenguajes sino mantenerlos vivos sin que se te olviden. Cuando sólo puedes dedicar un rato al día, te centras en un proyecto con un determinado lenguaje y el resto de ellos se van oxidando. Es cierto que hay libros con los que repasar, pero con el tiempo superas el nivel básico y ya no te vale cualquier libro para mantener fresco un lenguaje. Yo me temo que he llegado a ese punto con Python y andaba un poco desesperado por encontrar un libro que realmente me aportase algo nuevo. Hasta que tuve la fortuna de adquirir este libro en un pack (bendito Humble Bundle).

"Robust Python: Write Clean and Maintainable Code" de Patrick Viafore no es un libro para novatos, ni siquiera para desarrolladores intermedios, sino más bien para desarrolladores experimentados que son los que más apreciarán las propuestas de este libro para desarrollar aplicaciones complejas que puedan ser mantenibles con el paso del tiempo.

El libro empieza explicando el sistema de tipado opcional de Python y lo lleva mucho más lejos que los tutoriales de Internet hasta un nivel de sofisticación nada habitual. ¿Sabías que puedes definir interfaces en Python? ¿sabías que puedes definir tus propios tipos? Dataclasses, Enums y otros tipos se exponen aquí con funcionalidades interesantísimas que ni se vislumbran en los textos introductorios.

Después de eso, se profundiza en algunos de los principios SOLID y en arquitecturas, como la de eventos, para cumplirlos. Todo ello, siguiendo unos ejemplos sencillos y amenos de entender.

Finalmente se trata extensamente, el ecosistema de Python para hacer pruebas automatizadas, explicando múltiples estrategias.

El libro me ha gustado mucho. Va al grano, es ameno y realmente aporta herramientas nuevas que no suelen aparecer en el resto de libros de este nivel. En resumen: una muy buena compra si lo que quieres es pulir tu Python para empezar a ser experto.

27 octubre 2023

Curso "Texturizado estilizado (Hand Painted) para videojuegos"


Ayer acabé el curso "Texturizado estilizado (Hand Painted) para videojuegos" de Udemy y la verdad es que me ha gustado bastante.

Se trata de un curso en español de casi 25 horas en las que se explica cómo hacer las texturas artísticas para nuestros modelos 3D. Se enfoca a Blender, lo que me parece un acierto ya que es un paquete perfectamente open source y gratuito capaz de modelar cualquier cosa que podamos necesitar en un juego indie.

Se basa en el texturizado de 6 proyectos: unos barriles, unas rocas, un tile de hierba, una roseta, un suelo de piedra y un personaje de fantasía. En mi opinión no se sigue un gradiente de dificultad, sino que en cada proyecto se cuentan técnicas diferentes. El de los barriles y el de la rocas sirve de introducción para las técnicas que se verán en el resto del curso. El de la hierba, la roseta y el suelo, tienen en común que sirven para explicar cómo preparar texturas repetibles (tileables). En cuanto al texturizado del personaje de fantasía, se trata del proyecto más complejo, pero que viene a recopilar casi todas las técnicas que se han visto en el resto del curso.

Las técnicas de texturizado que se ven son muchas. Para pintar se explica tanto el pintado directo sobre el modelo usando Blender, como el unwrapping de la textura y pintado usando Photoshop. También se explica cómo generar otros mapas, como el de Ambiento Occlusion o el mapa Normal.

El curso está bien explicado y el profesor se explaya a la hora de mostrar cómo pintar artísticamente las texturas usando las distintas técnicas. De hecho, el ritmo del curso te permite ir pintando al mismo tiempo que el profesor. En mi caso, que sólo me interesaba conocer los conceptos y las técnicas, pero no practicarlas, opté por ponerme la velocidad a 2x y ver el curso en mis sesiones de bicicleta elíptica y se entendía bastante bien. Si lo que quieres es practicar, puedes ponértelo en 1x e ir pintando, para lo que te bastará con un ratón, aunque sospecho el sector más artístico de la audiencia usará una tableta (el profesor no lo llega a decir explícitamente, pero sospecho que también usaba tableta).

Al final, te quedas con una idea bastante clara de cómo se texturizan modelos 3D y el trabajo que supone. Está claro que es un trabajo que tiene mucho mérito y el profesor consigue transmitirlo.

Por ponerle un pero al curso, aunque me gusta que se haya basado en Blender, en muchas ocasiones usa también Photoshop y ZBrush que, a diferencia del primero, no son ni gratuitos ni open source. No sé para el caso de ZBrush, pero todo lo que hace durante el curso con Photoshop lo podría haber hecho con Gimp, que sí que es gratuito y open source. Creo que el que usa Blender es porque prefiere el software open source, por lo que habría sido más coherente usar Gimp que Photoshop. En el caso de ZBrush, creo que la alternativa habría sido el mismo Blender, así que no entiendo por qué no lo utiliza para realizar los polígonos en alto detalle, para luego hacer los bakes, en vez de utilizar ZBrush. Al nivel que usa ZBrush, creo que podría haber usado perfectamente Blender y el curso habría quedado mejor.

En todo caso, me alegro de haber hecho el curso y lo recomiendo a cualquiera que quiera introducirse en las vertientes más artísticas del desarrollo de videojuegos. Eso sí, te recomiendo que esperes a que salga de oferta en Udemy, por debajo de 20 € (lo cual ocurre a menudo). Ni se te ocurra comprarlo por el precio desorbitado por el que lo ponen de vez en cuando.

19 octubre 2023

Game AI Pro 360 - Guide to Tactics and Strategy


Hay gran cantidad de libros relativos a la Inteligencia Artificial (IA), pero la mayoría o son muy académicos, o asumen un enfoque meramente divulgativo o se centran en temas más aplicados como el machine learning y el análisis de datos. La bibliografía sobre IA enfocada a los videojuegos es muy escasa, sobre todo si la buscas en formato digital (en mi caso Kindle).

Sin embargo, uno de los grandes autores en este campo es Steve Ravin, no tanto por sus aportaciones propias sino por su labor compendiando las de otros en sus obras. Suya es la serie de libros AI Game Programming Wisdom de la que este es uno de sus últimos exponentes. Como los anteriores, cada capítulo de este libro es un artículo de un autor diferente, desarrollando un concepto relativo a la IA en videojuegos. A diferencia de los libros anteriores, que tenía artículos que cubrían áreas de lo más variopintas, en este todos los artículos se centran en la faceta del análisis y la toma de decisiones tácticas y estratégicas.

El valor principal del libro es que los autores de los distintos capítulos son profesionales especializados en este campo que realizan su labor en reputados estudios de videojuegos. Así que los problemas, matices y enfoques que proponen están respaldados por su gran experiencia. La solvencia de los autores se nota también en el aire académico que desprende cada una de sus páginas. 

Sin embargo, el principal handicap del libro es precisamente ese: la procedencia laboral de sus autores. Al venir de grandes estudios deben estar sujetos a clausulas de confidencialidad y supongo que esa es la razón por la que no entran al detalle sobre las implementaciones concretas, dado que podrían comprometer la propiedad intelectual de sus empresas. Esos autores pueden explicar los conceptos generales adoptados en sus juegos, pero no pueden desvelar el detalle de cómo los han puesto en práctica sin comprometer el core de esos juegos.

Por eso, el libro se mueve en un nivel muy conceptual en el que plantean cosas realmente muy interesantes, pero que se queda muy corto a la hora de explicar cómo lo han implementado. Los fragmentos de código brillan por su ausencia y cuando aparecen no pasan de mero pseudocódigo que en realidad no acaba de explicar por completo los conceptos planteados. Ha habido capítulos completos en los que he perdido el hilo a las pocas páginas y no he sabido completar los huecos que iban dejando los autores. En otros sí que he entendido todo lo que planteaban, pero me quedaba con las ganas de un ejemplo de implementación real.

Probablemente me falte el nivel que tienen los autores, pero mi conclusión es que desde luego no es un libro para introducirse en el género de la IA para videojuegos. Para ello, antes que este libro recomiendo el de AI for Games de Ian Millington. Este último libro, sí que va desde un nivel de iniciación a uno medio-alto y con todo lujo de detalles. Pensaba que este libro ya me dejaba preparado para otros, ya de nivel intermedio, pero se ve que no para este de Steve Ravin.

¿Lamento haberlo leído? No. Cuando he conseguido cogerle el hilo a los capítulos los he disfrutado y he sacado un par de ideas que aunque no sepa aún cómo implementarlas sí que me han resultado lo suficientemente sugerentes para intentarlo a la primer oportunidad.

Veredicto del libro: no sirve para iniciarse, pero es una lectura interesante para que te vayan sonando los conceptos que mueven la IA de los grandes videojuegos.