Videojuegos

Usted está aquí

Créditos
6
Tipos
Optativa
Requisitos
  • Prerrequisito: IDI
Departamento
CS
Esta asignatura introducirá los conceptos fundamentales de la programación de videojuegos. Como resultado los estudiantes diseñarán y desarrollarán juegos utilizando los conocimientos adquiridos en la asignatura.

Profesorado

Responsable

  • Antonio Chica Calaf ( )

Otros

  • Alejandro Ríos Jerez ( )
  • Francisco Jose Arias Arnedo ( )
  • Jesus Alonso Alonso ( )
  • Oscar Argudo Medrano ( )

Horas semanales

Teoría
2
Problemas
0
Laboratorio
2
Aprendizaje dirigido
0
Aprendizaje autónomo
6

Competencias

Competencias Transversales

Trabajo en equipo

  • G5 [Avaluable] - Ser capaz de trabajar como miembro de un equipo, ya sea como un miembro más, o realizando tareas de dirección con la finalidad de contribuir a desarrollar proyectos con pragmatismo y sentido de la responsabilidad, asumiendo compromisos teniendo en cuenta los recursos disponibles.
    • G5.3 - Identificar los papeles, habilitados y carencias de los diferentes miembros del grupo. Proponer mejoras en la estructura del grupo. Interactuar con eficacia y de forma profesional. Negociar y gestionar conflictos en el grupo. Reconocer y dar soporte o asumir el papel de líder en el grupo de trabajo. Evaluar y presentar los resultados del trabajo de grupo. Representar al grupo en negociaciones con terceros. Capacidad de colaborar en un entorno multidisciplinar. Conocer y saber aplicar las técnicas para promover la creatividad.

Competencias Técnicas

Competencias técnicas comunes

  • CT1 - Demostrar conocimiento y comprensión de hechos esenciales, conceptos, principios y teorías relativas a la informática y a sus disciplinas de referencia.
    • CT1.2A - Demostrar conocimiento y comprensión de los conceptos fundamentales de la programación y de la estructura básica de un computador. CEFB5. Conocimiento de la estructura, funcionamiento e interconexión de los sistemas informáticos, así como los fundamentos de su programación.
  • CT4 - Demostrar conocimiento y capacidad de aplicación de los procedimientos algorítmicos básicos de las tecnologías informáticas para diseñar soluciones a problemas, analizando la idoneidad y la complejidad de los algoritmos
    • CT4.3 - Demostrar conocimiento y capacidad de aplicación de los principios fundamentales y las técnicas básicas de los sistemas inteligentes y su aplicación práctica.
  • CT5 - Analizar, diseñar, construir y mantener aplicaciones de forma robusta, segura y eficiente, escogiendo el paradigma y los lenguajes de programación más adecuados.
    • CT5.3 - Diseñar, escribir, probar, depurar, documentar y mantener código en un lenguaje de alto nivel para resolver problemas de programación aplicando esquemas algorítmicos y usando estructuras de datos.
    • CT5.5 - Usar las herramientas de un entorno de desarrollo de software para crear y desarrollar aplicaciones.
    • CT5.6 - Demostrar conocimiento y capacidad de aplicación de los principios fundamentales y de las técnicas básicas de la programación paralela, concurrente, distribuida y de tiempo real.

Competencias Técnicas de cada especialidad

Especialidad de computación

  • CCO2 - Desarrollar de forma efectiva y eficiente los algoritmos y el software apropiados para resolver problemas complejos de computación.
    • CCO2.6 - Diseñar e implementar aplicaciones gráficas, de realidad virtual, de realidad aumentada y videojuegos.

Objetivos

  1. Conocer la historia del desarrollo de videojuegos.
    Competencias relacionadas: CCO2.6,
  2. Conocer la estructura interna de un equipo de desarrollo de videojuegos, entendiendo cuáles son los trabajos asignados a cada rol.
    Competencias relacionadas: G5.3, CCO2.6,
  3. Entender la estructura básica de un juego, el bucle principal de éste, así como los diferentes componentes que forman parte de él.
    Competencias relacionadas: CCO2.6, CT5.6,
  4. Aprender los conceptos básicos que se utilizan en la programación de juegos 2D: sprites, tiling, scroll, múltiples capas, parallax y visualización isométrica.
    Competencias relacionadas: CCO2.6, CT5.3,
  5. Asimilar los conceptos básicos de la programación de juegos 3D como el pipeline típico de visualización y el uso de grafos de escena.
    Competencias relacionadas: CT1.2A, CCO2.6, CT5.3,
  6. Comprender los principales algoritmos de aceleración para la visualización de interiores.
    Competencias relacionadas: CCO2.6, CT5.3,
  7. Comprender los principales algoritmos de aceleración para la visualización de exteriores.
    Competencias relacionadas: CCO2.6, CT5.3,
  8. Entender cómo se visualizan los objetos orgánicos (árboles, hierba, agua, nubes) en un juego.
    Competencias relacionadas: CCO2.6, CT5.3,
  9. Conocer las diferentes técnicas que se aplican a la animación de personajes en los videojuegos.
    Competencias relacionadas: CCO2.6, CT5.3,
  10. Entender y asimilar las diferentes cámaras que se pueden utilizar en un videojuego.
    Competencias relacionadas: CCO2.6, CT5.3,
  11. Entender los diferentes conceptos que se aplican al desarrollo de sistemas de partículas. Conocer las opciones que estos proporcionan en la generación de efectos visuales en tiempo real.
    Competencias relacionadas: CCO2.6, CT5.3,
  12. Comprender los fundamentos de la aplicación de la inteligencia artificial en los videojuegos.
    Competencias relacionadas: CCO2.6, CT4.3, CT5.3,
  13. Comprender cuáles son las capacidades y las limitaciones de los sistemas de simulación física de los motores de juegos actuales.
    Competencias relacionadas: CCO2.6,
  14. Asimilar los conceptos que hay detrás del diseño de videojuegos, en particular la importancia de la jugabilidad y su relación con la usabilidad de aplicaciones.
    Competencias relacionadas: CCO2.6,
  15. Ser capaz de desarrollar un videojuego usando un motor específicamente creado para este objetivo.
    Competencias relacionadas: G5.3, CCO2.6, CT5.5, CT4.3, CT5.3, CT5.6,

Contenidos

  1. Historia del desarrollo de videojuegos
    Historia del desarrollo de los videojuegos desde sus inicios, pasando por su consolidación como medio de entretenimiento y su extensión por diferentes plataformas y medios.
  2. Conceptos básicos
    Conceptos básicos de la programación de videojuegos. Esto incluye la composición de un equipo de programación de videojuegos, la estructura básica de un juego, así como los componentes de un motor de videojuegos.
  3. Programación de videojuegos 2D
    Conceptos de programación de videojuegos 2D. Sprites, tiling, scrollers, múltiples capas, parallax, visualización isométrica.
  4. Programación de videojuegos 3D
    Conceptos básicos. Visualización de interiores y exteriores. Objetos orgánicos. Animación de personajes. Tipos de cámaras.
  5. Diseño de videojuegos
    Conceptos de diseño de videojuegos. Jugabilidad. Guión gráfico del juego. Documento del diseño.
  6. Inteligencia artificial para videojuegos
    Encaminamiento, máquinas de estados finitos y sistemas de reglas. Inteligencia orientada a la acción e inteligencia táctica.
  7. Sistemas de partículas
    Generación, comportamiento, extinción y visualización de partículas para poder añadir efectos visuales a un juego.
  8. Física
    Colisiones. Dinámica del sólido rígido. Restricciones. Muelles.
  9. Sistemas adicionales
    Sistemas de scripting. Gestión de audio. Programación de redes.

Actividades

Actividad Acto evaluativo


Introducción a la programación de videojuegos

Repaso de la historia del desarrollo de videojuegos. Taxonomía de los videojuegos. Composición de un equipo de programación de videojuegos, con la descripción del papel realizado por cada uno de los diferentes roles.

Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h

Arquitectura básica de un juego

Descripción de la arquitectura básica de un juego. Game Loop: presentación y actualización. Definición de game engine y componentes que lo componen.

Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Programación de juegos 2D

Introducción a la programación de juegos 2D introduciendo conceptos como: sprites, tiling, scroll, uso de múltiples capas, parallax y visualización isométrica.

Teoría
4h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
4h

Herramientas de programación 2D

Introducción a las herramientas que se utilizarán para la realización de un juego 2D evaluable.

Teoría
0h
Problemas
0h
Laboratorio
8h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h

Desarrollo del juego 2D

Desarrollo de un juego 2D individualmente.

Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
18h

Introducción a la programación de juegos 3D

Repaso del pipeline gráfico. Descripción del uso de grafos de escena y overlays. Introducción a la necesidad de técnicas de aceleración. Tipos de cámaras.

Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
4h

Herramientas de programación 3D

Descripción del funcionamiento y uso del motor gráfico que se utilizará para implementar en equipo el juego 3D.

Teoría
0h
Problemas
0h
Laboratorio
22h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h

Desarrollo del juego 3D

Desarrollo del juego 3D en equipo.
Objetivos: 15
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
44h

Escenas interiores

Descripción del algoritmo de portal rendering y de las estructuras BSP para la aceleración del render de escenas interiores.

Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Escenas exteriores

Descripción del tipo de estructuras de datos usadas para la visualización de exteriores (mapas de elevación, quadtrees). Algoritmos de visualización de exteriores (Roam, geomipmapping). Visualización de objetos orgánicos.

Teoría
4h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
4h

Animación de personajes

Comparación de modelos explícitos y implícitos. Descripción de la animación basada en keyframes. Utilización de jerarquías de transformaciones (esqueletos) y transferencia a la malla asociada (skinning). Animación facial.

Teoría
4h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
4h

Sistemas de partículas

Descripción del funcionamiento de un sistema de partículas. Generación, comportamiento, extinción y visualización de un partícula.

Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Inteligencia artificial para juegos

Algoritmos básicos de encaminamiento. Maquinas de estados finitos.

Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Física para juegos

Conceptos utilizados en los motores de física utilizados en los motores de juegos: colisiones, dinámica del sólido rígido, muelles.

Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Sistemas adicionales

Descripción de las capacidades y uso de los sistemas de scripting, audio y conectividad de los motores de programación de juegos.

Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Examen final

Examen escrito que evaluará los conocimientos adquiridos a lo largo de la asignatura.
Objetivos: 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Semana: 15 (Fuera de horario lectivo)
Tipo: examen de teoría
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h

Metodología docente

Las sesiones de teoría de la asignatura están pensadas para introducir los conceptos más importantes de la programación de videojuegos, entrando en detalle en los algoritmos más comunes. Estas clases se realizarán en unidades de dos horas con una periodicidad semanal.

Las sesiones de laboratorio presentarán las herramientas 2D y 3D que se utilizarán para desarrollar los dos proyectos con que se evalúa el componente práctico de la asignatura. Del mismo modo que en el caso de las clases de teoría, las clases de laboratorio se impartirán a razón de dos horas semanales.

Método de evaluación

Evaluación de la asignatura:

30% Entrega individual de un juego 2D
40% Entrega en equipo de un juego 3D
30% Examen final

La competencia "Trabajo en equipo" se evaluará en base a la distribución de tareas durante el desarrollo del juego 3D. Para alcanzar la calificación máxima (A) será necesario haber demostrado la capacidad de distribuir los roles del desarrollo del juego 3D de forma óptima. También será necesario demostrar capacidad de colaboración con los demás miembros del grupo.

Bibliografía

Básica:

Web links

Capacidades previas


S'espera que l'estudiant:

* Hagi cursat l'assignatura de IDI.
* Entengui i sapiga implementar les estructures de dades i algorismes bàsics