Créditos
6
Tipos
- GIA: Optativa
- GRAU: Optativa
- GCED: Optativa
Requisitos
- Prerrequisito: IDI
Departamento
CS
Profesorado
Responsable
- Antonio Chica Calaf ( achica@cs.upc.edu )
Otros
- Alejandro Ríos Jerez ( arios@cs.upc.edu )
- Francisco Jose Arias Arnedo ( francisco.jose.arias@upc.edu )
- Genis Bayona Jaume ( genis.bayona@upc.edu )
- Oscar Argudo Medrano ( oargudo@cs.upc.edu )
Horas semanales
Teoría
2
Problemas
0
Laboratorio
2
Aprendizaje dirigido
0
Aprendizaje autónomo
6
Competencias
Trabajo en equipo
- 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.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.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.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.6 - Diseñar e implementar aplicaciones gráficas, de realidad virtual, de realidad aumentada y videojuegos.
Objetivos
-
Conocer la historia del desarrollo de videojuegos.
Competencias relacionadas: CCO2.6, -
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, -
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, -
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, -
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, -
Comprender los principales algoritmos de aceleración para la visualización de interiores.
Competencias relacionadas: CCO2.6, CT5.3, -
Comprender los principales algoritmos de aceleración para la visualización de exteriores.
Competencias relacionadas: CCO2.6, CT5.3, -
Entender cómo se visualizan los objetos orgánicos (árboles, hierba, agua, nubes) en un juego.
Competencias relacionadas: CCO2.6, CT5.3, -
Conocer las diferentes técnicas que se aplican a la animación de personajes en los videojuegos.
Competencias relacionadas: CCO2.6, CT5.3, -
Entender y asimilar las diferentes cámaras que se pueden utilizar en un videojuego.
Competencias relacionadas: CCO2.6, CT5.3, -
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, -
Comprender los fundamentos de la aplicación de la inteligencia artificial en los videojuegos.
Competencias relacionadas: CCO2.6, CT4.3, CT5.3, -
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, -
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, -
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
-
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. -
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. -
Programación de videojuegos 2D
Conceptos de programación de videojuegos 2D. Sprites, tiling, scrollers, múltiples capas, parallax, visualización isométrica. -
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. -
Diseño de videojuegos
Conceptos de diseño de videojuegos. Jugabilidad. Guión gráfico del juego. Documento del diseño. -
Inteligencia artificial para videojuegos
Encaminamiento, máquinas de estados finitos y sistemas de reglas. Inteligencia orientada a la acción e inteligencia táctica. -
Sistemas de partículas
Generación, comportamiento, extinción y visualización de partículas para poder añadir efectos visuales a un juego. -
Física
Colisiones. Dinámica del sólido rígido. Restricciones. Muelles. -
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
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
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
-
3D games
- Watt, A.H.; Policarpo, F,
Addison-Wesley,
2001-2003.
ISBN: 0201619210
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002553659706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Game engine architecture
- Gregory, J,
Taylor & Francis, CRC Press,
2018.
ISBN: 9781138035454
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004158889706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Core techniques and algorithms in game programming
- Sánchez-Crespo, D,
New Riders,
2004.
ISBN: 0131020099
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003929749706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Complementario
-
2D Game Development: From Zero To Hero
- Penazzo, Daniele,
https://www.penaz.it/en/active-projects/2dgd_f0th.html
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