Videojocs

Crèdits
6
Tipus
Optativa
Requisits
  • Prerequisit: IDI
Departament
CS
Aquesta assignatura introduirà els conceptes fonamentals de la programació de videojocs. Com a resultat els estudiants dissenyaran i desenvoluparan jocs utilitzant els coneixements adquirits a l'assignatura.

Professorat

Responsable

  • Antonio Chica Calaf ( )

Altres

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

Hores setmanals

Teoria
2
Problemes
0
Laboratori
2
Aprenentatge dirigit
0
Aprenentatge autònom
6

Competències

Competències Transversals

Treball en equip

  • G5 [Avaluable] - Ser capaç de treballar com a membre d'un equip, ja sigui com a un membre més, ja sigui realitzant tasques de direcció, amb la finalitat de contribuir a desenvolupar projectes d'una manera pragmàtica i amb sentit de la responsabilitat; assumir compromisos tenint en compte els recursos disponibles.
    • G5.3 - Identificar els rols, les habilitats i les carències dels diferents membres del grup. Proposar millores en l'estructura del grup. Interactuar amb eficàcia i professionalitat. Negociar i gestionar conflictes en el grup. Reconèixer i donar suport o assumir el paper de líder en el grup de treball. Avaluar i presentar els resultats del treball de grup. Representar el grup en negociacions amb terceres persones. Capacitat de col·laborar en un entorn multidisciplinar. Conèixer i saber aplicar les tècniques per a promoure la creativitat.

Competències Tècniques

Competències tècniques comunes

  • CT1 - Demostrar coneixement i comprensió de fets essencials, conceptes, principis i teories relatives a la informàtica i a les seves disciplines de referència.
    • CT1.2A - Interpretar, seleccionar i valorar conceptes, teories, usos i desenvolupaments tecnològics relacionats amb la informàtica i la seva aplicació a partir dels fonaments matemàtics, estadístics i físics necessaris. CEFB1: capacitat per a resoldre els problemes matemàtics que es plantegin en la enginyeria. Aptitud per a aplicar els coneixements sobre: àlgebra, càlcul diferencial i integral i mètodes numèrics; estadística i optimització.
  • CT4 - Demostrar coneixement i capacitat d'aplicació dels procediments algorísmics bàsics de les tecnologies informàtiques per a dissenyar solucions a problemes, analitzant la idoneïtat i la complexitat dels algorismes
    • CT4.3 - Demostrar coneixement i capacitat d'aplicació dels principis fonamentals i de les tècniques bàsiques dels sistemes intel·ligents i de la seva aplicació pràctica.
  • CT5 - Analitzar, dissenyar, construir i mantenir aplicacions de forma robusta, segura i eficient, triant el paradigma i els llenguatges de programació més adequats.
    • CT5.3 - Dissenyar, escriure, provar, depurar, documentar i mantenir codi en un llenguatge d'alt nivell per a resoldre problemes de programació aplicant esquemes algorísmics i utilitzant estructures de dades.
    • CT5.5 - Usar les eines d'un entorn de desenvolupament de software per a crear i desenvolupar aplicacions.
    • CT5.6 - Demostrar coneixement i capacitat d'aplicació dels principis fonamentals i de les tècniques bàsiques de la programació paral·lela, concurrent, distribuïda i en temps real.

Competències Tècniques de cada especialitat

Especialitat computació

  • CCO2 - Desenvolupar de forma efectiva i eficient els algorismes i el software apropiats per a resoldre problemes complexos de computació.
    • CCO2.6 - Dissenyar i implementar aplicacions gràfiques, de realitat virtual, de realitat augmentada i videojocs.

Objectius

  1. Coneixer la història del desenvolupament de videojocs.
    Competències relacionades: CCO2.6,
  2. Coneixer l'estructura interna d'un equip de desenvolupament de videojocs, entenent quines són les feines assignades a cada rol.
    Competències relacionades: G5.3, CCO2.6,
  3. Entendre l'estructura bàsica d'un joc, el bucle principal d'aquest, així com els diferents components que en formen part.
    Competències relacionades: CCO2.6, CT5.6,
  4. Aprendre els conceptes bàsics que s'utilitzen en la programació de jocs 2D: sprites, tiling, scroll, múltiples capes, parallax i visualització isomètrica.
    Competències relacionades: CCO2.6, CT5.3,
  5. Assimilar els conceptes bàsics de la programació de jocs 3D com el pipeline típic de visualització i l'ús de grafs d'escena.
    Competències relacionades: CT1.2A, CCO2.6, CT5.3,
  6. Comprendre els principals algorismes d'acceleració per la visualització d'interiors.
    Competències relacionades: CCO2.6, CT5.3,
  7. Comprendre els principals algorismes d'acceleració per a la visualització d'exteriors.
    Competències relacionades: CCO2.6, CT5.3,
  8. Entendre com es visualitzen els objectes orgànics (arbres, herba, aigüa, núbols) en un joc.
    Competències relacionades: CCO2.6, CT5.3,
  9. Coneixer les diferents tècniques que s'apliquen a l'animació de personatges en els videojocs.
    Competències relacionades: CCO2.6, CT5.3,
  10. Entendre i assimilar les diferents càmeres que es poden fer servir en un videojoc.
    Competències relacionades: CCO2.6, CT5.3,
  11. Entendre els diferents conceptes que s'apliquen al desenvolupament de sistemes de partícules. Coneixer les opcions que aquests proporcionen en la generació d'efectes visuals en temps real.
    Competències relacionades: CCO2.6, CT5.3,
  12. Comprendre els fonaments de l'aplicació de la intel·ligència artificial als videojocs.
    Competències relacionades: CCO2.6, CT4.3, CT5.3,
  13. Comprendre quines són les capacitats i les limitacions dels sistemes de simulació física dels motors de jocs actuals.
    Competències relacionades: CCO2.6,
  14. Assimilar els conceptes que hi ha darrera del disseny de videojocs, en particular la importància de la jugabilitat i la seva relació amb la usabilitat d'aplicacions.
    Competències relacionades: CCO2.6,
  15. Ser capaç de desenvolupar un videojoc fent servir un motor específicament creat per a aquest objectiu.
    Competències relacionades: G5.3, CCO2.6, CT5.5, CT4.3, CT5.3, CT5.6,

Continguts

  1. Història del desenvolupament dels videojocs
    Història del desenvolupament dels videojocs des dels seus inicis, passant per la seva consolidació com a medi d'entreteniment i la seva extensió per diferents plataformes i mitjans.
  2. Conceptes bàsics
    Conceptes bàsics de la programació de videojocs. Això inclou la composició d'un equip de programació de videojocs, l'estructura bàsica d'un joc, així com els components d'un motor de videojocs.
  3. Programació de jocs 2D
    Conceptes de programació de videojocs 2D. Sprites, tiling, scrollers, múltiples capes, parallax, visualització isomètrica.
  4. Programació de jocs 3D
    Conceptes bàsics. Visualització d'interiors i exteriors. Objectes orgànics. Animació de personatges. Tipus de càmeres.
  5. Disseny de videojocs
    Conceptes de disseny de videojocs. Jugabilitat. Guió gràfic del joc. Document del disseny.
  6. Inteligència artificial per a videojocs
    Encaminament, màquines d'estats finits i sistemes de regles. Inteligència orientada a l'acció i inteligència tàctica.
  7. Sistemes de partícules
    Generació, comportament, extinció i visualització de partícules per a poder afegir efectes visuals a un joc.
  8. Física
    Col·lisions. Dinàmica del sòlid rígid. Restriccions. Molles.
  9. Sistemes addicionals
    Sistemes de scripting. Gestió d'audio. Programació de xarxes.

Activitats

Activitat Acte avaluatiu


Introducció a la programació de videojocs

Repàs de la història del desenvolupament de videojocs. Taxonomia dels videojocs. Composició d'un equip de programació de videojocs, amb la descripció del paper realitzat per cadascun dels dieferents rols.

Teoria
2h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h

Arquitectura bàsica d'un joc

Descripció de l'arquitectura bàsica d'un joc. Game Loop: presentació i actualització. Definició de game engine i components que el composen.

Teoria
2h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
2h

Programació de jocs 2D

Introducció a la programació de jocs 2D introduint conceptes com: sprites, tiling, scroll, ús de múltiples capes, parallax i visualització isomètrica.

Teoria
4h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
4h

Eines de programació 2D

Introducció a les eines que es faran servir per la realització d'un joc 2D avaluable.

Teoria
0h
Problemes
0h
Laboratori
8h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h

Desenvolupament del joc 2D

Desenvolupament d'un joc 2D individual.

Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
18h

Introducció a la programació de jocs 3D

Repàs del pipeline gràfic. Descripció de l'ús de grafs d'escena i overlays. Introducció a la necessitat de tècniques d'acceleració. Tipus de càmeres.

Teoria
2h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
4h

Eines de programació 3D

Descripció del funcionament i ús del motor gràfic que es farà servir per a implementar en equip el joc 3D.

Teoria
0h
Problemes
0h
Laboratori
22h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h

Desenvolupament del joc 3D

Desenvolupament del joc 3D en equip.
Objectius: 15
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
44h

Escenes interiors

Descripció de l'algorisme de portal rendering i de les estructures BSP per a l'acceleració del render d'escenes interiors.

Teoria
2h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
2h

Escenes exteriors

Descripció del tipus de estructures de dades usades per la visualització d'exteriors (mapes d'elevació, quadtrees). Algorismes de visualització d'exteriors (ROAM, geomipmapping). Visualització d'objectes orgànics.

Teoria
4h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
4h

Animació de personatges

Comparació de models explicits i implicits. Descripció de l'animació basada en keyframes. Utilització de jerarquies de transformacions (esquelets) i transferència a la malla asociada (skinning). Animació facial.

Teoria
4h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
4h

Sistemes de partícules

Descipció del funcionament d'un sistema de partícules. Generació, comportament, extinció i visualització d'un partícula.

Teoria
2h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
2h

Inteligència artificial per a jocs

Algorismes bàsics d'encaminament. Maquines d'estats finits.

Teoria
2h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
2h

Física per a jocs

Conceptes utilitzats en els motors de física utilitzats en els motors de jocs: col·lisions, dinàmica del sòlid rígid, molles.

Teoria
2h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
2h

Sistemes addicionals

Descripció de les capacitats i ús dels sistemes de scripting, audio i connectivitat del motors de programació de jocs.

Teoria
2h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
2h

Examen final

Examen escrit que avaluarà els coneixements adquirits al llarg de l'assignatura.
Objectius: 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Setmana: 15 (Fora d'horari lectiu)
Tipus: examen de teoria
Teoria
2h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h

Metodologia docent

Les sessions de teoria de l'assignatura estan pensades per a introduir els conceptes més importants de la programació de videojocs, entrant en detall en els algorismes més comuns. Aquestes classes es realitzaran en unitats de dues hores amb una periodicitat setmanal.

Les sessions de laboratori presentaran les eines 2D i 3D que es faran servir per a desenvolupar els dos projectes amb que s'avalua el component pràctic de l'assignatura. De la mateixa manera que en el cas de les classes de teoria, les classes de laboratori s'impartiran a raó de dues hores setmanals.

Mètode d'avaluació

Avaluació de l'assignatura:

30% Lliurament individual d'un joc 2D
40% Lliurament en equip d'un joc 3D
30% Examen final

La competència "Treball en equip" s'avaluarà en base a la distribució de feines per l'entrega del joc 3D. Per tal d'assolir la qualificació màxima (A) caldrà haver demostrat la capacitat de distribuir els rols del desenvolupament del joc 3D de forma òptima. També serà necessari demostrar capacitat de col·laboració amb els altres membres del grup.

Bibliografia

Bàsica:

Web links

Capacitats prèvies


S'espera que l'estudiant:

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