Módulo de Programación

Inicio / Módulo de Programación

CONTENIDO DETALLADO DEL MÓDULO

Etapa 1: Programación de videojuegos

Introducción

  1.    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)

  1.    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.

  1.    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