Informació general


Tipus d'assignatura: Obligatòria

Coordinador: Adso Fernández Baena

Trimestre:1

Crèdits: 6

Professorat: Marco Antonio Rodríguez Fernández

Descripció


Els llenguatges interpretats són àmpliament utilitzats com a recurs en la programació d'aplicacions i videojocs, per la seva gran flexibilitat, versatilitat, senzillesa i eficiència. Alhora, integrats en aplicacions compilades més complexes, proporcionen eines de gran valor com el desenvolupament, execució i depuració interactiva a temps real, estalviant recursos i temps de compilació en l'aplicació (o motor) principal.

En aquesta assignatura introduirem un dels llenguatges interpretats de més ús actualment en la indústria dels videojocs: Lua (www.lua.org).

En tractar-se d'una assignatura de segon curs (on ja s'han cursat tres assignatures prèvies de programació) es pressuposa que l'alumne/a té un coneixement adequat dels fonaments de programació, la Programació Orientada a Objectes i la Programació aplicada als videojocs. En aquest sentit, cal destacar que es farà una breu introducció al llenguatge i les seves característiques particulars, per centrar-se de forma ràpida en les aplicacions de la programació mitjançant scripting en entorns de joc. Es molt recomanable que l'alumne/a hagi assolit satisfactòriament els continguts de les assignatures prèvies de programació, per a poder seguir l'assignatura amb normalitat.

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.

El Tecnocampus posarà a l’abast del professorat i l’alumnat les eines digitals necessàries per poder dur a terme l’assignatura, així com guies i recomanacions que facilitin l’adaptació a la modalitat no presencial.

Resultats d'aprenentatge


En acabar l’assignatura els estudiants han de ser capaços de:

E6.6. Desenvolupar videojocs en 2D i 3D (o parts del mateix) en llenguatges d’alt nivell sobre plataformes i motors destinats a aquest efecte.

E7.1. Classificar i descriure els llenguatges interpretats actuals i les seves característiques.

E7.2. Programar amb llenguatges interpretats per a desenvolupar prototips de jugabilitat, d’interacció i de balanceig.

Metodologia de trabajo


.Tots els conceptes teòrics de la matèria s'exposaran a classes de teoria en format de classe magistral, estudi de casos o aprenentatge basat en preguntes. En aquestes classes,  a discreció dels docents impartidors, també es resoldran exercicis i problemes de caire més pràctic. Aquestes activitats breus serviran a l'estudiant com a instrument d'autoavaluació del seu assoliment dels continguts de la matèria i s’avaluaran com a treball individual. Les pràctiques de laboratori es portaran a terme en grups petits i es treballarà l’aplicació pràctica dels conceptes teòrics. En les sessions que es programin a aquest efecte es donaran les eines escaients per a resoldre les activitats programades bo i que s'espera que aquestes s'allarguin des del punt de vista temporal més enllà de les hores de laboratori i que, en conseqüència, els estudiants les hagin de finalitzar durant el temps d'aprenentatge autònom.

Continguts


1. Introducció als llenguatges interpretats
1.1. Classificació dels llenguatges de programació
1.2. Llenguatges compilats vs llenguatges interpretats
1.3. Conceptes bàsics de llenguatges interpretats
2. Programació amb Lua
2.1. Característiques bàsiques
2.2. Usos habituals
2.3. Intèrpret / IDE
2.4. Modes de desenvolupament
2.5. Chunks i blocs
2.6. Regles gramàtiques
2.7. Regles no escrites i estil de programació
2.8. Variables locals i variables globals
2.9. Operadors habituals (aritmètics, relacionals i lògics)
2.10. Operadors específics (concatenació i mida)
2.11. Constructors de taules
2.12. Retorn múltiple
2.13. Funcions d’ordre superior
2.14. Arguments variables
2.15. Metataules i metamètodes
2.16. Programació orientada a objectes
3. Programació gràfica amb el motor Love
3.1. Esdeveniments
3.2. Gràfics
3.3. Màquines d'estat finites (FSM)
4. Aplicació del scripting a entorns de joc: Modding
4.1. Fitxers de dades (csv, xml, json).
4.2. Fitxers de configuració de joc.
4.3. Integració en aplicacions i motors de joc
4.4. Anàlisi estructural d'un joc comercial.
4.5. Ús de Lua i Xml, per a la generació de mods.
5. Aplicació del scripting a entorns de joc: Incrustació de Lua en el motor Unity3d
5.1. Integració d'un intèrpret de Lua com a asset.
5.2. Càrrega en temps d'execució.
5.3. Interacció amb els objectes de Unity3d

Activitats d'aprenentatge


Amb l’objectiu de recollir evidència de l’assoliment dels resultats d’aprenentatge esperats es realitzaran les següents activitats de caràcter avaluatiu (relacionades amb totes les competències comunes):

 

A1. Exercici a classe: Taules amb Lua (Evidencia del resultat d’aprenentatge E6.6)

A2. Exercici a classe: Imatges amb Lua (Evidencia del resultat d’aprenentatge E6.6)

A3. Exercici a classe: Sprites amb Lua (Evidencia del resultat d’aprenentatge E6.6)

A4. Exercici a classe: Luathon (Evidencia del resultat d’aprenentatge E6.6)

A5. Exercici a casa: Modding amb Lua (Evidencia del resultat d’aprenentatge E7.2)

A6. Exercici a casa: Scripting amb Lua (Evidencia del resultat d’aprenentatge E7.2)

A7. Pràctica de laboratori: Sessió introductòria amb l’intèrpret de Lua (Evidencia del resultat d’aprenentatge E6.6)

A8. Pràctica de laboratori: Programació d’un joc amb la llibreria Love (Evidencia del resultat d’aprenentatge E6.6)

A9. Pràctica de laboratori: Programació d’un joc estructurat amb Love (Evidencia del resultat d’aprenentatge E6.6)

A10. Pràctica de laboratori: Realització de scripts en Lua per a un joc comercial (Evidencia del resultat d’aprenentatge E7.2)

A11. Pràctica de laboratori: Integració del scripting en Lua amb un joc realitzar sobre un engine gràfic (Evidencia dels resultats d’aprenentatge E7.2 i E6.6)

A12. Examen Final (Evidencia de tots els resultats d’aprenentatge) 

 

Criteris generals de les activitats:

  • El professor presentarà un enunciat per cada activitat i els criteris d’avaluació i/o rúbriques.
  • El professor informarà de les dates i format del lliurament de l’activitat.
  • Qualsevol activitat no entregada serà avaluada amb 0 punts. No s’acceptarà cap entrega fora de termini.

Sistema d'avaluació


La nota de cada alumne es calcularà seguint els següents percentatges:

 

A1. Exercici a classe: Taules amb Lua 1.5%

A2. Exercici a classe: Imatges amb Lua 1.5%

A3. Exercici a classe: Sprites amb Lua2 1.5%

A4. Exercici a classe: Luathon 1.5%

A5. Exercici a casa: Modding amb Lua 2.5%

A6. Exercici a casa: Scripting amb Lua 1.5%

A7. Pràctica de laboratori: Sessió introductòria amb l’intèrpret de Lua 4%

A8. Pràctica de laboratori: Programació d’un joc amb la llibreria Love 6%

A9. Pràctica de laboratori: Programació d’un joc estructurat amb Love 12%

A10. Pràctica de laboratori: Realització de scripts en Lua per a un joc comercial 6%

A11. Pràctica de laboratori: Integració del scripting en Lua amb un joc realitzar sobre un engine gràfic 12%

A12. Examen Final 50% 

 

Nota final = A1 0,015 + A2 0,015 + A3 0,015 + A4 0,015 + A5 0,025 + A6 0,015 + A7 0,04 + A8 0,06 + A9 0,12 + A10 0,06 + A11 0,12 + A12 0,5

 

Consideracions:

  • Cal obtenir una nota superior a 5 al examen final per a poder aprovar l’assignatura.
  • Una activitat no entregada o lliurada amb retard i sense justificació (citació judicial o assumpte mèdic) compta com un 0.
  • És responsabilitat de l’alumne evitar el plagi en totes les seves formes. En el cas de detectar plagi, independentment del seu abast, en alguna activitat correspondrà a tenir una nota de 0. A més el professor comunicarà a la cap d’estudis la situació per a que es prenguin mesures aplicables en matèria de règim sancionador.
  • L'assistència a les pràctiques de laboratori es obligatòria.
  • L’examen de recuperació tan sols recupera la nota de teoria.

Bibliografia


Bàsic

Lerusalimschy, R. (2006). Programming in lua. Roberto Ierusalimschy.

Lerusalimschy, R., De Figueiredo, L. H., & Celes, W. (2006). Lua 5.1 reference manual.

Kasuba, M. (2015). Lua game development cookbook. Packt Publishing

Complementary

 

Paxton, D. (2016). Mooder’s guide to Civilization V. Recuperat de https://forums.civfanatics.com/resources/modders-guide-to-civilization-v.23669/

 

Young, D. (2014). Learning game AI programming with Lua. Packt Publishing Ltd.