Informació general


Tipus d'assignatura: Optativa

Coordinador: Alfons Palacios Gonzàlez

Trimestre: Segon trimestre

Crèdits: 6

Professorat: 

Adso Fernández Baena

Idiomes d'impartició


Els materials podran proporcionar-se tant en català com en castellà o anglès. 

Competències


Competències bàsiques
  • B2_Que els estudiants sàpiguen aplicar els seus coneixements a la seva feina o vocació d'una forma professional i tinguin les comptències que demostren mitjançant l'elaboració i defensa d'arguments i la resolució de problemes dins de la seva àrea d'estudi

  • B5_Que els estudiants hagin desenvolupat aquelles habilitats d'aprenentatge necessàries per emprendre estudis posteriors amb un alt grau d'autonomia

Competències transversals
  • T2_Que els estudiants tinguin capacitat per a treballar com a membres d'un equip interidisciplinar ja sigui com un membres més, o realitzant tasques de direcció amb la finalitat de contribuir a desenvolupar projectes amb pragmatisme i sentit de la responsabilitat, assumint compromisos tenint en compte els recursos disponibles

Descripció


L’assignatura està pensada per perfils d’alumnes amb orientació tecnològica (perfil de desenvolupadors) que vulguin aprofundir en la programació de jocs i en els llenguatges més avançats. L’alumne aprendrà a programar amb el llenguatge C++ i a través d’aquest, comprendrà els conceptes de gestió de memòria i altres característiques pròpies de la programació orientada a objectes. Amb això, l’estudiant aprofundirà i consolidarà els conceptes de programació vistos al llarg de la carrera. S’usarà el motor de jocs Unreal, doncs aquest suporta el llenguatge de programació C++ i és també una oportunitat per a aprofundir en aquest motor de jocs amb l’ús d’un altre llenguatge.

L’assignatura es contextualitza dins de la branca de desenvolupament de videojocs. Està relacionada amb les assignatures de desenvolupament de jocs, motors de jocs, programació amb llenguatges interpretats i programació gràfica avançada (optativa).
 

Aquesta assignatura disposa de recursos metodològics i digitals per fer possible la seva continuïtat en modalitat no presencial en el cas de ser necessari per motius relacionats amb la Covid-19. D'aquesta forma s'assegurarà l'assoliment dels mateixos coneixements i competències que s'especifiquen en aquest pla docent.

Resultats d'aprenentatge


Al finalitzar l’assignatura, l’estudiant/a ha de ser capaç de:

  • Aprendre els conceptes principals de C++, els paradigmes involucrats i el context correcte de la seva utilització.
  • Aplicar les tècniques de programació a mig-baix nivell per a la programació de videojocs.
  • Utilitzar el framework d’un motor de videojocs per desenvolupar de forma avançada codi eficient.
  • Diferenciar diferents paradigmes de programació així com les diferents sintaxis de diferents llenguatges de programació.
  • Comprendre diferents mecanismes de gestió de memòria dels diferents llenguatges de programació.
  • Afiançar els conceptes de programació/scripting adquirits i aplicar-los a un entorn real de desenvolupament de jocs.
  • Testejar les seves demos/jocs en diverses plataformes.
  • Treballar en equip per a crear un joc.

Metodologia de treball


L'assignatura de llenguatges avançats és eminentment pràctica, on l'estudiant podrà aplicar tots els coneixements adquirits durant el curs acadèmic en el desenvolupament dels seus futurs jocs.

A causa d'això, les classes també seran eminentment pràctiques i s'incentivarà el treball en grup en la mateixa classe.

En cadascuna de les classes, el professor realitzarà una introducció als conceptes teoricopràctics que seran practicats pels propis alumnes a la mateixa aula, el que els ajudarà a consolidar aquests conceptes que seran després utilitzats pels propis estudiants en les pràctiques proposades durant el curs.

Durant el desenvolupament de les pràctiques, per les quals es donarà temps a classe per procedir al seu desenvolupament, el professor realitzarà un seguiment de cada un dels alumnes, per a determinar el seu avanç i, si cal, procedir amb més classes per reforçar els coneixements necessaris o mancances que es puguin detectar.

Sempre que el professor ho consideri adient proposarà als alumnes activitats de reforç per complementar els coneixements ja adquirits durant el curs acadèmic.

Continguts


Tema 0. Introducció a C++

Introducció històrica i classificació del llenguatge: multi-paradigmes

Tipus de dades: comparació amb Java

Declaracions i definicions

Namespaces, àmbits i validesa

Tipus definits per l’usuari (structs, unions)

Referencies

Punters

Gestió dinàmica de memòria

Classes (Herència, polimorfisme i funcions virtuals). Comparació amb Java

Plantilles: programació genèrica. Contenidors (STL)

 

Tema 1. C++ i Unreal, projectes amb codi: objectiu, contexte i justificació

Inserció de components amb C++

Creació de Blueprints a partir de classes C++. Comunicació C++ i Blueprints

Entrades d’usuari (teclat/ratolí)

Control del Moviment

Creació d’events de Blueprint des de C++ (BlueprintNativeEvent)

 

Tema 2. Desenvolupament d’un component de escena reutilitzable

Us de timers

Us de shape tracing

Nous “nodes” en Blueprint. Trucada a funcions C++ (BlueprintCallable)

Generació d’events delegables en Blueprints des de C++ (Event Broadcasting)

 

Tema 3. HISM

Activitats d'aprenentatge


Les tasques assignades als alumnes consistiran en:

  • Exercicis a classe i a casa
  • Desenvolupament del projecte final de l'assignatura a classe i a casa

Sistema d'avaluació


Projecte fet en grup que consistirà en completar el projecte desenvolupat a classe durant tota l’assignatura amb els requisits indicats pel professor. Valor total de l'assignatura: 60%

Examen final individual amb l’obligatorietat d’aprovar-lo (obtenir una nota igual o superior a 5). Valor total de l'assignatura: 40%

Per aprovar l'assignatura, els alumnes han d’obtenir una nota igual o superior a 5 segons l'expressió: Nota de l'examen 0,4  + Nota projecte 0,6 (sempre i quan l'examen final estigui aprovat).