Pasar al contenido principal

Videojuegos

Créditos
6
Tipos
  • GIA: Optativa
  • GRAU: Optativa
  • GCED: Optativa
Requisitos
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

Otros

Horas semanales

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

Competencias

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 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.
  • 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)
    Teoría
    0h
    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:

    35% Entrega individual de un juego 2D
    35% 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ásico

    Complementario

    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