CONTENIDO DETALLADO DEL MÓDULO
Etapa 1: Programación de videojuegos
Introducción
- Presentación.
Evolución de la programación de videojuegos. Tecnologías implicadas.
Herramientas de entornos y técnicas. Programación Orientada a Objetos, lenguajes de Scripting, Inteligencia Artificial, etc.
Breve referencia a OpenGL.
Programación orientada a Objetos (Base de Programación)
- Programación estructurada.
● Fundamentos de Informática: Estructura del ordenador, Software básico de un sistema. Introducción a las Bases de Datos.
● Conceptos básicos de la Programación: Algoritmo, Codificación, Tipos de datos simples, estructuras de control.
● Estructuración mediante subprogramas. Redefinición y sobrecarga. Operadores.
● Tipos de datos estructurados: Arrays, registros, cadenas de caracteres
● Algoritmos de búsqueda y ordenación
● Almacenamiento persistente de datos: Concepto de fichero, Manejo de ficheros de texto/binarios como flujos de datos, Operaciones sobre ficheros de texto/binarios,.
● Memoria dinámica: Gestión dinámica de memoria. Implementación de estructuras dinámicas lineales.
- Programación Orientada a Objetos.
● Tipos abstractos de datos: Modularidad. Tipos abstractos de datos. Clases. Objetos.
- Genericidad. Polimorfismo. Herencia.
● Tipos abstractos de datos avanzados: Pilas, Colas, Listas, Árboles,
3- Ingeniería del software aplicada a los videojuegos
- Metodologías de desarrollo de software aplicadas a videojuegos.
- Trazabilidad entre el Documento de diseño y la construcción del software.
- Arquitectura y Diseño de un videojuego
– Patrones de diseño y arquitectura
– Especificaciones de la arquitectura según los géneros
– Elaboración de un Diagrama de Arquitectura
– Elaboración de un Diagrama de Clases del Diseño
– Trabajo con herramientas CASE
4- Programación de videojuegos 2D
- Introducción y detalles específicos del lenguaje. Prácticas
- Estructura del programa principal. Manejo del entorno con sus posibles perspectivas de visualización (cámara, efectos de profundidad con planos, ubicación y actualización de los recursos en escena, control de eventos, manejo de pantallas,…).
- La física básica en los videojuegos. Cinemática, Conceptos básicos (vectores, proyectiles, etc.), Comportamientos de locomoción, diferentes Técnicas de Detección de Colisiones, sistemas de partículas, etc. Physics Engine,….
- Estudio comparativo de los Game Engine 2D.
- Desarrollo de prácticas de conceptos utilizando un Game Engine.
- Programación 2D sobre dispositivos móviles.
– Especificidades de esta plataforma
– Estudio de los Game Engines más usados
– Prácticas
5- Programación de videojuegos 3D
- Arquitectura típica de un Videojuego 3D, análisis de sus módulos fundamentales y las diferencias con uno 2D.
- Manejo del entorno. Estructuras de Datos Espaciales, Manejo de Objetos 3D (modelos, texturas, animaciones).
- Visualización de escenas. Navegación 3D (cámara, algoritmos de control de visibilidad), Iluminación de ambientes, Efectos visuales (agua, nieblas, tejidos, …).
- La física. Elementos distintivos de la programación 2D: Técnicas de detección de colisiones (geometrías, volúmenes fronteras, descomposición del espacio.
- Ambientación de sonido 3D.
- Shaders.
- Desarrollo de prácticas de los conceptos abordados.
- Programación 3D sobre dispositivos móviles.
– Especificidades
– Game Engines más empleados
– Prácticas
6- Inteligencia Artificial Clásica para videojuegos
● Introducción e historia. La Inteligencia Artificial (IA) y el desarrollo de videojuegos. Máquina/gestor básico de IA en los videojuegos.
● El empleo de la IA en los videojuegos: perspectiva general: ¿dónde? ¿cómo? ¿cuándo?
● Toma de decisiones: Generación de comportamientos.
1) Sistemas basados en reglas, sistemas expertos.
2) Máquinas de estado (finitas, deterministas, difusas y jerárquicas).
3) Árboles: de decisión, comportamiento.
4) Lógica difusa.
● Diferentes perspectivas de la IA aplicada a videojuegos:
1. Data-driven Design
2. Object-oriented design
3. Goal-oriented model
● PathFinding:
– Planificación de senderos y búsqueda. A*. Algoritmos de Dikjstra, Optimizaciones.
– Técnicas de navegación: grid-based, campos potenciales, red de nodos de mapas (polígonos de Voronoi), malla de navegación;
– Esquemas combinados.
● Pathfinding avanzado:
– Optimizaciones al rendimiento del pathfinding, jugadores virtuales y waypoints,
– pathfinding grupal,
– pathfinding jerárquico.
● Diseño específico de la IA por género de juego (First person shooters, Real time Strategy, Juegos de tablero/por turnos, puzzles, de lucha, de conducción, de combate/acción, etc.).
● IA multijugador.
● Otras cuestiones: flocking, IA grupal, cooperativa. squash play, dead reckoning,…
● Desarrollo práctico de los conceptos aprendidos.
Etapa 2: Programación avanzada de videojuegos
7- Inteligencia Artificial Avanzada
- Técnicas de IA avanzadas: Algoritmos bio-inspirados (evolutivos, técnicas locales,metaheurísticas en general, etc.), técnicas bayesianas, redes neuronales, etc.
- Generación automática de contenido.
- Comportamiento emergente.
- Personajes guiados por emociones.
- Evaluación de la satisfacción del jugador humano.
- Otras cuestiones sobre IA y creación de videojuegos: competiciones de IA y videojuegos.
- Desarrollo práctico de los conceptos aprendidos.
- ….
8- Videojuegos en red
- Diseño y propuestas de Arquitecturas.
– Plataformas existentes.
– Elección del Hardware.
– Buenas prácticas.
- Protocolos UDP y TCP-IP.
- Variantes de juegos en red: en línea , multijugador.
– Especificidades de cada variante.
– Métodos de implementación según la variante.
– Plataformas más usadas.
– GameEngines y opciones de implementación.
- Metaversos (OpenSim, SecondLife).
- Desarrollo práctico de los conceptos aprendidos.
9- Otras técnicas específicas de videojuegos/optimizaciones
● Optimización de rendimiento (memoria/ejecución).
● Optimización de Render (Técnicas de control de Nivel de Detalles, Oclusión, Manipulación eficientes de los objetos dinámicos, etc.)
● Otros