1-Introduccion A Los Motores de Videojuego-1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 41

Diseño de

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

1. Consiste en una suite de herramientas y componentes en tiempo


de ejecución
2. Abarca desde el hardware hasta la aplicación de alto nivel
3. Diseñada en capas (Layers)
a. Evita dependencias circulares
b. Maximiza reusabilidad
c. Fácil para hacer pruebas de software (Testing)
Motores en Tiempo de
Ejecución
1. Componentes de Bajo Nivel
2. SDKs de Terceros
3. Capa independiente de plataformas
4. Sistemas centrales
5. Administrador de recursos
6. Motor de Renderización
7. Profiling/Debugging
8. Colisiones y Física
9. Animaciones
10. Dispositivos de Interfaz Humana (HID)
11. Audio
12. Networking
13. Sistema de gameplay
Componentes de Bajo Nivel
1. Hardware
a. El sistema computacional o consola en el cual correrá
nuestro juego
2. Drivers de los dispositivos
a. Interfaz que facilita la comunicación del Sistema Operativo y
las capas superiores con los dispositivos de bajo nivel
3. Sistema Operativo
a. Maneja la execución e interrupción de múltiples programas
en una sola máquina.
b. Muy delgada en una consola
SDKs de Terceros
1. Estructuras de datos y algoritmos
a. C++ Standard Template Library: Estructuras de datos, strings
e I/O
b. Boost: Estructuras de datos y algoritmos muy poderosos
2. Librerías gráficas
a. OpenGL, DirectX, Vulcan
3. Colisiones y Física
a. Havok, PhysX, ODE, Bullet
4. Animación de esqueletos
5. Inteligencia Artificial (Kynapse)
Capa independiente de plataformas
1. Permite que el motor pueda ser desarrollado sin importar la
plataforma subyacente
2. Provee envolturas (wrappers) para operaciones comunes
3. Incluye cosas como tipos primitivos, redes, sistemas de archivos,
etc.
Sistemas Centrales
1. Assertions: Código para captar errores y excepciones
2. Manejo de Memoria
3. Librería de Matemáticas: Vectores y Matrices
4. Estructuras de datos personalizadas
5. Printing y Logging
Administrador de Recursos (Assets)
1. Provee una interfaz unificada para acceder a assets de nuestros
juegos
2. El nivel de complejidad varía según las necesidades
a. Usualmente los programadores cargan estos assets
directamente
b. Motores como Unreal Engine realizan automáticamente
preprocesamientos complejos de los recursos del juego
Motor de Renderización
1. Se divide en 4 secciones:
a. Renderizador de Bajo Nivel
b. Grafo de Escena
c. Efectos Visuales
d. Frontend
Renderizador de Bajo Nivel
1. Se enfoca en renderizar primitivos tan rápida y eficazmente como
sea posible
a. No considera visibilidad
2. Interface con el Dispositivo Gráfico
a. Acceder a los distintos DGs
b. Inicializar los DGs
c. Manejar buffering

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. Abstracciones del teclado y el mouse


2. Joypads
3. Controles especializados
4. Convierte datos sin procesar en información útil
Audio

1. Varía en sofisticación dependiendo de las necesidades


2. Muchos juegos utilizan herramientas ya existentes
a. XACT
b. Scream
c. FMod
Networking / Multijugador

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

1. Todas las cosas específicas que se requieren para un juego


determinado
2. Esto en realidad puede ser considerado fuera del motor de
videojuegos
¿Qué haremos la
próxima clase?

1. Comenzar un proyecto en C++ para programar nuestro propio


motor de videojuegos
2. El loop de juego
3. Punto de Entrada
4. Gráficos 2D Básicos SDL
5. Tiempo Real y Tiempo de Juego

También podría gustarte