Aprender sobre C++, Motores ECS e IA

Cómo aprender y qué recursos usar

¿Qué haremos en V1 y V2?

En V1 y V2 nos vamos a centrar en programar el motor del juego y la IA. Para el motor del juego utilizaremos arquitectura Entity-Component-System. Dentro de la IA veremos los algoritmos esenciales como los Steering Behaviours y los Behaviour Trees. 

En todas las clases aprendemos a programar en C++ moderno (17, 20 y 23). Trabajaremos mucho C++ en los Challenges. Es muy importante que lo pongáis en práctica en vuestro ABP. Evitad programar como en cursos anteriores: cuánto más os esforcéis por adquirir nuevas y buenas prácticas de programación, más rápido irá vuestro proyecto y más aprenderéis.

Vale, ¿Cómo lo hago?

Primero de todo, conoce lo más básico de un ECS en C++ y aprende a hacerlo por ti mismx. Empieza por esta serie de 3 vídeos:

Una vez tengas las bases, organízate según tu rol: ¿Programarás parte del motor o te centrarás en la IA?

Para programadores del Motor

Hay 2 series de vídeos y un libro sobre programación del motor ECS. Te explico los detalles:

  • Serie de 2020 (2020. GameEngine ECS desde 0 en C++17)
    • Descripción: empieza desde 0, enseñando makefiles, C++, cómo abrir una ventana básica y dibujar tus propios sprites y cómo empezaríamos con un motor usando herencia, que es lo que conocéis de cursos anteriores. Llegado un punto, vemos que eso se complica y no es la forma de hacerlo. Eso nos enseña para qué sirven las templates. Vemos templates, cambiamos el motor y lo terminamos. Todo mientras aprendemos C++17.
    • Ventajas: es más sencillo y os ayuda a ir aprendiendo más paso a paso, desde lo que sabéis. El motor es más sencillo de implementar. Puedes apoyarte en el Libro de Laureano Canto Berná (ECS).
    • Inconvenientes: El motor es mucho menos flexible y menos óptimo. No aprendéis técnicas avanzadas.
  • Libro de Laureano Canto Berná (ECS)
    • Escrito por Laureano en su TFG en 2022, es un libro que explica cómo crear un ECS básico en base a 3 mini-proyectos. Cubre principalmente las ideas básicas y las ideas de la Serie de 2020, con algunos detalles de la Serie de 2022. Es un apoyo muy interesante porque da más ideas y ejemplos que no están en los vídeos de teoría y os puede ayudar a aprender más.
  • Serie de 2022 (2022. GameEngine ECS C++20 Avanzado)
    • Un ECS completo, desarrollado usando templates y técnicas de programación modernas. Es muchísimo más óptimo y flexible. Permite crear muchos más tipos de componentes, tags y sistemas. Los sistemas son más fáciles de manejar por el equipo de desarrollo y hace que el trabajo en equipo sea más rápido y avanzado. Se pueden realizar muchas más funcionalidades avanzadas con más facilidad y menos esfuerzo. Eso sí, es tecnológicamente más avanzado, por lo que requiere entender muchos más conceptos y alcanzar mayor nivel de programación. Este es el motor que se usa en la serie sobre IA.
    • Ventajas: Más flexible y óptimo. Se aprenden muchas cosas de C++ moderno y orientación a datos que son importantes para la industria. Da muchas más funcionalidades al equipo, permitiendo hacer sistemas y componentes más versátiles y fáciles de crear.
    • Inconvenientes: Más avanzado. Es recomendable haber empezado primero por el ECS más sencillo antes de abordar este (aunque no necesario). Muchos conceptos que entender. Hay que llegar a un nivel más alto en programación, por lo que requiere más esfuerzo. No está explicado en el libro, sólo en los vídeos.

Puedes realizar cualquiera de los dos. Con los dos podréis hacer vuestros juegos y tener buenos resultados. Debes decidir, sobre todo, en función de cuáles sean vuestros objetivos de aprendizaje, producto y portfolio. También, en función de vuestro nivel de programación, el tiempo que esperéis dedicar y el nivel que queráis alcanzar.

Otra posibilidad es empezar por el más sencillo y progresar al más avanzado si os véis avanzando bien y entendiendo el material. En el motor sencillo tenéis vídeos y libro para apoyaros.

Para programadores de gameplay e IA

Este es tu caso si vas a usar el motor, pero no vas a involucrarte en su programación de forma muy directa. Aunque no lo vayas a programar, necesitas tener conocimientos de cómo funciona y cómo está programado. Por eso, es conveniente que trabajes cómo mínimo el libro de laureano y algunos vídeos de la serie con la que está implementado tu motor.

Los vídeos de IA de 2021 utilizan un motor como el de la serie de 2022. Si cuando veas la serie no entiendes bien cómo creo y utilizo los sistemas, apoyate en los vídeos de 2022 para entenderlo y haz algunas prácticas de crear partes de tu propio motor. Necesitas entenderlo bien y saber usarlo.

Serie de IA (2021. IA en C++ desde 0)

  • Steering Behaviours
  • Decision Trees
  • Behaviour Trees
  • ImGui
  • Ensamblador x86-32
Quiero saber más

Si quieres saber más sobre motores y orientación a datos, te recomiendo el libro de Richard Fabian, Data Oriented Design. Es un libro más teórico y avanzando, pero muy bueno. Si de verdad quieres profundizar en estos temas y entender muchas más cosas, estando preparado para hacer mejores diseños y para trabajar en esto en la industria, este es tu libro.