Tipos
- GIA:
Optativa
- GRAU:
Optativa
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
-
Alejandro Ríos Jerez (
)
-
Francisco Jose Arias Arnedo (
)
-
Genis Bayona Jaume (
)
-
Jesus Alonso Alonso (
)
-
Oscar Argudo Medrano (
)
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
-
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.
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.
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.
Herramientas de programación 2D
Introducción a las herramientas que se utilizarán para la realización de un juego 2D evaluable.
Desarrollo del juego 2D
Desarrollo de un juego 2D individualmente.
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.
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.
Desarrollo del juego 3D
Desarrollo del juego 3D en equipo.
Objetivos:
15
Escenas interiores
Descripción del algoritmo de portal rendering y de las estructuras BSP para la aceleración del render de escenas interiores.
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.
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.
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.
Inteligencia artificial para juegos
Algoritmos básicos de encaminamiento. Maquinas de estados finitos.
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.
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.
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)
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:
-
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
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