Títol: Assistent per desenvolupar
videojocs en Flash
Volum: 1
Alumne: Joel Ortiz Ortiz
Director/Ponent: Lluis Solano Albajes
Departament: LSI
Data: -
Assistent per desenvolupar videojocs en Flash
2
Assistent per desenvolupar videojocs en Flash
DADES DEL PROJECTE
Títol del Projecte: Assistent per desenvolupar videojocs en Flash
Nom de lʼestudiant: Joel Ortiz Ortiz
Titulació: Enginyeria en Informàtica
Crèdits: 37.5
Director/Ponent: Lluis Solano Albajes
Departament: LSI
MEMBRES DEL TRIBUNAL (nom i signatura)
President: Daniela Tost Pardell
Vocal: Friman Sánchez Castaño
Secretari: LLuis Solano Albajes
CALIFICACIÓ
Calificació numèrica:
Calificació descriptiva:
Data:
3
Assistent per desenvolupar videojocs en Flash
4
Assistent per desenvolupar videojocs en Flash
1. Introducció!
12
1.1 Objectius del Projecte!
12
1.2 Context del Projecte: Videojocs!
13
1.2.1 Què és un videojoc?!
13
1.2.2 Classificació per gènere!
14
1.2.3 Classificació per plataforma!
22
1.3 Els Videojocs Flash!
24
1.3.1 Què és Flash?!
24
1.3.2 Característiques Principals!
25
1.4 Desenvolupament dels Videojocs Flash!
25
1.5 Precedents: Authorware!
26
2. Tecnologies Utilitzades!
27
2.1 Flash i ActionScript!
27
2.1.1 Flash!
27
2.1.2 ActionScript!
28
2.1.2.1 ActionScript Virtual Machine 2!
30
2.1.2.2 La nova API!
31
2.1.2.3 La Display List!
31
2.1.2.4 Control dʼesdeveniments unificat!
33
2.1.2.5 E4X XML!
34
2.1.3 Avantatges de Flash i ActionScript!
34
2.2 El llenguatge XML!
35
2.2.1 Què és XML?!
35
2.2.2 Estructura bàsica!
35
2.2.3 Avantatges del llenguatge XML!
36
2.3 Lʼentorn de treball!
37
2.3.1 Adobe Flash CS5!
37
3. Anàlisi de requeriments!
38
5
Assistent per desenvolupar videojocs en Flash
3.1 Usuaris del producte!
38
3.1.1 Categories!
38
3.1.2 Prioritats!
39
3.1.3 Participació!
40
3.2 Requeriments funcionals: Casos dʼús!
41
3.2.1 Crear una planificació!
41
3.2.2 Desar una planificació!
42
3.2.3 Carregar una planificació!
43
3.2.4 Afegir una activitat nova!
44
3.2.5 Editar les propietats dʼuna activitat!
45
3.2.6 Esborrar una activitat!
46
3.2.7 Afegir una transició nova!
47
3.2.8 Editar les propietats dʼuna transició!
48
3.2.9 Esborrar una transició!
49
3.2.10 Afegir condicions a una transició!
50
3.2.11 Previsualitzar la reproducció del joc!
51
3.2.12 Aturar una previsualització!
52
3.2.13 Començar partida!
52
3.3 Requeriments no funcionals!
54
3.3.1 Requeriments dʼaspecte (look & feel)!
54
3.3.1.1 Apariència atractiva!
54
3.3.1.2 Homogeneitat!
54
3.3.2 Requeriments dʼusabilitat!
55
3.3.2.1 Facilitat dʼús!
55
3.3.2.2 Navegació amb ratolí!
55
3.3.2.3 Control dʼerrors!
56
3.3.2.4 Sistema intuitiu!
56
3.3.2.4 Nom de la planificació!
56
6
Assistent per desenvolupar videojocs en Flash
3.3.3 Requeriments de rendiment!
3.3.3.1 Escalabilitat!
57
57
3.3.4 Requeriments operacionals i de lʼentorn!
3.3.4.1 Navegadors!
57
57
3.3.5 Requeriments de suport i manteniment!
58
3.3.5.1 Suport a lʼusuari!
58
3.3.6 Requeriments de seguretat!
58
3.3.6.1 Integritat de les dades!
58
3.4 Qualitat dels requeriments!
59
4. Especificació !
60
4.1 Model de Casos dʼÚs!
60
4.1.1 Actors del sistema!
60
4.1.2 Diagrama de casos dʼús!
61
4.1.3 Especificació de casos dʼús!
62
4.1.3.1 Crear Planificació!
62
4.1.3.2 Desar Planificació!
63
4.1.3.3 Carregar Planificació!
63
4.1.3.4 Afegir Activitat!
63
4.1.3.5 Editar Activitat!
64
4.1.3.6 Esborrar Activitat!
64
4.1.3.7 Afegir Transició!
65
4.1.3.8 Editar Transició!
65
4.1.3.9 Esborrar Transició!
66
4.1.3.10 Previsualitzar!
66
4.1.3.11 Aturar Visualització!
66
4.1.3.12 Jugar!
67
4.2 Model Conceptual!
67
4.2.1 Diagrama de classes!
68
7
Assistent per desenvolupar videojocs en Flash
4.2.2 Descripció de les classes i els seus atributs!
69
4.2.2.1 Assistent!
69
4.2.2.2 Planificació!
69
4.2.2.3 Activitat!
70
4.2.2.4 Transició!
70
4.2.2.5 Reproductor!
70
4.2.2.6 Joc!
71
4.2.3 Descripció de les associacions!
71
4.2.3.1 Assistent-Planificació!
71
4.2.3.2 Planificació-Activitat!
72
4.2.3.3 Origen - Destí (Activitat-Activitat)!
72
4.2.3.4 Assistent-Reproductor!
73
4.2.3.5 Joc-Planificació!
73
5. Disseny!
74
5.1 Decisions de disseny!
74
5.2 El Model!
76
5.2.1 Patrons de disseny!
76
5.2.1.1 Patró Expert!
77
5.2.1.2 Patró Creador!
77
5.2.1.3 Patró Observador!
78
5.2.1.4 Patró Controlador!
78
5.2.2 Diagrama de classes de disseny !
79
5.2.3 Model de dades!
80
5.3 Els Controladors!
81
5.4 Les Vistes!
81
5.4.1 El menú dinàmic!
82
5.4.1.1 Afegir activitat!
82
5.4.1.2 Editar activitat!
83
5.4.1.3 Editar transició!
84
8
Assistent per desenvolupar videojocs en Flash
5.4.1.4 Desar i carregar una planificació!
85
5.4.1.5 Previsualitzar!
86
5.4.2 Lʼàrea interactiva!
86
5.5 Realitzacions dels casos dʼús!
88
5.5.1 Crear planificació!
89
5.5.2 Desar planificació!
89
5.5.3 Carregar planificació!
90
5.5.4 Afegir activitat!
90
5.5.5 Editar activitat!
91
5.5.6 Esborrar activitat!
91
5.5.7 Editar transició!
92
5.5.8 Previsualitzar!
92
5.5.9 Aturar visualització!
93
6. Implementació !
94
6.1 El mode edició: lʼassistent!
94
6.1.1 La classe flashAssistant!
95
6.1.1.1 Atributs importants!
95
6.1.1.2 Funcions importants!
96
6.1.2 La classe dynamicMenu!
97
6.1.2.1 Atributs importants!
97
6.1.2.2 Funcions importants!
98
6.1.3 La classe Board!
98
6.1.3.1 Atributs importants!
99
6.1.3.2 Funcions importants!
100
6.1.4 La classe Activity!
100
6.1.4.1 Atributs importants!
100
6.1.4.2 Funcions importants!
101
6.1.5 La classe Link!
102
9
Assistent per desenvolupar videojocs en Flash
6.1.5.1 Atributs importants!
102
6.1.5.2 Funcions importants!
103
6.1.6 La classe xmlPlayer!
104
6.1.6.1 Atributs importants!
104
6.1.6.2 Funcions importants!
105
6.2 El mode execució: el joc!
106
6.2.1 La classe Game!
106
7. Planificació temporal i anàlisi del cost!
107
7.1 Diagrama de Gantt!
107
7.2 Anàlisi del cost!
109
8. Conclusions !
111
9. Bibliografia !
113
10
Assistent per desenvolupar videojocs en Flash
11
Assistent per desenvolupar videojocs en Flash
1. Introducció
En aquesta secció es posa al lector al context del projecte, es defineixen els
objectius principals i sʼintrodueixen els conceptes necessaris per una millor i més
completa comprensió de la memòria.
1.1 Objectius del Projecte
Lʼobjectiu general dʼaquest projecte és aconseguir una aplicació gràfica interactiva
senzilla que mostri el flux dʼexecució dʼuna aplicació Flash, composada per
diferents fitxers de Flash, i permeti editar-lo per definir de forma interactiva la
seqüència de transicions o nivells dʼun videojoc. Es podran definir quines són
aquestes transicions i lʼordre de les fases permetent desfer les seqüències lineals
habituals als videojocs. Es podran definir estructures on puguin existir diferents
camins per arribar a un mateix punt i completar el joc de diferents maneres. Per
assolir aquest objectiu sʼhan establert els següents objectius concrets:
Dissenyar un producte software en Flash que faciliti la tasca dʼorganitzar i
modificar les transicions entre les diferents activitats dʼun videojoc. Per
aconseguir això cal:
•
Estudiar ActionScript 3, el llenguatge de programació de Flash.
•
Estudiar les necessitats que te un desenvolupador de videojocs Flash per
tal dʼafegir totes les funcionalitats que calguin.
•
Adaptar els coneixements obtinguts a lʼenginyeria Informàtica de disseny
de software al desenvolupament dʼuna eina pel desenvolupament de
videojocs en Flash.
Implementar el software fent servir Flash i ActionScript 3. Amb això volem
aconseguir:
•
Dissenyar la interfície gràfica de lʼaplicació amb Flash dʼuna manera
simple i intuïtiva per lʼusuari que permeti crear i modificar tots els
elements dʼuna manera interactiva.
12
Assistent per desenvolupar videojocs en Flash
•
Minimitzar la necessitat per part de lʼusuari de lʼaplicació de tenir
coneixements de Flash per utilitzar lʼeina per crear videojocs simples.
Realitzar un videojoc senzill de demostració per mostrar les possibilitats de
lʼeina.
Escriure un tutorial per mostrar el funcionament de lʼaplicació i com es poden
desenvolupar videojocs en Flash utilitzant aquest assistent.
1.2 Context del Projecte: Videojocs
En aquest apartat es valoren els videojocs, es comenten les seves característiques
bàsiques i una possible classificació per introduir-nos al context on està basat
aquest projecte.
1.2.1 Què és un videojoc?
Un videojoc és un software informàtic enfocat a lʼentreteniment que implica
interacció del jugador, o usuari, amb una interfície dʼusuari que genera una reacció
visual en un dispositiu de vídeo. Els dispositius electrònics que sʼutilitzen per jugar
als videojocs es coneixen com a plataformes. Aquestes plataformes poden ser
qualsevol dispositiu electrònic amb la capacitat dʼexecutar els videojocs. Algunes
de les plataformes que tenim actualment són els ordinadors personals, les
consoles, les màquines recreatives, les consoles portàtils, els telèfons mòbils o les
PDAs.
La història dels videojocs és molt recent encara. El primer videojoc conegut és
Tennis for two, creat pel físic nord-americà William Higinbotham al 1957, que
simulava un joc de tennis o ping pong a un oscil·loscopi. El va crear per a que els
visitants del laboratori nacional de Brookhaven, on ell treballava, no sʼavurreixin.
Higinbothan no va patentar el joc ja que no el va considerar com una gran
diferència respecte de la capacitat existent dels ordinadors a lʼèpoca.
El primer videojoc comercial no va aparèixer fins al 1971, bastants anys després.
Es tractava de Computer Space, creat per Nolan Bushnell i Ted Dabney que
13
Assistent per desenvolupar videojocs en Flash
després serien els fundadors dʼAtari, i va ser el primer videojoc que es va
comercialitzar que funcionava amb monedes. Aquest joc va ser lʼinici de la nova
indústria de lʼentreteniment als Estats Units, el Japó i Europa. Després de
Computer Space, va aparèixer la primera consola de videojocs, Magnavox
Odyssey, que utilitzava una televisió estàndard com a dispositiu de vídeo. Tot
seguit, al 1972 i al 1975, respectivament van aparèixer les dues versions del famós
videojoc Pong dʼAtari, la primera en versió arcade i la segona per jugar a casa.
Lʼèxit comercial del Pong va provocar que moltes companyies desenvolupessin
clons del joc i els seus propis sistemes de videojocs, engendrant així la indústria
dels videojocs.
La popularitat i rendibilitat dʼaquest tipus de software ha anat creixent amb el temps
progressivament. Els videojocs han anat guanyant amb el temps amplitud del seu
públic, varietat dels seus gèneres, i sofisticació tecnològica. Avui dia els videojocs
tendeixen a imitar la realitat amb els seus gràfics en 3 dimensions, però també
tenim jocs abstractes i jocs simples dʼentreteniment, tenim jocs per gent de totes
les edats, per tots els gustos i pràcticament per qualsevol plataforma que sigui
capaç dʼexecutar un videojoc.
Per entrar més en detall sobre els tipus de videojocs que hi han, és necessari
veure una classificació dels que existeixen actualment i ho farem de dues maneres:
per gènere i per plataforma. En els següents apartats sʼanalitzen aquestes dues
classificacions i es comenten les característiques de cada tipus de videojoc.
1.2.2 Classificació per gènere
Els gèneres dels videojocs sʼutilitzen per categoritzar els jocs basant-se en el tipus
dʼinteracció del jugador més que en diferències visuals o narratives. Els videojocs
es classifiquen independentment del seu contingut o escenari, a diferència dʼaltres
obres de ficció com els llibres o les pel·lícules. Per exemple, un videojoc dʼacció
pertany a aquest gènere independentment de si es porta a terme a un món
fantàstic o a lʼespai exterior. A cada gènere podem tenir subgèneres que delimiten
les característiques del joc encara més acuradament. Encara no existeix una
classificació consensuada dels videojocs però generalment els gèneres són els
següents:
Aventura: els videojocs dʼaventura es caracteritzen perquè el jugador ha
dʼexplorar, investigar, solucionar trencaclosques, interaccionar amb altres
personatges del videojoc i, sobretot, el joc té un enfocament en la trama
14
Assistent per desenvolupar videojocs en Flash
argumental molt fort i sol tenir més importància que en altres tipus de
videojocs. Aquest tipus de gènere pot englobar molts altres tipus de videojocs
que també poden tenir una història treballada però només comentarem
aquests subgèneres que són els jocs estrictament dʼaventures:
•
Aventura dʼacció: aquests videojocs combinen elements del gènere
dʼaventures amb el gènere dʼacció i desafien al jugador tant en els seus
reflexes com en la seva capacitat de resoldre problemes. És potser el
gènere més variat de tots perquè inclou videojocs que podrien ser
categoritzats en gèneres més específics. Exemples: Tomb Raider, The
Legend of Zelda, Soul Reaver, God of War...
Fig.1.1 The Legend of Zelda: Twilight Princess. 2006
•
Aventura gràfica: la dinàmica dʼaquest tipus dʼaventures consisteix en
anar resolent trencaclosques, plantejats com a situacions que succeeixen
a la història, interactuant amb personatges o objectes que es van
aconseguint durant el joc. Normalment les conversacions entre els
personatges són una part important del joc i contenen diferents línies
argumentals que depenen de les opcions que el jugador esculli als
guions. Exemples: Day of the Tentacle, Maniac Mansion, Broken Sword,
Monkey Island...
Fig.1.2 Day of the Tentacle. 1993
15
Assistent per desenvolupar videojocs en Flash
•
Aventura conversacional: en aquest tipus dʼaventures es situa al
jugador en un escenari descrit en text. El jugador ha dʼintroduir lʼacció a
realitzar per teclat normalment en llenguatge natural. Lʼordinador
interpreta lʼacció del jugador i això produeix una nova situació novament
descrita en text, i així successivament. Aquest tipus dʼaventures ja no es
veuen en occident ja que van evolucionar en aventures gràfiques però al
Japó encara existeixen jocs dʼaquest tipus anomenats novel·les visuals.
Exemples: Chichen Itza, Zork...
Acció: en aquests jocs el protagonista ha de superar multitud dʼobstacles a
base dʼutilitzar tot tipus dʼarmes. Es poden classificar en molts subgèneres
que són:
•
First-Person Shooter (acció en primera persona): aquests jocs
centren la seva jugabilitat al voltant de combats amb armes, normalment
de projectils, des dʼuna perspectiva en primera persona. El jugador
experimenta lʼacció a través dels ulls del protagonista i es mou per
lʼescenari com si estigués dins del seu cos. Exemples: Quake, Doom,
Counter Strike, Call of Duty...
Fig.1.3 Quake 4. 2005
•
Third-Person Shooter (acció en tercera persona): són jocs que basen
la seva jugabilitat al voltant de combats amb armes igual que els
anteriors però el jugador pot veure el personatge a la pantalla des dʼuna
perspectiva en tercera persona. Exemples: MDK, Gears of War, Max
Payne, Metal Gear Solid...
•
Matamarcians: potser és el subgènere més bàsic i antic dʼaquest
gènere. Els jugadors han de controlar un personatge, normalment una
16
Assistent per desenvolupar videojocs en Flash
nau espacial o similar, i disparar contínuament contra una gran quantitat
dʼenemics alhora que intenta esquivar els seus atacs. Exemples: Space
Invaders, Gradius, 1943: The Battle of Midway, R-Type...
Fig.1.4 Gradius V. 2004
•
Sobre rails: en aquest tipus de jocs el personatge del joc es mou per
iniciativa pròpia sense que el jugador el controli. El jugador només té el
control del arma i ha dʼanar apuntant i disparant contra els enemics.
Exemples: The House of the Dead, Virtua Cop, Time Crisis...
Estratègia: es caracteritzen per la necessitat del jugador de manipular un
gran nombre de personatges, objectes o dades per aconseguir uns objectius
pre-fixats. Normalment són jocs de temàtica bèl·lica però també hi han de
gestió econòmica i social. Els podem classificar en dos subgèneres:
•
Estratègia en temps real: la principal característica dʼaquest jocs és que
el temps transcorre de forma contínua i, per tant, els jugadors han de
reaccionar als esdeveniments que succeeixen al moment. Exemples: Age
of Empires, Warcraft, Command & Conquer, Starcraft...
Fig.1.5 Starcraft II: Wings of Liberty. 2010
17
Assistent per desenvolupar videojocs en Flash
•
Estratègia per torns: a diferència dels anteriors, en aquests jocs, cada
jugador te un torn per jugar i no pot fer res mentre els altres jugadors
estan al seu torn. Exemples: Civilization, Worms, Warlords, Heroes of
Might and Magic...
Lluita: en aquest cas es tracta de jugar amb un personatge lluitador utilitzant
tècniques de combat, poders màgics o donant cops. Tenim tres subgèneres:
•
Lluita un contra un: es tracta simplement de lluitar contra un altre
lluitador i tractar de guanyar i evitar que ens guanyi. Exemples: Street
Fighter, The King of Fighters, Soul Calibur, Mortal Kombat...
Fig.1.6 Street Fighter IV. 2008
•
Beatʼem up: en aquests jocs també portem un personatge lluitador però
a diferència dels anteriors haurem de lluitar amb un gran nombre
dʼenemics mentre avancem per un nivell llarg. Exemples: Golden Axe,
Final Fight, Streets of Rage, Double Dragon...
•
Free for all: aquesta modalitat normalment és multi-jugador i guanya el
jugador que més enemics mata o el primer que mata un nombre
dʼenemics pre-establert. Exemples: Super Smash Bros...
Plataformes: es caracteritzen perquè el jugador ha de caminar, saltar o
escalar per una serie de plataformes i penya-segats, amb enemics, mentre es
recullen objectes per aconseguir completar el joc. És un gènere que va ser
creat en els anys 80 però encara és molt popular en la actualitat. Exemples:
Super Mario Bros, Sonic the Hedgehog, Megaman, Castlevania...
18
Assistent per desenvolupar videojocs en Flash
Fig.1.7 Sonic the Hedgehog 4. 2010
Rol: aquest gènere sʼinspira en els jocs de rol clàssics, on el protagonista
interpreta un paper i ha de millorar les seves habilitats mentre interactua amb
lʼentorn i altres personatges. També és habitual que succeeixi que les
decisions que pren el teu personatge influeixen directament en el seu futur
pròxim. Hi han diversos subgèneres que es poden englobar en aquesta
categoria:
•
Vista en tercera persona: la seva jugabilitat està basada en els jocs de
rol i el jugador pot veure el seu personatge des dʼuna perspectiva en
tercera persona, segurament són els més comuns. Exemples: Baldurʼs
Gate, Fable, Final Fantasy, Neverwinter Nights...
Fig.1.8 Baldurʼs Gate II: Shadows of Amn. 2000
•
Vista en primera persona: són videojocs amb una jugabilitat
exactament igual que els anteriors però el personatge es veu des dʼuna
perspectiva en primera persona. Exemples: Fallout, The Elder Scrolls:
Oblivion, Eye of the Beholder, Bardʼs Tale...
19
Assistent per desenvolupar videojocs en Flash
•
Videojocs de rol massiu (MMORPG): permeten a milers de jugadors
accedir a un món virtual de manera simultània a través dʼInternet.
Consisteix en crear un personatge del qual podrem escollir raça,
professió, armes, etc. Després el personatge sʼintrodueix al joc i pot anar
millorant les seves habilitats lluitant amb altres personatges del joc o
realitzant missions. Exemples: Ragnarok Online, Everquest, Lineage,
World of Warcraft...
Fig.1.9 World of Warcraft: Wrath of the Lich King. 2010
•
Rol dʼacció: tenen les mateixes característiques que els altres videojocs
de rol però, a diferencia dʼaltres tipus de jocs de rol, ofereixen uns
combats en temps real molt més realistes, per tant, és més important
lʼacció que la estratègia. Exemples: Harry Potter, Silver, Kingdom Hearts,
Diablo...
•
Rol tàctic: es caracteritzen per tenir alhora elements dels videojocs de
rol i dels dʼestratègia. Generalment el jugador controla un grup de
personatges que han dʼanar superant combats dʼestratègia però també
els personatges poden pujar de nivell, poden equipar-se amb objectes i
hi ha una història que pot variar segons les accions dutes a terme pel
grup. Exemples: Sonic Chronicles, Ogre Battle, Final Fantasy Tactics,
Fire Emblem...
Musicals: la jugabilitat dʼaquests jocs està orientada significativament, o fins i
tot totalment, a la interacció del jugador amb la música. Hi han dʼimitar
cantants, simulació dʼinstruments o dʼaltres en els que sʼutilitzen els ritmes de
la música per la mecànica del joc. Exemples: Singstar, Guitar Hero, Pump It
Up, Elite Beat Agents...
20
Assistent per desenvolupar videojocs en Flash
Esportius: aquest gènere engloba tots els videojocs que basen la seva
jugabilitat en qualsevol esport, ja sigui simulat o dʼuna manera més arcade.
Exemples: Pro Evolution Soccer, Wii Sports, Mario Tennis, Tony Hawkʼs Pro
Skater...
Fig.1.10 Pro Evolution Soccer 2011. 2010
Curses: la característica principal dʼaquests jocs es que intenten imitar
competicions entre vehicles. Normalment lʼobjectiu és recórrer una certa
distància en el menor temps possible però poden haver altres variants.
Exemples: Mario Kart, F-Zero, Gran Turismo, Need for Speed...
Simulació: aquest gènere involucra al jugador en una situació simulada
determinada, on lʼobjectiu és que la simulació sigui el més realista possible. Hi
han simulacions molt diferents i variades, des de la simulació de la vida dʼuna
persona fins a la conducció dʼun avió. Exemples: Microsoft Flight Simulator,
Los Sims, SimCity, RollerCoaster Tycoon...
Fig.1.11 Sim City 4. 2003
21
Assistent per desenvolupar videojocs en Flash
Puzle: se centren en desafiaments per a la ment, encara que a vegades els
jocs afegeixen límit de temps o altres elements dʼacció. Encara que molts jocs
dʼaventures i dʼacció tenen trencaclosques com a part del joc, un autèntic joc
de puzle centra la seva jugabilitat principal en la resolució de puzles.
Exemples: Portal, World of Goo, Tetris, Profesor Layton y la Villa Misteriosa...
Educatiu: aquests tipus de videojocs no es caracteritzen pel seu tipus de
jugabilitat com la majoria dels altres, sinó pel seu objectiu, per tant, la seva
jugabilitat pot ser qualsevol de les anteriors. La seva característica principal es
que volen aconseguir que el jugador adquireixi algun tipus de coneixement.
Estan dirigits per a totes les edats, no només per a nens, encara que siguin
els més habituals. Exemples: English Training, Art Academy, Big Brain
Academy...
1.2.3 Classificació per plataforma
El terme “plataforma” en el món dels videojocs fa referència a una combinació
específica de maquinari que, juntament amb el seu corresponent programari de
baix nivell, permet a un videojoc funcionar correctament. Es pot fer una
classificació pel tipus de plataforma en la qual funciona un videojoc, ja que és
habitual que hi hagin diferents tipus de jocs segons la plataforma en la qual
funcionen. Tot i això, és també bastant comú que hi hagin videojocs que existeixen
per diverses plataformes alhora, per tant, el fet que un joc pertanyi a una categoria
no vol dir que no pugui estar també en les altres. Aquestes són les principals
plataformes que sʼutilitzen per jugar als videojocs:
Màquina recreativa: són màquines grans dʼentreteniment que funcionen
mitjançant monedes, normalment situades en negocis públics com els
restaurants, salons recreatius, centres comercials, pistes de bitlles, etc.
Consola de joc: són computadores dʼentreteniment interactiu que produeixen
un senyal de video que pot ser utilitzat per qualsevol dispositiu de sortida
(televisió, monitor, projector...) per reproduir un videojoc. La diferència
principal amb els ordinadors és que les consoles són creades exclusivament
per lʼutilització de videojocs.
22
Assistent per desenvolupar videojocs en Flash
Consola Portàtil: són dispositius electrònics lleugers que permeten jugar a
videojocs. La diferència principal amb les altres consoles és que els controls,
els parlants i la pantalla són tots parts de la mateixa unitat.
Telèfon Mòbil, PDAs, o similars: els videojocs disenyats per aquests
dispositius es diferencien dels altres perque són disenyats per utilitzar les
tecnologies que incorporen aquests aparells. El primer videojoc que es va
instal·lar a un telèfon mòbil va ser el de la serp dels models de Nokia del 1997
i es va convertir en el videojoc més jugat del planeta.
En Línia: avui dia podem considerar la xarxa dʼInternet com a una altra
plataforma on es desenvolupen videojocs, on els propis navegadors
sʼencarreguen dʼoferir als usuaris entreteniment, so i vídeo gràcies a les
tecnologies de Java i Flash. Els jocs en línia poden ser de qualsevol tipus, des
de jocs basats en text fins a jocs que incorporen gràfics complexes en tres
dimensions que representen mons virtuals poblats per molts jugadors que
juguen simultàniament.
Ordinadors: aquesta plataforma és similar a les consoles de joc en quant als
tipus de jocs que incorporen. De fet, podríem considerar lʼordinador una
plataforma que incorpora alhora jocs dels tipus de màquines recreatives,
altres de consoles, i molts jocs en línia. Encara que també hi han alguns jocs
que només es poden trobar als ordinadors i darrerament les consoles de jocs
també incorporen jocs en línia.
23
Assistent per desenvolupar videojocs en Flash
1.3 Els Videojocs Flash
Amb les classificacions anteriors ja es pot obtenir una idea bastant clara dels tipus
de videojocs que existeixen a lʼactualitat, i de tots aquests videojocs, hi ha un tipus
en el qual es centra aquest projecte: els videojocs Flash. En aquest apartat
explicaré més en detall què són aquests videojocs.
1.3.1 Què és Flash?
Flash és una plataforma multimèdia creada per la companyia Adobe que sʼutilitza
per afegir vídeo, animació i interactivitat a les pàgines web. Darrerament ha
guanyat molta popularitat i sʼutilitza habitualment per fer anuncis publicitaris a
Internet i jocs en línia que els propis navegadors poden mostrar sense necessitat
de software addicional.
El contingut de les aplicacions Flash es pot mostrar en diversos sistemes operatius
dʼordinadors i altres dispositius electrònics, com ara els telèfons mòbils. Només és
necessari tenir instal·lat lʼAdobe Flash Player que és gratuït i està disponible per als
navegadors dʼInternet més comuns i per altres dispositius. Això facilita la tasca pels
desenvolupadors ja que un joc Flash es pot utilitzar pràcticament des de qualsevol
ordinador i molts telèfons mòbils actuals.
Els videojocs Flash, per tant, són normalment videojocs en línia, pensats per ser
jugats a Internet, que contenen animació i interactivitat amb lʼusuari. Per tant,
poden pertànyer a pràcticament qualsevol dels gèneres que existeixen i poden ser
utilitzats en multitud de plataformes. Això fa que sigui molt avantatjós utilitzar
aquesta tecnologia.
Fig.1.12 jocs Flash
24
Assistent per desenvolupar videojocs en Flash
1.3.2 Característiques Principals
En resum, aquestes són les característiques principals dels videojocs Flash, les
quals es poden aplicar també a les aplicacions Flash en general:
Engloben pràcticament tots els gèneres de videojocs, per tant, podem trobar
moltes i molt diferents aplicacions Flash.
Poden funcionar en diferents plataformes diferents encara que el seu objectiu
principal és funcionar com aplicacions o videojocs en línia degut a la facilitat
dels navegadors web dʼexecutar-los.
Contenen principalment interactivitat amb lʼusuari i animacions, encara que
també poden incorporar so i vídeo. La quantitat de cadascun dʼaquests
elements variarà segons el tipus dʼaplicació. Per exemple, els videojocs Flash
tenen una gran quantitat dʼanimacions i interactivitat, en canvi una aplicació
segurament contindrà poques animacions.
1.4 Desenvolupament dels Videojocs Flash
El desenvolupament dels videojocs és un procés molt delicat i elaborat. Igual que
amb qualsevol altre software, la planificació és molt important per a un bon
funcionament del joc. I precisament dʼaixò tracta aquest projecte, de fer una eina
que faci més fàcil la planificació dels nivells que conté un videojoc o una aplicació
Flash.
Segurament en qualsevol altre entorn aquesta eina no tindria gaire sentit, però
tractant-se de videojocs Flash, on podem crear animacions simples amb molta
facilitat, el planificador estalvia la feina de programació que caldria per fer el joc
complet.
Lʼeina no estarà orientada per desenvolupadors que coneguin i disposin de lʼentorn
de desenvolupament de Flash, sinó per a que qualsevol persona que disposi de
petites aplicacions o animacions Flash o que sàpiga com crear-les, pugui planificar
lʼexecució de certa manera per a que constitueixi un conjunt, esdevenint dʼaquesta
manera un joc complet o aplicació completa. Dʼaquesta manera es permet a
25
Assistent per desenvolupar videojocs en Flash
usuaris inexperts la possibilitat de crear petits videojocs simples a partir de les
seves animacions.
En resum, amb aquesta eina podrem fer els nivells o activitats diferents de
lʼaplicació per separat sense tenir en compte el joc en conjunt, i després el
planificador ens ajudarà a crear lʼestructura final. Tot dʼuna manera gràfica i
interactiva per facilitar la tasca als usuaris més inexperts.
1.5 Precedents: Authorware
Per entendre una mica millor el funcionament de la eina per planificar activitats en
Flash, sʼexplicarà una altra aplicació ja existent que funcionava de manera similar
per aconseguir propòsits diferents, ja que no es tractava dʼun programa relacionat
amb Flash ni amb els videojocs.
Authorware és un software de programació gràfic, inicialment creat per permetre
als usuaris crear aplicacions senzilles per ensenyament a distància. El programa
funciona mostrant per pantalla el diagrama de flux de lʼaplicació final. Lʼusuari pot
afegir, text, imatges, so i vídeo; fer-lo interactiu i afegir elements de navegació com
enllaços, botons, i menús. També disposa dʼun llenguatge de programació per
usuaris avançats que permet afegir lògica a les transicions entre els diversos estats
de lʼaplicació i afegir funcions complexes.
Lʼobjectiu del projecte és aconseguir una aplicació gràfica interactiva senzilla que
mostri el flux dʼexecució dʼuna aplicació Flash i permeti editar-lo, mostrant totes les
activitats i les transicions entre elles. Per tant, lʼestructura que utilitza Authorware
és molt similar encara que el seu propòsit sigui totalment diferent. En aquest cas el
programa mostrarà el diagrama de flux del videojoc o aplicació final, i lʼusuari podrà
modificar lʼordre dʼexecució dʼuna manera gràfica i intuïtiva. A més a més, es
podran afegir condicions a les transicions. Com ja sʼha esmentat abans, per afegir
condicions i lògica a les aplicacions cal utilitzar un llenguatge de programació, per
això, i per no complicar la usabilitat de lʼaplicació per la resta dels usuaris, aquesta
opció estarà limitada per aquells usuaris que siguin capaços dʼafegir codi a les
seves activitats.
26
Assistent per desenvolupar videojocs en Flash
2. Tecnologies Utilitzades
En aquesta secció de la memòria es descriuen les tecnologies utilitzades per
desenvolupar aquest projecte. Aquestes tecnologies són bàsicament lʼentorn de
desenvolupament de Flash i el seu llenguatge de programació: lʼActionScript, i el
llenguatge XML. Es valoraran les seves característiques i es comentarà els
ventatges i desventatges que hi ha a lʼhora dʼutilitzar aquestes tecnologies. Al final
de la secció es valorarà lʼentorn de treball on sʼha desenvolupat el projecte.
2.1 Flash i ActionScript
2.1.1 Flash
Abans ja sʼha fet una breu introducció sobre aquesta tecnologia per poder explicar
conceptes importants a la introducció, ara sʼaprofundirà en el tema per esmentar
tots els aspectes tècnics que cal explicar per entendre què ens permet aconseguir
Flash.
Flash va ser creada per la companyia Macromedia (que després es va fusionar
amb la companyia Adobe) lʼany 1996. El seu nom te com a origen un software previ
anomenat FutureSplash Animator, que va ser adquirit per Macromedia i
reanomenat Flash, que és la fusió de les paraules “Future” i “Splash”.
Flash proporciona als usuaris una interfície gràfica que permet crear fàcilment
animacions o aplicacions, ja que es pot afegir codi a les animacions per afegir
comportaments complexos. Aquestes aplicacions sʼexecuten amb el software
gratuit Flash Player que sʼha esmentat a la introducció.
Flash Player permet executar els fitxers amb extensió .swf (ShockWave Flash).
Aquests fitxers es poden crear mitjançant lʼeina de desenvolupament Adobe Flash,
lʼeina de desenvolupament de codi lliure Adobe Flex i també altres aplicacions. Els
fitxers són anomenats generalment pel·lícules flash i poden contenir animacions,
videojocs i altres aplicacions.
Al principi el seu propòsit principal va ser la creació dʼanimacions per web, però
amb el temps la plataforma ha anat creixent i la companyia Adobe ha enfocat lʼeina
cada vegada més al desenvolupament de software, per tant, ara es poden fer
27
Assistent per desenvolupar videojocs en Flash
aplicacions complexes i videojocs per Internet. Per poder fer aplicacions i videojocs
amb Flash cal utilitzar el llenguatge de programació associat, que sʼanomena
ActionScript. Aquest llenguatge ha evolucionat molt i ara mateix permet fer
aplicacions molt potents i ens ofereix alguns avantatges.
A continuació sʼexplica lʼActionScript i sʼestudien els seus avantatges i
característiques principals.
2.1.2 ActionScript
ActionScript és un llenguatge de programació orientat a objectes originalment
desenvolupat per Macromedia i després evolucionat per Adobe una vegada
fusionades ambdues companyies. Es basa en les especificacions estandarditzades
de la ECMA sobre llenguatges dʼscripting, que significa que té la mateixa
semàntica i sintaxi que un altre llenguatge més conegut anomenat JavaScript, molt
utilitzat en lʼàmbit web.
ActionScript sʼutilitza principalment per al desenvolupament de pàgines web i
software relacionat amb la plataforma dʼAdobe Flash Player. El llenguatge en si és
de codi lliure i la seva especificació sʼofereix de manera gratuïta i hi han
disponibles un compilador i una màquina virtual de codi lliure.
Lʼespecificació de la ECMA està definida com a estàndard ISO/IEC 16262 i
estableix unes característiques molt concretes per als llenguatges que la
segueixen. Són les següents:
Els tipus sʼassocien amb valors, no amb variables, per tant, les variables
poden canviar el seu valor dinàmicament. El comportament de la variable
defineix el seu tipus i no al contrari.
Es treballa en un entorn en temps dʼexecució.
Les funcions són objectes, per tant, es poden crear funcions dinàmicament en
temps dʼexecució.
Són llenguatges orientats a objectes.
28
Assistent per desenvolupar videojocs en Flash
ActionScript utilitza aquestes característiques definides a lʼespecificació de la
ECMA i les amplia. Originàriament es va dissenyar per al control de simples
animacions vectorials 2D realitzats en Macromedia Flash. Inicialment centrades en
lʼanimació,
les primeres versions de Flash oferien molt poques opcions
dʼinteractivitat i, per tant, havia una capacitat de programació molt limitada.
Posteriorment, quan Adobe va comprar Macromedia, es va canviar lʼenfocament
cap a lʼenginyeria del software, per tant, les darreres versions del llenguatge
afegeixen funcionalitat que permet la creació de videojocs basats en web,
aplicacions complexes dʼInternet, i altres aplicacions més avançades.
La primera versió del llenguatge va aparèixer amb el llançament de Flash 5 al
setembre de 2000, on les accions de Flash 4 es van millorar i es van anomenar
“ActionScript” per primera vegada. Aquesta va ser la primera versió amb influències
de JavaScript i lʼestàndard ECMA-262, seguint el seu model dʼobjectes i molts dels
seus tipus de dades bàsiques. El canvi va ser molt gran. Es podien declarar
variables, crear funcions definides per lʼusuari amb pas de paràmetres i retorn de
valors, i també es podia editar lʼActionScript amb un editor de text en lloc dʼescollir
accions en un quadre de diàleg.
La següent gran evolució del llenguatge, ActionScript 2.0, es va introduir al
setembre de 2003 amb el llançament de Flash MX 2004 i el seu corresponent
lector, Flash Player 7. Com a resposta de la demanda dels usuaris dʼun llenguatge
millor equipat per aplicacions més grans i més complexes, ActionScript 2.0
incorpora control de tipus en temps de compilació i sintaxi basada en classes.
Aquesta nova versió també incorpora herència de classes, així els programadors
podien crear classes i interfícies, tal i com es faria als llenguatges basats en
classes com Java o C++. Encara que això permetia una programació més
estructurada i orientada a objectes, el codi encara es compilava al codi de bytes
dʼActionScript 1.0, permetent dʼaquesta manera utilitzar-lo en versions anteriors de
Flash Player.
Al juny de 2006, va debutar ActionScript 3.0 amb Adobe Flex 2.0 i el seu lector
corresponent, Flash Player 9. Aquesta nova versió és una reestructuració
fonamental del llenguatge, tant és així, que utilitza una màquina virtual totalment
diferent. Flash Player 9 conté dues màquines virtuals, AVM1 pel codi escrit en
ActionScript 1.0 i 2.0, i AVM2 pel codi escrit en ActionScript 3.0. A la següent secció
es comenten les principals característiques de lʼActionScript 3.0.
29
Assistent per desenvolupar videojocs en Flash
A la nova versió dʼActionScript hi ha una gran quantitat de millores. A continuació
es comenten algunes de les millores més importants i que sʼhan considerat
importants per aquest projecte.
La nova màquina virtual.
La nova API.
La Display List.
Control dʼesdeveniments unificat.
El nou tractament dels XML (E4X)
2.1.2.1 ActionScript Virtual Machine 2
Per a la nova versió dʼActionScript, Adobe va dissenyar una nova màquina virtual
anomenada ActionScript Virtual Machine 2 (AVM2) amb lʼobjectiu de millorar el
rendiment de les aplicacions creades amb aquest llenguatge de programació.
Un dels motius de la millora del rendiment és el nou compilador que incorpora la
màquina virtual, que compila el codi primer a un bytecode intermedi a mig camí
entre el llenguatge de programació que utilitzen els usuaris i el codi màquina natiu.
Després, en temps dʼexecució, un altre compilador de tipus JIT (Just in Time)
tradueix aquest bytecode al codi màquina de forma dinàmica.
La millora del rendiment de les aplicacions executades amb lʼAVM2 es produeix
perquè és molt més ràpid traduir el bytecode intermedi a codi màquina que no fer
la traducció directament des de el codi dʼalt nivell.
Sʼha de tenir en compte però, que amb aquest canvi de màquina virtual, no podem
barrejar codi dʼActionScript 2.0 amb codi dʼActionScript 3.0 ja que no són
compatibles, encara que el Flash Player és capaç dʼexecutar aplicacions fetes amb
qualsevol versió dʼActionScript perquè incorpora lʼAVM1 i lʼAVM2.
30
Assistent per desenvolupar videojocs en Flash
2.1.2.2 La nova API
LʼAPI (Application Programming Interface) de Flash Player és un conjunt de
classes i funcions que posen les capacitats de Flash Player al servei del llenguatge
ActionScript. Aquesta funcionalitat és el pont entre el nucli del llenguatge
ActionScript i la resta de la plataforma. És la font de gran part de la potència
disponible a les aplicacions Flash i és un complement molt important.
La nova API de Flash inclou un munt de noves característiques que només es pot
utilitzar a través dʼActionScript 3.0. Aquestes inclouen el tractament molt més fàcil
del llenguatge XML a través de E4X, capacitats més avançades per manipular la
llista de visualització o la manipulació avançada dʼimatges amb filtres.
La nova API de Flash proporciona al desenvolupador eines molt útils a lʼhora de fer
aplicacions com la que es vol fer en aquest projecte. Entre dʼaltres, podem trobar
gestió dʼesdeveniments i recuperació dʼinformació de teclat i ratolí, mostrar
informació gràfica, càrrega dʼarxius externs... Moltes gestions bàsiques
necessàries a molts tipus dʼaplicacions que ja estan fetes i el desenvolupador pot
utilitzar i ampliar al seu gust.
2.1.2.3 La Display List
A la nova versió dʼActionScript es permet lʼaccés directe a la display list de Flash
en temps dʼexecució. Per entendre el concepte dʼaccedir a aquesta llista de
visualització, cal entendre en què consisteix la display list de Flash.
Les aplicacions programades amb ActionScript 3.0 tenen una jerarquia dels
objectes que es mostren per pantalla coneguda com a display list. Aquesta
jerarquia es crea amb relacions pare-fill entre els objectes visibles de lʼaplicació.
Algunes parts de la jerarquia es creen automàticament, mentre que dʼaltres es
poden crear mitjançant funcions dʼActionScript. Tots els elements visibles de
lʼaplicació estan continguts en aquesta jerarquia, i poden ser de diferents tipus.
Un dʼaquests elements és lʼstage, que fa referència al contenidor principal de
lʼaplicació i està al nivell més alt de la jerarquia. Aquest contenidor és el pare de
tots els altres objectes que hi han a la jerarquia. Lʼstage es crea automàticament
quan la pel·lícula Flash sʼexecuta al Flash Player. Cada aplicació té un i només un
objecte de tipus stage que té com a fill la línia de temps principal de lʼaplicació.
31
Assistent per desenvolupar videojocs en Flash
La resta dʼelements visibles de lʼaplicació penjen de lʼstage a la jerarquia i poden
ser de tres tipus.
Display Object: tots els elements visibles que hi han a les aplicacions
dʼActionScript 3.0 són display objects, per tant, no podem afegir a la display
list cap objecte que no sigui dʼaquest tipus. Per exemple, no podem afegir a la
display list una variable de tipus Number.
Interactive Object: aquests objectes són una subclasse dels display objects.
Es diferencien dels anteriors perquè poden rebre esdeveniments i respondre.
Per exemple, un botó seria un tipus de interactive object.
Display Object Container: per últim tenim aquests objectes que són
subclasse dels anteriors i es diferencien dʼells perquè a més de tenir les
capacitats dʼun interactive object, també tenen la capacitat de contenir altres
display objects. Per exemple, lʼstage és un tipus de display object container.
Fig.2.1 Jerarquia de classes de Display Object
32
Assistent per desenvolupar videojocs en Flash
2.1.2.4 Control dʼesdeveniments unificat
El control dʼesdeveniments es va canviar totalment amb la nova versió
dʼActionScript. El nou model de control dʼesdeveniments es basa en el nivell 3 de
lʼespecificació dʼesdeveniments del Document Object Model (DOM). Encara que
els fitxers SWF no sʼhadereixen específicament a lʼestàndard DOM, hi ha prou
similituds entre la display list i lʼestructura del DOM perquè lʼaplicació del model
dʼesdeveniments sigui possible. Per entendre millor la importància dʼaquest
concepte cal explicar una mica de què sʼestà parlant.
Un sistema de control dʼesdeveniments es compon de tres components principals:
els llençadors (event dispatchers), els oients (event listeners), i els objectes
esdeveniment (event objects). Els llençadors dʼesdeveniments són objectes que
distribueixen esdeveniments als objectes que estan registrat com a oients.
Fig.2.2 Diagrama UML del sistema dʼesdeveniments.
Quan un llençador invoca una sol·licitud per llençar un esdeveniment, es crea un
objecte esdeveniment i es distribueix cap a tots els objectes oients dʼaquest tipus
dʼesdeveniment concret. A continuació aquests objectes oients poden extreure
informació, ja sigui de lʼobjecte esdeveniment (dades enviades del llençador als
oients) o directament de lʼobjecte llençador (dades que agafen els oients del
llençador). Qualsevol de les dues opcions dʼaconseguir informació per part dels
oients és igual de bona i capaç de donar als oients tota la informació que
necessita. Escollir una o altre es deixa a discreció de qui desenvolupa el llençador.
Els esdeveniments més importants a lʼhora de crear una aplicació són els
esdeveniments de ratolí, ja que tenim que capturar en tot moment el que està fent
lʼusuari a la finestra de lʼaplicació.
33
Assistent per desenvolupar videojocs en Flash
2.1.2.5 E4X XML
Un dels principals canvis en ActionScript 3.0 és la forma de tractar el contigut XML.
Mentre que sʼhan heretat una gran quantitat de similituds de la versió 2.0
dʼActionScript, hi ha nous mètodes dʼestalvi de temps a lʼhora de tractar amb XML
que fan que treballar amb aquest tipus dʼarxius sigui molt més fàcil. Una de les
prestacions és ECMAScript per a XML, coneguda com E4X per abreujar.
Un dels avantatges més important és que ara sʼidentifica un document XML com un
objecte més al codi dʼActionScript. Una variable de de la classe XML que
representa al document i que ens proporciona la funcionalitat bàsica necessària
per manipular i accedir a la informació guardada en un fitxer XML.
Aquest tractament dels XML que ens ofereix Flash i ActionScript és molt important
per desenvolupar aquest projecte ja que necessitarem guardar la informació
planificada pels usuaris a lʼaplicació per després poder-la executar, i precisament
utilitztarem el llenguatge XML per fer això.
2.1.3 Avantatges de Flash i ActionScript
Interfície gràfica: per desenvolupar aquesta aplicació, un dels objectius era
fer-ho de forma interactiva i gràfica per a que els usuaris puguin treballar
dʼuna manera intuïtiva. Flash ens facilita aquesta feina ja que incorpora un
munt dʼutilitats per afegir animacions i interactivitat a les aplicacions.
Gestió dʼesdeveniments: la interacció amb lʼusuari és un concepte molt
important en qualsevol aplicació, i lʼAPI de Flash ens proporciona tota la
funcionalitat feta per gestionar els esdeveniments de ratolí i teclat.
E4X XML: com ja sʼha comentat a la secció anterior, necessitem una manera
de comunicar lʼaplicació que planifica els videojocs amb el joc que després
sʼexecutarà, i la nova versió dʼActionScript incorpora funcionalitats per tractar
XML que facilitarà molt aquesta feina.
Compatibilitat i accesibilitat: les aplicacions Flash es poden executar en
qualsevol sistema operatiu i qualsevol navegador web existent. A més a més,
són molt accessibles per a qualsevol usuari ja que no requereixen gaires
34
Assistent per desenvolupar videojocs en Flash
recursos de hardware per ser executades. També sʼha de tenir en compte que
aquest projecte tracta principalment sobre planificar la creació de videojocs
Flash, i aquesta és la tecnologia més utilitzada per fer-los.
2.2 El llenguatge XML
2.2.1 Què és XML?
XML són les sigles de Extensible Markup Language (Llenguatge de Marques
Extensible), desenvolupat pel World Wide Web Consortium (W3C). XML és un
metallenguatge, és a dir, és un llenguatge que permet definir altres llenguatges
segons les necessitats de lʼusuari.
Els objectius de disseny del XML destaquen la usabilitat, generalitat i simplicitat a
través dʼInternet. Encara que el disseny de XML es centra en documents
estructurats, és ampliament utilitzats per representació de dades estructurades
arbitràries, per exemple en els serveis web. Moltes APIs sʼhan desenvolupat per a
que els desenvolupadors de software puguin processar dades dels documents
XML i ajudar en la definició de llenguatges basats en XML.
2.2.2 Estructura bàsica
Els documents XML formen una estructura dʼarbre que comencen a lʼarrel, que
conté altres elements, que a la vegada poden contenir altres elements, etc. Cada
element té una etiqueta que lʼidentifica. Aquí podem veure un exemple dʼun
document xml.
Fig.2.3 Exemple dʼun fitxer XML
La primera línia és la declaració del document, anomenada pròleg. Defineix la
versió de XML (1.0) i la codificació que sʼutilitza (ISO-8859-1 = conjunt de caràcters
Llatí-1/Europa Oest). La resta del document és el cos, que conté la informació.
35
Assistent per desenvolupar videojocs en Flash
La primera línia del cos descriu lʼelement arrel del document, que és com dir que el
document és dʼaquest tipus. (<nota> = aquest document és una nota). Les
següents línies descriuen els elements fills de lʼarrel (destinatari, remitent,
assumpte, cos). Finalment lʼúltima línia descriu el final e lʼelement arrel (</nota>).
Es pot deduir fàcilment dʼaquest exemple que el document XML conté una nota
dʼen Joel destinada a en Lluis. Això mostra com el llenguatge és molt intuïtiu i autodescriptiu.
2.2.3 Avantatges del llenguatge XML
Ampliació de lʼaplicació: els documents XML són fàcilment extensibles. A
mida que es van necessitant noves dades és molt fàcil afegir-les al llenguatge
de lʼaplicació sense gairebé afegir codi, per tant, això fa que la funcionalitat de
lʼaplicació sigui fàcilment ampliable.
Facilitat de comprensió: el llenguatge XML és molt fàcil i intuïtiu dʼutilitzar
com ja sʼha mostrat a lʼexemple anterior. Per tant això facilita la tasca del
desenvolupador a lʼhora de dissenyar lʼestructura de dades on es guardarà la
informació.
Intercanvi de dades: com ja sʼha comentat abans, és molt important per
aquest projecte la possibilitat dʼintercanviar dades entre varies aplicacions, ja
que necessitarem comunicar lʼassistent o planificador amb el programa que
interpretarà aquesta planificació i lʼexecutarà. Amb XML aquesta tasca és molt
simple ja que qualsevol aplicació pot llegir i manipular informació dels
documents XML.
Compatibilitat: XML és un llenguatge universal que es pot utilitzar en
qualsevol plataforma i tecnologia. Per tant això fa que lʼaplicació sigui
fàcilment transportable a qualsevol plataforma. A més a més, la informació
generada pel planificador podria ser aprofitada per una aplicació
desenvolupada amb altra tecnologia sense cap tipus de problema de
compatibilitat.
36
Assistent per desenvolupar videojocs en Flash
2.3 Lʼentorn de treball
En aquest capítol es valora el software utilitzat durant el projecte per desenvolupar
lʼaplicació i es comenten els avantatges i desavantatges que sʼhan trobat a lʼhora
de treballar amb ell.
2.3.1 Adobe Flash CS5
Flash CS5 és lʼentorn de desenvolupament oficial dʼAdobe per treballar amb la
tecnologia Flash i ActionScript. Durant la primera part del projecte es va utilitzar la
versió anterior del software (Flash CS4), però al final es va decidir canviar a la
nova ja que els canvis necessaris al projecte eren pràcticament nuls i així es
disposava dels últims avenços i avantatges de lʼentorn de desenvolupament.
Adobe Flash CS5 permet a lʼusuari adaptar lʼentorn de treball segons les seves
necessitats ja que depenen de quin sigui el projecte o la feina que sʼestà realitzant
sʼutilitzen eines molt diferents. Existeixen perfils predefinits per desenvolupadors
dʼaplicacions web, dissenyadors gràfics, per projectes de vídeo o aplicacions
interactives. Però fins i tot podem adaptar cadascun dʼaquests perfils a les nostres
necessitats particulars i crear perfils nous.
Un dels avantatges més importants pels desenvolupadors dʼaplicacions Flash que
ofereix Flash CS5 respecte de la versió anterior és la nova manera de treballar
amb codi ActionScript que ens ofereix. Abans no hi havia un bon ressaltat de codi, i
no hi havia recomanació de codi ni auto completar codi per classes que no fossin
de la IDE de Flash. Això ha canviat amb CS5, ara si tenim aquests avantatges que
ofereixen la majoria dels IDE coneguts per altres llenguatges de programació.
Flash CS5 és un entorn de treball molt fàcil dʼutilitzar i molt personalitzable. Amb
les últimes millores a més a més és una bona eina per desenvolupadors
dʼaplicacions. També tenim lʼavantatge de poder dissenyar al mateix entorn tota la
interfície gràfica de lʼaplicació i afegir codi a qualsevol objecte gràfic. Encara que
existeixen altres eines per treballar amb Flash, Flash CS5 és lʼeina més adient per
aquest projecte i és la que sʼha utilitzat per dissenyar tots els elements gràfics i per
fer tot el codi de lʼaplicació.
37
Assistent per desenvolupar videojocs en Flash
3. Anàlisi de requeriments
Aquest capítol de la memòria té com a objectiu extreure tots els requeriments de
lʼaplicació que es vol desenvolupar per aconseguir complir tots els objectius
marcats a lʼinici del projecte. Per fer això necessitarem primer tots els casos dʼús
que ens ajudaran a obtenir tot el llistat de requeriments.
Sʼestudiaran dos tipus de requeriments, els requeriments funcionals i els
requeriments no funcionals. A continuació es fa una breu descripció de cadascun
dʼells:
Requeriments funcionals: Especifiquen una funcionalitat que ha de realitzar
lʼaplicació o algun component de lʼaplicació.
Requeriments no funcionals: No especifiquen que farà lʼaplicació, sinó com
ho farà.
3.1 Usuaris del producte
Els usuaris del producte representen totes aquelles persones que utilitzaran o
poden utilitzar el software que volem desenvolupar. El seu anàlisi és necessari per
determinar les funcionalitats del sistema que requeriran aquests usuaris a més de
determinar altres requeriments no funcionals com la interfície gràfica, la usabilitat o
altres detalls que els desenvolupadors dʼuna aplicació poden no tenir en compte.
3.1.1 Categories
Els usuaris es poden distribuir en diferents categories en funció dʼun perfil segons
el seu rol, la seva experiència i possibles problemes que poden tenir amb la
tecnologia utilitzada.
Es poden distingir els següents usuaris que podrien utilitzar lʼaplicació:
Jugador: aquest usuari utilitzarà els jocs o aplicacions flash resultants de la
utilització de lʼassistent per part dʼun dels altres tipus dʼusuari. La seva única
funció és utilitzar el resultat, i no el producte, per tant, no ha de conèixer
lʼexistència de lʼassistent i ha de poder utilitzar els jocs sense cap problema.
38
Assistent per desenvolupar videojocs en Flash
En aquest cas els seus coneixements de Flash no tenen cap rellevància ja
que no utilitzaran en cap moment lʼaplicació.
Usuari inexpert amb Flash: aquest és lʼusuari final de lʼaplicació i principal
beneficiari del seu desenvolupament. Cal tenir en compte que és probable que
no estigui familiaritzat amb aquest tipus dʼaplicacions i que no coneix la
tecnologia Flash. Els seus coneixements de la tecnologia poden ser molt
limitats per tant cal fer lʼaplicació accessible per a aquest tipus dʼusuari per tal
dʼevitar que es senti limitat a lʼhora dʼutilitzar-lo.
Dissenyador dʼanimacions Flash: aquest tipus dʼusuari també és un dels
objectius de lʼaplicació, encara que pràcticament ja queda cobert amb els
requisits que sʼextrauran amb lʼusuari inexpert. Com que és molt probable que
aquests usuaris tinguin coneixements medis o avançats de Flash, caldrà
incorporar funcionalitats addicionals que els permetin fer jocs una mica més
elaborats encara que els usuaris inexperts no puguin aprofitar-les.
Desenvolupador dʼaplicacions Flash: els desenvolupadors dʼaplicacions
Flash no són part de lʼobjectiu de lʼaplicació ja que sʼentén que ja són capaços
de desenvolupar jocs més avançats dels que es podrien fer amb lʼaplicació.
Tot i això, podrien utilitzar-la igualment com a planificador de les seves
tasques i incorporar transicions més o menys complexes. No es tindran en
compte pel desenvolupament de lʼaplicació perquè caldria afegir moltes
funcionalitats avançades que afegirien complexitat que no volem pels altres
usuaris.
3.1.2 Prioritats
Com que lʼaplicació té diversos tipus diferents dʼusuaris amb necessitats diferents i,
en ocasions, contradictòries, és necessari establir unes prioritats pels usuaris més
importants per al desenvolupament dʼaquesta aplicació. Com ja sʼha pogut llegir en
lʼapartat anterior, no tots els usuaris es tindran en compte de la mateixa manera.
Sʼha decidit fer una divisió dels usuaris en dos tipus diferents, els usuaris clau i els
usuaris secundaris. Els usuaris clau són els màxims participants a la utilització de
lʼaplicació i, per tant, seʼls donarà més importància que als altres.
39
Assistent per desenvolupar videojocs en Flash
Usuaris clau: aquest usuaris són els usuaris inexperts amb la tecnologia
Flash i en part, els dissenyadors, com a subconjunt. Lʼaplicació només té
sentit si es utilitzada per ells, ja que són els principals beneficiaris de la seva
existència. Serà necessari que aquests usuaris puguin utilitzar fàcilment
lʼaplicació per a tenir èxit.
Usuaris secundaris: els jugadors són les persones que utilitzaran el resultat
final que ofereix lʼassistent però no utilitzaran lʼaplicació directament. Com que
el producte no va dirigit a ells i no obtenen cap benefici directament, no es
poden considerar usuaris clau, però són necessaris per a que tingui sentit
lʼexistència de lʼaplicació. Per tant, sʼhan de tenir en compte.
Usuaris no importants: aquests usuaris són els que poden utilitzar lʼaplicació
però que no són realment importants per al disseny del producte. En aquest
cas són els desenvolupadors, ja que aquests usuaris ja coneixen Flash i
disposen de moltes eines per desenvolupar aplicacions. Per tant, podran
utilitzar lʼaplicació però hauran dʼacceptar que va dirigida cap a un altre tipus
dʼusuari.
3.1.3 Participació
La participació dels usuaris a lʼaplicació serà diferent en cada cas, per tant, sʼhan
de tenir en compte les necessitats de cadascun dʼells per fer lʼespecificació de
requeriments. Si no es tenen en compte els requeriments concrets de cada tipus
dʼusuari es podria construir un sistema que no serveix a tots els usuaris implicats.
Es determinarà la seva participació i implicació al projecte segons la classificació
anterior.
Usuari inexpert: són les persones que utilitzaran el producte més
habitualment i, per tant, lʼaplicació haurà de ser lo suficientment senzilla i
intuïtiva com per a que la puguin utilitzar amb facilitat i sense necessitat de
gaire aprenentatge sobre la tecnologia Flash.
Dissenyadors: aquests usuaris segurament seran menys habituals que els
anterior però també poden ser usuaris del sistema. Com a requeriment
addicional aquests usuaris necessitaran dʼalguna funcionalitat de tipus més
avançada per dissenyar aplicacions una mica més elaborades.
40
Assistent per desenvolupar videojocs en Flash
Jugadors: com a usuaris secundaris de lʼaplicació, no es tindrà en compte la
participació dʼaquests usuaris pel disseny de lʼaplicació principal. Però caldrà
afegir una funcionalitat final que permeti a aquests usuaris utilitzar els jocs o
aplicacions resultants de lʼassistent sense cap problema i sense cap
necessitat de tenir coneixements sobre aquest projecte.
Desenvolupadors: com a usuaris no importants per al nostre projecte, no es
tindran en compte pràcticament en cap aspecte del disseny de lʼaplicació.
Només es tindrà en compte que si un usuari avançat utilitza lʼaplicació pugui
fer-ho amb eficiència.
3.2 Requeriments funcionals: Casos dʼús
A continuació es descriuen les funcionalitats principals que ha de tenir lʼaplicació
que es desenvolupa en aquest projecte mitjançant lʼespecificació dels casos dʼús
essencials del sistema. Els casos dʼús del producte ajuden a descriure què és el
que el sistema ha de fer des del punt de vista de lʼusuari i com interactua amb ell.
Cada cas dʼús ha estat redactat seguint una plantilla basada en lʼespecificació de
casos dʼús per extreure els requeriments funcionals. Cal destacar, també, que els
casos dʼús sʼhan definit de forma abstracta sense tenir en compte la tecnologia
utilitzada ni la implementació.
3.2.1 Crear una planificació
Descripció: lʼusuari desitja crear una nova planificació dʼun videojoc o aplicació.
Importància: és un cas dʼús clau per al desenvolupament de lʼaplicació, ja que si
no existeix la possibilitat de crear una planificació nova, la resta de funcionalitats no
tenen sentit.
Dependències i conflictes: aquest cas dʼús és independent dels altres i no crea
cap conflicte amb cap altre cas dʼús.
Actors: tots els usuaris que utilitzin lʼaplicació el faran servir.
41
Assistent per desenvolupar videojocs en Flash
Precondició: No hi ha cap precondició per aquest cas dʼús.
Condició de satisfacció: lʼaplicació ha creat una nova planificació amb el nom
que lʼusuari ha indicat.
Escenari principal:
1 Lʼusuari indica a lʼaplicació que vol crear una nova planificació.
2 El sistema mostra a lʼusuari el formulari de creació.
3 Lʼusuari introdueix un nom per la nova planificació i accepta.
4 El sistema esborra la pantalla i crea una nova planificació amb el nom indicat.
5 El sistema informa a lʼusuari que sʼha creat la nova planificació de forma correcta.
Extensions:
4a El nom introduit per lʼusuari és incorrecte o inexistent.
"
4a1 El sistema notifica a lʼusuari que el nom és incorrecte.
"
"
4a1a Es torna al pas 3.
*a Lʼusuari decideix cancel·lar.
"
*a1 Finalitza el cas dʼús.
3.2.2 Desar una planificació
Descripció: lʼusuari desitja desar la planificació que està editant.
Importància: és un cas dʼús clau per al desenvolupament de lʼaplicació, ja que si
no existeix la possibilitat de desar la planificació, no es podria jugar al joc fora de
lʼaplicació ni tampoc de desar i recuperar el treball fet durant una sessió.
Dependències i conflictes: Té dependència amb crear planificació, ja que si no
existeix la planificació no es pot desar. No crea cap conflicte amb cap altre cas
dʼús.
Actors: tots els usuaris que utilitzin lʼaplicació el faran servir.
Precondició: Sʼha creat una nova planificació.
Condició de satisfacció: lʼaplicació ha desat la planificació amb el nom que
lʼusuari ha indicat.
42
Assistent per desenvolupar videojocs en Flash
Escenari principal:
1 Lʼusuari indica a lʼaplicació que vol desar la planificació actual.
2 El sistema mostra a lʼusuari la finestra per desar fitxers.
3 Lʼusuari escull un directori, introdueix un nom per la planificació i accepta.
4 El sistema crea un nou fitxer que conté la informació de la planificació actual amb
el nom indicat i el desa al directori indicat.
5 El sistema informa a lʼusuari que sʼha desat la planificació de forma correcta.
Extensions:
*a Lʼusuari decideix cancel·lar.
"
*a1 Finalitza el cas dʼús.
3.2.3 Carregar una planificació
Descripció: lʼusuari desitja carregar una planificació dʼun videojoc o aplicació que
sʼhavia creat i desat prèviament.
Importància: és un cas dʼús clau per al desenvolupament de lʼaplicació, ja que si
no existeix la possibilitat de carregar una planificació desada, no es podria
continuar la feina al acabar una sessió de treball amb lʼaplicació.
Dependències i conflictes: depen de crear planificació nova i desar planificació,
ja que no pot existir si no existeixen els altres dos. No hi ha conflictes.
Actors: tots els usuaris que utilitzin lʼaplicació el faran servir.
Precondició: Existeix una planificació creada i desada prèviament.
Condició de satisfacció: lʼaplicació ha carregat una planificació a partir del fitxer
que lʼusuari ha indicat.
Escenari principal:
1 Lʼusuari indica a lʼaplicació que vol carregar una planificació.
2 El sistema mostra a lʼusuari la finestra per buscar fitxers.
3 Lʼusuari escull el fitxer de la planificació que vol carregar i accepta.
4 El sistema esborra la pantalla i carrega la planificació a partir del fitxer indicat.
5 El sistema informa a lʼusuari que sʼha carregat la planificació de forma correcta.
43
Assistent per desenvolupar videojocs en Flash
Extensions:
4a El fitxer escollit per lʼusuari és incorrecte.
"
"
4a1 El sistema notifica a lʼusuari que el fitxer és incorrecte.
"
4a1a Finalitza el cas dʼús.
*a Lʼusuari decideix cancel·lar.
"
*a1 Finalitza el cas dʼús.
3.2.4 Afegir una activitat nova
Descripció: lʼusuari desitja afegir una nova activitat a la planificació actual.
Importància: és un cas dʼús clau per al desenvolupament de lʼaplicació, ja que si
no existeix la possibilitat dʼafegir activitats, no es podrien fer planificacions.
Dependències i conflictes: només depen de crear planificació i no afegeix cap
conflicte.
Actors: tots els usuaris que utilitzin lʼaplicació el faran servir.
Precondició: Existeix una planificació activa.
Condició de satisfacció: lʼaplicació ha afegit a la planificació actual una nova
activitat amb les propietats que lʼusuari ha indicat.
Escenari principal:
1 Lʼusuari indica a lʼaplicació que vol afegir una nova activitat.
2 El sistema mostra a lʼusuari el formulari de creació.
3 Lʼusuari introdueix les propietats per la nova activitat i accepta.
4 El sistema crea una nova activitat amb les propietats indicades i lʼafegeix a la
planificació actual.
5 El sistema informa a lʼusuari que sʼha afegit la nova activitat de forma correcta.
44
Assistent per desenvolupar videojocs en Flash
Extensions:
4a Alguna de les propietats introduïdes per lʼusuari és incorrecte.
"
4a1 El sistema notifica a lʼusuari quina de les propietats és incorrecte.
"
"
4a1a Es torna al pas 3.
*a Lʼusuari decideix cancel·lar.
"
*a1 Finalitza el cas dʼús.
3.2.5 Editar les propietats dʼuna activitat
Encara que hi hauran diferents propietats per les activitats i lʼusuari pot voler
canviar només una, es pot considerar que tot pertany al mateix cas dʼús ja que en
realitat el procés serà sempre el mateix. Només variarà la informació que serà
canviada a dins del sistema una vegada sʼacceptin els canvis.
Descripció: lʼusuari desitja modificar alguna de les propietats dʼuna activitat
existent a la planificació actual.
Importància: No és un cas dʼús clau per lʼaplicació, però afegeix qualitat a la
usabilitat de lʼaplicació ja que sense la posibilitat de fer modificacions, sʼhaurien
dʼesborrar i crear noves activitats contínuament.
Dependències i conflictes: depen directament dʼafegir activitat i no afegeix cap
conflicte.
Actors: tots els usuaris que utilitzin lʼaplicació el faran servir.
Precondició: Existeix una planificació activa que conté alguna activitat.
Condició de satisfacció: lʼaplicació ha modificat les propietats de lʼactivitat
seleccionada amb les noves propietats que lʼusuari ha indicat.
Escenari principal:
1 Lʼusuari selecciona una de les activitats de la planificació actual.
2 El sistema mostra a lʼusuari el formulari dʼedició de propietats de lʼactivitat.
3 Lʼusuari introdueix les propietats que vol modificar de lʼactivitat seleccionada i
accepta.
4 El sistema modifica totes les propietats editades per lʼusuari.
45
Assistent per desenvolupar videojocs en Flash
5 El sistema informa a lʼusuari que sʼha modificat lʼactivitat de forma correcta.
Extensions:
4a Alguna de les propietats introduïdes per lʼusuari és incorrecte.
"
4a1 El sistema notifica a lʼusuari quina de les propietats és incorrecte.
"
"
4a1a Es torna al pas 3.
*a Lʼusuari decideix cancel·lar.
"
*a1 Finalitza el cas dʼús.
3.2.6 Esborrar una activitat
Descripció: lʼusuari desitja esborrar alguna de les activitats existents a la
planificació actual.
Importància: No és un cas dʼús clau per lʼaplicació, però afegeix qualitat a la
usabilitat de lʼaplicació ja que sense la posibilitat dʼesborrar activitats, sʼhaurien de
crear noves planificacions per fer qualsevol modificació.
Dependències i conflictes: depen directament dʼafegir activitat i no afegeix cap
conflicte.
Actors: tots els usuaris que utilitzin lʼaplicació el faran servir.
Precondició: Existeix una planificació activa que conté alguna activitat.
Condició de satisfacció: lʼaplicació ha esborrat lʼactivitat seleccionada i totes les
transicions de les quals és origen o destí.
Escenari principal:
1 Lʼusuari selecciona una de les activitats de la planificació actual.
2 El sistema mostra a lʼusuari el formulari dʼedició de propietats de lʼactivitat.
3 Lʼusuari indica al sistema que vol esborrar lʼactivitat.
4 El sistema esborra totes les transicions de les quals lʼactivitat seleccionada és
origen o destí.
5 El sistema esborra lʼactivitat seleccionada de la planificació actual.
6 El sistema informa a lʼusuari que sʼha esborrat lʼactivitat de forma correcta.
46
Assistent per desenvolupar videojocs en Flash
Extensions:
6a Lʼactivitat esborrada és lʼactivitat inicial de la planificació.
"
6a1 El sistema posa la segona activitat com activitat inicial si existeix.
"
"
"
6a2 El sistema informa a lʼusuari que sʼha esborrat lʼactivitat inicial i lʼindica
quina és la nova activitat inicial.
"
6a2a Finalitza el cas dʼús.
*a Lʼusuari decideix cancel·lar.
"
*a1 Finalitza el cas dʼús.
3.2.7 Afegir una transició nova
Descripció: lʼusuari desitja afegir una nova transició a la planificació actual.
Importància: és un cas dʼús clau per al desenvolupament de lʼaplicació, ja que si
no existeix la possibilitat dʼafegir transicions, no es podrien fer planificacions ja que
no hi hauria ordre dʼexecució entre les diferents activitats.
Dependències i conflictes: depen de crear planificació i afegir activitat, ja que no
pot existir una transició sense activitats. No afegeix cap conflicte.
Actors: tots els usuaris que utilitzin lʼaplicació el faran servir.
Precondició: Existeix una planificació activa i, com a mínim, una activitat.
Condició de satisfacció: lʼaplicació ha afegit a la planificació actual una nova
transició amb les propietats que lʼusuari ha indicat.
Escenari principal:
1 Lʼusuari selecciona un punt dʼorigen dʼuna de les activitats existents a la
planificació actual.
2 El sistema mostra a lʼusuari el formulari de propietats de la transició.
3 Lʼusuari selecciona el punt destí de la transició, introdueix les seves propietats i
accepta.
4 El sistema crea una nova transició que té com a origen i destí els punts
seleccionats per lʼusuari i també té les propietats indicades.
5 El sistema informa a lʼusuari que sʼha afegit la nova transició de forma correcta.
47
Assistent per desenvolupar videojocs en Flash
Extensions:
4a Alguna de les propietats introduïdes per lʼusuari és incorrecte.
"
4a1 El sistema notifica a lʼusuari quina de les propietats és incorrecte.
"
"
4a1a Es torna al pas 3.
*a Lʼusuari decideix cancel·lar.
"
*a1 Finalitza el cas dʼús.
3.2.8 Editar les propietats dʼuna transició
Encara que hi poden haver diferents propietats per les transicions i lʼusuari pot
voler canviar només una, igual que sʼha fet amb les activitats, es pot considerar
que tot pertany al mateix cas dʼús ja que en realitat el procés serà sempre el
mateix.
Descripció: lʼusuari desitja modificar alguna de les propietats dʼuna transició
existent a la planificació actual.
Importància: No és un cas dʼús clau per lʼaplicació, però afegeix qualitat a la
usabilitat de lʼaplicació ja que sense la posibilitat de fer modificacions, sʼhaurien
dʼesborrar i crear noves transicions contínuament.
Dependències i conflictes: depen directament dʼafegir transició i no afegeix cap
conflicte.
Actors: tots els usuaris que utilitzin lʼaplicació el faran servir.
Precondició: Existeix una planificació activa que conté alguna transició.
Condició de satisfacció: lʼaplicació ha modificat les propietats de la transició
seleccionada amb les noves propietats que lʼusuari ha indicat.
Escenari principal:
1 Lʼusuari selecciona una de les transicions de la planificació actual.
2 El sistema mostra a lʼusuari el formulari dʼedició de propietats de la transició.
3 Lʼusuari introdueix les propietats que vol modificar de la transició seleccionada i
accepta.
4 El sistema modifica totes les propietats editades per lʼusuari.
48
Assistent per desenvolupar videojocs en Flash
5 El sistema informa a lʼusuari que sʼha modificat la transició de forma correcta.
Extensions:
4a Alguna de les propietats introduïdes per lʼusuari és incorrecte.
"
4a1 El sistema notifica a lʼusuari quina de les propietats és incorrecte.
"
"
4a1a Es torna al pas 3.
*a Lʼusuari decideix cancel·lar.
"
*a1 Finalitza el cas dʼús.
3.2.9 Esborrar una transició
Descripció: lʼusuari desitja esborrar alguna de les transicions existents a la
planificació actual.
Importància: No és un cas dʼús clau per lʼaplicació, però afegeix qualitat a la
usabilitat de lʼaplicació ja que sense la posibilitat dʼesborrar transicions, sʼhaurien
de crear noves planificacions per fer qualsevol modificació.
Dependències i conflictes: depen directament dʼafegir transició i no afegeix cap
conflicte.
Actors: tots els usuaris que utilitzin lʼaplicació el faran servir.
Precondició: Existeix una planificació activa que conté alguna transició.
Condició de satisfacció: lʼaplicació ha esborrat la transició seleccionada.
Escenari principal:
1 Lʼusuari selecciona una de les transicions de la planificació actual.
2 El sistema mostra a lʼusuari el formulari dʼedició de propietats de la transició.
3 Lʼusuari indica al sistema que vol esborrar la transició.
4 El sistema esborra la transició seleccionada de la planificació actual.
5 El sistema informa a lʼusuari que sʼha esborrat la transició de forma correcta.
Extensions:
*a Lʼusuari decideix cancel·lar.
"
*a1 Finalitza el cas dʼús.
49
Assistent per desenvolupar videojocs en Flash
3.2.10 Afegir condicions a una transició
Descripció: lʼusuari desitja trencar la sequència de reproducció per defecte de la
planificació afegint una condició a una transició. La sequència es trenca perquè en
cas que no es compleixi aquesta condició no sʼexecutarà la part de la planificació
que penji dʼaquesta transició.
Importància: És un cas dʼús totalment opcional per aquesta aplicació. Sʼinclou
perquè afegeix funcionalitat avançada pels usuaris més avançats que vulguin
afegir complexitat a les seves planificacions.
Dependències i conflictes: depen directament dʼafegir transició i no afegeix cap
conflicte.
Actors: Només serà utilitzat pels usuaris més avançats com els dissenyadors
dʼanimacions o els desenvolupadors, ja que requereix coneixement de la
tecnologia Flash.
Precondició: Existeix una planificació activa que conté alguna transició.
Condició de satisfacció: lʼaplicació ha modificat el tipus de la transició
seleccionada a condicional amb les propietats que lʼusuari ha indicat.
Escenari principal:
1 Lʼusuari selecciona una de les transicions de la planificació actual.
2 El sistema mostra a lʼusuari el formulari dʼedició de propietats de la transició.
3 Lʼusuari introdueix la condició per lʼexecució de la transició seleccionada i
accepta.
4 El sistema introdueix la condició indicada per lʼusuari a la transició.
5 El sistema informa a lʼusuari que sʼha modificat la transició de forma correcta.
Extensions:
4a La condició introduïda per lʼusuari és incorrecte.
"
4a1 El sistema notifica a lʼusuari que la condició es incorrecte.
"
"
4a1a Es torna al pas 3.
*a Lʼusuari decideix cancel·lar.
"
*a1 Finalitza el cas dʼús.
50
Assistent per desenvolupar videojocs en Flash
3.2.11 Previsualitzar la reproducció del joc
Descripció: lʼusuari desitja previsualitzar lʼexecució de la planificació actual.
Importància: No és un cas dʼús clau per lʼaplicació, però afegeix qualitat a la
usabilitat de lʼaplicació ja que sense la posibilitat de fer previsualitzacions, sʼhauria
de desar la planificació i executar-la cada vegada.
Dependències i conflictes: depen dʼafegir planificació, ja que en realitat no es
necessita cap activitat ni transició per intentar fer una previsualització, però per
poder previsualitzar alguna cosa sí és necessari que existeixi com a mínim una
activitat. No afegeix cap conflicte.
Actors: tots els usuaris que utilitzin lʼaplicació el faran servir.
Precondició: Existeix una planificació activa.
Condició de satisfacció: lʼaplicació ha executat la planificació activa en lʼordre
correcte i respectant totes les transicions establertes per lʼusuari.
Escenari principal:
1 Lʼusuari indica a lʼaplicació que vol començar la previsualització.
2 El sistema comproba que existeixi una activitat inicial i comença lʼexecució.
3 El sistema executa les activitats de manera sequencial, respectant les transicions
i les condicions en cas que hi hagi alguna.
4 El sistema informa a lʼusuari que sʼha executat la previsualització de forma
correcta.
Extensions:
3a No existeix cap activitat a la planifiació.
"
4a1 El sistema notifica a lʼusuari que no hi ha res per previsualitzar.
"
"
4a1a Finalitza el cas dʼús.
51
Assistent per desenvolupar videojocs en Flash
3.2.12 Aturar una previsualització
Descripció: lʼusuari desitja aturar la previsualització que sʼestà executant.
Importància: No és un cas dʼús clau per lʼaplicació, però afegeix qualitat a la
usabilitat de lʼaplicació ja que sense la posibilitat dʼaturar previsualitzacions, lʼusuari
hauria dʼesperar sempre a que la previsualització acabi, i en alguns casos, mai
acabaria perquè poden existir bucles a la planificació.
Dependències i conflictes: depen directament de previsualitzar, ja que si no
sʼestà executant una previsualització, no tindrem res per aturar. No afegeix cap
conflicte.
Actors: tots els usuaris que utilitzin lʼaplicació el faran servir.
Precondició: Hi ha una previsualització executant-se.
Condició de satisfacció: lʼaplicació ha aturat la previsualització que sʼestava
executant i ha tornat al mode dʼedició de la planificació.
Escenari principal:
1 Lʼusuari indica a lʼaplicació que vol aturar la previsualització.
2 El sistema atura lʼexecució de la previsualització.
3 El sistema informa a lʼusuari que sʼha aturat la previsualització de forma correcta.
Extensions:
Sense extensions
3.2.13 Començar partida
Descripció: lʼusuari desitja executar una planificació, desada prèviament, fora de
lʼeditor.
Importància: És un cas dʼús clau per lʼaplicació, ja que lʼobjectiu és que es pugui
utilitzar la planificació creada amb lʼeditor, i si no es pot executar el joc no tindrien
sentit la resta de funcionalitats.
52
Assistent per desenvolupar videojocs en Flash
Dependències i conflictes: depen dʼafegir planificació, ja que en realitat no es
necessita cap activitat ni transició per intentar fer una execució, però per poder
executar alguna cosa sí és necessari que existeixi com a mínim una activitat.
També depen de desar planificació, ja que lʼexecució es produeix fora de lʼeditor i
es necessita accedir a la informació dʼalguna manera. No afegeix cap conflicte.
Actors: qualsevol usuari el podria fer servir, però principalment seran els jugadors
els que utilitzin aquest cas dʼús.
Precondició: Existeix una planificació desada prèviament.
Condició de satisfacció: lʼaplicació ha executat la planificació desada en lʼordre
correcte i respectant totes les transicions establertes.
Escenari principal:
1 Lʼusuari executa lʼaplicació de joc.
2 El sistema carrega la planificació desada.
3 El sistema comproba que existeixi una activitat inicial i comença lʼexecució.
4 El sistema executa les activitats de manera sequencial, respectant les transicions
i les condicions en cas que hi hagi alguna.
5 El sistema informa a lʼusuari que lʼexecució ha finalitzat correctament.
Extensions:
3a No existeix cap activitat a la planifiació.
"
4a1 El sistema notifica a lʼusuari que no hi ha res per executar.
"
"
4a1a Finalitza el cas dʼús.
*a Lʼusuari decideix cancel·lar.
"
*a1 Finalitza el cas dʼús.
53
Assistent per desenvolupar videojocs en Flash
3.3 Requeriments no funcionals
En aquest apartat es descriuen els requeriments no funcionals de lʼaplicació, és a
dir, tots aquells objectius que lʼaplicació hauria dʼassolir independentment de les
funcionalitats que tingui i de la tecnologia que utilitza.
3.3.1 Requeriments dʼaspecte (look & feel)
En aquesta primera secció es concreten els requeriments que determinen els
aspectes visuals o dʼestil que haura de seguir lʼaplicació.
3.3.1.1 Apariència atractiva
Descripció: lʼaplicació ha de tenir una apariència atractiva per lʼusuari.
Justificació: atraure als usuaris per a que sʼanimin a utilitzar lʼaplicació.
Condició de satisfacció: la valoració mitjana sobre lʼapariència de lʼaplicació
dʼuna mostra representativa dʼusuaris és bona o molt bona.
Importància: donat que els usuaris principals de lʼaplicació són usuaris inexperts
amb la tecnologia és important que estiguin còmodes utilitzant lʼaplicació.
3.3.1.2 Homogeneitat
Descripció: lʼaplicació hauria de presentar un disseny uniforme en tots els seus
menus.
Justificació: fer que el sistema sigui més intuïtiu i millorar la seva comprensió.
Condició de satisfacció: tots els menus presenten el mateix aspecte i estan
situats al mateix lloc de la finestra de lʼaplicació.
Importància: és bastant important ja que necessitem que lʼaplicació tingui una
usabilitat molt senzilla pels usuaris inexperts.
54
Assistent per desenvolupar videojocs en Flash
3.3.2 Requeriments dʼusabilitat
La usabilitat es refereix a la capacitat que té un software de ser comprès, après i
usat en unes condicions determinades.
En aquest apartat es concreten els requeriments que permetran que lʼaplicació
tingui un grau dʼusabilitat acceptable pels usuaris que tindran contacte directe amb
el sistema.
3.3.2.1 Facilitat dʼús
Descripció: els usuaris hauran de trobar-se amb una aplicació fàcil dʼutilitzar.
Justificació: els usuaris prefereixen utilitzar aplicacions senzilles amb les quals no
perdin gaire temps.
Condició de satisfacció: els usuaris podran realitzar qualsevol acció del sistema
sense haver de navegar per més de 3 menus diferents.
Importància: és clau que lʼaplicació sigui fàcil dʼutilitzar ja que els usuaris
principals no tenen coneixements importants sobre la tecnologia.
3.3.2.2 Navegació amb ratolí
Descripció: sʼha de poder navegar per tota lʼaplicació utilitzant només el ratolí.
Justificació: els usuaris inexperts prefereixen utilitzar el ratolí per realitzar les
accions.
Condició de satisfacció: els usuaris podran navegar per tots els menus del
sistema utilitzant només el ratolí.
Importància: no és un requeriment clau ja que els usuaris sʼadaptarien a utilitzar el
teclat igualment, però com afegeix usabilitat pels usuaris inexperts sʼha de tenir en
compte.
55
Assistent per desenvolupar videojocs en Flash
3.3.2.3 Control dʼerrors
Descripció: el sistema ajudarà a lʼusuari a no cometre errors a lʼhora dʼintroduir
dades.
Justificació: fer que el sistema sigui més senzill dʼutilitzar.
Condició de satisfacció: lʼaplicació no permet introduir dades que sap que són
incorrectes o que no tenen el format correcte.
Importància: no és un requeriment gaire important però farà que sʼagiliti la
utilització de lʼaplicació.
3.3.2.4 Sistema intuitiu
Descripció: la utilització de lʼaplicació ha de ser totalment intuïtiva.
Justificació: és important que els usuaris aprenguin a utilitzar el sistema de forma
bàsica sense necessitat dʼuna formació específica.
Condició de satisfacció: qualsevol usuari pot aprendre a utilitzar lʼaplicació sense
formació prèvia.
Importància: és un requeriment clau per a que els usuaris inexperts siguin
capaços dʼutilitzar lʼaplicació sense necessitat de seguir instruccions o tutorials que
els farien perdre el temps.
3.3.2.4 Nom de la planificació
Descripció: si sa carregat una planificació o sʼha creat una de nova, el seu nom ha
dʼapareixer a la pantalla en tot moment.
Justificació: mantenir a lʼusuari informat del que està fent.
Condició de satisfacció: lʼusuari pot veure el nom de la planificació que està
editant en tot moment.
Importància: no és un requeriment important, però afegeix cert grau dʼusabilitat.
56
Assistent per desenvolupar videojocs en Flash
3.3.3 Requeriments de rendiment
En aquesta secció sʼacota els requeriments dʼescalabilitat del sistema ja que el
temps de resposta no serà un problema.
3.3.3.1 Escalabilitat
Descripció: lʼarquitectura de lʼaplicacio ha de ser escalable.
Justificació: en cas de necessitat, les funcionalitats de lʼaplicació sʼhan de poder
modificar o ampliar afectant lo mínim possible al codi ja escrit.
Condició de satisfacció: lʼaplicació permet incloure el desenvolupament de noves
funcionalitats i requeriments, així com la modificació o eliminació de funcionalitats
existents dʼuna forma poc problemàtica.
Importància: no és un requeriment important per lʼèxit de lʼaplicació o per assolir
els objectius del projecte, però és essencial pel futur desenvolupament que pugui
tenir lʼaplicació.
3.3.4 Requeriments operacionals i de lʼentorn
Aquesta secció fa referència als requeriments que tenen a veure amb lʼentorn físic
en el qual serà utilitzada lʼaplicació i amb la integració amb altres aplicacions que
són necessàries per a que el sistema funcioni de manera satisfactòria.
3.3.4.1 Navegadors
Descripció: lʼaplicació ha de poder-se utilitzar als navegadors més utilitzats.
Justificació: és necessari que els jocs es puguin transportar a diferents sistemes.
Condició de satisfacció: lʼaplicació es visualitza i funciona correctament a tots els
navegadors.
Importància: no és un requeriment clau, però és necessari que el treball fet al
planificador es pugui utilitzar a diferents sistemes per a que tingui una utilitat real.
57
Assistent per desenvolupar videojocs en Flash
3.3.5 Requeriments de suport i manteniment
Aquest apartat especifica el nivell de suport a lʼusuari que és necessari per aquest
projecte i de quina manera es donarà aquest suport a lʼaplicació.
3.3.5.1 Suport a lʼusuari
Descripció: lʼaplicació ha dʼoferir algun tipus de tutorial.
Justificació: els usuaris han de poder resoldre els seus dubtes sobre la utilització
del sistema.
Condició de satisfacció: lʼaplicació conté tutorials que ofereixen informació sobre
els aspectes bàsics del funcionament del sistema.
Importància: no és un requeriment important, però ja que els nostres usuaris
principals són inexperts amb la tecnologia, és una manera més de reforçar que
podran utilitzar lʼaplicació sense gaires problemes.
3.3.6 Requeriments de seguretat
Aquests requeriments sʼencarreguen de determinar aspectes relatius a la integritat
i la privacitat de les dades i les restriccions dʼaccés al sistema.
3.3.6.1 Integritat de les dades
Descripció: lʼaplicació ha dʼasegurar la integritat de les dades que els usuaris
introdueixen al sistema.
Justificació: lʼaplicació ha de ser robusta per evitar errors i pèrdua de dades ja
que els usuaris no volen perdre el seu treball.
Condició de satisfacció: lʼaplicació no té cap inconsistència a les dades en
qualsevol instant de temps.
Importància: no és un requeriment clau per assolir els objectius, però sí és
important per a que la satisfacció dels usuaris amb lʼaplicació sigui alta.
58
Assistent per desenvolupar videojocs en Flash
3.4 Qualitat dels requeriments
Tots els requeriments han estat revisats i corregits seguint un control de qualitat.
Per considerar que un requeriment és de qualitat ha de seguir els següents punts:
Completesa: tots els requisits han de ser complets i tenir totes les dades
necessàries. A més, hem de saber perquè hi són i analitzar si la seva
existència té sentit.
Consistència: a més de ser complets, hem de saber que volen dir
exactament i que tothom entengui el mateix de cada requeriment. Sʼha
dʼaconseguir tenir requeriments que no siguin ambigus.
Rellevància i viabilitat: el sistema pot tenir moltes opcions que es poden
afegir i que podrien ser interessants però sʼha de considerar si aporten alguna
cosa important. És possible que els usuaris principals de lʼaplicació no el
necessitin i que suposi una despesa de temps o recursos important. Els
requeriments han de ser valuosos pels usuaris principals de lʼaplicació i
òbviament han de ser viables, ja que no té sentit tenir requeriments que no es
poden dur a terme.
Justificació: finalment hem de veure que efectivament els requeriments estan
lligats a les solucions dels problemes i necessitats que plantejen els objectius
dʼaquest projecte. Sʼha intentat que tots els requeriments estiguin descrits i
justificats de la millor manera possible sense que resulti complex entendreʼls.
59
Assistent per desenvolupar videojocs en Flash
4. Especificació
En aquesta secció es volen especificar més formalment les funcionalitats que
tindrà lʼaplicació final a partir dels requeriments que sʼhan estudiat prèviament. Per
fer-ho es faran servir dos models diferents que expliquen diferents aspectes del
sistema: el model de casos dʼús i el model conceptual. Per fer els models
sʼutilitzarà el llenguatge de modelatge UML (Unified Modeling Language) que és
lʼestàndard per lʼespecificació i disseny de software.
4.1 Model de Casos dʼÚs
El Model de Casos dʼÚs descriu les funcionalitats de lʼaplicació que es vol
dissenyar partint de les funcionalitats requerides a lʼanàlisi de requeriments i tenint
en compte la importància de cadascun dels requeriments. Un cas dʼús representa
una unitat discreta dʼinteracció entre un usuari (humà o màquina) i el sistema.
Aquesta interacció és una sola unitat significativa com pot ser crear una activitat o
esborrar-la.
Cada cas dʼús descriu una funcionalitat que es construirà a lʼaplicació i, al mateix
temps, pot incloure la funcionalitat dʼun altre cas dʼús, requerir-la pel seu
funcionament o ampliar un altre cas dʼús amb el seu comportament.
4.1.1 Actors del sistema
Els casos dʼús estan generalment relacionats amb “actors”, que són entitats
humanes o de la màquina que utilitzen o interactuen amb el sistema per realitzar
un treball significatiu que ajudi a assolir una meta. El conjunt de casos dʼús als
quals un actor té accés defineix el seu rol global al sistema i lʼabast de les seves
accions. En llenguatge UML un actor es representa mitjançant el dibuix dʼun ninot i
el seu nom associat.
Fig.4.1 dibuix dʼun actor en UML.
60
Assistent per desenvolupar videojocs en Flash
En aquest projecte es distingeix entre dos tipus dʼactors:
Jugador: són aquells usuaris que només utilitzen lʼaplicació per jugar a jocs o
utilitzar aplicacions creades anteriorment amb lʼaplicació principal, és a dir,
lʼassistent per desenvolupar jocs Flash o planificador dʼactivitats.
Dissenyador: aquests usuaris, a més de poder jugar, són els que utilitzen
lʼaplicació principal per planificar i dissenyar els jocs resultants.
4.1.2 Diagrama de casos dʼús
Amb el diagrama de casos dʼús es vol donar una visió global del sistema. Es
mostraran les funcionalitats que es volen implementar, i es relacionaran amb els
actors que hi participen.
Fig.4.2 Diagrama de casos dʼús.
61
Assistent per desenvolupar videojocs en Flash
4.1.3 Especificació de casos dʼús
Aquesta secció té com a objectiu fer la descripció dels casos dʼús més en detall per
conèixer de forma clara i desambigua com és el comportament del sistema davant
la interacció que es produeix amb els actors.
Per evitar ambigüitats a lʼespecificació, cada descripció de cas dʼús contindrà els
següents punts:
Descripció: comentaris generals que descriuen el comportament del cas dʼús.
Actor principal: actor que inicia el cas dʼús i participa durant el curs
dʼesdeveniments.
Pre-condició: casos dʼús que sʼhan dʼexecutar obligatòriament abans de que
es pugui executar aquest.
Post-condició: condicions que sʼhan de complir al acabar el cas dʼús.
Escenari principal: descripció del flux dʼesdeveniments que hi ha durant el
cas dʼús. Els esdeveniments poden ser accions de lʼusuari o del sistema.
Escenaris alternatius: descripció de fluxos alternatius en cas que es
produeixi algun error o lʼusuari cancel·li lʼexecució del cas dʼús.
4.1.3.1 Crear Planificació
Descripció: lʼusuari crearà una nova planificació buida que tindrà el nom indicat.
Actor Principal: Dissenyador.
Pre-Condició: Post-Condició: existeix una nova planificació buida amb el nom indicat per
lʼusuari.
Escenari principal i alternatius: corresponen als del requeriment funcional “crear
una planificació”.
62
Assistent per desenvolupar videojocs en Flash
4.1.3.2 Desar Planificació
Descripció: lʼusuari desarà la planificació que està editant en aquell moment.
Actor Principal: Dissenyador.
Pre-Condició: Crear Planificació.
Post-Condició: existeix un fitxer a la ubicació indicada i amb el nom indicat per
lʼusuari que conté la informació de la planificació.
Escenari principal i alternatius: corresponen als del requeriment funcional “desar
una planificació”.
4.1.3.3 Carregar Planificació
Descripció: lʼusuari carregarà una planificació a partir dʼun fitxer desat prèviament.
Actor Principal: Dissenyador.
Pre-Condició: Desar Planificació.
Post-Condició: existeix una planificació carregada a lʼaplicació que conté tota la
informació que hi havia al fitxer seleccionat.
Escenari principal i alternatius: corresponen als del requeriment funcional
“carregar una planificació”.
4.1.3.4 Afegir Activitat
Descripció: lʼusuari crearà una nova activitat indicant al sistema el nom, el nombre
de transicions, el fitxer flash corresponent de lʼactivitat, el color amb el que es
mostrarà a lʼesquema de la planificació i si lʼactivitat finalitzarà de forma condicional
o no. Totes les propietats tenen valors per defecte i no són obligatòries per crear
lʼactivitat.
63
Assistent per desenvolupar videojocs en Flash
Actor Principal: Dissenyador.
Pre-Condició: Crear Planificació o Carregar Planificació.
Post-Condició: existeix una nova activitat a la planificació que sʼestà editant que
conté totes les propietats indicades per lʼusuari.
Escenari principal i alternatius: corresponen als del requeriment funcional “afegir
una activitat nova”.
4.1.3.5 Editar Activitat
Descripció: lʼusuari seleccionarà una activitat existent i editarà les seves
propietats. Es podrà editar qualsevol de les propietats esmentades a lʼapartat
anterior a més de la seva posició a lʼàrea dʼedició.
Actor Principal: Dissenyador.
Pre-Condició: Afegir Activitat.
Post-Condició: lʼactivitat seleccionada sʼha modificat dʼacord amb les noves
propietats indicades per lʼusuari.
Escenari principal i alternatius: corresponen als del requeriment funcional “editar
les propietats dʼuna activitat”.
4.1.3.6 Esborrar Activitat
Descripció: lʼusuari esborrarà una activitat existent de la planificació.
Actor Principal: Dissenyador.
Pre-Condició: Afegir Activitat.
Post-Condició: lʼactivitat seleccionada ja no existeix a la planificació ni tampoc
qualsevol transició que la tingués com origen o destí.
64
Assistent per desenvolupar videojocs en Flash
Escenari principal i alternatius: corresponen als del requeriment funcional
“esborrar una activitat”.
4.1.3.7 Afegir Transició
Descripció: lʼusuari crearà una nova transició indicant al sistema lʼactivitat origen,
lʼactivitat destí, el color amb el que es mostrarà a lʼesquema de la planificació i si
lʼactivitat origen és condicional, la condició que sʼha de complir per que sʼutilitzi la
transició. Totes les propietats tenen valors per defecte i no són obligatòries per
crear la transició excepte lʼactivitat origen i lʼactivitat destí.
Actor Principal: Dissenyador.
Pre-Condició: Afegir Activitat.
Post-Condició: existeix una nova transició a la planificació que sʼestà editant que
conté totes les propietats indicades per lʼusuari.
Escenari principal i alternatius: corresponen als del requeriment funcional “afegir
una transició nova”.
4.1.3.8 Editar Transició
Descripció: lʼusuari seleccionarà una transició existent i editarà les seves
propietats. Es podrà editar qualsevol de les propietats esmentades a lʼapartat
anterior excepte les activitats origen i destí.
Actor Principal: Dissenyador.
Pre-Condició: Afegir Transició.
Post-Condició: la transició seleccionada sʼha modificat dʼacord amb les noves
propietats indicades per lʼusuari.
Escenari principal i alternatius: corresponen als del requeriment funcional “editar
les propietats dʼuna transició”.
65
Assistent per desenvolupar videojocs en Flash
4.1.3.9 Esborrar Transició
Descripció: lʼusuari esborrarà una transició existent de la planificació.
Actor Principal: Dissenyador.
Pre-Condició: Afegir Transició.
Post-Condició: la transició seleccionada ja no existeix a la planificació.
Escenari principal i alternatius: corresponen als del requeriment funcional
“esborrar una transició”.
4.1.3.10 Previsualitzar
Descripció: lʼusuari previsualitzarà lʼexecució de la planificació que està editant
sense sortir de lʼaplicació dʼedició. Les activitats sʼexecutaran seqüencialment en
lʼordre establert per les transicions afegides per lʼusuari, sempre respectant les
possibles transicions condicionals, que només sʼexecutaran si es compleix la
condició indicada.
Actor Principal: Dissenyador.
Pre-Condició: Afegir Planificació.
Post-Condició: la planificació sʼha executat seqüencialment en lʼordre correcte.
Escenari principal i alternatius: corresponen als del requeriment funcional
“previsualitzar la reproducció del joc”.
4.1.3.11 Aturar Visualització
Descripció: lʼusuari aturarà una previsualització abans de que acabi i tornarà al
mateix estat dʼedició que hi havia abans de la previsualització.
Actor Principal: Dissenyador.
Pre-Condició: Previsualitzar.
66
Assistent per desenvolupar videojocs en Flash
Post-Condició: la previsualització sʼha aturat i lʼaplicació ha tornat a lʼestat previ.
Escenari principal i alternatius: corresponen als del requeriment funcional “aturar
una previsualització”.
4.1.3.12 Jugar
Descripció: lʼusuari executarà el mode de joc de lʼaplicació y sʼexecutarà una
planificació desada prèviament per un dissenyador. Sʼexecutarà aquella planificació
que el dissenyador hagi decidit que sʼexecuti en el mode de joc.
Actor Principal: Jugador.
Pre-Condició: Desar Planificació.
Post-Condició: la planificació establerta com a planificació de joc sʼha executat
seqüencialment en lʼordre correcte.
Escenari principal i alternatius: corresponen als del requeriment funcional
“començar partida”.
4.2 Model Conceptual
El model conceptual del sistema és una visió estàtica dels objectes i les classes
que componen lʼanàlisi de lʼespai de lʼaplicació. En aquesta secció es farà un
diagrama de classes en UML que sʼutilitza per especificar el patró dels objectes
que es produeixen en temps dʼexecució.
Una classe és una especificació dʼun objecte del sistema i un objecte és una
instància concreta dʼaquesta classe. Les classes poden heretar dʼaltres classes, és
a dir, hereten tot el comportament i lʼestat dels seus pares i poden afegir noves
funcionalitats pròpies. Una classe encapsula lʼestat (els atributs) i ofereix serveis
per poder-la manipular (el comportament).
67
Assistent per desenvolupar videojocs en Flash
4.2.1 Diagrama de classes
Fig.4.3 Diagrama de classes.
68
Assistent per desenvolupar videojocs en Flash
4.2.2 Descripció de les classes i els seus atributs
A continuació es farà una breu descripció de cadascuna de les classes del
diagrama de classes on sʼexplicara el que representa cada classe i els atributs que
conté.
A més a més també sʼestudia la població de cadascun dʼaquests tipus dʼentitat. La
població dʼuna entitat és el conjunt dʼinstàncies que existeixen dʼaquesta entitat al
domini en un punt temporal determinat. Generalment, la població dʼuna entitat varia
en el temps al llarg del període de vida del sistema (població no restringida). No
obstant, existeixen casos particulars: els tipus dʼentitat constants i permanents.
Un tipus dʼentitat és constant si la seva població sempre és la mateixa en qualsevol
moment (mai canvia) i és permanent si les seves instàncies sempre existeixen (la
seva població no pot baixar mai).
4.2.2.1 Assistent
Descripció: representa lʼassistent, que sʼencarrega de gestionar les planificacions i
interactuar amb lʼusuari.
Atributs: no conté atributs ja que no necessita guardar informació addicional.
Població: permanent. Només existeix una instància dʼassistent i mai pot deixar
dʼexistir.
4.2.2.2 Planificació
Descripció: conté tota la informació dʼuna planificació i gestiona les seves
activitats.
Atributs: Només conté el nom de la planificació.
Població: es pot considerar constant si només es treballa amb una planificació i
crear-la directament al començament sense necessitat dʼinteracció amb lʼusuari. En
cas que es treballi amb més dʼuna planificació al mateix temps seria de població no
restringida.
69
Assistent per desenvolupar videojocs en Flash
4.2.2.3 Activitat
Descripció: representa una tasca a realitzar de la planificació, és a dir, una
activitat que sʼhaurà dʼexecutar al joc o al reproductor de planificacions. També
gestiona totes les transicions que tenen com a origen lʼactivitat.
Atributs:
"
Nom: el nom de lʼactivitat.
"
Color: el color que tindrà lʼactivitat gràficament a lʼesquema visual.
"
"
"
"
Nombre de transicions: el nombre màxim de transicions que tindrà lʼactivitat.
Fitxer Flash: el fitxer de flash associat a lʼactivitat que sʼhaurà dʼexecutar.
Condicional: indica si lʼactivitat permet lʼús de condicions a les seves
transicions.
Població: No restringida. Es poden crear i eliminar instàncies dʼactivitat en
qualsevol moment.
4.2.2.4 Transició
Descripció: representa una transició entre dues activitats de la planificació.
Atributs:
"
Color: el color que tindrà la transició gràficament a lʼesquema visual.
"
Condició: indica la condició que sʼha de complir per a que es pugui utilitzar
"
aquesta transició. Només es tindrà en compte si lʼactivitat origen és
"
condicional.
Població: No restringida. Es poden crear i eliminar instàncies de transició en
qualsevol moment.
4.2.2.5 Reproductor
Descripció: representa el reproductor de planificacions que sʼencarregarà de fer
les previsualitzacions.
Atributs: no conté atributs ja que no necessita guardar informació.
70
Assistent per desenvolupar videojocs en Flash
Població: permanent. Només existeix una instància de reproductor i no pot deixar
dʼexistir mai.
4.2.2.6 Joc
Descripció: representa el joc que utilitzarà les planificacions fetes,
independentment de lʼassistent, per executar-les.
Atributs: no conté atributs ja que no necessita guardar informació.
Població: permanent. Només existeix una instància de joc i no pot deixar dʼexistir
mai.
4.2.3 Descripció de les associacions
En aquesta secció es farà una breu descripció de cadascuna de les associacions
del diagrama de classes. Sʼexplicarà què representa cadascuna de les
associacions i sʼindicaran quines són les classes associades i la multiplicitat.
En aquest cas també sʼestudiarà la
població de cada associació. En lʼapartat
anterior sʼha definit el concepte de població dʼun tipus dʼentitat i sʼhan explicat els
casos particulars de constants i permanents. Aquestes particularitats també es
poden aplicar a les associacions. Per tant, la població dʼuna associació és el
conjunt de les seves instàncies que existeixen al domini en un punt temporal
determinat.
4.2.3.1 Assistent-Planificació
Descripció: lʼassistent o planificador edita una planificació que després utilitzarà
per altres funcions. Aquesta associació representa la planificació que sʼestà editant
a lʼassistent.
Multiplicitat dʼAssistent: 1 (una planificació només es pot editar amb lʼassistent)
Multiplicitat de Planificació: 0..1 (es pot estar editant una planificació o cap)
Població: al igual que amb la classe planificació es pot considerar constant si
només es treballa amb una planificació que sigui constant. En cas que es treballi
amb més dʼuna planificació al mateix temps seria de població no restringida.
71
Assistent per desenvolupar videojocs en Flash
4.2.3.2 Planificació-Activitat
Descripció: una planificació conté diferents activitats que sʼexecutaran al joc.
Aquesta associació representa cadascuna de les activitats que estan incloses a
una planificació.
Multiplicitat de Planificació: 1 (una activitat només pot pertànyer a una
planificació)
Multiplicitat dʼActivitat: * (una planificació pot tenir qualsevol nombre dʼactivitats)
Població: no restringida. Una planificació pot afegir i esborrar activitats en
qualsevol moment.
4.2.3.3 Origen - Destí (Activitat-Activitat)
Descripció: una activitat conté un cert nombre de transicions cap a altres activitats
de la planificació. Aquesta associació representa cadascuna dʼaquestes
transicions.
Multiplicitat dʼOrigen: * (una activitat destí pot tenir qualsevol nombre dʼactivitats
origen relacionades amb ella).
Multiplicitat de Destí: * (una activitat origen pot tenir qualsevol nombre dʼactivitats
destí relacionades amb ella). Encara que això no és completament cert ja que en
realitat el nombre màxim seria lʼatribut Nombre de Transicions de lʼactivitat.
Població: constant des del punt de vista de lʼactivitat. Una activitat tindrà en tot
moment un nombre constant de transicions que comencen en ella, que és
exactament el nombre de transicions que indica lʼatribut. Aquestes transicions no
tenen destí i per tant no apareixen a lʼesquema visual de lʼaplicació.
Des del punt de vista de lʼaplicació la població és no restringida, perquè
sʼafegeixen i esborren activitats en tot moment, i, per tant, també transicions.
72
Assistent per desenvolupar videojocs en Flash
4.2.3.4 Assistent-Reproductor
Descripció: lʼassistent utilitza un reproductor de planificacions que el permetrà fer
les previsualitzacions. Aquesta associació representa el reproductor que lʼassistent
utilitza.
Multiplicitat dʼAssistent: 1 (lʼassistent només utilitza un reproductor)
Multiplicitat de Reproductor: 1 (el reproductor només sʼutilitza a lʼúnic assistent
que existeix).
Població: permanent. Només existeix una instància dʼaquesta associació i no pot
deixar dʼexistir.
4.2.3.5 Joc-Planificació
Descripció: el joc reprodueix una planificació creada amb lʼassistent. Aquesta
associació representa la planificació que es reprodueix.
Multiplicitat de Joc: 0..1 (una planificació pot ser reproduïda pel joc o no)
Multiplicitat de Planificació: 1 (el joc només pot reproduir una planificació en un
moment de temps).
Població: constant, perquè en tot moment només existeix una instància dʼaquesta
associació, encara que no és permanent perquè pot variar la planificació que es
reprodueix.
73
Assistent per desenvolupar videojocs en Flash
5. Disseny
A lʼetapa dʼespecificació sʼhan establert totes les funcionalitats necessàries per
aconseguir assolir els objectius del projecte tenint en compte els requeriments dels
usuaris que sʼhan trobat a lʼetapa dʼanàlisi. Ara és el moment de definir com es
faran totes aquestes funcionalitats, quines tecnologies sʼutilitzaran i, en definitiva,
com estarà dissenyada lʼaplicació per aconseguir oferir les funcionalitats indicades.
5.1 Decisions de disseny
En aquesta secció sʼexplicaran totes les decisions de disseny que sʼhan pres i que
es tindran en compte per fer la implementació de lʼaplicació.
Per implementar lʼaplicació sʼutilitzarà ActionScript 3, el llenguatge de programació
de Flash que ja sʼha explicat a la secció de tecnologies. Les vistes de lʼaplicació es
faran amb les eines de dibuix que ofereix Flash i les dades es guardaran en fitxers
XML.
Per fer la implementació de lʼaplicació sʼutilitzarà el patró arquitectònic ModelVista-Controlador (MVC), que defineix lʼestructura bàsica del sistema. El patró
arquitectònic MVC aïlla la lògica de lʼaplicació (model conceptual) de la interfície
dʼusuari (presentació i interacció amb lʼusuari). Això permet desenvolupar de forma
independent cadascuna de les parts de lʼaplicació.
Fig.5.2 Model-Vista-Controlador
74
Assistent per desenvolupar videojocs en Flash
El model defineix el comportament de lʼaplicació i la interacció amb les dades,
respon a les sol·licituds dʼinformació sobre el seu estat (normalment des de la
vista) i respon a les instruccions per canviar aquest estat (normalment des de el
controlador). En els sistemes basats en esdeveniments, el model notifica als
observadors quan canvia perquè puguin reaccionar als canvis.
Les vistes transformen el model en una presentació gràfica amb una forma
adequada per la interacció amb lʼusuari. Hi pot haver diferents vistes dʼun mateix
model per a diferents propòsits.
El controlador o controladors reben els esdeveniments de lʼentrada i inicien la
resposta del sistema demanant als objectes del model les accions necessàries. Un
controlador accepta lʼentrada de lʼusuari i envia instruccions a les vistes i el model
per realitzar accions basades en aquesta entrada.
Encara que hi ha diferents variacions del patró MVC, totes segueixen un flux
dʼexecució bàsic, que és el següent:
Lʼusuari interactua amb la interfície dʼusuari dʼalguna manera. (per exemple,
prem un botó del ratolí).
El controlador captura lʼesdeveniment dʼentrada de la interfície dʼusuari i
converteix lʼesdeveniment en una acció de dʼusuari que sigui comprensible pel
model.
El controlador notifica al model de lʼacció de lʼusuari, la qual cosa podria
produir un canvi dʼestat del model si lʼacció és de modificació.
El controlador notifica a la vista que sʼha executat lʼacció i la vista actualitza el
seu estat obtenint les dades necessàries del model.
La interfície dʼusuari espera noves interaccions de lʼusuari, reiniciant dʼaquesta
manera el cicle.
75
Assistent per desenvolupar videojocs en Flash
5.2 El Model
El model del sistema conté totes les classes necessàries per representar una
planificació dʼuna partida dʼun joc o dʼun conjunt dʼactivitats si es considera de
forma més general. També conté les classes necessàries per gestionar i reproduir
aquestes planificacions.
Per dissenyar un bon model sʼutilitzaran alguns patrons de disseny comuns al
desenvolupament de software que ajuden a tenir un codi més organitzat, més
eficient i millor encapsulat. En la següent secció sʼexpliquen amb una mica més de
detall.
5.2.1 Patrons de disseny
Sovint moltes persones han observat que existeixen bones solucions per a certs
problemes comuns que apareixen repetidament als bons disseny de software. A
través dels anys els dissenyadors aprenen bones maneres de resoldre certs tipus
de problemes, i la millor solució tendeix a ser usada novament. En lloc de crear un
nou disseny des de el principi en cada oportunitat, els dissenyadors experts
sʼestalvien treball utilitzant aquestes solucions “comuns” usades en els seus
dissenys previs. Aquestes solucions estàndards poden no ser òptimes en tots els
aspectes, però són molt bones i són dissenys útils que han estat comprovats per
anys dʼexperiència. Aquestes solucions comuns sʼanomenen patrons de disseny.
Els patrons de disseny ajuden a resoldre problemes comuns al desenvolupament
de software oferint solucions genèriques que cadascú pot adaptar a les necessitats
del seu projecte. Els patrons de disseny han dʼexplicar perquè una situació
particular és un problema i perquè es considera que la solució proposada és una
bona solució.
En aquest projecte sʼutilitzen principalment quatre patrons de disseny molt comuns
i també molt útils ja que ajuden a tenir una bona estructura a la implementació de
lʼaplicació. Els patrons que sʼutilitzen són el patró expert, el patró creador, el patró
observador i el patró controlador que sʼexpliquen amb una mica més de detall als
següents apartats.
76
Assistent per desenvolupar videojocs en Flash
5.2.1.1 Patró Expert
El que es planteja en aquest patró és assignar la responsabilitat sobre una acció
que cal realitzar a lʼexpert en la informació que cal per realitzar-la, és a dir, la
classe que té la informació necessària per complir amb la responsabilitat. El
problema que resol el patró expert està referit al principi més bàsic mitjançant el
qual les responsabilitats són assignades en el disseny orientat a objectes.
El model conceptual del sistema pot definir moltes classes diferents, i una aplicació
pot definir centenars o milers de responsabilitats a ser complertes. Durant el
disseny orientat a objectes, quan les interaccions entre objectes són definides,
sʼescolleixen les assignacions de les responsabilitats a les classes. Fent aquestes
assignacions bé, els sistemes tendeixen a ser fàcils dʼentendre, mantenir i
estendre.
5.2.1.2 Patró Creador
Aquest patró serveix per assignar responsabilitats de creació dʼobjectes als
objectes que més interactuen amb ells. Per ser més específic, el patró assigna a la
classe B la responsabilitat de crear una instància de la classe A si alguna de les
següents premisses és certa:
•
•
•
•
B afegeix objectes dʼA
B conté objectes dʼA
B registra instàncies dʼobjectes dʼA
B utilitza molts objectes dʼA
•
B és el creador dels objectes dʼA
Si hi ha més dʼuna opció, les primeres condicions són més importants que les
últimes, per tant serà millor creador una classe que afegeix la classe A que una
classe que utilitza molts objectes dʼA.
La creació dʼobjectes és una de les activitats més comunes en els sistemes
orientats a objectes, per tant, és molt útil tenir un sistema per assignar la
responsabilitat de crear cada objecte. Si sʼassignen de manera correcta,
sʼincrementa la claredat del codi, la encapsulació i la reutilització.
77
Assistent per desenvolupar videojocs en Flash
5.2.1.3 Patró Observador
El patró observador defineix una dependència del tipus un a molts entre objectes,
de manera que quan un dels objectes canvia el seu estat, lʼobservador sʼencarrega
de notificar el canvi a tots els altres dependents.
Fig.5.1 Patró observador.
Els observadors han dʼimplementar uns mètodes mitjançant els quals el Subjecte
és capaç de notificar als seus observadors subscrits els canvis que sʼhan fet
perquè tots ells tingui lʼoportunitat dʼactualitzar el seu propi estat.
En aquest projecte, com que utilitzem ActionScript amb Flash, aquest patró ja ve
implementat directament al control dʼesdeveniments que ens facilita lʼAPI de Flash i
que sʼha explicat al capítol de tecnologies.
5.2.1.4 Patró Controlador
El patró controlador planteja que hi hagi una classe que sʼencarrega de establir un
sistema de missatges entre la interfície dʼusuari i la resta del sistema i, per tant,
que gestiona tot el flux dʼesdeveniments al sistema. El controlador principal pot
delegar les responsabilitats també a patrons més específics.
En el cas dʼaquest projecte cadascun dels elements de la interfície dʼusuari contarà
amb el seu propi controlador que gestionarà tot el flux dʼesdeveniments.
Concretament es contarà amb un menú dinàmic que canviarà el seu estat segons
el que estigui fent lʼusuari i un àrea dʼinteracció on es dibuixarà lʼesquema de la
planificació de forma interactiva.
78
Assistent per desenvolupar videojocs en Flash
5.2.2 Diagrama de classes de disseny
Fig.5.3 Diagrama de classes de disseny.
79
Assistent per desenvolupar videojocs en Flash
5.2.3 Model de dades
Aquesta secció descriu lʼestructura de les dades que es guarden a la base de
dades del sistema, encara que en aquest cas, no és realment una base de dades
sinó fitxers XML que guardaran lʼestructura de les planificacions per poder-les
carregar i desar a disc.
A la imatge següent es pot veure lʼestructura bàsica dʼun fitxer XML que guarda
lʼestructura dʼuna planificació del projecte.
Fig.5.4 Esquema dels fitxers XML.
80
Assistent per desenvolupar videojocs en Flash
5.3 Els Controladors
Els controladors de lʼaplicació controlen tot el flux dʼesdeveniments entre les vistes
i el model i gestionen tots els esdeveniments dʼentrada que provoca lʼusuari quan
interacciona amb els elements de la interfície dʼusuari. A més a més també
gestionen els errors que es poden produir i comuniquen a lʼusuari a través de les
vistes dʼaquests errors.
A lʼaplicació dʼaquest projectes hi haurà un controlador principal, anomenat
controlador de lʼassistent que sʼencarrega dʼinicialitzar els controladors de lʼàrea
interactiva i del menú dinàmic. El joc té un controlador propi ja que la seva
execució és independent de lʼassistent i, per tant, necessita gestionar les seves
pròpies operacions independentment.
A la secció anterior ja sʼhan pogut veure tots els controladors amb els seus atributs
i operacions al diagrama de classes de disseny. Els controladors formen part de les
classes del sistema i interaccionen amb les classes que formen part del model
conceptual.
A continuació es mostraran les vistes de lʼaplicació i es podrà veure amb més detall
el que realment gestionen aquests controladors i els possibles esdeveniments que
es poden produir a lʼaplicació.
5.4 Les Vistes
Les vistes de lʼaplicació sʼencarreguen de mostrar a lʼusuari totes les opcions
disponibles a lʼassistent, a més a més de mostrar gràficament lʼestructura de la
planificació i permetre modificar-la dinàmicament amb controls interactius del ratolí.
En aquesta aplicació hi ha una vista principal que mostra tota la informació en una
finestra, però dividirem lʼexplicació en dues parts que estan clarament
diferenciades degut al seu comportament. Les primeres són les vistes del menú
dinàmic, que està situat a lʼesquerra de la finestra i canvia la seva aparença
mostrant diferents opcions segons les accions de lʼusuari. Finalment mirarem les
possibilitats que ens ofereix lʼàrea interactiva on es pot veure gràficament
lʼestructura de la planificació i fer diferents accions amb els elements gràfics.
81
Assistent per desenvolupar videojocs en Flash
5.4.1 El menú dinàmic
El menú dinàmic de lʼaplicació té una aparença inicial que mostra les opcions que
es poden dur a terme en qualsevol moment de lʼedició de la planificació que són
les següents.
Fig.5.5 Vista del menú inicial.
Com es pot veure a la imatge, totes les opcions disponibles a lʼinici són totes
aquelles operacions que no necessiten de cap pre-condició per funcionar
correctament. En realitat la primera hauria de ser crear planificació, però com que
al final sʼha decidit que només es treballarà amb una planificació, al inicialitzar el
controlador de lʼassistent, ja es crea automàticament aquesta planificació buida
inicial. Això permet que es puguin afegir activitats des de lʼinici.
5.4.1.1 Afegir activitat
Quan es selecciona lʼopció dʼafegir activitat a la planificació, el menú dinàmic
canvia i ofereix noves opcions que permeten introduir les dades inicials que es
volen posar a lʼactivitat que es vol crear. Una vegada sʼaccepta la creació, lʼactivitat
sʼafegeix a lʼàrea interactiva automàticament per poder interactuar amb ella.
Com es pot veure a la imatge següent, tots els camps per crear lʼactivitat ja tenen
un valor per defecte i, per tant, no cal introduir cap dada per afegir la nova activitat,
i més endavant podrem modificar-la si volem.
82
Assistent per desenvolupar videojocs en Flash
Fig.5.6 Vista del menú afegir activitat.
5.4.1.2 Editar activitat
Fig.5.7 Vista del menú editar activitat.
83
Assistent per desenvolupar videojocs en Flash
A la dreta de la vista es pot veure una porció de lʼàrea interactiva on es veuen els
elements gràfics de la planificació, en aquest cas veiem una representació gràfica
dʼuna activitat, i, a lʼesquerra, el menú dinàmic a canviat perquè lʼactivitat està
seleccionada i mostra les opcions necessàries per modificar lʼactivitat seleccionada
o esborrar-la.
5.4.1.3 Editar transició
Fig.5.8 Vista del menú editar transició.
Aquí es poden veure dos activitats i una transició de lʼactivitat 1 cap a lʼactivitat 4.
Com que la transició ha estat seleccionada a lʼàrea interactiva, novament el menú
dinàmic canvia les seves opcions per adaptar-se a la situació i mostra les opcions
necessàries per editar la transició o esborrar-la.
No existeix una vista per afegir transicions ja que sʼha decidit deixar aquesta
funcionalitat completament per lʼàrea interactiva i serà en aquell apartat on
sʼexplicarà com funciona exactament.
84
Assistent per desenvolupar videojocs en Flash
5.4.1.4 Desar i carregar una planificació
Fig.5.9 Vista de la finestra per carregar fitxers XML.
Fig.5.10 Vista de la finestra per desar fitxers XML.
85
Assistent per desenvolupar videojocs en Flash
En aquestes imatges es poden veure les finestres que surten quan sʼindica a
lʼaplicació que es vol desar o carregar una planificació. Aquestes vistes són
independents del sistema ja que venen donades pel sistema operatiu on sʼexecuta
lʼaplicació i la funcionalitat ja està implementada per lʼAPI de Flash.
Per tant, en aquest cas, per fer que carregar i desar un fitxer sigui tan intuïtiu com
en qualsevol altre aplicació es deixa que siguin les típiques finestres del sistema
operatiu les que surtin quan lʼusuari vol realitzar alguna dʼaquestes accions.
5.4.1.5 Previsualitzar
Fig.5.11 Vista del menú en previsualització.
Quan lʼusuari està previsualitzant una planificació, lʼúnic canvi que es pot veure al
menú inicial és que sʼafegeix un botó per aturar la visualització, ja que és lʼúnica
funcionalitat que depèn de què sʼestigui previsualitzant.
5.4.2 Lʼàrea interactiva
Lʼàrea interactiva de lʼaplicació és simplement un àrea de “dibuix” on sortiran tots
els elements que sʼafegeixin a la planificació dʼuna manera gràfica, dʼaquesta
manera es podran seleccionar per canviar les seves propietats, moure la seva
posició en pantalla o afegir transicions arrossegant el ratolí dʼun punt a un altre.
86
Assistent per desenvolupar videojocs en Flash
Fig.5.12 Vista de lʼàrea interactiva.
Per seleccionar un element de la planificació, només serà necessari fer click amb
el ratolí a sobre de lʼelement. Lʼactivitat o transició que es seleccionin es
ressaltaran per que lʼusuari tingui consciència de que sʼha seleccionat lʼelement. A
més a més com ja sʼha explicat abans, el menú dinàmic canvia dʼacord amb
aquestes interaccions.
Només es podran moure interactivament les activitats de la planificació, ja que la
posició de les transicions depèn de la posició de les activitats que uneixen. Per tant
la posició de les transicions sʼactualitzarà automàticament si es mou alguna de les
activitats.
Per afegir una transició caldrà seleccionar un punt dʼorigen i després arrossegar el
ratolí fins al punt de destí vàlid. Mentre sʼestà realitzant aquesta acció, es mostrarà
una línia similar a les transicions ja existents, dibuixada entre el punt dʼorigen i el
ratolí, per indicar a lʼusuari que està realitzant lʼacció correctament. Si el punt
escollit es correcte sʼafegira el destí seleccionat a la transició. Només seran punts
de destí vàlids els punts que representen els punts dʼorigen de les transicions de
cada activitat.
87
Assistent per desenvolupar videojocs en Flash
5.5 Realitzacions dels casos dʼús
En aquest capítol es vol descriure com es realitzen els casos dʼús al model de
disseny, tenint en compte els patrons aplicats i lʼarquitectura que sʼestà utilitzant.
Sʼha de tenir en compte que no es descriuran els casos dʼús dʼuna manera
exaustiva, només es vol donar una idea general de com serà el funcionament de
les funcionalitats principals del sistema. Això ajuda a saber amb més detall com
funcionaran els casos dʼús a lʼaplicació final, i així sabrem quines classes
necessitarem i quines funcionalitats seran importants a cadascuna dʼaquestes
classes.
Per fer les realitzacions dels casos dʼús sʼutilitzaran diagrames de seqüència en
UML. Cada diagrama de seqüència mostra dʼuna manera intuïtiva quines són les
classes que interaccionen al cas dʼús i quines funcions sʼutilitzen per realitzar-lo.
Normalment es mostren els actors que interaccionen amb el sistema als diagrames
de seqüència però en aquest cas no sʼhan especificat perquè només tenim un
actor principal, lʼusuari de lʼaplicació, per tant, sempre que sʼindica una interacció
exterior de lʼusuari, és aquest actor el que participa. El jugador no es tindrà en
compte en aquest apartat ja que només participa al cas dʼús de jugar, que és un
cas dʼús secundari i no es posarà en detall.
A continuació es mostraran els diagrames de seqüència dels casos dʼús més
importants de lʼaplicació. Cal tenir en compte alguns aspectes significatius a lʼhora
dʼentendre el que fan alguns casos dʼús que han canviat des de lʼespecificació, que
són els següents:
Crear planificació: en realitat no crearem cap planificació, ja que al inicialitzar
lʼaplicació es crea la planifiació que sʼutilitzarà durant tota lʼexecució, per tant,
el que es fa aquí és esborrar la planificació i deixar-la buida per tornar a
començar.
Afegir transició: aquest cas dʼús ja no depèn de lʼusuari ja que al crear les
activitats, es creen automàticament el nombre de transicions que sʼha indicat
al formulari de creació.
88
Assistent per desenvolupar videojocs en Flash
Afegir destí, editar transició i esborrar transició: aquestes funcionalitats es
transformen en una de sola, ja que com les activitats contenen sempre el
nombre de transicions indicat per lʼusuari, afegir un nou destí i editar una
transició serà una funcionalitat similar. En el cas dʼesborrar transició es
redueix a treure lʼactivitat destí i deixar-la com estava incialment, per tant,
també és una edició.
5.5.1 Crear planificació
Fig.5.13 Diagrama de seqüència de crear planificació.
5.5.2 Desar planificació
Fig.5.14 Diagrama de seqüència de desar planificació.
89
Assistent per desenvolupar videojocs en Flash
5.5.3 Carregar planificació
Fig.5.15 Diagrama de seqüència de carregar planificació.
5.5.4 Afegir activitat
Fig.5.16 Diagrama de seqüència dʼafegir activitat.
90
Assistent per desenvolupar videojocs en Flash
5.5.5 Editar activitat
Fig.5.17 Diagrama de seqüència dʼeditar activitat.
5.5.6 Esborrar activitat
Fig.5.18 Diagrama de seqüència dʼesborrar activitat.
91
Assistent per desenvolupar videojocs en Flash
5.5.7 Editar transició
Fig.5.19 Diagrama de seqüència dʼeditar transició.
5.5.8 Previsualitzar
Fig.5.20 Diagrama de seqüència de previsualitzar.
92
Assistent per desenvolupar videojocs en Flash
5.5.9 Aturar visualització
Fig.5.21 Diagrama de seqüència dʼaturar visualització.
93
Assistent per desenvolupar videojocs en Flash
6. Implementació
En aquest capítol de la documentació es farà una explicació en detall de les
classes que sʼhan implementat per desenvolupar el projecte, que seguiran el
disseny que sʼha comentat en lʼapartat anterior amb algunes modificacions que es
comentaran en cada cas.
LʼActionScript 3 està preparat per treballar directament amb gràfics i animacions de
Flash, ja que és el llenguatge de programació creat per manipular els dissenys fets
amb Flash. Aquest aspecte repercuteix alhora dʼestructurar la implementació de
lʼaplicació ja que les classes que implementarem seran totes subclasses de display
objects, ja que totes són objectes que apareixen a lʼescena, és a dir, a la finestra
de lʼaplicació.
A partir del disseny que sʼha estudiat i dʼaquest últim aspecte que sʼha de tenir en
compte han sortit les següents classes.
6.1 El mode edició: lʼassistent
Per estructurar lʼaplicació es faran servir dos tipus de mode dʼexecució, que
corresponen als dos tipus dʼusuaris diferentes que ens podem trobar, és a dir, els
dissenyadors dels jocs o animacions i els jugadors que utilitzaran el resultat de
lʼaplicació dʼalguna manera.
Cadascun dʼaquests dos modes correspon a una aplicació diferent i, per tant, com
a resultat tindrem dues animacions de Flash que es podran executar
independenment una de lʼaltra. Això ens permetrà aconseguir que els dissenyadors
puguin treballar en les planificacions sense necessitat dʼutilitzar lʼaplicació dels
jugadors i que els jugadors puguin utilitzar les animacions o jocs resultants sense
tenir consciència de lʼexistència de lʼeditor.
Per comunicar lʼapliació dʼedició i lʼaplicació del jugador, sʼutilitzaran fitxers XML
que contindran tota la informació necessària per poder reproduir el joc a partir
dʼuna planificació feta a lʼassistent.
En aquest subapartat es comentaran les classes que sʼhan utilitzat per
implementar lʼaplicació principal, és a dir, lʼassistent per crear videojocs.
94
Assistent per desenvolupar videojocs en Flash
6.1.1 La classe flashAssistant
La classe flashAssistant correspon al controlador principal de lʼaplicació,
sʼencarrega dʼinicialitzar tots els elements gràfics i de gestionar els esdeveniments
bàsics de ratolí que sʼutilitzen a la interacció amb lʼusuari.
Aquesta classe conté tota la informació de lʼaplicació i la distribueix segons els
esdeveniments que es produeixen a les altres classes que actuen com a
controladors. Els esdeveniments es controlen amb observadors que ja venen
implementats per lʼAPI de Flash. Al inicialitzar la classe sʼactiven els observadors
que es necessiten, com, per exemple, el click del ratolí.
Per crear una aplicació amb Flash, sʼha de crear un fitxer FLA que contindrà tots
els elements gràfics de lʼaplicació. Aquest fitxer ha de tenir assignada una classe
principal que defineix el seu comportament. En aquest projecte aquesta és la
classe principal de lʼaplicació, per tant, a més de fer de controlador principal, també
conté el bucle principal de lʼaplicació.
El bucle principal sʼexecuta a cada frame de lʼanimació, ja que en Flash, encara
que estem parlant dʼuna aplicació, tot es considera una animació. Aquest bucle
sʼencarrega de comprovar lʼestat de lʼaplicació i de realitzar les accions
necessàries segons calgui quan lʼestat canvii degut a les interaccions amb lʼusuari.
A més a més aquest bucle també actualitza lʼestat de tots els elements gràfics de
lʼaplicació per a que lʼusuari tingui en tot moment el feedback necessari.
6.1.1.1 Atributs importants
Background: com totes les classes que sʼimplementen en aquest projecte de
Flash, hi ha un element gràfic a lʼaplicació que es correspon amb la classe. En
aquest cas, aquest element seria la finestra de lʼaplicació que sʼha anomenat
“background”, ja que és un fons buit que després sʼomple amb la resta
dʼelements. La propietat més important del fons de lʼaplicació és clarament el
color, que en aquest cas és fixe ja que no sʼha implementat el canvi de color
de la finestra.
Local Connection: aquest atribut no apareix ni sʼhavia tingut en compte al
disseny ja que és un aspecte purament dependent de la tecnologia Flash.
Alhora de fer la reproducció dels fitxers SWF i aconseguir informació sobre el
95
Assistent per desenvolupar videojocs en Flash
seu estat per poder fer les transicions condicionals és necessari fer una
conexió de comunicació entre lʼaplicació principal i lʼanimació que sʼestà
executant, que permet passar paràmetres entre les dues animacions. Aquest
atribut conté aquest element que sʼutilitzarà només quan les transicions siguin
condicionals.
MouseDown, MouseX i MouseY: aquests són atributs dʼestat. Ens indiquen
en qualsevol moment de lʼexecució si el ratolí esta clickat i la seva posició a
pantalla. Això ens permet determinar si sʼestà clickant algún element concret
de lʼentorn gràfic, cap a on esten movent el ratolí mentre realitzem una acció
interactiva o quan deixem de clickar-lo.
Atributs dʼestat de lʼaplicació: hi ha diversos atributs dʼaquest tipus que ens
indiquen en tot moment que sʼestà realitzant a lʼaplicació. Així es manté un
control del que es pot fer i el que no es pot fer a cada moment de lʼexecució.
Per exemple, no volem que lʼusuari pugui seleccionar una activitat mentre esta
movent una altra per la pantalla. Tampoc volem que lʼusuari pugui esborrar la
planificació mentre sʼestà realitzant una previsualització.
6.1.1.2 Funcions importants
initialize(event): aquesta funció sʼauto executa quan es carrega lʼaplicació,
que és precisament lʼesdeveniment que lʼactiva. Sʼencarrega dʼafegir els
elements gràfics de lʼaplicació, dʼinicialitzar els atributs i els altres
controladors, dʼactivar els observadors dʼesdeveniments que són necessaris i
finalment dʼiniciar lʼexecució del bucle principal de lʼaplicació.
loadXML(event): quan finalitza la càrrega dʼun fitxer XML al cas dʼús de
carregar un fitxer de planificació es crida automàticament a aquesta funció,
que sʼencarrega dʼinterpretar totes les dades que conté el fitxer i derivar al
controlador de lʼàrea interactiva la creació de les activitats i transicions
necessàries per completar la reconstrucció de la planificació contenida al
fitxer.
feedback(String): aquesta senzilla funció sʼha implementat per donar a
lʼusuari un feedback directe sobre les accions que realitza a lʼaplicació. La
funció simplement mostra a la pantalla principal un missatge. El missatge
96
Assistent per desenvolupar videojocs en Flash
varia i sʼutilitza en tots els punts claus de cada cas dʼús per indicar quan ha
finalitzat correctament o quan sʼha produit un error.
playGame() i stopGame(): aquest serà el controlador que interaccioni
directament amb el reproductor, i aquestes funcions sʼencarreguen dʼiniciar i
aturar la previsualització. En el primer cas prepara lʼaplicació per fer-ho i
deriva la funcionalitat al reproductor. En el segon simplement atura la
reproducció i torna a lʼestat previ a la reproducció.
6.1.2 La classe dynamicMenu
La classe dynamicMenu correspon al controlador del menú dinàmic de lʼaplicació,
sʼencarrega dʼinicialitzar tots els components gràfics del menú, la seva posició dins
de la finestra de lʼaplicació el seu color. Durant lʼexecució de lʼaplicació gestiona
tots els esdeveniments que es produeixen al menú dinàmic i adapta el seu
contingut segons lʼestat en el que es troba lʼaplicació.
La classe conté la informació necessària per controlar lʼestat del menú en
qualsevol moment de lʼexecució i conté un bucle principal que es crida des de el
controlador principal de lʼaplicació.
El bucle principal del menú dinàmic canvia lʼestat del menú segons lʼestat en el que
es troba lʼaplicació, és a dir, si lʼusuari ha seleccionat una activitat, llavors es
mostraran les opcions dʼedició dʼactivitats, i així amb totes les funcionalitats que el
menú proporciona. A més a més del canvi dʼestat, també gestiona els
esdeveniments que es produeixen quan lʼusuari selecciona alguna opció del menú i
deriva les operacions necessàries cap els altres controladors.
6.1.2.1 Atributs importants
Atributs dʼestat del menú: hi ha diverses variables a aquesta classe que
serveixen per saber en qualsevol moment de lʼexecució quin és lʼestat del
menú dinàmic, és a dir, quin és el menú actiu i quina operació sʼestà realitzant
en aquell moment. Això és necessari per actuar en conseqüència quan hi hagi
un esdeveniment. Per exemple, el menú dʼedició dʼactivitats sʼutilitza per
crear-les i per editar-les, i volem saber quin cas dʼús és el que està realitzant
lʼusuari per executar les operacions adients quan es premi el botó dʼacceptar.
97
Assistent per desenvolupar videojocs en Flash
Width, Height i color: aquests atributs només indiquen lʼaspecte gràfic que
tindrà el menú dinàmic i sʼinicialitzen al crear-lo. Per aquest projecte les
dimensions i el color no variaran durant lʼexecució perquè no sʼhan afegit
funcionalitats per personalitzar la interfície gràfica.
Vistes dels menús: com en totes les classes hi ha un element gràfic que es
correspon amb la classe. En aquest cas en realitat és més dʼun element ja
que el menú dinàmic conté diferents menús que va mostrant o tancant segons
lʼestat de lʼaplicació. Per tant, tenim un submenú per a cadascuna de les
vistes que es van mostrar al disseny.
6.1.2.2 Funcions importants
initialize(): sʼexecuta quan es crea el menú dinàmic. Sʼencarrega dʼafegir els
elements gràfics del menú i dʼinicialitzar els seus atributs. També activa alguns
observadors dʼesdeveniments que són necessaris per al bon funcionament
dʼalguna de les funcionalitats que ofereix el menú dinàmic.
initMenuActivity(...) i initMenuLink(...): aquestes dues funcions són claus
per al bon funcionament del menú dinàmic ja que inicialitzen els menús
dʼedició dʼactivitats i transicions amb tots els atributs que calen, sempre que
es selecciona un element a lʼàrea interactiva o es vol canviar el contigut del
menú per algun motiu sʼutilitza una dʼaquestes funcions per actualitzar la
informació del menú.
refreshMenu(): lʼúltima funció que es comenta dʼaquesta classe només
serveix per actualitzar la informació del menú segons lʼestat en el que es troba
lʼaplicació en aquell moment. Aquesta funció és senzilla però també
necessària per a que sʼactualitzi el menú sempre que es faci alguna operació
a lʼàrea interactiva que canvii lʼestat de la planificació.
6.1.3 La classe Board
Aquesta classe rep el nom de “Board” per analogia amb els jocs de taula, i
correspon al controlador de lʼàrea interactiva. Sʼencarrega dʼinicialitzar lʼaspecte
gràfic de lʼàrea interactiva, de gestionar els esdeveniments que es produeixen per
la interacció amb lʼusuari amb els elements gràfics de la planificació i de gestionar
totes les operacions que impliquin fer canvis a la planificació que sʼestà editant, ja
98
Assistent per desenvolupar videojocs en Flash
que com es va comentar en anteriors capítols, sʼha decidit utilitzar una única
planificació que sʼesborrarà i modificarà segons calgui.
La classe conté la informació necessària per saber quin objecte està seleccionat i
sʼestà manipulant en aquell moment a lʼàrea interactiva per poder-lo modificar
segons els esdeveniments que es produeixin.
En aquesta classe controlador també hi ha un bucle principal que es crida des del
controlador principal de lʼaplicació. Aquest bucle serveix per identificar en qualsevol
moment de lʼexecució quin objecte està seleccionat, i canviar la selecció segons
calgui quan es produeixin esdeveniments dʼinteracció de lʼusuari. A més a més
també sʼencarrega dʼefectuar les operacions de moviment dʼobjectes i altres
funcionalitats interactives com afegir una transició.
6.1.3.1 Atributs importants
Width, Height i color: només indiquen lʼaspecte gràfic que tindrà lʼàrea
interactiva i sʼinicialitzen al crear-la. Per aquest projecte les dimensions i el
color no variaran durant lʼexecució perquè no sʼhan afegit funcionalitats per
personalitzar la interfície gràfica.
selected_element: conté en qualsevol moment de lʼexecució lʼelement que hi
ha seleccionat a lʼàrea interactiva. Això ens permet accedir directament a
lʼelement seleccionat en qualsevol moment i modificar-lo segons les
operacions que lʼusuari hagi sol·licitat.
planificació: el controlador de lʼàrea interactiva conté la planificació de
lʼaplicació, ja que és un objecte únic que modificarem segons lʼestat de
lʼaplicació, però sempre serà la mateixa ja que no es treballarà amb diverses
planificacions al mateix temps.
Vista de lʼàrea interactiva: com la resta de classes de lʼaplicació, aquesta
també correspon a un element gràfic de Flash. En aquest cas és lʼàrea
interactiva de lʼaplicació que sʼha pogut veure a la secció de vistes del
disseny.
99
Assistent per desenvolupar videojocs en Flash
6.1.3.2 Funcions importants
initialize(): sʼexecuta al crear lʼàrea interactiva de lʼaplicació i bàsicament
sʼencarrega dʼinicialitzar els elements gràfics necessaris per la correcta
visualització dʼaquest element. A més a més també inicialitza la planificació
buida que es farà servir a lʼinici.
addActivity(...), removeActivity(): serveixen per afegir o esborrar activitats
de la planificació, són necessàries per manipular lʼestat de la planificació
segons les accions de lʼusuari al menú dinàmic i també per reconstruir una
planificació guardada a un arxiu XML.
exportXML(): amb aquesta funció es vol donar suport a la funcionalitat de
desar planificacions en XML. Inicialitza un XML nou amb les dades de format
correctes i deriva la funció a les activitats per aconseguir un XML que conté
tota la informació de la planificació.
clear(): aquesta funcionalitat senzilla correspon al cas dʼús de crear una nova
planificació, que simplement esborra el contingut de la planificació i actualitza
lʼàrea interactiva que torna al seu estat inicial.
6.1.4 La classe Activity
La classe Activity correspon exactament a la classe activitat del model conceptual
especificat i també del model de disseny. A més a més també conté lʼelement gràfic
de Flash necessari per representar una activitat per pantalla i poder interaccionar
amb ella. Principalment gestiona el comportament de les activitats i controla tota la
informació que contenen.
Aquesta és la primera classe que no té un bucle principal, ja que no correspon a
cap controlador de lʼaplicació, només és un element del model. Per tant, conté més
funcions per crear, esborrar i modificar aspectes de la classe des de fora que les
anteriors.
6.1.4.1 Atributs importants
Id: correspon a un identificador numèric únic que tindrà cada activitat a dins
dʼuna planificació. Per tant, no poden haver dues activitats amb el mateix
100
Assistent per desenvolupar videojocs en Flash
identificador a una planificació, això ens permet identificar cada activitat
inequívocament amb aquest atribut i, dʼaquesta manera, poder-les relacionar
amb les transicions amb més facilitat.
mc: conté el MovieClip de Flash que té el disseny gràfic de lʼactivitat. Com
totes les classes a la implementació dʼaquesta aplicació, tenim un element
gràfic que es correspon amb ella.
Name, color i nLinks: aquests són els atributs que pot editar lʼusuari i que es
reflectiran de forma gràfica a lʼesquema visual de la planificació. El nom serà
un identificador per lʼusuari de cada activitat, però no sʼutilitza com a
identificador intern, així lʼusuari té llibertat per posar el nom que vulgui a cada
activitat. El color només varia lʼaspecte gràfic de lʼactivitat i lʼatribut nLinks
indica el nombre de punts dʼorigen que tindra lʼactivitat gràficament. En
definitiva, aquest nombre de punts també serà el màxim de transicions que
puguin començar a una activitat, ja que només es poden afegir punts destí de
forma interactiva. El nombre de transicions que poden acabar a una activitat,
però, és il·limitat.
file: lʼatribut file correspon al nom del fitxer SWF que sʼexecutarà quan es
visualitzi aquesta activitat al reproductor de planificacions o al joc. Per editar-lo
es farà servir una finestra de càrrega de fitxers i només es podran escollir
fitxers SWF.
secuential: és només un booleà que indica si lʼactivitat tindrà un
comportament sequencial a la visualització. Si aquest atribut és fals, llavors
vol dir que les transicions contenen condicions i sʼhan de comprovar.
6.1.4.2 Funcions importants
refreshMc(): serveix per actualitzar els elements gràfics dʼuna activitat
després de fer qualsevol canvi als seus atributs.
addLink(), removeLink(): serveixen per afegir o esborrar transicions de
lʼactivitat, són necessàries per manipular lʼestat de lʼactivitat segons les
accions de lʼusuari al menú dinàmic i també per reconstruir una planificació
guardada a un arxiu XML.
101
Assistent per desenvolupar videojocs en Flash
select(), unselect(), dragging(): actualitzen lʼestat gràfic de lʼactivitat, ja que
lʼaspecte gràfic dʼuna activitat canvia segons lʼacció que està realitzant
lʼusuari.
exportXML(): dona suport a la funcionalitat de desar planificacions en XML i
és la continuació de la ja existent a la classe Board. Introdueix a un XML totes
les dades de lʼactivitat i deriva a les transicions de les quals és origen per
aconseguir també la seva informació i finalment retorna aquesta informació.
6.1.5 La classe Link
La classe Link correspon exactament a la classe transició del model conceptual
especificat i també del model de disseny, igualment que al cas anterior. A més a
més també conté lʼelement gràfic de Flash necessari per representar una transició
per pantalla i poder interaccionar amb ella. Concretament una transició es
composa del seu punt dʼorigen i, en el cas de tenir punt de destí, una línia que
comença al punt dʼorigen i acaba al punt destí. La classe gestiona principalment el
comportament de les transicions i controla tota la informació que contenen.
Aquesta classe, al igual que les activitats, tampoc té un bucle principal, ja que
també és un element del model. Per tant es gestiona de forma similar a la classe
anterior.
6.1.5.1 Atributs importants
Id: correspon a un identificador numèric únic que tindrà cada transició a dins
dʼuna activitat. Per tant, no poden haver dues transicions amb el mateix
identificador que comencin a la mateixa activitat, això ens permet identificar
cada transició inequívocament amb aquest atribut i lʼidentificador de lʼactivitat
origen.
activity: és un element que fa referència a lʼactivitat origen de la transició.
Sʼinicialitza al crear la transició i no es pot modificar, ja que el punt dʼorigen ha
dʼexistir sempre i no pot canviar dinàmicament.
End: és un element que fa referència al punt destí de la transició. Al crear la
transició és buit ja que no és necessari que existeixi un punt destí. Les
102
Assistent per desenvolupar videojocs en Flash
transicions que no tenen punt destí es veuen gràficament només com a un
punt dʼorigen sense línia dʼunió.
mcPoint, mcLine i mcCode: contenen els MovieClips de Flash que té el
disseny gràfic de la transició. Com totes les classes a la implementació
dʼaquesta aplicació, tenim un element gràfic que es correspon amb ella. En
aquest cas és un element compost, ja que hi han diferents elements gràfics
independents. mcPoint correspon al punt dʼorigen que es mostrarà a les
activitats. mcLine correspon a la línia que es veurà en cas que hi hagi una
unió entre activitats i mcCode és un text que es mostra a la línia en cas que
existeixi una condició.
code i color: aquests són els atributs que pot editar lʼusuari i que es
reflectiran de forma gràfica a lʼesquema visual de la planificació. El codi és un
identificador de la condició que lʼusuari vol utilitzar en cas que el salt sigui
condicional. Si la transició no és opcional el codi no serveix encara que
existeixi. El color només varia lʼaspecte gràfic de la transició.
6.1.5.2 Funcions importants
refreshMc(): serveix per actualitzar els elements gràfics dʼuna transició
després de fer qualsevol canvi als seus atributs. També es crida directament
des de la funció resfreshMc dʼactivitat a totes les transicions relacionades.
insertEnd(...): quan lʼusuari interacciona a lʼàrea interactiva amb una transició
i afegeix un punt de destí es crida a aquesta funció per indicar a la transició
que sʼha dʼactualitzar el seu punt destí.
select() i unselect(): actualitzen lʼestat gràfic de la transició, ja que el seu
aspecte gràfic canvia segons lʼacció que està realitzant lʼusuari.
exportXML(): dona suport a la funcionalitat de desar planificacions en XML i
és la continuació de la ja existent a la classe Activity. Introdueix a un XML
totes les dades de la transició i retorna aquesta informació.
103
Assistent per desenvolupar videojocs en Flash
6.1.6 La classe xmlPlayer
La classe xmlPlayer correspon a la classe reproductor del model conceptual a
lʼespecificació i al disseny. Inicialment estava pensada per reproduir planificacions
a lʼeditor i fer així previsualitzacions. A la implementació sʼha decidit modificar
lleugerament la classe per aconseguir un millor aprofitament del codi. Ja que
moltes de les funcionalitats presents en aquesta classe seran després necessàries
per implementar el mode dʼexecució. Per tant, aquesta classe reproductor sʼha
transformat una mica i en lloc de reproduir simplement planificacions, el que fa es
llegir una estructura de planificació en XML i reproduir-la. La única diferència és la
utilització de XML, que ens facilitarà després la feina al mode dʼexecució.
La classe conté la informació necessària per saber en tot moment quin és lʼactivitat
que sʼestà reproduint, i també del mode dʼexecució que sʼestà utilitzant, és a dir,
seqüencial o condicional. Sʼha de tenir en compte que el mode dʼexecució pot
canviar al mig dʼuna planificació, per tant hi ha dʼhaver dues maneres similars però
diferents de fer transicions entre activitats sense que lʼordre dʼexecució establert a
la planificació sʼalteri.
En aquest cas tampoc sʼha utilitzat un bucle principal encara que podria fer-se,
però com no és un controlador i lʼestructura de càrrega i descàrrega contínua de
fitxers SWF produeix molts esdeveniments, sʼha decidit estructurar la reproducció
fent servir funcions de tipus observador que esperaran esdeveniments per fer la
seva feina. Els esdeveniments que es poden produïr són bàsicament la càrrega i
descàrrega dels fitxers i la finalització dʼuna reproducció, ja sigui pel compliment
dʼuna condició o perquè sʼacabi lʼanimació.
6.1.6.1 Atributs importants
xml: conté tota la informació de la planificació que es vol reproduir en format
XML. Això ens permet aconseguir lʼobjectiu de poder després aprofitar la
major part de lʼestructura dʼaquest reproductor per fer després el mode
execució, ja que sʼhauran de llegir fitxers XML.
swf i loader: són atributs interns del reproductor. El primer correspon al fitxer
SWF que sʼestà reproduint i, per tant, és lʼelement gràfic de Flash que
correspon al reproductor. El segon és un element de lʼAPI de Flash que
104
Assistent per desenvolupar videojocs en Flash
permet carregar fitxers externs a lʼaplicació i que sʼutilitzarà per carregar els
fitxers SWF.
playList: és una llista dʼactivitats en XML tipus cua. A mida que el reproductor
avança per lʼestructura de la planificació va omplint aquesta llista amb les
activitats que sʼhan de reproduir i en lʼordre correcte. En cap cas sʼomple la
llista amb activitats que depenen dʼuna condició fins que la condició sigui
certa. Quan la reproducció dʼuna activitat acaba, es treu el primer element de
la llista i es reprodueix.
current: conté la informació en XML de lʼactivitat que sʼestà reproduint.
Sʼutilitza sobre tot per accedir a la informació de totes les seves transicions i
per accedir al nom del fitxer que sʼha de reproduir.
6.1.6.2 Funcions importants
Play() i Stop(): la primera dʼaquestes funcions sʼencarrega dʼiniciar la
reproducció dʼuna planificació. Carrega les dades en XML i comprova que el
seu format sigui correcte i que existeixi alguna activitat per reproduir. En cas
que tot sigui correcte llença la càrrega del primer fitxer SWF. La segona funció
simplement atura la reproducció i buida el contingut gràfic del reproductor, així
a lʼaplicació es tornarà a veure lʼàrea interactiva dʼedició.
doneLoading(event): és una funció de tipus observador que sʼexecuta quan
finalitza la càrrega dʼun fitxer SWF. Sʼencarrega dʼactualitzar el mode de
reproducció abans de reproduir el fitxer SWF que sʼacaba de carregar, possa
el fitxer carregat a reproduir i lʼafegeix al reproductor per a que es pugui veure
a lʼaplicació.
autoEnd(event): és una de les dues funcions que controlen la finalització
dʼuna activitat. Aquesta només sʼactiva si el mode de reproducció és
seqüencial, i a cada frame es comprova si sʼha arrivat al final de lʼanimació del
swf. En cas que lʼactivitat sʼacabi sʼomple la llista de reproducció amb les
següents activitats segons les transicions que tingui i es llença la càrrega del
següent fitxer SWF a la llista.
endCondition(...): és la segona funció que controla la finalització dʼuna
activitat. funciona de manera similar a lʼanterior però només sʼactiva si el
105
Assistent per desenvolupar videojocs en Flash
mode de reproducció és condicional. Quan es detecta la finalització es
comprova quines de les transicions compleixen la condició i sʼafegeixen a la
llista.
6.2 El mode execució: el joc
Ara que ja existeix un mode per crear i editar planificacions, és necessari crear una
manera dʼexecutar aquestes planificacions pels usuaris jugadors, que no tenen
perquè saber que existeix lʼeditor ni han de necessitar saber-ho per utilitzar els
resultats.
Com ja sʼha comentat a lʼapartat anterior, el reproductor de planificacions que sʼha
implementat facilita moltíssim la feina per fer això, ja que bàsicament sʼha de fer lo
mateix que es fa al reproductor de lʼaplicació però transformant-lo en una altra
aplicació independent, per tant, la gestió dʼaquest mode execució es redueix a
utilitzar un controlador que gestionarà tot el joc, carregant el fitxer XML primer que
conté la planificació, i després tindrà les mateixes funcions que utilitzava el
reproductor de lʼaplicació per fer lʼexecució. Com a resultat dʼaixò tenim la classe
Game.
6.2.1 La classe Game
La classe Game correspon a la classe joc del model conceptual a lʼespecificació i
al disseny. A la implementació serà una mena de fusió entre un controlador
dʼaplicació i la classe xmlPlayer, ja que en realitat volem fer que el reproductor ara
sigui una aplicació independent i que reprodueixi un fitxer XML extern. Per tant la
diferència principal és que tindrem un fitxer de Flash associat a la classe Game
igual que hi havia un altre associat a la classe flashAssistant. A més a més sʼhaurà
de fer la càrrega dʼaquest fitxer XML que volem executar abans de començar la
reproducció.
En aquest cas no sʼexplicarà en detall el contingut de la classe ja que es tracta
bàsicament dʼun xmlPlayer que funciona com una aplicació independent i, per tant,
no cal tornar a explicar els mateixos punts descrits anteriorment.
106
Assistent per desenvolupar videojocs en Flash
7. Planificació temporal i anàlisi del cost
En aquesta secció de la memòria es tracta de donar una visió general de la
planificació que sʼha utilitzat per dur a terme el projecte. Al primer apartat es
mostrarà un diagrama de Gantt que mostra totes les tasques realitzades al projecte
i la duració de cadascuna. A partir dʼaquest diagrama podem extreure el temps
exacte que es necessita per acabar el projecte i a partir dʼaquí es farà un anàlisi del
cost del projecte.
7.1 Diagrama de Gantt
Al diagrama de Gantt següent podem observar totes les tasques que sʼhan dut a
terme durant el projecte. Aquestes tasques han estat agrupades segons a quina
etapa del desenvolupament del projecte pertanyen. Les etapes del projecte són les
següents:
Tasques preliminars: es tracta del periòde de preparació del projecte i
aprenentatge de les tecnologies clau per desenvolupar-lo.
Anàlisi de requeriments: el primer anàlisi del projecte en profunditat que
serveix per extreure les funcionalitats importants i els requisits necessaris pels
usuaris.
Especificació: anàlisi de lʼestructura del model conceptual de lʼaplicació i les
tasques que cal fer a cadascun dels casos dʼús.
Disseny: disseny de lʼaplicació tenint en compte les tecnologies que sʼhan
dʼutilitzar i els patrons de disseny que es volen aplicar.
Implementació: conté tot el període dʼimplementació de lʼaplicació, tant del
mode edició com del mode execució, i de totes les proves necessàries.
Realització de la memòria: temps dedicat a escriure la documentació del
projecte.
Preparació de la presentació: preparació dʼun tutorial i una demo per poder
fer una presentació de lʼaplicació i fer una demostració del seu funcionament.
107
Assistent per desenvolupar videojocs en Flash
Fig.7.1 Diagrama de Gantt.
108
Assistent per desenvolupar videojocs en Flash
7.2 Anàlisi del cost
Lʼobjectiu dʼaquest apartat es fer una estimació del cost econòmic total que seria
necessari per desenvolupar aquest projecte. Per fer això necessitarem fer un petit
estudi dels recursos human, els recursos físics i el programari que han sigut
necessaris pel desenvolupament dʼaquest projecte.
Els recursos físics que sʼhan utilitzat per al desenvolupament del projecte són una
conexió a Internet ADSL bàsica i un ordinador portàtil Macbook dʼApple. La conexió
a Internet té un cost aproximat dʼuns 30 € al mes i un Macbook nou té un cost
dʼuns 900 €, encara que el que sʼha utilitzat ja té tres anys i per tant, no seria
necessari tenir en compte el seu cost total, ja que part del seu cost ja ha sigut
amortitzat amb el temps. Per tant, dividirem el cost de lʼordinador pels seus mesos
dʼutilització i només tindrem en compte el temps que sʼha utilitzat per a aquest
projecte:"
"
900 € / 36 mesos = 25 €/mes
El programari utilitzat per desenvolupar el projecte no és lliure i, per tant, es
necessari pagar una llicència per utilitzar-lo. El més important és lʼentorn de
desenvolupament, és a dir, Flash CS5. El cost dʼuna llicència de Flash CS5 és
dʼuns 520 €. El sistema operatiu utilitzat és Mac OS X Snow Leopard, però no
tindrem en compte el seu cost perquè el cost del Macbook ja inclou el sistema
operatiu. Per escriure la documentació del projecte sʼha utilitzat iWork 09,
OmniGraffle per fer els diagrames i OmniPlan per fer el diagrama de Gantt. El cost
dʼ iWork 09 és dʼuns 58 €, lʼOmniGraffle costa uns 75€ i lʼOmniPlan no té cost ja
que no és necessari pagar llicència per utilitzar el programa un periode tan curt de
temps.
Maquinari i Programari
Flash CS5
OmniGraffle
OmniPlan
iWork 09
Mac OS X Snow Leopard
MacBook
Conexió a Internet
Mesos dʼús
6
2
0.1
2
8
8
8
Preu/mes
€25.00
€30.00
Cost Total:
Fig.7.2 Cost de maquinari i programari.
109
Cost
€520.00
€75.00
€0.00
€58.00
€0.00
€200.00
€240
€1,093.00
Assistent per desenvolupar videojocs en Flash
Per al càlcul dels recursos humans només sʼha tingut en compte la única persona
que ha participat al projecte i que ha fet alhora el rol de cap de projecte, analista,
dissenyador i programador. El cost mitjà per hora dʼun programador és de 40 € i,
per tant, sʼha assignat aquest valor a les tasques de programació i documentació.
A les tasques que corresponen a treball dʼanàlisi i disseny sʼha assignat un cost de
50 € perquè el cost mitjà dʼaquests rols és més alt.
Tasques
Tasques preliminars
Anàlisi de requeriments
Especificació
Disseny
Implementació
Documentació
Presentació
Dies
Hores/dia
23
13
16
21
61
40
7
4
4
4
4
4
4
4
Total:
Hores
totals
Preu/hora
92
€40.00
52
€50.00
64
€50.00
84
€50.00
244
€40.00
160
€40.00
28
€40.00
724 Cost Total:
Cost
€3,680
€2,600
€3,200
€4,200
€9,760
€6,400
€1,120
€30,960
Fig.7.3 Cost de recursos humans.
Si es suma el cost dels recursos humans (30,960 €) i el cost del maquinari i
programari (1,093 €), el cost total del projecte és de 32,053 €.
110
Assistent per desenvolupar videojocs en Flash
8. Conclusions
Lʼobjectiu principal del projecte sʼha assolit de forma satisfactòria. Aquest objectiu
era desenvolupar una aplicació en Flash que permeti editar el flux dʼexecució dʼuna
animació o aplicació Flash, composada per diferents fitxers de Flash, de forma
gràfica i interactiva. A més aquest objectiu sʼhavia dʼassolir perquè lʼaplicació
resultant pugui utilitzar-la un usuari que no tingui coneixements avançats de Flash
o ActionScript.
Lʼaplicació satisfà tots els requeriments funcionals que es van analitzar a lʼinici del
projecte i també aconsegueix satisfer els requeriments no funcionals. Tot això sʼha
aconseguit amb una interfície gràfica dʼusuari molt senzilla dʼutilitzar com es
mostrarà al tutorial i la demostració i totes les funcionalitats funcionen dʼuna
manera molt intuïtiva i interactiva per lʼusuari.
Sʼhan pogut utilitzar amb èxit les tecnologies que es van proposar a lʼinici del
projecte, encara que han proposat problemes a lʼhora dʼimplementar alguna de les
funcionalitats sʼhan trobat alternatives viables per assolir els objectius més
importants del projecte.
La utilització dels fitxers XML ha facilitat molt la feina i ha donat alternatives a lʼhora
dʼimplementar la funcionalitat de reproducció, que podria ser fins i tot ampliable al
futur. La utilització de Flash CS5 amb totes les seves ajudes per treballar amb
Flash ha facilitat també la feina en molts casos i és una eina bastant potent per a
gairebé qualsevol objectiu a lʼhora de treballar amb Flash. Encara que encara és
molt millorable lʼentorn per programar amb ActionScript.
La implementació finalment sʼha pogut fer bastant fidel a la especificació i el
disseny encara que sʼhan dut a terme petites modificacions per comoditat a lʼhora
dʼimplementar. Algunes funcions del disseny a la implementació sʼhan trobat
gairebé innecessàries i altres que no hi eren sʼhan hagut de fer per poder assolir
amb èxit totes les funcionalitats proposades.
Per fer aquest projecte sʼha intentat seguir una metodologia on poder aplicar els
coneixements obtinguts al llarg de la carrera en desenvolupament de projectes i
enginyeria del software. Tot això ha sigut una bona experiència a lʼhora de valorar
la importància de planificar i analitzar les tasques dʼun projecte.
111
Assistent per desenvolupar videojocs en Flash
Durant el projecte sʼha aprés a utilitzar una tecnologia molt actual com és Flash
que no sʼutilitza durant la carrera i el seu llenguatge de programació, lʼActionScript
3, del qual no es tenia cap coneixement abans de començar el projecte. Ha sigut
una experiència molt instructiva i positiva en aquest aspecte, ja que és una
tecnologia amb moltíssimes possibilitats i que segurament tornaré a utilitzar en el
futur.
Encara que aquest projecte no està directament relacionat amb els videojocs, ja
que podria considerar-se una aplicació bastant més general, sʼha enfocat al món
dels videojocs Flash perquè és un tema molt interessant i, a més a més,
personalment, els videojocs són una font dʼinspiració i una afició que mʼapassiona.
Per tant treballar en una aplicació que pot servir per crear petits videojocs per
persones que no tenen la possibilitat de fer-ho per manca de coneixements ha
sigut una experiència molt positiva.
Finalment, com a possibles millores de futur es podria afegir la possibilitat de poder
programar amb més profunditat les transicions condicionals. També poder
gestionar múltiples planificacions al mateix temps i afegir la possibilitat de carregar
diferents tipus dʼobjectes a la planificació i no només fitxers de Flash, com podria
ser so, imatges, vídeos o text. Tot això organitzat per capes, per exemple, per
poder posar diferents elements executant-se al mateix temps, un vídeo amb text
per sobre o una animació flash amb un so de fons. També es podria afegir la
possibilitat dʼafegir efectes gràfics per representar les transicions durant lʼexecució,
com es fa a alguns programes dʼedició de vídeo.
112
Assistent per desenvolupar videojocs en Flash
9. Bibliografia
General:
•
•
Google: www.google.com
Wikipedia: http://es.wikipedia.org/wiki/Wikipedia:Portada
XML:
•
•
Manual dʼXML: http://www.w3schools.com/xml/xml_whatis.asp
XML a ActionScript 3: http://www.republicofcode.com/tutorials/flash/as3xml/
Flash i ActionScript 3:
•
•
•
•
•
•
Tutorials de Flash: http://www.cristalab.com/tutoriales/
Flash Developer Center: http://www.adobe.com/devnet/flash.html?
view=quickstart
Documentació de Flash: http://help.adobe.com/en_US/flash/cs/using/
index.html
Tutorials dʼActionScript 3: http://www.flashandmath.com/
Learning ActionScript 3: http://help.adobe.com/en_US/as3/learn/
WS5b3ccc516d4fbf351e63e3d118a9b90204-8000.html
Documentació dʼActionScript 3: http://livedocs.adobe.com/flash/9.0/
ActionScriptLangRefV3/
Programes utilitzats:
•
•
Flash Player: http://www.adobe.com/products/flashplayer/
Flash CS5: http://www.adobe.com/products/flash/whatsnew/
•
•
•
OmniGraffle: http://www.omnigroup.com/products/omnigraffle/
OmniPlan: http://www.omnigroup.com/products/omniplan/
iWork 09: http://www.apple.com/iwork/
113