Información general


Idiomas de impartición


  • Català
  • Castellano
  • English

Las clases de la asignatura se harán principalmente en catalán, aunque la bibliografía y el material de soporte podrán ser en otras lenguas (castellano e inglés)

Descripción


Los lenguajes interpretados son ampliamente utilizados como recurso en la programación de aplicaciones y videojuegos, por su gran flexibilidad, versatilidad, sencillez y eficiencia. Asimismo, integrados en aplicaciones compiladas más complejas, proporcionan herramientas de gran valor como el desarrollo, ejecución y depuración interactiva en tiempo real, ahorrando recursos y tiempo de compilación en la aplicación (o motor) principal.

En esta asignatura introduciremos uno de los lenguajes interpretados de más uso actualmente en la industria de los videojuegos: Lua (www.lua.org).

 

Al tratarse de una asignatura de segundo curso (donde ya se han cursado tres asignaturas previas de programación) se presupone que el alumno/a tiene un conocimiento adecuado de los fundamentos de programación, la Programación Orientada a Objetos y la Programación aplicada a videojuegos. En este sentido, cabe destacar que se hará una breve introducción al lenguaje y sus características particulares, para centrarse de forma rápida en las aplicaciones de la programación mediante scripting en entornos de juego. En caso de que el alumno/a no haya alcanzado satisfactoriamente los contenidos de las asignaturas previas de programación, se recomienda un trabajo fuerte fuera del aula para consolidar los conocimientos necesarios para seguir la asignatura con normalidad.

Resultados de aprendizaje


Al acabar la asignatura los estudiantes tienen que ser capaces de:

E6.6 Desarrollar videojuegos en 2D y 3D (o partes del mismo) en lenguajes de alto nivel sobre plataformas y motores destinados a tal efecto.

E7.1 Clasificar y describir los lenguajes interpretados actuales y sus características.

E7.2 Programar en lenguajes interpretados para desarrollar prototipos de jugabilidad, de interacción y balanceo.

 

Metodologia de trabajo


Todos los conceptos teóricos de la materia se expondrán en clases de teoría en formato de clase magistral, estudio de casos o aprendizaje basado en preguntas. En estas clases, a discreción de los docentes impartidores, también se resolverán ejercicios y problemas de carácter más práctico. Estas actividades breves servirán al estudiante como instrumento de autoevaluación de su adquisición de los contenidos de la materia y se evaluarán como trabajo individual. Las prácticas de laboratorio se llevarán a cabo en grupos pequeños y se trabajará la aplicación práctica de los conceptos teóricos. En las sesiones que se programen a este efecto se darán las herramientas adecuadas para resolver las actividades programadas y se espera que estas se alarguen desde el punto de vista temporal más allá de las horas de laboratorio y que, en consecuencia, los estudiantes deban finalizar durante el tiempo de aprendizaje autónomo.

Contenidos


1. Introducción a los lenguajes interpretados
   1.1. Clasificación de los lenguajes de programación
   1.2. Lenguajes compilados vs lenguajes interpretados
   1.3. Conceptos básicos de lenguajes interpretados
2. Programación con Lua
   2.1. Características básicas
   2.2. Usos habituales
   2.3. Intérprete / IDE
   2.4. Modos de desarrollo
   2.5. Chunks y bloques
   2.6. Reglas gramáticas
   2.7. Reglas no escritas y estilo de programación
   2.8. Variables locales y variables globales
   2.9. Operadores habituales (aritméticos, relacionales y lógicos)
   2.10. Operadores específicos (concatenación y tamaño)
   2.11. Constructores de tablas
   2.12. Retorno múltiple
   2.13. Funciones de orden superior
   2.14. Argumentos variables
   2.15. Metatablas y metamétodos
   2.16. Programación orientada a objetos
3. Programación gráfica con el motor Love
   3.1. Eventos
   3.2. Gráficos
   3.3. Máquinas de estado finitas (FSM)
4. Aplicación del scripting en entornos de juego: Modding
   4.1. Ficheros de datos (csv, xml, json).
   4.2. Archivos de configuración de juego.
   4.3. Integración en aplicaciones y motores de juego
   4.4. Análisis estructural de un juego comercial.
   4.5. Uso de Lua y Xml, para la generación de mods.
5. Aplicación del scripting en entornos de juego: Incrustación de Lua en el motor Unity3D
   5.1. Integración de un intérprete de Lua como asset.
   5.2. Carga en tiempo de ejecución.
   5.3. Interacción con los objetos de Unity3D

Actividades de aprendizaje


Con el objetivo de recoger evidencia del logro de los resultados de aprendizaje esperados se realizarán las siguientes actividades de carácter evaluativo (relacionadas con todas las competencias comunes):

 

A1. Ejercicio en clase: Tablas con Lua (Evidencia del resultado de aprendizaje E6.6)

A2. Ejercicio en clase: Sprites con Lua (Evidencia del resultado de aprendizaje E6.6)

A3. Ejercicio en clase: Sprites con Lua2 (Evidencia del resultado de aprendizaje E6.6)

A4. Ejercicio en clase: Luathon (Evidencia del resultado de aprendizaje E6.6)

A5. Ejercicio en casa: Modding con Lua (Evidencia del resultado de aprendizaje E7.2)

A6. Ejercicio en casa: Scripting con Lua (Evidencia del resultado de aprendizaje E7.2)

A7. Practica de laboratorio: Sesión introductoria con el intérprete de Lua (Evidencia del resultado de aprendizaje E6.6)

A8. Practica de laboratorio: Programación de un juego con la librería Love (Evidencia del resultado de aprendizaje E6.6)

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

A10. Practica de laboratorio: Programación de un juego estructurado con Love (Evidencia del resultado de aprendizaje E7.2)

A11. Practica de laboratorio: Integración del scripting en Lua con un juego realizado sobre un engine gráfico (Evidencia del resultado de aprendizaje E7.2 i E6.6)

A12. Examen Final (Evidencia de todos los resultados de aprendizaje)  

 

Criterios generales de las actividades:

  • El profesor presentará un enunciado para cada actividad y los criterios de evaluación y/o rúbricas.

  • El profesor informará de las fechas y formato de la entrega de la actividad.

Sistema de evaluación


La nota de cada alumno se calculará siguiendo los siguientes porcentajes:

 

A1. Ejercicio en clase: Tablas con Lua 1.5%

A2. Ejercicio en clase: Sprites con Lua 1.5%

A3. Ejercicio en clase: Sprites con Lua2 1.5%

A4. Ejercicio en clase: Luathon 1.5%

A5. Ejercicio en casa: Modding con Lua 2.5%

A6. Ejercicio en casa: Scripting con Lua 1.5%

A7. Practica de laboratorio: Sesión introductoria con el intérprete de Lua 4%

A8. Practica de laboratorio: Programación de un juego con la librería Love 6%

A9. Practica de laboratorio: Programación de un juego estructurado con Love 12%

A10. Practica de laboratorio: Realización de scripts en Lua para un juego comercial 6%

A11. Practica de laboratorio: Integración del scripting en Lua con un juego realizado sobre un engine gráfico 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

 

Consideraciones:

  • Hay que obtener una nota superior a 5 en el examen final para poder aprobar la asignatura.

  • Una actividad no entregada o entregada con retraso y sin justificación (citación judicial o asunto médico) cuenta como un 0.

  • Es responsabilidad del alumno evitar el plagio en todas sus formas. En el caso de detectar plagio, independientemente de su alcance, en alguna actividad corresponderá a tener una nota de 0. Además el profesor comunicará al jefe de estudios la situación para que se tomen medidas aplicables en materia de régimen sancionador.

  • La asistencia a las prácticas de laboratorio es obligatoria.

  • El examen de recuperación sólo recupera la nota de teoría.

Bibliografía


Básica

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

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

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


Complementaria

 

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.