GameEngine sencillo en C++23. Componentes std::optional para Entidad-Componente-Sistema (ECS)
Profesor Retroman
0:00 / 0:00
GameEngine sencillo en C++23. Componentes std::optional para Entidad-Componente-Sistema (ECS)
5 077 просмотров · Трансляция закончилась 1 год назад
Profesor Retroman
20,7 тыс. подписчиков
5 077 просмотров · Трансляция закончилась 1 год назад
En esta sesión avanzamos en la construcción de nuestro motor utilizando una arquitectura Entity Component System (ECS), no sin antes adelantar información sobre la UAGames DevCon del próximo martes, 1 de abril de 2025.
Continuamos con la implementación de un motor ECS sencillo en C++ desde utilizando Raylib para las tareas básicas. Exploramos ideas importantes que deben aplicarse a un motor más grande, pero utilizando ejemplos en un entorno más pequeño para poder controlarlo mejor. Con esto podemos entender los conceptos y ubicarlos en su lugar correcto sin necesidad de tener una arquitectura grande de motor Entidad-Componente-Sistema (ECS) en mente todo el tiempo. Iremos construyendo paso a paso para entender los problemas y dificultades e ir creando y analizando soluciones sobre la marcha.
En esta sesión, profundizaremos en conceptos fundamentales de C++ para mejorar como desarrolladores de videojuegos. Revisaremos la gestión de memoria, la correcta utilización de punteros inteligentes, y entenderemos a fondo la importancia de los calificadores de tipo como const y volatile. Además, exploraremos el concepto de binding de referencias y su implicación en la const-correctness. La segunda parte del vídeo estará dedicada a la refactorización de nuestras entidades para empezar a trabajar con un sistema basado en componentes, lo que nos permitirá una mayor flexibilidad y organización en nuestro motor.
Trabajaremos const-correctness, new, std::unique_ptr y std::make_unique, const y volatile, componentes, std::optional, Perfect Forwarding, std::forward, std::find_if, dangling pointers, lambdas, inversión de control y muchas cosas más.
TEMAS
00:00:00 Introducción y Anuncios: UAGames DevCon 2025
00:05:28 Prohibición de 'new' desnudo: usar std::make_unique
00:11:32 ¿Qué son los Qualifiers en C++? Explorando const y volatile
00:24:02 'Bindear' una Referencia en C++: Conceptos y Lifetimes
00:53:00 Revisión de Arquitectura Entity Component System (ECS) Diagrama principal
01:07:00 Refactorizar Entidades: separar en Componentes
01:13:34 Entidades con Componentes Opcionales (std::optional) y Designated Initializers
01:29:40 EntityManager: entidades privadas y createEntity con Perfect Forwarding
01:40:40 Designated Initializers y tipos agregados: corrigiendo errores
01:49:27 Mover AiSystem a la Escena y buscar entidades por tipo ( findFirstByType, std::find_if )
02:01:33 Implementar getPlayer y forAllByType: inversión de control y lambdas
02:19:40 Próximos Pasos y Despedida
Clase regular de la asignatura Videojuegos 2, del Grado en Ingeniería Multimedia de la Universidad de Alicante. Clase impartida en directo debido a alertas amarillas y naranjas en determinadas zonas de Alicante y Valencia que aconsejan evitar desplazamientos.
Clase de Videojuegos 2, 2024/25
Grado en Ingeniería Multimedia
Universidad de Alicante