Informació general


Idiomes d'impartició


  • Català
  • Castellano

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

Descripció


L'assignatura introdueix a l'alumne a la programació de jocs 2D. L'eina principal que s'usa és Unity, tot i que l'assignatura es centra més en els conceptes clau del desenvolupament de jocs i no en l'eina específica que s'usa per implementar els exemples i pràctiques.

Durant el desenvolupament del projecte integral, un joc, s'introdueixen teòricament els conceptes principals a les primeres classes amb petits exemples que els alumnes puguin experimentar. Una vegada explicats els conceptes, els alumnes es dediquen a realitzar el seu projecte, tenint el suport del professor a tot moment durant les classes. El joc haurà de lliurar-se dintre del termini i en la forma escaient adequats.

L'exàmen consisteix en implementar de manera pràctica conceptes exposats a classe.

Resultats d'aprenentatge


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

E6.1. Dissenyar l'arquitectura del software d'un videojoc d'acord a unes especificacions.

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

Metodologia de treball


L’assignatura utilitza les següents metodologies de treball:

Classe magistral, Càpsules de vídeo, Resolució de problemes i Laboratori en grup reduït.

 

Continguts


Tema 1: Introducció a Unity

1. 1 Física

1. 2 Introducció a scripting

 

Tema 2: Tilemaps

2. 1 Tilemap colliders

2. 2 Composite Colliders

2. 3 Multiple Tilemaps

2. 4 Custom Tile Colliders

2. 5 Tilemaps for platformers

2. 6 Animated Tiles

2. 7 Tile Editor Tools

 

Tema 3: Player Control

3. 1 Inputs

3. 1. 1 Input Manager

3. 1. 2 Axis

3. 1. 3 Buttons/Keys

3. 1. 4 Custom Input Controller

3. 1. 5 Input for multiplayer

3. 1. 6 Layered Input System

3. 2 Movement

3. 2. 1 Move by rigidbody

3. 2. 2 Add Force

3. 2. 3 Set velocity

3. 3 Smoothing

3. 4 Collision detection

3. 4. 1 Collision manager

3. 4. 2 Raycasting

3. 5 Jumping

3. 5. 1 Single Jump

3. 5. 2 Wall bouncing

3. 5. 3 Air jump

3. 5. 4 Double Jump

3. 6 Ducking

3. 6. 1 State swap

3. 6. 2 Camera

 

Tema 4: Animation

4. 1 Skeletal animation

4. 2 The Animation window

4. 3 The animator

4. 3 .1 State Machines

4. 3. 2 Transitions

4. 3. 3 Control animator from script

4. 3. 4 Blend Trees 1D/2

 

4. 3. 5 Sub states

4. 3. 6 Animator events

4. 3. 7 Layers

4. 3. 7. 1 Masks

4. 3. 7. 2 Synchronized layers

4. 3. 8 Target Matching

4. 3. 9 IK

 

Tema 5: Physics for dynamic platformer environments

5. 1 Moving platforms

5. 2 Wind zones

5. 3 Jumpers

5. 4 Streams

5. 5 Buoyancy

 

Tema 6: Puzzles

6. 1 Locks & Keys

6. 2 Hidden Areas

6. 3 Fake walls

6. 4 Push & pull boxes

 

Tema 7: Combat and Enemies

7. 1 Spawning

7. 1. 1 Pooling

7. 1. 2 Procedural spawning

7. 2 Enemy movement & Health

7. 3 AI

7. 3. 1 Patrolling on platforms

7. 3. 2 Waypoints

7. 3. 3 Edge detection

7. 3. 4 Player detection

7. 3. 5 Behavioral trees

7. 4 Combat

7. 4. 1 Melee

7. 4. 2 Range

7. 5 Power Ups

 

Tema 8: GUI & Dialogue System

8. 1 MVC

8. 2 Juicy UI animations

8. 3 GUI Architecture

8. 4 Custom Event system

8. 4. 1 Observer Pattern

8. 5 HUD

8. 6 Dialog System

8. 6. 1 External data sheets

8. 6. 2 Localization

8. 6. 3 Dialogue trees

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):

 

Les pràctiques tracten de desenvolupar un joc de plataformes 2D en el qual els alumnes hauran d'implementar una solució als problemes que aquest tipus de jocs plantegen i que s'expliquen a classe. El professorat deixarà clares les funcionalitats que ha de tenir el joc i quins elements haurà de tenir. Els alumnes podran decidir com implementar-los i proposar diferents estratègies (mecàniques, tipus d'enemics, trampes...) on es demostri la seva habilitat com a programadors.

 

A1. Pràctiques de laboratori: Projecte Videojoc 2D - Part 1 (Evidència del resultat d’aprenentatge E6.1 i E6.6)

Escenari Estàtic + Control jugador+ Càmera

A2. Pràctiques de laboratori: Projecte Videojoc 2D - Part 2 (Evidència del resultat d’aprenentatge E6.1 i E6.6)

Escenari Dinàmic (Físiques avançades) + IA Enemics + Partícules

A3. Pràctiques de laboratori: Projecte Videojoc 2D - Part 3 (Evidència del resultat d’aprenentatge E6.1 i E6.6)

GUI + Sistema de diàlegs + Audio

A4. Examen final pràctic (Evidència 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.

Sistema d'avaluació


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

A1. Pràctiques de laboratori: Projecte Videojoc 2D - Part 1 20%

A2. Pràctiques de laboratori: Projecte Videojoc 2D - Part 2 20%

A3. Pràctiques de laboratori: Projecte Videojoc 2D - Part 3 10%

A4. Examen final pràctic 50%

Nota final = A1 x + A2 y + A3 z + A4 w

 

Consideracions:

  • Cal obtenir una nota superior a 5 a l’examen final per a aprovar l’assignatura.
  • Cal obtenir una nota superior a 5 a en el promig de les pràctiques per a aprovar l’assignatura.
  • La nota màxima que es pot obtenir en la convocatòria extraordinària serà 5.

  • 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 un 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.

Bibliografia


Bàsica

Learning C# Programming with Unity 3D. Alex Okita.

Tutorial web d'eines de creació de jocs amb el motor Unity (http://unity3d.com/es/learn)