Перейти к содержимому

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