1-Introduccion A Los Motores de Videojuego-1
1-Introduccion A Los Motores de Videojuego-1
1-Introduccion A Los Motores de Videojuego-1
Sistemas de Juego
Programando un Motor de Videojuegos desde cero
José Ramón (Ramis Lao)
¿Quién soy?
- Diseñador y desarrollador de videojuegos
- Actualmente trabajando en Fireflies con Nest
Game Studio
- Estudiante de Game Design en VFS
- Científico de Datos e instructor en Bedu
- Cofundador y ex-CTO de SimplifAI y Marakana
Sports
- Compositor
- ¿Quién eres?
- ¿Qué es lo que más te
emociona de ser un
programador de
videojuegos?
- ¿Cuál es tu videojuego
favorito?
¿Qué vamos a hacer
en esta clase?
Introducción a los Módulo de
Motores de Videojuego Renderizado 3D
01 06
Actores y Módulo de
Renderizado 2D Módulo de Audio
02 07
Módulo de Física Módulo de Entrada
Básico
Temario de Datos
03 08
Módulo de
Inteligencia Artificial Cámaras
04 09
Módulo de Detección
OpenGL de Colisiones
05 10
Módulo de UI
11
Módulo de
Animación
12
Gráficos Intermedios
Temario
13
Entrega Final
14
Sistema de
calificaciones
1. Ejercicios por Tema (60 puntos)
a. 12 Ejercicios => 5 puntos / ejercicio
b. Puntos extras
2. Entrega Final (25 puntos)
a. Programar un videojuego simple utilizando nuestro motor de
videojuegos
3. Profesionalismo (15 puntos)
a. Asistir a clase (- 2 puntos por cada falta)
b. Llegar temprano a clase: 5 min de tolerancia (- 1 punto por cada retardo)
c. Cámara prendida (- 1 punto por cada clase con la cámara apagada)
d. Participación (¡Puntos extra por mantenerse activo en clase!)
¿Preguntas?
Tema 1: Introducción da
los Motores de
Videojuegos
¿Qué es un motor de
videojuegos?
● El término se hizo popular a mediados de los 90’s
● Doom (id Software) fue la principal referencia
○ Los componentes nucleares de software se encontraban separados del contenido
del juego
● Quake III Arena (id Software) y Unreal (Epic Games) fueron desarrollados con esta
separación en mente
○ Vendieron licencias de su motor y sus herramientas
○ Inicio de la comunidad de “modding”
● Los motores de videojuegos son arquitecturas basadas en datos que son reusables y
que por lo tanto no incluyen contenido de videojuegos.
Diferencias de un motor
para distintos géneros
FPS (First-Person
Shooters)
● Unreal, Half Life, Call of Duty, Halo, etc
● El enfoque está en:
○ Renderización eficiente de mundos 3D
○ Control responsivo de la cámara
○ Animaciones de alta fidelidad y AI
○ Armamento
○ Modelos de física semi-precisos
○ Capacidades multijugador de pequeña y mediana escala
Juegos en 3era
Persona
● Ratchet and Clank, Gears of War, The Witcher, Dark Souls, The Legend of Zelda, etc.
● El enfoque está en:
○ Puzzles
○ Movimiento de objetos en el entorno
○ Cámara de 3era persona
○ Sistema complejo de colisiones para la cámara
Videojuegos de Pelea
(Fighting)
● Tekken, Soul Calibur, Mortal Kombat, Killer Instinct, etc
● El enfoque está en:
○ Animaciones de personajes y shaders
○ Detección de colisiones
○ Sistema de input del usuario
○ Sistemas de prendas y cabello basados en física
○ Entornos mayormente estáticos
Videojuegos de
Carreras
● Grand Turismo, Mario Kart, Need for Speed, etc
● El enfoque está en:
○ Trucos para simplificar los entornos utilizando imágenes en 2D
○ Pistas divididas por sectores para optimizar rendering y facilitar búsqueda de
rutas
○ Cámara en 3era y 1era persona
○ Colisiones complejas de cámara
Estrategia en Tiempo
Real (RTS)
● Warcraft, Starcraft, Age of Empires, etc
● El enfoque está en:
○ Personajes de baja resolución
○ Terreno basado en heightmaps
○ Árboles de objetivos complejos
○ Múltiples formas de interacción para el usuario
Videojuegos Multijugadores
Masivos en Línea (MMOGs)
● World of Warcraft, The Elder Scrolls Online, Eve Online, Runescape
● El enfoque está en:
○ Servidores
■ Sign in/out
■ Estado del mundo
■ Cobros
○ Renderización del lado del cliente
○ Capa de redes para consistencia del estado y detección de trampas
Algunos motores de
videojuegos
● Unreal Engine 4 y 5
● Unity
● Godot
● Game Maker Studio
● Source 2 (Valve)
● Frostbite (Dice / EA)
● CryEngine (Crytek)
Arquitectura de Motores
en Tiempo de Ejecución
(Runtime Engines)
Motores en Tiempo de
Ejecución
3. Otros
a. Representación de los primitivos geométricos
b. Abstracción de la interfaz de la cámara
c. Materiales y Shaders
d. Sistema de iluminación dinámica
e. Texto y fuentes
Grafo de Escena
1. Limita el número de primitivos enviados a renderizar
2. Frustum culling: Remueve objetos que están fuera de la pantalla
visible
3. Subidivisión espacial
a. BSP, quadtree, octree, kd-tree
b. Mejorar eficiencia ayudando a determinar qué objetos son
visibles
Efectos Visuales
1. Sistema de partículas
2. Decals
3. Mapeo de iluminación
4. Sombras dinámicas
5. Post-procesamiento
Frontend
1. Visualización Head-Up (HUD)
2. Menús
3. Interfaz gráfica para manipulación de la escena
4. Videos cinemáticos
Profiling / Debugging
1. Temporizadores de código
2. Estadísticas durante el juego
3. Determinar uso de la memoria
4. Grabar y correr eventos de juego
5. Imprimir a la consola
Colisiones y Física
1. Dinámicas de Rigid Body
2. Motor de física
3. Muchas compañías usan librerías disponibles
a. Havok
b. PhysX
c. ODE
d. Bullet
Animación
1. 5 tipos de animaciones:
a. Animación de sprites/texturas
b. Animación jerárquica de Rigid Bodies
c. Animación Esqueletal (La más popular)
d. Animación de vertices
e. Morphing
Dispositivos de Interfaz Humana (HID)
1. 4 tipos:
a. Pantalla Única
b. Multijugador con Pantalla Dividida
c. Múltiples jugadores conectados por una red
d. MMOG: Corren en un servidor
Sistema de Gameplay
1. Objetos estáticos
2. Actores (GameObjects) dinámicos
3. Simulaciones en tiempo real
4. Sistema de Eventos
5. Cargar mundos
6. Sistema de Scripting
Subsistemas específicos de un juego