CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons...

115
TREBALL DE RECERCA CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC Autor/a: Guillem Rueda Oller Curs: 2013 - 2014 Centre educatiu: Institut Icària Tutor/a del treball: Feliu Muniente Navales

Transcript of CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons...

Page 1: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

TREBALL DE RECERCA CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC

Autor/a: Guillem Rueda Oller

Curs: 2013 - 2014

Centre educatiu: Institut Icària

Tutor/a del treball: Feliu Muniente Navales

Page 2: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons
Page 3: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

ÍNDEX

INTRODUCCIÓ ............................................................................................... 3

1. PART GENERAL ........................................................................................ 5

1.1. Suports per a videojocs .......................................................................... 5

1.1.1. Els ordinadors ............................................................................... 6

1.1.2. Els telèfons mòbils ........................................................................ 7

1.1.3. Les consoles per videojocs ........................................................... 8

1.1.4. Recomanació i decisió ................................................................ 9

1.2. Llenguatges i entorns de programació .................................................. 11

1.2.1. Programes específics per jocs VS llenguatges de programació ... 11

1.2.2. Llenguatges de programació ....................................................... 13

1.2.3. Entorns de programació per C++ ................................................ 17

1.3. Requeriments per programar en C++ .................................................. 20

1.3.1. Instal·lació de l’entorn Dev-C++ ................................................ 20

1.3.2. Explicació i instal·lació de la llibreria Allegro 5 ........................ 21

1.3.3. Opcions a definir per programar un videojoc ............................. 23

1.4. Gèneres de videojocs ............................................................................ 24

1.4.1. Videojocs d’acció ........................................................................ 24

1.4.2. Videojocs de simulació ................................................................ 26

1.4.3. Videojocs d’aventura ................................................................... 28

1.4.4. Recomanació i decisió ................................................................ 30

1.5. Advertències per crear un videojoc ....................................................... 31

1.5.1. Les llicències dels recursos informàtics ...................................... 31

1.5.2. Recomanacions a l’hora de programar ......................................... 32

Page 4: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

2. PART ESPECÍFICA ................................................................................... 33

2.1. Especificacions del joc .......................................................................... 33

2.1.1. La concepció ............................................................................... 33

2.1.2. El disseny ................................................................................... 45

2.1.3. La planificació ............................................................................ 50

2.2. Desenvolupament del projecte .............................................................. 52

2.2.1. La producció ................................................................................. 52

2.2.2. Les proves ................................................................................... 69

2.2.3. El manteniment ............................................................................ 70

2.3. Compilació i distribució del joc ............................................................ 72

2.3.1. Compilació estàtica amb Allegro 5 utilitzant l’entorn Dev-C++ . 72

2.3.2. Incorporació d’arxius multimèdia al fitxer final ........................ 74

CONCLUSIONS ............................................................................................. 75

BIBLIOGRAFIA ............................................................................................. 76

ANNEX ............................................................................................................. I

ANNEX A: GLOSSARI (paraules marcades en >> verd <<) ............ II

ANNEX B: PROGRAMES UTILITZATS ...................................... XV

ANNEX C: CODIS DEL VIDEOJOC “Tiverton” ........................... XVI

ANNEX D: CODIS DEL PROGRAMA “makeUpdateMaps” ........ XXIX

Page 5: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 3

INTRODUCCIÓ

Des de finals dels anys setanta els videojocs s’han anat integrant exitosament en la

nostra societat i en la nostra cultura, però què és un videojoc? Un videojoc és un espai

virtual on s’hi pot interactuar amb una sèrie de perifèrics i veure aquest espai en una

pantalla. Actualment es tenen diversos suports per jugar a un videojoc, per exemple amb

un ordinador o amb un telèfon mòbil.

L’objectiu d’aquest treball és explicar les parts, les alternatives, les decisions i els

coneixements que s’han d’exercir per crear un videojoc. Com aplicació pràctica d’això

es farà un videojoc d’exemple, on es podran veure clarament els processos generals i

particulars per realitzar aquesta tasca.

Abans de fer un videojoc s’han de prendre decisions. Per exemple com serà, per a quin

suport es crearà, ... Abans de fer cap decisió, s’ha d’analitzar les diverses opcions per

triar la que ens vagi millor, anomenant els seus avantatges i inconvenients. Primer de

tot, en el treball s’analitzarà per a quin suport pot estar disponible un videojoc (per a

ordinador, consola, telèfon mòbil, etc.) ja que depenent del suport per al qual es vagi a

fer el videojoc, la manera de crear-lo és diferent i per tant, aquesta ha de ser la primera

decisió a prendre.

També s’analitzarà les diverses opcions sobre com fer un videojoc, si utilitzant algun

programa o programant, i per tant, quins són els programes més coneguts i útils per

crear un videojoc, i per altra banda, quins són els llenguatges de programació

disponibles per al suport triat. S’analitzarà profundament els llenguatges de

programació disponibles ja que per a cada un es necessiten coneixements diferents i

alguns no són gaires recomanables per crear un videojoc a causa de la seva simplicitat,

complexitat o simplement que no estan pensats per al que ens interessa.

Es pot programar amb l’ajuda d’un programa que faciliti l’accés als fitxers, la correcció

del codi de programació o la execució del videojoc en proves. Aquests programes són

uns entorns, els quals no són necessaris, però són molt útils a l’hora de crear un gran

Page 6: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 4

projecte. S’haurà de decidir quin entorn s’utilitzarà depenent del tipus de projecte que es

realitzi, que en el cas d’aquest treball és crear un videojoc.

Un cop preses aquestes decisions i tenint tots els requisits del llenguatge de programació

triat, el treball es centrarà en com serà el videojoc. Per a això, s’analitzarà diferents tipus

de jocs i les característiques que ha de tenir un videojoc depenent de quin tipus sigui.

Aquesta primera part general s’acabarà comentant diversos problemes freqüents en la

creació d’un videojoc.

Finalment es centrarà en el joc particular decidint les seves especificacions, és a dir,

s’haurà de pensar tot el joc abans de crear-lo. Llavors s’explicarà tota la part del

desenvolupament d’un videojoc amb l’ajut del joc d’ordinador que es crearà com

aplicació pràctica. Durant el desenvolupament del joc, s’esmentaran possibles

problemes o dubtes que ens poden aparèixer. També poden aparèixer altres programes

durant el desenvolupament del joc que es puguin necessitar per coses puntuals

(transformar un arxiu en un de diferent extensió, etc.). Per acabar es comentaran les

diverses maneres de compilar i distribuir el videojoc.

Page 7: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 5

1. PART GENERAL

En aquesta part general es veuran els passos que s’han de seguir per fer qualsevol

videojoc. Es començarà per analitzar els diferents suports pels videojocs, veient les

característiques de cada suport i els avantatges i inconvenients que implica cada opció.

Després es veurà els llenguatges disponibles per crear un videojoc i els entorns més

útils. Amb el llenguatge de programació ja escollit s’anomenaran els requeriments per

programar, en el cas del joc de mostra en C++. També s’analitzarà els diferents gèneres

de videojocs i les característiques de cada gènere. Per acabar aquesta part general, es

veuran diversos problemes freqüents que es poden tenir a l’hora de crear un videojoc.

1.1. Suports per a videojocs

El primer de tot que s’ha de pensar quan es proposa crear un videojoc és decidir per a

quin suport és farà, ja que depenent del suport triat la manera de crear el videojoc

canviarà molt. Cada suport sol necessitar un llenguatge de programació diferent per

crear un videojoc. A més a més, la distribució d’un videojoc per a certs suports és

complexa i de pagament.

A continuació es veurà i s’analitzarà els tres suports més comuns a l’hora de crear un

videojoc:

• Els ordinadors

• Els telèfons mòbils

• Les consoles per videojocs

A part d’aquests tres suports per videojocs existeixen d’altres com les màquines

recreatives o les agendes electròniques en les que també es pot jugar. L’inconvenient a

l’hora de crear un videojoc per un d’aquests suports és que necessiten un llenguatge de

programació propi que només té l’empresa propietària del suport o en altres casos s’ha

de pagar per obtenir el codi del llenguatge necessari.

Page 8: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 6

1.1.1. Els ordinadors

Crear un videojoc per

ordinador, o podríem dir un joc

d’ordinador, és una opció

possible amb molts avantatges.

Aquesta opció té moltes

possibilitats diferents ja que no

està limitada a un únic

llenguatge de programació, sinó

que hi ha molts llenguatges per

fer un joc d’ordinador i la majoria són lliures, és a dir, no s’ha de pagar per utilitzar-los.

A més a més, existeixen molts programes i entorns que ajuden a crear un videojoc per

ordinador.

Qualsevol ordinador sempre tindrà uns perifèrics comuns, com per exemple el teclat o el

ratolí. Això fa que no s’hagi de crear un videojoc per a un ordinador en concret, sinó

que pot funcionar en qualsevol, sempre que compleixi uns requeriments mínims per a

cada joc.

Una característica molt bona dels ordinadors és que el seu sistema (o software) per

reproduir videojocs es pot actualitzar. D’aquesta manera podem jugar en un ordinador

antic sempre que li actualitzem el software corresponent.

En realitat, els ordinadors no són videoconsoles i això fa que es pugui fer més

complicada la feina ja que cap dels llenguatges de programació reproduïbles en

ordinadors està pensat específicament per crear videojocs, sinó que estan pensats per a

qualsevol aplicació i això fa que hi hagi codis que no siguin necessaris per fer un

videojoc, o que es necessitin més línies de codi per realitzar una funció que amb un

llenguatge exclusiu per a videojocs, on les funcions comunes en tots els videojocs ja

estarien programades. Per sort, existeixen llibreries de les quals s’utilitzarà una que

ajudarà a crear el nostre videojoc de la qual es parlarà més endavant.

L’ordinador és un suport essencial per la indústria dels videojocs ja que la majoria de la població moderna en té un com a mínim.

Page 9: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 7

Els ordinadors sempre tindran els millors gràfics pel simple fet que es poden actualitzar

tan el seu programari com canviar el hardware de l’aparell. A més a més, sempre se’ls

hi pot afegir més perifèrics.

La distribució del producte final sol ser una part complicada depenent de si vols

distribuir-lo per Internet o en DVD (opció més cara).

1.1.2. Els telèfons mòbils

Per altra banda, els jocs per telèfons mòbils s’han

popularitzat ràpidament gràcies a la incorporació

massiva dels telèfons intel·ligents al mercat (també

coneguts com smartphones). Aquests telèfons

mòbils tenen un sistema operatiu modern (per

exemple Windows o Android) pel que es poden crear

aplicacions i videojocs amb eines que faciliten la

seva creació.

La majoria d’aquests telèfons tenen una

característica en comú: la pantalla és tàctil. Això els

hi dóna un avantatge sobre els ordinadors, ja que els

jocs per als telèfons mòbils actuals poden utilitzar la

pantalla tàctil, al igual que la inclinació de l’aparell, com elements per interactuar amb

el joc; dues característiques que els ordinadors més comuns no tenen.

Els smartphones també poden actualitzar el seu sistema operatiu (igual que amb els

ordinadors), però no se’ls pot modificar cap component físic, i per tant, s’hauria de

comprar un telèfon nou. Això fa que els videojocs que es creen per telèfons mòbils

s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons intel·ligents, ja que

sense els components necessaris pel videojoc no s’executarà.

El videojocs clàssics van ser els primers en tornar a ser programats per poder jugar als smartphones.

Page 10: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 8

Llavors fer un videojoc per a qualsevol telèfon mòbil intel·ligent ja no és tan senzill, ja

que s’ha de conèixer el llenguatge de programació de cada sistema operatiu i les seves

versions, i les limitacions i característiques de cada telèfon.

A més a més, aquests aparells solen utilitzar un tipus de llenguatge de programació no

molt bo per crear videojocs. D’això ja es parlarà més endavant.

Finalment, la distribució dels jocs té més inconvenients que avantatges. L’avantatge

principal és que la distribució del videojoc la fa l’empresa propietària del sistema

operatiu corresponent, cosa que estalvia feina. Però malauradament aquesta distribució

és de pagament i si es vol que l’aplicació sigui gratuïta i tenir beneficis s’ha d’introduir

publicitat dins del joc.

1.1.3. Les consoles per videojocs

L’última opció de suport per a videojocs que es proposa són les consoles. Les consoles

per videojocs són específiques per executar videojocs i tenen característiques útils per

aquesta feina.

Les consoles per videojocs, com ara la

PlayStation o la Nintendo DS, tenen els

components físics necessaris per executar els

jocs més complexos que es dissenyen, per

això mai es bloquegen els videojocs en aquest

tipus de consoles.

El llenguatge de programació que utilitzen és

específic per crear videojocs, un gran avantatge, però per altra banda, és completament

diferent per a cada aparell. Això fa que s’hagi de conèixer el llenguatge específic i les

característiques de la videoconsola per la que es vol fer el videojoc.

Model negre de la PSP 3000. Algunes videoconsoles han tingut un gran èxit gràcies a que són portables i fàcils de manejar.

Page 11: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 9

L’inconvenient principal de crear un joc per a una videoconsola és que tot el procés

assumeix un cost molt elevat, ja que s’ha de pagar per obtenir les llibreries del

llenguatge de programació, no hi ha manuals gratuïts per aprendre a programar, i s’ha

de pagar a l’empresa propietària de la videoconsola per tal que validin si permeten

vendre el videojoc. A més a més s’ha de tenir en compte que el joc ha de tenir una certa

qualitat perquè permetin que es vengui.

L’única forma de distribuir el producte és en DVD o en el suport específic per la

videoconsola, fet que fa que la distribució del videojoc sigui caríssima. Només les grans

empreses creen jocs per a videoconsoles ja que poden assumir el cost del procés.

Aquesta és la opció menys desaconsellada sobretot si no s’és un professional com en el

cas d’un Treball de Recerca en fer videojocs i només recomanada a les empreses grans

que es dediquen exclusivament en fer videojocs. S’ha de tenir en compte que aquests

videojocs els fan un grup molt gran de programadors i dissenyadors experts.

1.1.4. Recomanació i decisió

Vistes aquestes tres opcions ara s’ha de triar per a quin suport es farà el videojoc, ja que

no es pot fer un sol videojoc que s’executi en tots els suports. S’hauria de fer el mateix

videojoc varies vegades.

Directament es descarta l’opció de crear un videojoc per a una videoconsola pel seu cost

elevat i pel temps que es necessita dedicar en crear un videojoc perquè sigui acceptat.

No es recomanable a no ser que es tingui una empresa de videojocs.

El suport recomanable a qualsevol persona interessada en crear un videojoc és

l’ordinador. Hi ha molts programes i diversos llenguatges de programació que es poden

fer servir per crear un joc d’ordinador i la majoria són gratuïts. Fer un videojoc per

ordinador és la millor manera per començar a aprendre a fer videojocs i té moltes

possibilitats diferents ja que té perifèrics bastant complexos que altres suports no tenen,

com ara el teclat i el ratolí.

Page 12: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 10

Per persones amb molts coneixements en la creació de videojocs en ordinador i amb

ganes de canviar de suport poden aventurar-se a crear un videojoc per telèfon mòbil.

Aquesta opció només és recomanable per a persones que ja tinguin força experiència en

la creació de videojocs.

En aquest punt del procés de crear un videojoc és quan s’ha de decidir quin suport

informàtic triar pel nostre joc.

El videojoc que es crearà com aplicació pràctica del treball serà per ordinador a causa

de les diverses possibilitats que ofereix aquesta opció, i d’ara endavant aquest treball es

centrarà en la creació d’un videojoc per ordinador o també conegut com a joc

d’ordinador.

Page 13: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 11

1.2. Llenguatges i entorns de programació

A continuació es parlarà dels llenguatges i entorns de programació a triar per realitzar

un joc d’ordinador.

1.2.1. Programes específics per jocs VS llenguatges de programació

Abans d’anar al propòsit del títol es fa una explicació més general sobre les diferents

maneres de fer un joc d’ordinador, introduint així els llenguatges de programació.

Ja se sap que es vol fer un joc d’ordinador, i ara s’ha de triar la manera de fer el nostre

videojoc. Es pot triar entre dues opcions ben clares:

• Utilitzar un programa especialitzat en la creació de videojocs

• Fer ús d’un llenguatge de programació genèric

Hi ha una gran quantitat de programes per crear jocs d’ordinador. Aquests programes

tenen una interfície intuïtiva de manera que sol ser bastant senzill el seu ús. D’aquesta

interfície se’n diu drag and drop (“Arrossega i deixa anar”).

D’aquests programes hi ha els especialitzats en dues dimensions, com ara el GameSalad

o el GameMaker, i els programes especialitzats en la creació de videojocs en tres

dimensions com per exemple el 3D Rad o Entidad 3D. El que fan aquests programes es

convertir el videojoc dissenyat amb el programa, en un codi de programa, per exemple

el programa Scratch converteix el joc creat en una aplicació en Java.

Tot i que pugui ser més atractiu utilitzar un programa especialitzat en la creació de

videojocs pel fet de què no faci falta tenir (grans) coneixements de programació,

aquestes eines són bastant limitades (fins i tot les de pagament), i és molt probable que a

l’hora de fer el videojoc amb aquests programes no es pugui fer alguna funció o

característica que s’ha pensat.

Page 14: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 12

La millor solució a aquest problema és saber

un llenguatge de programació útil per crear

videojocs. Aquesta opció permet fer realitat

qualsevol idea que es tingui pel videojoc, ja

que programant es pot fer qualsevol cosa.

Però és clar, no és fàcil conèixer un

llenguatge de programació amb profunditat i

saber programar qualsevol cosa; ni tampoc

aprendre a programar. La dificultat en fer un

videojoc programant no és només saber

programar, sinó pensar cada detall del videojoc, ja que tot el que es vulgui fer s’haurà de

programar.

Aquesta manera de crear un videojoc requereix un coneixement molt ampli en camps

com la matemàtica i la física, per exemple, ja que no hi ha un opció que apliqui la

gravetat als objectes o que mogui automàticament un personatge al prémer les tecles de

direcció. Tot això requereix tant conceptes de programació com d’altres camps.

Ara només s’ha de decidir si es vol utilitzar un programa especialitzat en la creació de

videojocs, o es vol fer el joc d’ordinador programant. Per a les persones que no han fet

mai cap videojoc i encara que sàpiguen programar se’ls recomana que facin el joc

mitjançant un programa per fer videojocs, ja que si estalviarà els problemes que té

programar, i a més a més, hi ha alguns programes que permeten introduir petits i

senzills codis al joc.

Per fer un videojoc programant s’ha de tenir un gran coneixement de programació, no

importa si no és l’adequat per fer un videojoc, ja que quan se sap un llenguatge amb

profunditat, es pot aprendre qualsevol altre llenguatge d’alt nivell fàcil i ràpidament.

Crear un videojoc d’aquesta manera és bastant entretingut però complicat, i per això

s’han de tenir moltes ganes de fer el joc. La resta del treball es centrarà en la creació

d’un joc d’ordinador mitjançant un llenguatge informàtic, ja que aquesta opció dóna un

gran ventall de possibilitats pel videojoc. Cal indicar que tots els videojocs actuals que

es comercialitzen es fan programant.

Creació del joc Tetris amb el programa Scratch. Encara que els programes tinguin eines limitades, els jocs bàsics poden ser creats tranquil·lament.

Page 15: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 13

Ara que se sap que es farà un joc d’ordinador fent ús d’un llenguatge de programació, és

el moment d’analitzar els diferents tipus de llenguatges de programació i veure quin té

les millors característiques i opcions per fer un joc d’ordinador. Cal recordar que el joc

que es vol fer ha de ser el millor possible. I per fi es pot anar al propòsit del títol

d’aquest apartat, o almenys a la primera part: els llenguatges de programació (per a

videojocs, per descomptat).

1.2.2. Llenguatges de programació

Un llenguatge de programació és un conjunt de codis que es poden combinar i executar

en un aparell electrònic i informàtic fent que aquest compleixi les accions que se li han

posat escrites (que s’han programat) en un llenguatge de programació admès per

l’aparell.

Una manera de classificar aquests llenguatges és segons la capacitat d’interacció directa

amb l’aparell. Aquests llenguatges són els de baix nivell i els d’alt nivell. Els

llenguatges de baix nivell interactuen directament amb el processador i la resta de

hardware de l’aparell. D’aquest tipus només existeixen dos: el llenguatge màquina

(zeros i uns) i el llenguatge Assemblador. Tot i ser els llenguatges que poden fer més

coses, els llenguatges de baix nivell ja no se solen utilitzar a causa de la seva gran

complexitat. D’altra banda es tenen els llenguatges d’alt nivell, que són aquells que

s’allunyen més dels zeros i els uns i intenten imitar el llenguatge humà, és a dir, aquests

llenguatges s’escriuen amb ordres semblants a quan parlem. En tots els llenguatges de

programació s’utilitza exclusivament l’anglès. El que fan aquests llenguatges és facilitar

la feina, ja que es programen amb codis fàcils d’entendre. Ara bé, aquests llenguatges

un cop compilats (o no), transformen el programa en llenguatge màquina ja que aquest

és l’únic llenguatge que els aparells entenen.

Hi ha llenguatges d’alt nivell que es diu que són de nivell mitjà ja que poden interactuar

un mica amb el hardware, però en realitat són d’alt nivell.

Page 16: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 14

Ara potser cal pensar que es el moment de triar quin nivell de llenguatge de

programació s’utilitzarà. Doncs no; per fer un videojoc, o en realitat qualsevol altre

cosa, s’utilitza un llenguatge d’alt nivell, ja que utilitzar tant codi en un llenguatge de

baix nivell acaba sent un codi incomprensible.

Tots els llenguatges de programació que es pugui conèixer són d’alt nivell: els

llenguatges de programació web, els llenguatges d’aplicacions informàtiques, els

utilitzats per crear sistemes operatius (en especial els dels mòbils), ...

Ara ja se sap que obligatòriament s’haurà d’utilitzar un llenguatge de programació d’alt

nivell, però quin? Aquest llenguatge no pot ser pas un llenguatge de programació web

com l’ HTML, però sí un per fer aplicacions i programes informàtics, ja que un videojoc

és una aplicació informàtica.

El joc que es vol crear ha de tenir un mínim

de complexitat, i per això s’ha d’analitzar els

llenguatges de programació que permetin

utilitzar la “programació orientada a

objectes” (abreujat POO). Aquest tipus te

programació permet al programador crear

objectes (informàtics) que tenen propietats i

accions. És molt semblant a la realitat, per

exemple: una televisió pot estar encesa o no,

per tant té la propietat d’encesa; i com accions

té les opcions d’encendre-la i d’apagar-la de

manera que canvia la propietat d’encesa a

vertadera si s’ha encès i a falsa si s’ha apagat. Doncs tot això també es pot fer

programant, i a més a més, permet no haver d’escriure varis cops el mateix codi, ja que

si en un llenguatge informàtic que no tingués POO es volgués fer un videojoc on

apareguessin “n” monstres iguals, s’hauria de copiar “n” vegades el codi d’un monstre.

Aquest tipus de programació permet crear objectes a partir de classes, per exemple es

podria crear una classe anomenada “fantasma” que tingués les propietats o atributs de si

La POO ens permet crear diversos objectes a partir d’una mateixa classe les quals es poden relacionar entre elles i amb altres objectes de diferents classes.

Page 17: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 15

està viu, les coordenades, i les accions (en programació és diu mètodes o funcions) de

moure, fer-se immortal, etc. A partir d’aquesta classe es podria crear els objectes de la

classe fantasma tantes vegades com es volgués sense repetir codis. Un altre avantatge és

que aquests llenguatges permeten crear classes a partir d’altres classes heretant els

atributs i funcions de la classe mare. Així per exemple, es pot programar una classe

“fantasma2” que tingui els mateixos atributs i les mateixes funcions que la classe

“fantasma” i que ha més a més tingui per exemple una funció per disparar.

Sabent tot això, és hora d’anar a enumerar els llenguatges de programació que es puguin

utilitzar. S’analitzarà els dos llenguatges més útils per crear un joc d’ordinador i més

coneguts, sobretot per la seva característica de tenir un sistema de POO molt bo: C++ i

Java.

El llenguatge C++ és considerat històricament el segon llenguatge orientat a objectes

(després del Simula67). Moltes vegades és pot trobar per Internet escrit com a C/C++ ja

que C++ és una ampliació del llenguatge C que incorpora la POO. Per tant C++ és una

molt bona opció per crear un joc d’ordinador. També hi ha una altre ampliació de C i

C++ que és C# que és més fàcil d’aprendre que el C++, però incorpora unes llibreries

especials de Microsoft les quals són de pagament. A més a més, el C# no se sol utilitzar

per fer videojocs ja que al ser un llenguatge més fàcil d’aprendre, és sinònim de tenir

menys opcions.

Per altra banda està el Java, un llenguatge de programació dissenyat a partir del C++.

Aquest llenguatge va ser creat des del principi com un llenguatge orientat a objectes. És

molt útil per crear aplicacions i sobretot ofereix la possibilitat d’incrustar alguns

programes (les applets de Java) en pàgines HTML. El Java és el llenguatge de

programació que té més llibreries disponibles. Finalment aquest llenguatge té una

característica que el fa molt especial, és un llenguatge multi-plataforma, això significa

que el nostre videojoc es podria executar en diferents plataformes com Windows, Linux,

Mac OS X, ... i també en diferents perifèrics com ordinadors, telèfons mòbils, ... sense

haver de tornar a programar-lo. El C++ també es pot executar en més d’un sistema

operatiu (menys que en Java) però només en ordinadors.

Page 18: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 16

Ara se sap que es té el C++, i el Java que és un llenguatge de programació multi-

plataforma ampliat del C++ i més senzill, segur, dinàmic, etc. Vist així sembla que el

Java és el millor llenguatge a utilitzar; o almenys ho pensava. La intenció inicial era fer

el joc d’ordinador amb Java al llegir les bones recomanacions del llenguatge per fer

aplicacions. El que passa és que Java és bo per fer aplicacions i programes que no

siguin videojocs. D’aquest aspecte és tan important parlar d’aquest aspecte que

s’explicarà en el següent apartat:

El problema de Java és que inicialment va ser pensat de manera que s’utilitzés

en molts perifèrics tant com en ordinadors com en impressores per exemple, i

necessita un intèrpret, ja que quan es compila un programa escrit en Java es crea

un “bytecode” (fitxer .class) que

pot córrer en qualsevol Màquina

Virtual Java. Això fa que mentre

s’està executant el programa,

s’està tornant a compilar. A causa

de no ser un llenguatge

completament compilat (és un

llenguatge interpretat i parcialment

compilat) alenteix els programes,

sobretot els videojocs.

Per què Java no és un bon llenguatge per fer videojocs?

Aquesta és una informació verificable per qualsevol programador de Java que

hagi programat amb gràfics, ja que és perfectament apreciable la lentitud amb

que s’executa el programa quan s’utilitzen molts gràfics.

Aleshores per fer el videojoc s’utilitzarà C++ que a més a més existeixen varies

llibreries molt útils per fer videojocs les quals es tractaran més endavant. Cal remarcar

que, la majoria de jocs d’ordinador que es comercialitzen (per exemple els de la saga

Call of Duty) estan programats en C++.

Missatge en francès “Java, patrocinador oficial dels gasteròpodes” (un tipus de mol·luscs). Durant uns quants anys el llenguatge Java ha estat considerat massa lent per a grans projectes.

Page 19: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 17

1.2.3. Entorns de programació per C++

Per programar en qualsevol llenguatge de programació es necessita un editor on

escriure. Aquest programa podria ser un tan senzill com el Bloc de notes, o un que

reconegui el llenguatge en el que s’està programant com el Notepad++. Però quan es

tracta de fer un projecte gran, el millor és utilitzar un entorn de programació o entorn de

treball, correctament dit, un entorn integrat de desenvolupament o IDE (integrated

development environment).

Els entorns de programació són programes que ajuden a l’hora de confeccionar un

projecte, per exemple un joc d’ordinador, ja que ajuden a classificar els diferents fitxers

del projecte (workspace), no només els de codi, sinó també els arxius multimèdia com

les imatges o l’àudio. També ajuden a l’hora de programar i mostren els errors en el

codi. Actualment tots porten compiladors dels llenguatges pensats per ser utilitzats en

l’entorn, i això fa que per compilar i executar tot el projecte només s’hagi de prémer un

botó. A més a més, permeten executar el programa en mode de proves mostrant els

valors actuals de les diferents variables o executant el programa fins a una línia

concreta.

Tot això és gràcies a que els

IDE es componen d’un editor

de text, un compilador, un

intèrpret (en els llenguatges

interpretats), un depurador

(troba errors) i a tenir unes

interfícies gràfiques d’usuari

fàcils d’utilitzar. A més a

més existeixen entorns

online que inclouen un client

online per executar els

programes.

Projecte en C++ obert en l’entorn de programació Code::Blocks (versió 1.0). En la majoria dels IDE es pot adaptar la interfície gràfica al gust de l’usuari, ampliant així el nombre de programadors que s’inclinen a fer ús d’aquest tipus d’eina.

Page 20: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 18

Hi ha molts entorns disponibles per programar en C++ i quin utilitzar depèn

exclusivament de la comoditat del programador amb l’entorn. Tres dels entorns de

programació més coneguts són:

• Microsoft Visual C++ (MSVC o VC++)

• Dev-C++

• Code::Blocks

El Microsoft Visual C++ inclou biblioteques de Windows i a més a més té un

compilador propi. Aquest entorn està programat en C++ cosa que fa que s’executi més

ràpid, i també està molt ben adaptat al sistema operatiu Windows. Per altre banda, el

MSVC és un entorn de pagament encara que disposa d’una versió Express gratuïta

suficientment bona per treballar a nivell no professional, com és el cas del videojoc

d’exemple del Treball de Recerca.

El Dev-C++ és l’entorn clàssic

del Windows que pot utilitzar

qualsevol compilador basat en

GCC (GNU Compiler Collection).

Aquest entorn està desenvolupat

en Delphi fet que fa que vagi més

lent que altres entorns. Té una

interfície d’usuari molt fàcil

d’entendre i utilitzar i està

disponible en castellà a part de ser

completament gratuït. El problema

d’aquest entorn és que des del

2005 el seu creador Bloodshed Software va deixar d’actualitzar-lo però com que

l’entorn és de llicència lliure un programador independent va continuar actualitzant-lo

no oficialment però amb afegits molt ben valorats.

A causa de la deixadesa de l’entorn anterior, es va decidir crear el Code::Blocks, un

entorn amb un aspecte molt modern, multi-plataforma, i a més a més està programat en

C++ i per això és un dels entorns que s’executa més ràpid. Tot i ser un entorn

L’entorn Dev-C++ accepta els compiladors de la col·lecció GNU que poden compilar diversos llenguatges de programació com Objective-C++, Java, Ada, o C++ entre d’altres.

Page 21: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 19

completament gratuït, no existeix cap versió en castellà i la interfície pot semblar molt

confusa.

Qualsevol dels tres entorns esmentats és ideal per crear el videojoc i per decidir en quin

quedar-se el millor és provar els tres i utilitzar el que sigui més còmode.

Finalment, per al videojoc que es crearà com aplicació pràctica d’aquest treball

s’utilitzarà inicialment l’entorn Dev-C++ encara que podria variar depenent de les

situacions que puguin aparèixer en el desenvolupament pràctic del videojoc.

Page 22: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 20

1.3. Requeriments per programar en C++

Arribats a aquest punt, s’ha d’instal·lar les eines necessàries per poder començar a

realitzar el nostre projecte i per tant per poder programar en C++.

1.3.1. Instal·lació de l’entorn Dev-C++

El primer de tot és instal·lar l’entorn triat per programar al Windows, en aquest cas el

Dev-C++. Per fer això es descarrega la versió 5.5.3 de l’entorn (des de la direcció web

http://orwelldevcpp.blogspot.com.es/2013/11/dev-c-553-released.html) ja que serà la

versió que s’utilitzarà per al videojoc d’exemple per aquest treball (última versió de

l’entorn disponible a http://orwelldevcpp.blogspot.com.es/). Es tria l’enllaç de

descarrega que posa setup i que porta incorporat el compilador MinGW32 versió 4.7.2.

Un cop descarregat l’instal·lador s’executa i es recomana realitzar la instal·lació en

mode complert (Full) però si es vol es pot instal·lar amb una altra configuració, però

com a mínim amb el mode Minimal (es necessari instal·lar el compilador).

És necessari tenir marcada la casella del compilador (marcada en vermell en la imatge) perquè si no s’hauria d’instal·lar-lo manualment per poder compilar el nostre projecte des de l’entorn.

Page 23: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 21

1.3.2. Explicació i instal·lació de la llibreria Allegro 5

Un cop instal·lat l’entorn a l’ordinador es necessitarà utilitzar una llibreria

especialitzada en la creació de videojocs mitjançant C++. Això és necessari ja que el

llenguatge C++ no inclou codis pel maneig senzill d’imatges i sons i d’esdeveniments,

per exemple, no es pot detectar si una tecla està premuda o no. Per aquest motiu és

necessària alguna llibreria que ens permeti manejar i mostrar imatges en pantalla,

detectar l’estat dels perifèrics, i dibuixar figures geomètriques en la pantalla entre

d’altres coses.

Existeixen diverses llibreries que realitzen algunes de les funcions esmentades, com

controlar l’estat del teclat, i d’altres per manejar imatges en la memòria (carregar

imatge, mostrar-la, escalar-la, etc.) però n’hi ha poques que tinguin totes les funcions

juntes. Entre d’elles hi ha les llibreries SDL i Allegro les quals s’utilitzen principalment

per crear videojocs en dues dimensions. Per començar el millor és utilitzar la llibreria

Allegro perquè és més fàcil de comprendre i utilitzar que la llibreria SDL, i a més a més

les dues tenen les mateixes funcions. Si el que es vol és crear un videojoc en tres

dimensions es poden utilitzar les llibreries DirectX, OpenGL o Unity 3D entre d’altres.

En el cas d’aquest treball com es vol fer

un videojoc senzill en dues dimensions

s’utilitzarà la llibreria Allegro, de codi

obert, de la qual s’utilitzarà la versió

5.0.10 que és la més estable. A més a

més aquesta llibreria és multi-

plataforma per la qual cosa pot ser

utilitzada en diversos sistemes operatius

i apart, els programes que la utilitzen

també es poden executar en varis

sistemes operatius.

A partir d’ara s’anomenarà la llibreria amb el nom d’Allegro 5 ja que té diferències

substancials amb les versions anteriors. Per instal·lar la llibreria Allegro 5 es descarrega

La llibreria Allegro 5 permet la creació de diversos gèneres de videojocs.

Page 24: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 22

l’arxiu comprimit des de http://cdn.allegro.cc/file/library/allegro/5.0.10/allegro-5.0.10-

mingw-4.7.0.zip que serà el adequat per l’entorn i el compilador o s’obté de la carpeta

“Allegro” del CD adjunt al treball. Es pot descarregar l’última versió d’Allegro a

https://www.allegro.cc/files/.

Un cop descarregat l’arxiu es

descomprimeix mitjançant un

programa de descompressió

d’arxius .zip com ara el WinRAR.

Es copien les tres carpetes (bin,

include i lib) de dins de la

carpeta creada al descomprimir

l’arxiu i s’enganxen dintre de la

carpeta del compilador

MinGW32 a C:\Archivos de

programa\Dev-Cpp\MinGW32 o on s’hagi instal·lat l’entorn i el compilador. Quan surti

un missatge per confirmar el reemplaçament de les carpetes s’escull Sí a tot.

Per acabar d’instal·lar la llibreria

Allegro 5 s’ha de definir una

opció per enllaçar la llibreria

amb el compilador. Per fer això

és s’executa l’entorn per primer

cop ja instal·lat i es va premen

Següent fins que s’obri el

programa i llavors es va a Eines

>> Opcions del compilador i de

la pestanya Compilador es

selecciona l’opció Afegeix això a

la línia d’ordres de l’enllaçador si no està seleccionada i just a sota ha de quedar escrit:

“-static-libstdc++ -static-libgcc -lallegro-5.0.10-monolith-md-debug” (sense cometes)

Aquesta serà l’opció que s’utilitzarà de moment però al final del projecte es realitzarà

una compilació estàtica la qual cosa s’explicarà més endavant.

Les carpetes bin, include i lib inclouen els arxius necessaris per treballar amb els codis d’Allegro 5 i s’han de copiar a dins de la carpeta del compilador MinGW32.

Per tal que el compilador relacioni el projecte amb la llibreria d’Allegro, s’ha d’enllaçar el compilador i la llibreria modificant la línia d’ordres de l’enllaçador. La llibreria monolith enllaça amb totes les llibreries d’Allegro 5 (àudio, imatges, text ...).

Page 25: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 23

1.3.3. Opcions a definir per programar un videojoc

Ja està casi tot per començar a programar però abans s’ha de definir unes opcions

perquè tot funcioni. Es crea un nou projecte (que serà el videojoc) anant a Fitxer >>

Nou >> Projecte... i a la pestanya Basic es tria Empty Project per començar amb un

projecte buit des de zero. S’assegura que està triat l’opció Projecte C++ i s’introdueix

el nom del projecte a la casella corresponent. Es prem D’acord i es guarda el projecte

dins d’una carpeta buida que s’ha de crear. Ara només s’ha d’anar a Projecte >>

Opcions del projecte i la pestanya Compilador. A la opció Nivell d’optimització (-Ox)

de la pestanya Genera

codi, es tria l’opció

Highest (fast) perquè

s’optimitzi el codi a l’hora

de compilar-lo, i a la opció

Sense finestra de consola

(-mwindows) de la

pestanya Enllaçador es tria

Yes perquè no es mostri la

finestra negre de consola.

Finalment es torna a la

pestanya General i a Tipus

es selecciona GUI Win32.

Es prem D’acord i es

guarda el projecte i ja es pot començar a programar en C++ amb Allegro 5.

El tipus d’aplicació que es vol crear per un videojoc és el GUI Win32 que permet treballar amb finestres (fins i tot en pantalla completa) enlloc del Símbol del sistema (línia d’ordres).

Page 26: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 24

1.4. Gèneres de videojocs

Arribats a aquest punt s’ha de decidir un primer aspecte sobre el videojoc que es vol

crear, el seu gènere.

Els gèneres de videojocs són una forma de classificació, que designen un conjunt de

videojocs que posseeixen una sèrie d’elements comuns. Al llarg de la història dels

videojocs aquells element que han compartit diversos videojocs han servit per

classificar com un gènere als que els han seguit en estil i forma, de la mateixa manera

que ha passat amb la música o el cinema.

Tot i que actualment la majoria de videojocs siguin una barreja de diferents gèneres de

videojocs, es poden classificar en tres grans grups:

• Els videojocs d’acció

• Els videojocs de simulació

• Els videojocs d’aventura

1.4.1. Videojocs d’acció

Un videojoc d'acció és un videojoc en què el jugador ha d'utilitzar la seva velocitat,

destresa i temps de reacció. El gènere d'acció és el més ampli i complet del món dels

videojocs, englobant molts subgèneres com els videojocs de lluita, de trets i els

videojocs beat 'em ups entre d’altres.

Molt sovint, els videojocs d'acció utilitzen la violència com la seva principal

característica d'interacció, més específicament el combat amb armes de foc o cos a cos.

Els videojocs de lluita, com indica el seu nom, recreen combats entre personatges

controlats tant per un jugador com per la computadora. El jugador veu als combatents

des d’una perspectiva lateral, com si es tractes d’un espectador.

Page 27: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 25

En els videojocs de trets en primera persona, coneguts també com FPS (First Person

Shooter), les accions bàsiques són moure al personatge i utilitzar una arma, una arma es

mostra a la pantalla en primer pla i el jugador pot interactuar amb aquesta. Aquesta

perspectiva té per objectiu donar la impressió de ser el personatge i així permetre una

forta identificació del jugador al videojoc. Els gràfics en tres dimensions augmenten

aquesta impressió.

Imatge del videojoc de trets en primera persona Call Of Duty: Black Ops 2.

D'altra banda, els videojocs de trets en tercera persona, coneguts també com TPS (Third

Person Shooter), es basen en l'alternança entre trets i baralla o interacció amb l'entorn,

però a diferència dels jocs de mira (primera persona), es juga amb un personatge vist

des del darrere i en ocasions, des d'una perspectiva isomètrica.

Els videojocs beat 'em up també anomenats "videojocs de lluita a progressió" són

videojocs similars als de lluita, amb la diferència que en aquest cas els jugadors han de

combatre amb un gran nombre d'individus mentre avancen al llarg de diversos nivells.

Un gènere similar a aquest és el shoot ‘em up que es basa en el continu ús d'una arma,

passant la major part del temps disparant.

En el gènere d’acció també es podrien incloure els videojocs originàriament de

màquines recreatives, el videojocs arcade. Aquests es caracteritzen per la simplicitat

d'acció ràpida de jugabilitat, això va obtenir la glòria en l'època de 1980. No requereix

Page 28: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 26

història, solament jocs llargs o repetitius. El principal objectiu d'aquest tipus de jocs en

general és aconseguir la major quantitat de punts.

Els videojocs de sigil són un gènere relativament recent. Aquests videojocs es basen en

el sigil i l'estratègia en lloc de buscar la confrontació directa amb l'enemic. Normalment

aquests videojocs apareixen com un subgènere dels videojocs de trets, encara que es pot

trobar videojocs com Commandos, que es pot classificar alhora com joc d'estratègia i

d'infiltració.

Imatge del videojoc d’acció Tom Clancy’s Splinter Cell: Chaos Theory. Aquest videojoc és la tercera entrega de la col·lecció Tom Clancy’s Splinter Cell, on el sigil és la base de tota la saga. Tot i això aquest videojoc també és considerat un joc de trets en tercera persona (TPS).

1.4.2. Videojocs de simulació

Un videojoc de simulació és un gènere de videojoc que conté una barreja d'habilitat,

atzar i estratègia per simular aspectes de la realitat, com poden ser les activitats

quotidianes de la vida real; viatjar, navegar, volar, dirigir, gestionar, etc.

Els videojocs de simulació musical giren entorn de la música, ja siguin de tipus

karaoke, de ball o en els que es toquen instruments musicals. La majoria d'aquests jocs

es caracteritzen per necessitar accessoris especials compatibles amb les consoles i per

Page 29: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 27

oferir l'opció multijugador, en què els jugadors intenten aconseguir el major nombre de

punts possible per mitjà de la seva actuació.

La simulació de construcció és un gènere molt popular en PC, on el joc li proporciona

al jugador totes les eines per construir un projecte, el qual ha de ser tan semblant a la

realitat com sigui possible, en el qual es consideren des despeses de construcció i

manteniment, fins a una línia de temps, física i clima que afecta totes les decisions que

prengui. La particularitat de poder experimentar, prendre decisions i afectar el

desenvolupament de la simulació, els fa tremendament addictius. Jocs des de simulació

de jardins, fins a

construccions de cases,

parcs i ciutats. Els més

populars sens dubte són Sim

City (on l'usuari pren el

paper d'alcalde i ha

d'administrar una ciutat),

Civilization (gestionar una

civilització completa, des

del neolític fins a

l'actualitat) o Age of Empires.

Els videojocs simuladors de vida s'enfoquen en controlar un personatge amb capacitats

i emocions humanes, i controlar tots els aspectes de la seva vida, des d'on viurà, que

estudiarà, fins amb qui es casarà. El realisme col·locat en aquests jocs i una línia de

temps que permet al personatge evolucionar, menjar, dormir, conviure amb altres

persones, envellir i fins i tot morir, fa que moltes persones juguin el que els agradaria

experimentar en la seva vida pròpia, però sense riscos.

També són considerats videojocs de simulació els videojocs d’esports i carreres, els

d’agilitat mental i els jocs educatius. Aquesta última opció (els jocs educatius) es dubte

de què sigui un gènere de videojoc, ja que el concepte no està molt desenvolupat.

Imatge del videojoc Age of Empires II: The Age of Kings basat en la simulació d’una civilització passant per diferents períodes històrics.

Page 30: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 28

1.4.3. Videojocs d’aventura

Els videojocs d'aventura són un gènere de videojocs caracteritzats per la investigació,

l’exploració, la solució de trencaclosques, la interacció amb personatges del videojoc, i

un enfocament en el relat en comptes de desafiaments basats en reflexos. És important

observar que aquest terme no depèn del tema que tracta el videojoc.

Els videojocs d’aventura van ser els

primers a sortir al mercat, però els d’aquell

moment no eren com els que es coneixen

avui en dia amb un munt de gràfics, sinó

que eren videojocs d’aventura de text o

conversacionals. En aquests videojocs el

jugador tecleja l’acció a realitzar i el

videojoc la interpreta i descriu textualment

la nova situació i de vegades acompanyat

amb una imatge.

Posteriorment va aparèixer els videojocs d’aventura gràfica els quals ja s’utilitzava el

ratolí i no era necessari la introducció d’ordres. A més a més, aquests ja incloïen gràfics

més avançats però no l’ús de les tecles de direcció.

Els videojocs de rol es caracteritzen per la interacció amb el personatge, una història

profunda i una evolució del personatge a mesura que la història avança. Per aconseguir

l'evolució generalment es fa que el jugador s'endinsi en una aventura on anirà coneixent

nous personatges, explorant el món per anar ajuntant armes, experiència, aliats i fins i

tot màgia.

Els RPG clàssics, inspirats en els jocs de tauler, realitzen les batalles per torns, és a dir,

el jugador usa el seu equip i habilitats apreses per a atacar mitjançant una sèrie d'ordres i

després ha de quedar estàtic i esperar a rebre l'atac de l'altre jugador o de la CPU (de la

pròpia màquina). El millor exemple d'això és Final Fantasy.

Mystery House per a l’ordinador Apple II va ser la primera aventura conversacional que va utilitzar gràfics en els començaments de l’era de la computació domèstica.

Page 31: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 29

Si bé en l'actualitat encara hi ha videojocs de rol clàssics, la majoria ara fan servir el

combat en temps real, és a dir, no hi ha pauses i els dos contrincants ataquen al mateix

temps.

En una altra subcategoria dels videojocs de rol s'han posat de moda els RPG en línia o

MMORPG (Massive Multiplayer Online RPG) on cada jugador crea un personatge i

mitjançant una connexió a

Internet, entra a un món on

milers de jugadors s'uneixen a

l’aventura, exploren,

intercanvien i evolucionen

junts. Ara per ara el joc més

conegut i jugat d'aquest

subgènere és World of

Warcraft, basat en el món

creat per Blizzard per als seus

jocs d'estratègia de la saga

Warcraft.

Per acabar, en els videojocs de plataformes el jugador controla a un personatge que ha

d'avançar per l'escenari evitant obstacles físics, ja sigui saltant, escalant o ajupint-se.

Aquest tipus de gènere pot estar dirigit, o cap a l'acció

(generalment quan l'usuari pot realitzar atacs contra

els enemics), o cap a l'aventura (quan l'usuari no pot

atacar, sinó que només es pot moure), per la qual cosa

no es fàcil classificar les plataformes com un joc

d'aventura o d'acció. Inicialment els personatges es

movien per nivells amb un desenvolupament

horitzontal, però amb l'arribada dels gràfics 3D aquest

desenvolupament s'ha ampliat cap a totes les

direccions possibles.

Imatge del videojoc World of Warcraft. Amb 7,7 milions de subscriptors, World of Warcraft és amb diferència el joc en línia per subscripció amb el major registre d'usuaris, tenint el Rècord Guiness per al MMORPG més popular.

Imatge del videojoc de plataformes de dues dimensions New Super Mario Bros. Un joc d’aventura que també inclou acció.

Page 32: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 30

1.4.4. Recomanació i decisió

Ara ja s’ha vist les diferents categories de videojocs d’ordinador i es pot escollir quina

triar pel videojoc que es vulgui crear. Per decidir quin tipus de videojoc es vol realitzar

s’ha de tenir en compte els coneixements dels creadors com el temps i ganes que se li

vol dedicar.

Si el que es vol es crear un videojoc amb un llenguatge de programació, que és el que

tracta aquest treball, fer qualsevol tipus de videojoc en tres dimensions requereix un

grau de coneixement en programació, matemàtiques, física i lògica extremadament gran

a part de què els videojocs 3D sempre es creen a partir de programes especialitzats com

Unity3D. D’aquesta manera es recomana descartar realitzar un videojoc de simulador i

es recomana realitzar un joc en dues dimensions que sigui d’acció i/o d’aventura.

Per qui no tinguin gaire coneixement i experiència en aquest camp de la informàtica es

podria realitzar un videojoc de tipus arcade com el Tetris o el Tres en Ratlla on no fa

falta gaires coneixements físics i matemàtics i tampoc requereixen un coneixement

professional del llenguatge de programació. Tot i així no s’ha d’oblidar que en

qualsevol videojoc és necessària la lògica per tal que funcioni, fins i tot els que es fan

utilitzant programes de creació de videojocs.

Qui tingui més coneixement i més ganes pot intentar crear un joc d’aventura gràfica

senzilla o fins i tot crear un videojoc de plataformes.

S’ha de triar el gènere de videojoc que es vol crear i fer-se la idea de com serà i quin

grau de dificultat requerirà. La decisió és a les mans de cadascú.

El videojoc que es farà de mostra per aquest treball serà un videojoc d’acció i aventura

en dues dimensions del tipus plataformes, que requerirà molt ús de les matemàtiques, la

física i la lògica i un grau alt de programació per saber combinar els aspectes anteriors.

Page 33: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 31

1.5. Advertències per crear un videojoc

Desenvolupar un videojoc mai ha estat una feina senzilla ni molt agradable. A més a

més és una ciència/art encara molt nova i com que la industria de la creació de videojocs

és encara molt recent, els programes i processos que s’utilitzen estan plens d’errors,

limitacions que no haurien d’existir i excepcions.

A l’hora de programar un videojoc més del 50% del temps invertit en el seu

desenvolupament tracta sobre solucionar problemes inesperats de programació o errors

en el motor del joc que s’utilitzi.

Per evitar al màxim els errors s’ha d’analitzar correctament el problema (crear el

videojoc) ja que si un problema està ben analitzat molt més fàcil de programar i molt

més ràpid de codificar i executar. Amb els jocs hi ha un problema afegit: el programa a

crear haurà d’executar tant les respostes a l’usuari com les sortides per pantalla molt

ràpidament (com a mínim a 24 actualitzacions per segon). Aquest fet és molt important

pel videojoc ja que d’això pot dependre que un joc sigui atractiu o no.

1.5.1. Les llicències dels recursos informàtics

Al crear un videojoc s’ha d’assegurar de respectar la llicència de les eines que

s’utilitzin. Una gran quantitat de software (com Unity) prohibeix l’ús comercial (vendre

un videojoc creat amb aquest programari) sense pagar una llicència cara. Aquí és on

realment pot ajudar el software de codi obert (com és el cas de la llibreria Allegro), ja

que permet l’ús comercial.

El mateix passa si s’utilitzen imatges o sons d’Internet. Sempre s’ha de tenir en compte

de respectar la llicència que tenen tots els arxius i codis que s’utilitzen pel programa i

que no són creats pel propi desenvolupador. A més a més, un joc pot estar inspirat en un

altre però sense copiar les idees del joc inspirador ni els noms dels personatges.

Page 34: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 32

1.5.2. Recomanacions a l’hora de programar

Quan es vol realitzar un programa (un videojoc és un programa) en qualsevol llenguatge

de programació hi ha certs errors que s’han d’evitar i recomanacions a seguir, sobretot

si es tracta d’un gran projecte com el videojoc que es farà com aplicació pràctica

d’aquest treball.

És important comentar les línies de codi (escrivint //el comentari o /*el comentari*/)

que s’escriuen per identificar-les ràpidament si després es repassa aquelles línies. Tot i

així és una pràctica molt freqüent els comentaris excessius per part d’alguns

programadors, cosa que pot generar confusió sobretot si es canvia una línia de codi i no

es canvia el comentari.

En programació, els números màgics són aquells que s’escriuen en un codi i que no se

sap que volen dir, és a dir, a què es refereix aquell número. Per evitar aquest problema

la solució no és introduir més comentaris sinó assignar els números a variables, i que

aquestes variables tinguin noms que ajudin a identificar que són; per exemple en lloc

d’escriure new Player(5) on es pot identificar que es crea el personatge del joc però no a

què es refereix el 5, és millor escriure primer max_vides = 5 i a continuació new

Player(max_vides). D’aquesta manera queda clar que el 5 es refereix al nombre màxim

de vides que pot tenir el jugador.

Una última recomanació abans de posar-se a programar en especial un videojoc és

evitar al màxim l’ús dels condicionals if (si) i else (si no). Per si mateix un videojoc

tindrà moltes sentències condicionals però un ús abusiu de les if pot generar molta

confusió de tal manera que es pugui arribar a tenir deu sentències if una dins de l’altre.

Per evitar això el millor és utilitzar bucles, com és el cas dels bucles while, do while, for

i switch. Per exemple, amb el switch es pot evitar un munt de comparacions de tipus if

... ... else if ... ... else if ... i així contínuament. Tot i això s’ha de tenir en compte de no

crear un bucle infinit del qual el programa no surti mai, ja que això pot provocar un

excés d’informació a la memòria. Per exemple: bool carregant = true; while(carregant)

{new Enemic();} carregant = false; El bucle while és infinit perquè carregant és

vertader. Això també provoca el col·lapse de la memòria ja que crea infinits enemics.

Page 35: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 33

2. PART ESPECÍFICA

En aquesta segona part del treball més específica es decidiran les especificacions del

joc, és a dir, es pensarà tot el joc abans de crear-lo. A continuació s’explicarà com

plantejar els algorismes que representin les idees plantejades pel videojoc ajudant-se

dels diagrames de flux i mostrant algunes línies de codi. Al llarg d’aquest apartat

s’aniran esmentant funcions de la llibreria Allegro 5 que realitzin els algorismes

desitjats. Per acabar es comentaran les diverses maneres de compilar i distribuir el

videojoc.

2.1. Especificacions del joc

Arribats aquí toca centrar-se en el nostre videojoc i definir com serà. Per fer això en

aquest apartat es veurà tres conceptes molt importants:

• La concepció de la idea del videojoc

• El disseny

• La planificació

El procés és similar a la creació de programari en general, encara que difereix en la gran

quantitat d'aportacions creatives (música, història, disseny de personatges, nivells, etc.)

necessàries.

2.1.1. La concepció

En aquest primer apartat només s’ha de plantejar les idees sobre el videojoc que es vol

crear, les decisions finals es prendran al següent apartat, el disseny del videojoc.

Com que per fer un bon videojoc no és possible posar-se directament a l’ordinador i

començar a programar de manera improvisada, abans s’ha de donar forma al videojoc

Page 36: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 34

escrivint els seus aspectes en un full. En aquesta etapa cal definir els aspectes

fonamentals que conformaran el videojoc, entre els quals es troben:

• Gènere: Dins de quin gènere o gèneres es desenvoluparà el joc.

• Gameplay: El que generarà diversió a l'hora de jugar.

• Storyboard: Algunes idees soltes sobre com ha de lluir el joc pel que fa a

personatges, ambientació, música, etc.

Del primer punt sobre els gèneres de videojocs ja s’ha parlat en l’apartat 1.4 i s’ha

decidit que es realitzarà un videojoc de plataformes. Com ja s’ha parlat en aquell

apartat, el videojoc també podria ser una mescla de diferents gèneres, que en aquest cas

s’hauria d’especificar les característiques que s’emprarien de cada gènere.

La jugabilitat (o bé en anglès Gameplay) és un terme emprat en el disseny i anàlisi de

jocs que descriu la qualitat del joc en termes de les seves regles de funcionament i del

seu disseny com a joc. Es refereix a totes les experiències d'un jugador durant la

interacció amb sistemes de jocs.

L’objectiu d’aquest segon aspecte és

decidir les característiques del joc

que el faran entretingut i atractiu de

manera que l’experiència del jugador

amb el videojoc tingui èxit i

produeixi ganes de jugar-hi més (no

es tracta d’aconseguir que el jugador

estigui tota l’estona jugant al

videojoc creat sinó que tingui una

bona opinió del joc i que el

recomani a més persones).

Per analitzar i caracteritzar l'experiència del jugador, la jugabilitat posseeix els següents

atributs que ajuden a analitzar-la:

Atributs de la jugabilitat

• Satisfacció: complaença del jugador davant el videojoc complet o en alguns

aspectes concrets d'aquest, com mecàniques, gràfics, sistema interactiu, història,

Satisfacció

Aprenentatge

Efectivitat

Immersió Motivació

Emoció

Socialització

Superfície d’acció de la jugabilitat d’un joc. Quan més gran sigui la superfície (de color blau) més bon joc serà. Aquesta superfície depèn de set atributs que es repassen a continuació.

Page 37: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 35

etc. La satisfacció és un atribut amb un alt grau de subjectivitat, no només per la

dificultat de mesurar, sinó perquè també influeixen bastant els gustos i

preferències del jugador. A més, aquest atribut es pot veure afectat, per exemple,

pel gènere o tipus de joc, l'aspecte estètic, la història o simplement l'atracció o

proximitat de la temàtica o estil del joc sobre el jugador. Per mesurar la

satisfacció necessitem partir d'un context de joc determinat: un jugador que juga

a un determinat joc amb uns dispositius específics, en unes determinades

condicions socials, en una plataforma de joc concreta, ...

• Aprenentatge: Facilitat per comprendre i dominar el sistema i la mecànica del

videojoc, és a dir: objectius, regles i formes d'interaccionar amb el videojoc.

L'aprenentatge mostra la capacitat del videojoc a presentar i transmetre el

sistema i la mecànica del joc al jugador i que aquest, fàcilment pugui arribar a

comprendre'ls, assimilar i dominar per poder interactuar de la manera més

correcta i precisa possible amb el videojoc. Es defineix la funció que representa

el coneixement del jugador sobre el joc al llarg del temps de joc com la "corba

d'aprenentatge".

• Efectivitat: Temps i recursos necessaris per oferir diversió al jugador mentre

aquest aconsegueix els objectius proposats en el videojoc i arriba a la meta final

d'aquest. L'efectivitat del joc mostra el grau d'utilització dels recursos per poder

embolicar al jugador en el joc i fer que es diverteixi, és a dir, que el joc pugui

complir els seus objectius: divertir i entretenir a tot jugador que ho juga. Un

videojoc efectiu és aquell que és capaç de captar l'atenció del jugador des del

primer instant, convencent-li que segueixi jugant al joc. Alhora, el joc amb alt

grau d'efectivitat ha entretenir, fins i tot portades moltes hores de joc.

• Immersió: Capacitat per creure’s el que es juga i integrar-se al món virtual

mostrat en el joc. La immersió és la característica del joc relacionada amb fer

que el jugador es vegi embolicat en el món virtual, tornant-se part d'aquest i

interactuant amb ell. En aquest moment el jugador es fa còmplice de la mentida

del món virtual, fent veritat i produint-se una inversió de creença, la qual

provoca que el jugador, encara que sàpiga que al que juga és fals, ho prengui

Page 38: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 36

com una cosa real i s'impliqui en això amb totes les seves habilitats per superar

el repte proposat, estant concentrat o embolicat en la tasca proposada pel

videojoc.

• Motivació: Característica del videojoc que mou a la persona a realitzar

determinades accions i persistir en elles per a la seva culminació. Per aconseguir

una bona motivació, el joc ha de disposar d'un conjunt de mecanismes que

generin una perseverança en l'acció per part del jugador per superar els reptes

del joc, és a dir, s'introdueixen factors que assegurin el manteniment d'un

comportament en l'apreciació del procés de joc.

• Emoció: Impuls involuntari originat com a resposta als estímuls del videojoc

que indueix sentiments i que desencadena conductes de reacció automàtica. Els

jocs generen diferents estímuls durant la dinàmica del joc per desencadenar

reaccions involuntàries automàtiques i diferents sentiments i emocions per part

del jugador per modificar la seva actitud i comportament quan juga: alegria,

pressió, frustració, por, intriga, curiositat, ... per construir un univers virtual

capaç de commoure, emocionar, fer somriure o plorar al jugador si cal.

• Socialització: Atributs i elements del joc que fomenten el factor social o

l'experiència en grup, la qual cosa provoca apreciar el videojoc de diferent

manera, gràcies a les relacions que s'entaulen amb altres jugadors o amb altres

personatges del joc i que complementen les accions a realitzar i els reptes a

resoldre en la dinàmica del videojoc. La socialització d'un joc permet a un

jugador tenir una experiència de joc totalment diferent quan juga un joc sol o en

companyia d'altres jugadors i fomenta noves relacions socials interactuant amb

ells, ja sigui de manera competitiva, col·laborativa o cooperativa. D'altra banda,

la socialització també és present en com es projecten les relacions socials que

tenim amb el grup en els personatges del videojoc, com pot ser el context en què

es realitza el joc, per obtenir informació, demanar ajuda, negociar en la

compra/petició d'objectes, la implicació d'altres personatges o si els beneficia

que el jugador compleixi els objectius del joc.

Page 39: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 37

Ara s’ha de plantejar les idees que faran que el videojoc de plataformes tingui una bona

jugabilitat, és a dir, compleixi el màxim possible els punts anteriors. A continuació

analitzem que s’ha de fer per complir els atributs de la jugabilitat i quines

característiques s’aplicaran al videojoc de mostra per tal de complir-los:

Aplicació dels atributs de la jugabilitat al videojoc

1. Per satisfer al jugador s’ha de pensar sobretot en el desenvolupament de la

història durant el joc, en especial per un joc de plataformes, ja que l’element clau

d’un bon videojoc de plataformes és la progressió en el joc amb diferents

escenaris i amb nous objectius i situacions que el jugador no preveia. Aquests

elements de progressió i situacions sobtades solen generar satisfacció del

jugador.

Pel que fa el videojoc que es farà com aplicació pràctica d’aquest treball es dividirà en

parts de manera que el jugador es vegi involucrat en diferents escenaris i amb situacions

més complicades segons vagi avançant en el joc. També s’inclourà algun element o

situació sorpresa com la presència sobtada de molts enemics alhora, un canvi d’escenari

sobtat i un element present en un únic nivell i complicat d’aconseguir que faci al

personatge immortal o li doni algun poder especial.

2. Per tal que el jugador se senti còmode amb el

joc cal que entengui que ha de fer i com ho

ha de fer per avançar en el joc. El videojoc

ha de transmetre al jugador les instruccions

per jugar, no només escrites, sinó també per

exemple que un element que danya al

personatge en el videojoc no sigui de color

verd sinó que sigui d’un color que el jugador

pugui intuir que no és alguna cosa bona. Tot

i que es poden incloure element sorpresa en

el videojoc, no significa que canviïn

l’objectiu principal del joc ni la manera de

jugar, de no ser així, el jugador estarà confús

ja que no entendrà la dinàmica del joc.

El temps d’aprenentatge d’un videojoc de plataformes és mínim ja que no fa falta tenir molts coneixements sobre un joc de plataformes ni llegir-se manuals per comprendre’l.

Page 40: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 38

El que es farà pel videojoc és que sigui el més normal possible, és a dir, que comparteixi

totes les característiques d’un joc de plataformes: moure’s, saltar, etc. D’aquesta manera

el videojoc serà molt fàcil de comprendre i no causarà confusió. Els videojocs de

plataformes es troben a una posició baixa de la "corba d'aprenentatge" de manera que el

joc és perfectament comprensible en poc temps.

3. Per tal que un joc sigui efectiu, ha de complir amb els objectius que els jugadors

esperen: divertir i entretenir. Un videojoc efectiu és aquell que és capaç de

captar l'atenció del jugador des del primer instant, convencent-li que segueixi

jugant al joc. Per a això, és recomanable que el joc tingui reptes que ajudin a

incentivar el jugador a seguir jugant i objectius secundaris que ajudin a que el

jugador es diverteixi. A més d'això, un joc és efectiu quan el grau de creença del

jugador davant els reptes i objectius proposats es realitza des del primer moment

i es van transformant fent més intensos quan el jugador aprofundeix en la

dinàmica del joc.

El que es farà en el videojoc de mostra és mantenir al jugador amb un objectiu i en

situacions difícils de tal manera que el jugador sempre estigui entretingut. Ara bé, és

necessari que el joc no sigui molt complicat perquè el jugador no es quedi encallat en un

nivell i deixi de el joc ja que no avança; un videojoc així no seria efectiu ja que no

diverteix i entreté al llarg de tot el joc.

4. La fi de tot joc és fer creure al jugador que no està davant d'un joc, sinó que en

forma part. Per aquest motiu, per millorar el procés d'immersió és recomanable

millorar el màxim possible la interacció entre el jugador i el videojoc, per

exemple, fent que els controls s'assimilin als estris que s'utilitzarien en la vida

real per resoldre aquests reptes. Un clar exemple el tenim en els simuladors de

conducció, on un volant ajuda a augmentar el realisme de l'acció molt més que

un teclat.

Per al videojoc de plataformes les tecles de direcció del teclat mouran al personatge i la

tecla d’espai realitzarà un atac. A més a més, la música és un element clau per immergir

al jugador en un videojoc i per tant es reproduiran diferents músiques segons la situació

Page 41: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 39

en el videojoc; per exemple si a un nivell apareixen fantasmes, la música tindrà un estil

de por per tal de fer creure al jugador que forma part del joc i que es troba realment en

aquella situació.

5. Per aconseguir una bona motivació, el joc ha de disposar d'un conjunt de

mecanismes que generin una perseverança en l'acció per part del jugador per

superar els reptes del joc, és a dir, s'introdueixen factors que assegurin el

manteniment d'un comportament en l'apreciació del procés de joc. A l'hora

d'aconseguir una major motivació del jugador cap al videojoc s'ha de focalitzar

el jugador en els reptes proposats, mostrar la rellevància dels objectius

(recompenses) a aconseguir pel repte proposat, i fomentar la confiança per part

del jugador per afrontar-los i el plaer per l'èxit de aconseguir-los.

El videojoc ha de disminuir els nivells de frustració perquè el jugador s'estimuli i

segueixi jugant. Encara que, igual que l'aprenentatge, en certs jocs, certs graus de

frustració s'usen com a mecanismes extres de motivació, obligant al jugador a superar-

se a si mateix i fer un esforç personal, automotivació, per no deixar-se "derrotar" pels

reptes proposats en el joc. Per fer això no s’introduiran situacions extremadament

difícils ni molt fàcils, simplement situacions complexes però que es puguin superar. La

progressió en el joc i les situacions complexes generen curiositat per saber que vindrà a

continuació i per això també és molt important que durant el joc s’introdueixin nous

elements per generar curiositat al jugador i així mantenir-lo motivat mentre juga.

6. Un joc que no és capaç d'emocionar és un joc fred i abocat al fracàs. Els jocs

generen diferents estímuls durant la dinàmica del joc per desencadenar reaccions

involuntàries automàtiques i diferents sentiments i emocions per part del jugador

per modificar la seva actitud i comportament quan juga. Un dels grans èxits dels

videojocs és que són capaços de provocar al jugador un conjunt d'emocions de

manera contínua en un curt espai de temps, algunes d'elles difícilment assolibles

en el món real, en el dia a dia, del jugador. Per tant l'objectiu és fer reaccionar el

jugador davant de diferents situacions i d'aquesta manera variar la seva conducta

durant el joc.

Page 42: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 40

El que es farà en el videojoc per emocionar al jugador és variar les seves emocions

durant el joc per tal de què en alguns moments tingui intriga i curiositat pel que passarà

i en d’altres estigui excitat o molt concentrat ja que es troba en una punt complicat o

únic en el joc. També es pot canviar l’estat d’ànim del jugador segons la música i els

gràfics del joc (escenari de nit per generar nervis i de dia per generar alegria).

7. La socialització d'un joc permet a un jugador tenir una experiència de joc

totalment diferent quan juga un joc sol o en companyia d'altres jugadors i

fomenta noves relacions socials interactuant amb ells, ja sigui de manera

competitiva, col·laborativa o cooperativa. Malauradament aquest atribut

relativament nou en els videojocs requereix més coneixements de programació i

molt de temps per fer aquesta opció possible en el joc que es vol crear, apart de

què és necessari un servidor en línia per tal de poder jugar entre diversos

ordinadors connectats a Internet. De totes maneres es podria realitzar un

videojoc multijugador on dues persones juguin des del mateix ordinador (una

persona controli el seu personatge amb les tecles de direcció i l’altre amb

lletres).

Degut sobretot als amplis coneixements de programació que s’han de tenir per fer un

videojoc en línia, el videojoc que es farà de mostra serà per únicament per a un sol

jugador i per tant no tindrà cap tipus de factor social.

A part dels atributs que té la jugabilitat, aquesta també té sis facetes diferents que són

les següents:

Facetes de la jugabilitat

• Jugabilitat intrínseca: És la jugabilitat mesurada en la pròpia naturalesa del joc

i com es projecta al jugador. Està lligada al disseny de la jugabilitat (els set

atributs anteriors) i a la "implementació" de la jugabilitat mecànica. S'analitzen

com es representen les regles, els objectius, el ritme i les mecàniques del

videojoc.

• Jugabilitat mecànica: És la jugabilitat associada a la qualitat del videojoc com

a sistema software. Està lligada a la mecànica del joc, posant l'accent en

Page 43: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 41

característiques com la fluïdesa de les escenes cinemàtiques, la correcta

il·luminació, el so, els moviments gràfics i el comportament dels personatges del

joc i de l'entorn, sense oblidar els sistemes de comunicació en videojocs

multijugador.

• Jugabilitat interactiva: És la faceta associada a tot el relacionat amb la

interacció amb l'usuari, el disseny de la interfície d'usuari, els mecanismes de

diàleg i els sistemes de control. Està fortament unida al interfície del joc.

• Jugabilitat artística: Associada a la qualitat i adequació artística i estètica de

tots els elements del videojoc i a la naturalesa d'aquest. Entre ells estaran la

qualitat gràfica i visual, els efectes sonors, la banda sonora i les melodies del joc,

la història i la forma de narració d'aquesta, així com l'ambientació realitzada de

tots aquests elements dins del videojoc.

• Jugabilitat intrapersonal: Jugabilitat personal o perceptiva. Aquesta visió té

com a objectiu la percepció que té el mateix usuari del videojoc i els sentiments

que a aquest li produeix. Aquesta faceta té un alt valor subjectiu.

• Jugabilitat interpersonal: Jugabilitat en grup. Mostra les sensacions o

percepcions dels usuaris que apareixen quan es juga en companyia ja sigui

col·laborativa, cooperativa o competitivament i la consciència de grup.

Relació a nivell interactiu entre les diferents facetes de la jugabilitat (en castellà).

Page 44: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 42

El que s’ha de fer per crear un bon videojoc és desenvolupar el màxim les sis facetes de

la jugabilitat i els set atributs esmentats anteriorment. D’aquesta manera es podrà dir

que aquest videojoc té una alta jugabilitat.

Arribats a aquest punt toca especificar més sobre el videojoc que es vol crear fent un

esborrany de les idees específiques del joc. En aquest esborrany gràfic o storyboard s’ha

de decidir pel que fa als personatges, l’ambientació o la música entre d’altres aspectes

per definir del joc.

El storyboard d’un videojoc

Primer de tot s’ha de visualitzar com serà el personatge principal, ja que en un joc de

plataformes sempre hi ha un personatge principal. Per fer això s’ha de pensar com anirà

vestit i quins instruments portarà a sobre.

El personatge principal

El personatge del videojoc de mostra representarà un humà primitiu i per tant tindrà una

estatura humana i vestirà amb poca roba. A més a més se li afegirà un complement per

donar cops. Es realitza llavors un esborrany en blanc i negre on es visualitzi la silueta

del personatge en dues o tres posicions diferents com es mostra a continuació:

Siluetes cap a la dreta del personatge principal

Personatge quiet Personatge corrent Personatge donant cop

Com a personatge d’un videojoc de plataformes aquest tindrà les característiques de

poder córrer/caminar (moure’s horitzontalment), saltar, ajupir-se i a més a més podrà

atacar amb una maça. Com la majoria d’aquest tipus de videojoc, aquest personatge

també atacarà al saltar sobre d’un enemic.

Page 45: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 43

Ara que ja s’ha començat a especificar el personatge principal se li podria assignar un

nom. Per pensar en el nom d’un personatge d’un videojoc que no simula un espai real es

bo pensar en noms originals o que tinguin alguna relació amb el personatge. Pel

personatge principal del videojoc de mostra se li assignarà el nom d’Inti, que en la

mitologia inca era el déu Sol.

No s’ha d’oblidar que en el procés del disseny del joc (següent apartat) el personatge a

millorar (pintant-lo en color) ha de seguir les característiques plantejades en la

concepció del joc, i per tant el personatge d’aquest videojoc haurà de vestir amb poca

roba de manera que sembli un personatge prehistòric.

Els altres personatges a pensar en un joc de plataformes

són principalment els enemics. Fem el mateix que amb el

personatge principal tenint en compte que els enemics

també han de seguir un estil prehistòric però més

simplificat ja que les accions dels enemics es definiran

quan es parli de la intel·ligència artificial.

Els enemics

També es poden incloure alguns enemics secundaris que volin realitzant un moviment

senzill i periòdic tota l’estona.

Ara que ja s’ha vist els personatges del joc toca centrar-se en l’ambient. Si els

personatges del videojoc que es farà de mostra segueixen un estil prehistòric, els

escenaris del joc han de simular un espai prehistòric. Aquest escenari és bastant senzill,

simplement ha de ser un espai natural amb plantes i animals. La música que acompanya

cada nivell ha de seguir un estil de naturalesa incloent sons d’animals. La música també

variarà segons la situació on es troba el jugador, per exemple depenent de si el

personatge està sent atacat dins d’una cova o si camina en un escenari de nit.

Escenari i ambientació del videojoc

Silueta cap a l’esquerra

de l’enemic quiet

Page 46: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 44

Hi ha un altre aspecte que ja es pot decidir que és el títol del videojoc. Aquest pot tenir

una relació amb el personatge del joc o amb algun altre factor però l’important és que

sigui un nom que atregui l’atenció per tal de què la gent vulgui jugar al videojoc per

veure a què es refereix el títol.

Títol del videojoc

Per el videojoc se li assignarà el nom de Tiverton, que també serà el nom de l’escenari

on se situa el joc. Aquest títol coincideix amb el nom d’un poble nord-americà però el

motiu de què s’assigni al videojoc és que recorda a un nom que fa pensar en algun lloc

màgic o especial, en unes terres misterioses, en les “terres de Tiverton”.

Arribats a aquest punt ja es té una idea de com serà el videojoc que es vol crear havent

decidit factors sobre l’ambient del joc, els personatges i la música.

Elements complementaris

Apart d’aquestes idees es pot

plantejar com serà el menú del joc

que es vol crear, que el correcte és

que seguís un estil similar al del joc

en sí.

També es pot realitzar un logotip d’identificació del creador.

Menú del joc Tiverton.

Logotip que es mostra a l’iniciar el videojoc Tiverton.

Page 47: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 45

2.1.2. El disseny

En aquesta fase es detallen tots els elements que compondran el joc, donant una idea

clara a tots els membres del grup desenvolupador sobre com són. Entre aquets elements

tenim:

• La història

• El guió

• L’art conceptual

• El so

• La mecànica de joc

• El disseny de programació

S’ha de tenir en compte que casi tots els videojocs són creats per un equip professional

de persones on cadascú està assignat a fer una funció: dibuixar, programar, composar la

música, decidir el guió del joc ...

El primer de tot en aquesta fase és desenvolupar la història del videojoc. S’ha de pensar

en una història realista i que atregui al jugador. Per un videojoc de plataformes no fa

falta pensar una història molt complexa ja que si és massa rebuscada perd l’atenció del

jugador.

La història

Pel que fa el videojoc Tiverton la història serà que el personatge Inti s’ha separat de la

seva família i s’ha perdut. Apart de les perilloses bèsties que romanen des de fa segles

aquestes terres, hi habiten uns sers en expansió incomprensius amb tot humà que se’ls

creua i ataquen desmesuradament. L’heroi haurà de creuar les tenebroses terres de

Tiverton superant tots els obstacles i enemics per retrobar-se amb el seu grup on estarà

segur. En conclusió, l’objectiu del videojoc serà retrobar-se amb la seva família i amb el

seu grup de companys havent de creuar Tiverton, i el desenvolupament que hi haurà

entre des de què es comença el joc fins assolir l’objectiu plantejat és el joc en sí, és a

dir, el que l’usuari del videojoc jugarà.

Page 48: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 46

En concepte, el guió d'un videojoc és molt similar als realitzats per a llibres i pel·lícules

(guió cinematogràfic). Amb l'excepció que un guió per a videojocs pot estar condicionat

per les accions del jugador derivant en múltiples arbres de situacions basades en

aquestes accions, complicant exponencialment el seu desenvolupament.

El guió

Per començar a crear el guió d’un videojoc és recomanable pensar una petita

introducció que justifiqui l’objectiu final del joc, per exemple que el dolent del joc hagi

segrestat a la princesa i l’heroi (personatge que controla el jugador) l’ha de rescatar. En

el cas del videojoc Tiverton començarà amb un clip on es mostri com el personatge

principal Inti es perd i ha de creuar unes perilloses terres per tornar amb la seva família.

A continuació es defineix el que passarà cronològicament durant el joc. Pel videojoc de

mostra es dividirà en tres parts amb ambients diferents (dia, nit i interior d’una cova) en

què cada part correspondrà a tres nivells diferents. La dificultat del joc anirà augmentant

progressivament introduint-hi més enemics i de més perillosos. Al final de cada part

(nivells 3, 6 i 9) el jugador haurà de lluitar amb un enemic superior molt més difícil

d’eliminar.

Al començar el joc des del inici o bé des d’una

part utilitzant un codi el jugador tindrà cinc

vides i en la primera part podrà ser atacat tres

cops abans de perdre una vida, quatre cops en

la segona part i cinc en l’última.

El jugador avançarà pels diferents escenaris i

al completar l’últim es mostrarà que l’Inti ha

trobat al seu grup i família.

Aquest guió seria un exemple d’un guió senzill d’un videojoc on la història i el guió no

són tan importants, ja que hi ha bastants videojocs de plataformes que no tenen cap

història ni guió, simplement són un conjunt de nivells per on el jugador avança amb el

personatge.

A diferencia del guió de cine, el guió d’un videojoc professional té en compte les decisions del jugador creant diferents situacions i sobretot diferents finals possibles del joc.

Page 49: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 47

En l'art conceptual s'estableix l'aspecte general del joc. En aquesta etapa un grup

d'artistes s'encarreguen de visualitzar o conceptualitzar personatges, escenaris, criatures,

objectes, etc. Aquests artistes es basen en les idees originals dels creadors i després

lliuren un seguit de propostes impreses o digitals de com lluirà el joc. Posteriorment el

director d'art s'encarregarà d'escollir entre les opcions que s'assemblin més a la idea

original. Algunes vegades els artistes conceptuals són presents durant tot el procés de

producció, però el normal és que només participin en les primeres etapes del procés.

L’art conceptual

Durant el procés de disseny d'un videojoc també cal fer una detallada descripció de tots

els elements sonors que el joc necessita per la seva realització. Veus, sons ambientals,

efectes sonors i música. Aquests elements sonors han de concordar amb els gràfics i la

situació del jugador en el videojoc, per exemple si el personatge és ferit el so que ha de

sonar ha de ser curt i greu ja que el jugador l’associarà amb una cosa negativa. D’altra

banda la música també ha de concordar amb l’escenari del nivell que s’està jugant, és a

dir, en el cas del videojoc de mostra quan sigui de dia sonarà una música més viva que

quan sigui de nit. En els videojocs professionals fins i tot canvia la música en un mateix

nivell segons la situació del personatge (estrés, recerca d’un objecte, atacant o sent

atacat, etc.).

El so

En els videojocs més avançats també es graven les veus dels personatges pel que és

necessari un equip de persones que gravin les veus, cosa que per el videojoc de mostra

no es farà. Finalment els sons ambientals com pot ser els d’un ocell o els d’un enemic

han de concordar amb el que s’està mostrant en la pantalla en aquell precís moment.

Saber escollir la música i els sons adequats per un videojoc és molt important pel seu

èxit ja que aquests sons són els elements principals per immergir el jugador en el joc.

Tot seguit s’especifica la mecànica del joc, és a dir, el funcionament general del joc. La

mecànica d’un joc depèn del gènere i defineix la forma en què els diferents ens virtuals

interactuen dins del joc. Dit d’una altra manera toca definir les regles del joc.

La mecànica de joc

Page 50: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 48

Per un videojoc de plataformes com el de mostra les regles són bastant clares: el jugador

ha de fer avançar el personatge per unes plataformes en menys d’un temps donat, si toca

amb un enemic és danyat i si cau per un forat mor directament. Doncs aquestes són les

regles més bàsiques del videojoc Tiverton on l’Inti pot moure’s per tot l’escenari fins

trobar la sortida i ha d’esquivar o eliminar saltant a sobre o atacant als enemics. Al

personatge principal del joc se li aplicarà les regles físiques de la gravetat perquè quan

salti torni a caure. L’última regle que tindrà aquest joc és que el jugador podrà

aconseguir monedes que per cada cent se li afegirà una vida. També podrà aconseguir

directament vides, cors i més temps per passar-se el nivell.

Per acabar el disseny del videojoc només ens queda especificar la manera en què serà

implementat en una màquina real mitjançant un cert llenguatge de programació i seguint

una determinada metodologia. Generalment en aquesta fase es generen diagrames que

descriuen el funcionament estàtic i dinàmic, la interacció amb els usuaris i els diferents

estats que travessarà el videojoc com a software.

El disseny de programació

La manera d’implementar el videojoc de mostra serà utilitzant el llenguatge C++ i

seguint el mètode tradicional de:

1. Inicialització

2. Bucle del joc

3. Finalització

Aquest és el mètode d’implementació que utilitzen tots els videojocs, ja si les variables,

els arxius multimèdia, etc. s’inicialitzessin mentre s’està jugant el joc es visualitzaria a

cops. A més a més hi ha llibreries i funcions que s’han d’inicialitzar abans d’utilitzar-

les. La finalització també és important ja que si no es realitza alguns sectors de la

memòria de l’ordinador utilitzats pel joc no s’alliberen i queden ocupades inútilment i

això pot causar errors. El bucle del joc és una sèrie d’instruccions que es repeteixen fins

que el jugador decideix sortir del joc i així trencar el bucle. En aquest bucle s’espera a

que es premi o es deixi anar una tecla (en el videojoc de mostra només s’utilitza el

teclat) i quan això passa es guarda en una variable l’estat actual d’aquesta tecla. Ara bé

també es crea un temporitzador que cada un cert temps actualitza l’estat del videojoc i a

Page 51: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 49

continuació si ha passat menys del temps establert entre cada actualització s’actualitzen

els gràfics del joc i es mostren en pantalla. D’això ja es parlarà més profundament en la

producció del projecte.

De tota la fase de disseny d’un videojoc professional és necessari generar un document

titulat “Document de Disseny del Joc”, que conté totes les especificacions d’art,

mecàniques i programació. Es pot trobar un índex detallat (en anglès) d’aquest

document als arxius

Document de Disseny de Joc

BaldwinGameDesignDocumentTemplate(.doc/.pdf) dins de la

carpeta “Documents” del CD (o a http://goo.gl/mMGJN7) escrit pel famós creador de

videojocs Mark Baldwin.

Page 52: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 50

2.1.3. La planificació

En aquesta fase s'identifiquen les tasques necessàries per a la creació del videojoc i es

reparteixen entre els diferents components de l'equip desenvolupador. També es fixen

terminis per a l'execució d'aquestes tasques i reunions clau.

S’ha de tenir en compte que la majoria

de videojocs els creen un equip de

professionals que es divideixen en

departaments. Si es vol crear un

videojoc de forma individual com és el

cas del videojoc de mostra el creador ha

d’assolir la funció de tots els

departaments que representen l’equip

desenvolupador.

La forma clàssica de plantejar el funcionament d’un videojoc és així:

Planificació lineal per crear un videojoc (QA significa assegurament de la qualitat).

Aquesta manera de treballar seria la "idealitzada": Cada departament fa la seva feina i

un cop està acabat el passa al següent departament. Potser es podia realitzar d'aquesta

forma fa molts anys, no obstant això a dia d'avui aquesta forma de treballar ja no

funciona a la indústria del videojoc.

Exemple d’estructuració d’un equip de producció d’un joc.

Page 53: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 51

Un videojoc és una cosa molt viva. No tot es fa bé a la primera; Creix, canvia, es

transforma, s'ajusta, es llença a les escombraries, es recull, es munta i desmunta. Per

aquest motiu es necessita un esquema de treball molt més flexible, on es pugui esborrar

sense por, on es puguin canviar coses sense por, on es pugui crear sense por.

Aquest altre esquema s'ajusta molt més a la forma de treballar per crear un bon

videojoc:

Planificació en cercles on treballen alhora diversos departaments.

Com es pot veure es treballa en cercles. El treball per tant torna una i altra vegada fins

que es poleix prou, sense por al canvi, buscant un producte de qualitat. El procés ha de

ser tan flexible que permeti créixer al joc fins i tot quan ja estigui absolutament tancat,

es deixen "portes" obertes per ajustar paràmetres del joc (per exemple costos dels

objectes, experiència necessària per pujar de nivell, etc.).

En el cas de què una sola persona no professional vulgui fer un videojoc haurà de

combinar totes les tasques a fer (haurà de fer alhora l’art i el desenvolupament del joc).

Aquesta última planificació es fonamenta en el procés tecnològic de creació i realització

d’un projecte, en què es comença amb les especificacions del projecte, després es fa el

seu disseny, a continuació s’executa o es construeix el desenvolupament del projecte

seguint el seu disseny i en el quart punt es realitzen les proves necessàries deixant

oberta la possibilitat de tornar a realitzar noves especificacions i així repetir el cicle.

Aquesta segona part (específica) del treball explica aquest procés aplicat a un videojoc.

Page 54: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 52

2.2. Desenvolupament del projecte

Tenint tot el videojoc ben definit i havent fet la planificació de les tasques corresponents

s’ha de dur a terme la realització del projecte seguint així el procés tecnològic i

l’esquema mostrat a la planificació (pàgina anterior). Aquesta part de desenvolupament

es dividirà en tres parts generals que són:

• La producció

• Les proves

• El manteniment

En aquesta part per tant s’explicarà des de com fer realitat tot el projecte plantejat fins el

manteniment del joc un cop ja s’ha distribuït.

2.2.1. La producció

Aquí es duen a terme totes les tasques especificades en la fase de planificació, tenint

com a guia fonamental el document de disseny. Això inclou entre altres coses la

codificació del programa, la creació de sprites, tiles i models 3d, la gravació de sons,

veus i música, la creació d'eines per accelerar el procés de desenvolupament, entre

d'altres.

Per realitzar la producció d’un videojoc el treball a realitzar es divideix en cinc

departaments diferents que s’encarreguen de:

• La programació

• La il·lustració

• La interfície

• L’animació i el modelat 3D

• El so

A continuació s’analitzarà cadascuna de les cinc tasques proposades.

Page 55: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 53

La majoria dels jocs es programen utilitzant el llenguatge C++ ja que és un llenguatge

d'alt nivell que permet un ràpid accés als components de hardware d'un ordinador o

d'una videoconsola que el fa més accessible.

La programació

La programació de videojocs és un procés que pertany a la creació d'un videojoc.

Aquest procés és efectuat per un programador de videojoc gràcies a la programació

informàtica. Gairebé sempre, la programació d'un videojoc es resumeix a repetir de tant

en tant les accions següents:

Procés de funcionament propi de tots els videojocs

1. Processar les interaccions d'un agent amb el seu entorn segons les entrades de

l'usuari.

2. Processar els fenòmens indirectament controlats per l'usuari.

3. Crear una imatge a partir d'aquestes informacions i mostrar a la pantalla (igual

per al so).

L'agent sol ser un personatge però també pot ser un cotxe, una nau, o qualsevol altra

cosa. L'entorn sol ser compost per una decoració estàtica i uns objectes interactius

(enemics, objectes de l'inventari, portes, entre d'altres). L'usuari realitza entrades al

programa per mitjà d'un perifèric com un joystick, un teclat o un ratolí. La gestió de les

interaccions consisteix a preveure les accions possibles sobre l'entorn, detectar si han

estat provocades, i processar respostes. Per exemple, per crear una interacció de com

"obrir la porta", cal decidir els processos que permetran el compliment (per exemple que

el jugador hagi de prémer un botó i hagi d'estar a prop de la porta), després, durant el

joc, cal detectar si les condicions estan complertes. Si això és així, es genera una

reacció: seguint l’exemple, mostrar a la pantalla la porta obrint-se.

Els fenòmens indirectament controlats per l'usuari són diversos i canvien segons el joc.

Es pot tractar de processar la intel·ligència artificial dels agents no controlats per

l'usuari, gestionar les col·lisions entre agents, i la física (en un joc físicament realista).

Aquestes dues primeres parts pertanyen a les regles d'interaccions d'un joc normalment

decidit per un dissenyador de videojoc i implementat per un programador.

Page 56: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 54

A mesura que el nivell gràfic creix, la creació d'una imatge i la seva projecció es fan

cada vegada més complexos. En el passat els escenaris dels videojocs eren gairebé

exclusivament en dues dimensions, ara ja són en la majoria dels casos en tres

dimensions. En tots els casos, la imatge és construïda a poc a poc en un espai de

memòria (el framebuffer) i no es pinta a la pantalla fins que el dibuix en conjunt s’hagi

acabat de crear.

La creació de la imatge que es mostra

La creació d'una imatge en dues dimensions sol començar pel dibuix dels objectes que

es troben més lluny, i va apropant-se cap al jugador. Per exemple:

1. Creació del fons (background) ajudant-se d' uns mosaics (tiles) dependents dels

sistemes de desplaçament (scrolling) o simplement d'un fons de pantalla (com

per als antics jocs d'aventura).

2. Afegiment d'imatges (sprites) utilitzant un sistema de retallada que permet

dibuixar formes complexes mentre que és imprescindible que les imatges siguin

rectangulars en la memòria.

La creació d'una imatge en tres dimensions és molt més complexa. En els videojocs les

imatges han de ser creades en temps real per garantir que la pantalla sigui actualitzada

amb una freqüència alta. La dificultat és de ser capaç de generar una imatge d'alta

qualitat en una estona molt curta mentre es processen els diversos elements del joc. Per

això, avui la programació de videojocs està més vinculada amb el maquinari, utilitzant

en profunditat les funcionalitats d'acceleració de les targetes gràfiques per optimitzar el

tractament dels objectes 3D i millorant el codi font.

La freqüència de repetició d'una operació canvia molt respecte a la plataforma

(ordinador, consola, mòbil, ... ). Es considera que cal almenys 24 imatges per segon per

donar la impressió de moviment en el cinema encara que aquest freqüència ha de ser

més elevada en els videojocs.

Totes les imatges d’un videojoc no necessiten ser tractades en cada actualització, només

les que es mostren en pantalla.

Page 57: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 55

Els grans estudis tenen diverses desenes de programadors, especialitzats en diferents

àrees. En la programació de videojoc els principals equips i/o disciplines que es poden

trobar són els següents:

Disciplines de programació de videojocs

• Programació del motor: Són els encarregats d'implementar la base sobre la

qual se sustenta el videojoc. Comunicació amb el sistema operatiu, gestió de

memòria, gestió de cadenes, gestió de recursos, etc. Són necessaris grans

coneixement de la plataforma per la qual es programa, algorísmia i complexitat,

optimització i gestió a baix nivell.

• Programació gràfica: La seva missió és gestionar les diferents API gràfiques

com DirectX i OpenGL. Coneixements d'aquestes API, i matemàtiques sobretot

àlgebra i geometria.

• Programació de física: S'encarrega d'emular els comportaments físics del

videojoc. Coneixements de matemàtica vectorial i física dinàmica i mecànica.

• Programació d'intel·ligència artificial (IA): És l'encarregada de fer els

enemics (o els aliats) intel·ligents. Coneixements de llenguatges de script,

matemàtiques i algoritmes d'IA com pathfinding, màquines d'estats finits o

xarxes neuronals.

• Programació de xarxa: S'encarrega de la part multijugador, servidors i tot el

que sigui connectar una màquina amb una altra.

• Programació de Gameplay: L'equip que s'encarrega de programar la lògica del

joc, les seves regles. Coneixements de llenguatges de script i ús de les parts

desenvolupades pels altres equips.

Aquestes són les principals àrees en què es divideixen els grans estudis podent variar en

molts d'ells, però aquestes són les principals disciplines de la programació de videojocs.

La base d’un videojoc es basa en un bucle, el game loop (com s’ha especificat en el

disseny de programació).

El game loop d’un videojoc

L’estructura d’un game loop senzill seria la següent:

Page 58: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 56

Aquesta és una estructura on mentre l’usuari no decideixi sortir del joc, es realitzaran sis

accions diferents de forma lineal. Aquest diagrama de flux deixa de funcionar per la

majoria de jocs ja que no controla les actualitzacions per segon (FPS) i depenent dels

gràfics que hagi de dibuixar el bucle es realitzarà amb menys o més temps el qual pot

provocar errors en la lògica del joc ja que no es controla el temps de realització dels

passos.

Per solucionar aquest problema, s’utilitza un altre tipus de game loop més complex que

és el següent:

Page 59: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 57

En aquest nou diagrama s’afegeixen noves accions a la inicialització (rectangle de color

blau): la creació d’una cua d’esdeveniments, la creació d’un esdeveniment de tipus

temporitzador que s’executarà cada 1/FPS segons, l’enllaç d’aquest amb la cua

d’esdeveniments i l’enllaç de les accions que l’usuari genera amb el teclat amb la cua.

Tot això és gràcies a la llibreria Allegro 5 que permet manejar esdeveniments. Dins del

game loop s’espera a què hi hagi un esdeveniment a la cua i es comprova si aquest

esdeveniment a sigut generat pel temporitzador o pel teclat. Si és generat pel teclat

actualitza les variables del joc que continguin l’estat de les tecles necessàries (si estan

premudes o no). En canvi si l’esdeveniment ha estat generat pel temporitzador

s’actualitza tota la lògica del joc i s’assigna el valor “vertader” a la variable anomenada

“redibuixa” (creada just abans d’entrar en el game loop i amb valor “vertader”). A

continuació si la variable redibuixa està en “vertader” i la cua d’esdeveniments està

buida (és molt important comprovar que la cua està buida per evitar que se li acumulin

esdeveniments i el videojoc es refresqui a cops), s’assigna el valor “fals” a la variable

“redibuixa” i es pinten els gràfics al framebuffer i es mostren en pantalla. Finalment es

torna a començar el bucle si el jugador no surt del videojoc.

Com s’ha pogut comprovar aquest segon game loop és molt més complex que el

primer, però és molt més eficient.

Un cop implementada l’estructura anterior en el videojoc, faltarà concretar dues

funcions principals:

Funcions a programar

1. Actualitzar totes les variables (posició, velocitat, estat de cada entitat...) de la

lògica del joc a partir del temps que ha passat entre la última actualització i

aquesta i a partir del valor de les variables que contenen l’estat de les tecles que

interessen -pel videojoc Tiverton les quatre tecles de direcció i l’espai (el valor

de la tecla Escape no es guarda)-.

2. Actualitzar tots els gràfics en el framebuffer.

Cada una d’aquestes funcions dependran del videojoc que s’estigui realitzant.

Page 60: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 58

En el cas del videojoc de mostra, l’actualització de la lògica seguirà els passos següents:

Actualització de les variables indirectes

1. Moure el personatge que controla l’usuari segons les tecles de direcció i la

gravetat o atacar si la tecla d’espai està premuda.

2. Moure els valors de la situació de la pantalla virtual.

3. Moure els enemic i el objectes voladors.

4. Resoldre les col·lisions entre elements i entre el personatge i els enemics.

Pel primer pas l’Inti es mourà (o no) horitzontalment cap a la dreta o l’esquerra

depenent de quines tecles estan premudes. Saltarà si està premuda la tecla de dalt o

s’abaixarà si la tecla de baix està premuda. A continuació se li aplicarà les fórmules

següents per simular la gravetat on vy és el component vertical de la velocitat, t el temps

que ha passat i y la posició horitzontal del personatge:

El moviment del personatge

vy = vy + 9,8 · t

y = y + vy · t

En el videojoc la gravetat es positiva perquè el sistema de

coordenades és com el que es mostra a l’esquerra.

Perquè una imatge baixi se li ha d’augmentar el valor de la y.

El pas segon que bé a continuació per el videojoc Tiverton és actualitzar la posició de la

pantalla virtual, ja que el joc farà scrolling movent-se així pel món virtual:

El scrolling en els videojocs de plataformes

Page 61: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 59

D’aquesta manera el que es fa és moure la pantalla virtual de manera que el personatge

que controla el jugador sempre es mostri en pantalla:

Si A és més petit que un valor determinat la pantalla virtual es mourà cap a l’esquerra i

en el cas de B es mourà cap a la dreta. El scrolling només se sol fer en horitzontal.

A continuació s’ha de moure els enemics els quals se’ls hi ha assignat un moviment

matemàtic (si són voladors) o horitzontal en el cas dels enemics que es mouen per terra.

Per aquest procés simplement s’ha de moure els elements comunicant-los el temps que

ha passat i així fer x = x0 + k · t pels terrestres i (x, y) = f(tsuma_ts_anteriors + t) pels

voladors que segueixen una funció matemàtica (paramètrica o polar) en el pla.

El moviment dels enemics

Finalment només falta resoldre les col·lisions principalment entre el personatge

controlat pel jugador i la resta d’elements per parar a l’Inti quan xoqui amb el terra i per

realitzar una acció determinada al topar amb un enemic o un objecte (una moneda ...).

Per comprovar una col·lisió entre dues entitats hi ha dues maneres generals depenent del

tipus de col·lisió que es vol comprovar:

Detecció de col·lisions

1. Comprovar si dos rectangles (representen dues entitats en el videojoc) es

superposen en el pla.

2. Comprovar si un punt en el pla està dins d’una circumferència.

Page 62: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 60

Pel primer cas s’utilitza un

algoritme complex (es pot trobar

“bool Maths::detectCollision(int cxi, int

cyi, int cxf, int cyf, int dxi, int dyi, int dxf,

int dyf)” a l’annex C) que diu si dos

rectangles d’unes dimensions

concretes i en unes posicions en el

pla donades es superposen o no.

Pel segon cas simplement es comprova la distància entre

el punt analitzat i el centre de la circumferència i si

aquesta distància és superior al radi de la circumferència

el punt no està dins d’aquesta, i en cas contrari sí. Per

trobar la distància entre dos punts A i B en el pla

simplement s’aplica la fórmula:

dist(A, B) = (Ax – Bx)2 + (Ay – By)2

Arribats a aquest punt depenent de les col·lisions detectades es realitzaran unes accions

determinades, per exemple si hi ha una col·lisió entre l’Inti i un enemic se li restarà un

punt d’armadura o si la col·lisió és amb una moneda se li sumarà al número de monedes

recollides i desapareixerà (la moneda) de l’escenari.

Dins d’aquest mateix bloc d’actualització de lògica es reprodueixen els sons pertanyents

segons la situació del joc (el jugador agafa una moneda, el temps per realitzar el nivell

s’està a punt d’acabar, etc.).

Ja només falta programar una acció, la d’actualitzar el framebuffer, és a dir construir la

imatge que es mostrarà en pantalla. Al realitzar un joc en tres dimensions no és gens

difícil ja que per realitzar una imatge plana d’un món en tres dimensions es necessiten

codis molt complexos. El videojoc Tiverton té una dificultat afegida a l’hora de mostrar

els gràfics en pantalla, constar d’una pantalla virtual que només mostra una part de

l’escenari.

Actualització i visualització dels gràfics

Page 63: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 61

Per realitzar aquest procés s’executa el codi del següent diagrama:

Amb aquest mètode es comprova un per un tots els gràfics i si està dins de la pantalla

virtual. En cas afirmatiu es dibuixarà en el framebuffer el gràfic en la seva posició

relativa a la pantalla virtual i a continuació s’examinarà el següent gràfic.

Un cop el framebuffer estigui acabat es mostrarà en pantalla i es netejarà (àrea en color

vermell).

Page 64: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 62

Els jocs 2D han de ser il·lustrats per artistes experimentats, que treballen tenint en

compte les limitacions tècniques del maquinari sobre el qual correrà el joc, això inclou:

quantitat de colors disponibles, mida dels sprites (tipus d’imatge), resolució final dels

sprites i formats a utilitzar. Els artistes 2D també són els encarregats d'elaborar les

animacions del joc.

La il·lustració

La il·lustració és una eina important per la creació de grans idees que més tard es

transformaran en grans videojocs, és una activitat complexa, perquè no implica només

saber de disseny, sinó també explicar històries, comunicar emocions a través de

dissenys, color i composició de les mateixes.

Per realitzar els sprites els il·lustradors s’han de basar en la idea establerta en el

storyboard i en l’art conceptual del disseny realitzant les il·lustracions a l’escala

correcte i amb els colors determinats anteriorment.

Els sprites ha realitzar són els de tots els personatges del videojoc, els objectes i els

botons de la interfície gràfica. Per dibuixar els escenaris s’utilitzen tiles ja que l’escenari

d’un videojoc de plataformes se sol repetir mentre s’avança en un mateix nivell.

Aquestes són alguns sprites del personatge principal del videojoc de mostra acabats:

Diferents sprites de l’Inti. La primera fila corrents, la segona atacant i la tercera saltant.

Page 65: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 63

A part dels sprites també s’han de dibuixar tots els elements de l’escenari col·locats en

una graella de caselles de la mateixa mida:

Sprite amb 186 tiles diferents pels escenaris del videojoc Tiverton.

En cas de no realitzar un videojoc professional i si no es té les habilitats per crear les

il·lustracions (com és el cas del videojoc de mostra), sempre es poden agafar de

llibreries o galeries d’imatges gratuïtes.

Com es pot comprovar les il·lustracions creades per videojocs solen ser un conjunt

d’imatges les quals han de ser tractades per separat dins del videojoc, on es mostraran la

secció corresponent segons la lògica del videojoc.

En un joc en dues dimensions no fa falta que les il·lustracions tinguin molta resolució,

d’aquesta manera les imatges ocuparan menys a la memòria i seran més fàcils de

manejar pel videojoc.

Totes les il·lustracions que s’utilitzen pel videojoc de mostra es poden trobar al CD

adjunt al treball.

Page 66: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 64

La interfície d’un videojoc és la forma en què es veuran els elements de la interfície

gràfica d'usuari i el HUD, mitjançant els quals l'usuari interactuarà amb el joc.

La interfície

La interfície gràfica d’usuari d’un videojoc de plataformes és principalment el menú

d’inici i els menús que apareixen entre els nivells i parts o quan el personatge mor.

Per al videojoc Tiverton s’han introduït sis menús diferents entre les partides depenent

de la situació del jugador en el joc. Aquests menús intermedis són els següents:

Joc en pausa Personatge mort Game Over

Nivell completat Puntuació del nivell acabat Joc completat

Tots els menús d’aquest joc funcionen amb les tecles de direcció amunt i avall, amb

l’espai per executar l’acció seleccionada i la tecla Escape per tornar al menú anterior

sense haver de seleccionar l’opció “enrere” en el menú principal.

Per el joc de mostra també s’ha fet un menú inicial pel qual el jugador pot navegar per

arribar a les diferents opcions com jugar des d’un punt determinat del joc, veure les

Page 67: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 65

instruccions o els crèdits o sortir del programa. Aquest menú es distribueix

principalment de la següent manera:

El menú del videojoc Tiverton consta d’un menú inicial amb les opcions de jugar, veure

les instruccions, veure els crèdits i sortir del joc. Dins de l’opció jugar hi ha diverses

opcions, a part de la opció de tornar al menú previ, que són “Nova partida” que

comença el joc a la primera part, i “Continuar” on dins d’aquesta s’ha d’introduir una

clau (proporcionada al jugador) per continuar el joc des de la segona o la tercera part.

Ja s’ha vist les interfícies gràfiques d’usuari que facilitin la navegació del jugador per

les diferents opcions del joc.

Apart del que s’acaba de veure, l’equip que s’encarrega de la interfície també ha de

realitzar el que s’anomena HUD.

En els videojocs es diu HUD (Heads-Up Display) que en tot moment es mostra en

pantalla durant la partida, generalment en forma d’icones i números. El HUD acostuma

a mostrar el número de vides, els punts, el nivell de salut i d’armadura, el mini-mapa,

etc. depenent del joc.

Avui en dia, tots els videojocs usen un tipus de HUD que s'adapta al joc en si.

Generalment, el HUD té un disseny diferent que va d'acord amb el joc. El HUD ha de

ser dissenyat per no entorpir el joc i brindar al jugador en tot moment la informació de

Page 68: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 66

joc necessària. Amb el pas del temps, s'ha comprovat que la millor zona per col·locar el

HUD és les cantonades o vores de la pantalla, el que permet al jugador accedir a la

informació necessària amb només moure un ull.

En el videojoc de mostra per aquest treball es mostra a la cantonada superior esquerra la

puntuació, just a sota el número de monedes, al mig de la vora superior es mostra el

temps restant per completar el nivell, a la cantonada superior dreta el número de vides

en icones i just a sota el número d’armadura o vegades que pots ser ferit abans de morir

també utilitzen icones.

HUD del videojoc Tiverton. A la segona fila de la cantonada superior dreta (marcat en vermell) es mostra en color l’armadura que li queda al personatge (en aquest cas un punt) i la suma dels icones emblanquinats i els de color mostren l’armadura màxima que l’Inti pot tenir en aquell nivell (en aquest cas màxim tres punts).

Arribats a aquest punt ja s’ha vist quins elements es poden incloure en un videojoc per

realitzar una interfície sofisticada.

En el procés de desenvolupament d’un videojoc en tres dimensions un equip d'artistes

professionals s’encarrega de l'animació i el modelatge en tres dimensions.

L’animació i el modelat 3D

Aquest equip d’artistes utilitza eines comercials de modelatge i animació tridimensional

com 3DS Max, Maya, XSI/Softimage, Blender (el qual no és comercial), ... per crear les

animacions en 3D.

Com ja s’ha explicat en la part general del treball crear un videojoc en tres dimensions

requereix molta experiència i professionalitat i és una tasca molt complicada. Com que

el videojoc de mostra només és en dues dimensions, no s’haurà de crear cap animació o

modelatge tridimensional.

Page 69: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 67

Per aquesta tasca els enginyers de so s'encarreguen de crear sons per a cada objecte o

personatge del joc establerts en el disseny del joc. Poden crear sons des de zero o

utilitzar sons de l'ambient i modificar-los segons les seves necessitats.

El so

Al igual que amb les imatges, també es poden buscar sons per Internet i utilitzar els sons

d’alguna llibreria gratuïta, com es fa pel videojoc Tiverton. Tot i així, sempre que sigui

possible, el millor és crear un mateix els sons pel videojoc.

S’ha de crear i utilitzar sons que no siguin molestos, sinó s’estaria introduint soroll en el

videojoc. A més a més, no es poden realitzar molts sons diferents degut a les

restriccions d’espai del disc, RAM, etc. La solució més lògica és utilitzar menys sons i

repetir-los. Això és el que es fa però s’ha de tenir en compte que un àudio repetitiu pot

arruïnar un joc i per tant s’ha de crear sons que no siguin molestos i saber-los introduir

correctament en el videojoc de manera que no es repeteixin constantment.

A part dels sons d’un videojoc també s’ha de compondre la música que l’acompanyarà.

La música de videojocs, en particular des de començaments del segle XXI, pot ser

considerada com un gènere musical per dret propi, principalment per tractar-se en la

seva major part de música programada, a diferència de la música gravada en estudi o

interpretada en directe.

La música haurà de concordar

amb les especificacions

realitzades en el disseny del

videojoc. Al igual que els sons

la música sol ser composada

per ordinador utilitzant

diversos programes.

Actualment la música i els sons d’un videojoc són guardats en arxius MP3 o en WAV. A

part d’aquests dos tipus d’arxius d’àudio també és molt comú utilitzar els arxius MIDI en

els videojocs ja que aquests ocupen molt poc i es creen a partir d’instruments musicals.

Els programes de creació de sons i edició de música són molt útils en la creació d’un videojoc professional.

Page 70: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 68

Per el videojoc Tiverton s’utilitzaran arxius WAV perquè és un tipus de format sense

pèrdua de dades al contrari que el MP3 que es basa en un algoritme de pèrdua per

aconseguir una menor mida d’arxiu. Tampoc s’utilitzaran arxius MIDI ja que fa falta el

software i els instruments corresponents per crear i després reproduir aquest tipus de

música dins del joc.

Tots els sons i músiques que s’utilitzen pel videojoc de mostra es poden trobar al CD

adjunt al treball.

Page 71: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 69

2.2.2. Les proves

Igual que en altres tipus de programari, els videojocs han de passar per una etapa on es

corregeixen els errors o bugs inherents al procés de programació i a diferència d'aquells,

els videojocs requereixen un refinament de la seva característica fonamental, la de

produir diversió de manera interactiva (jugabilitat). Generalment aquesta etapa es porta

a terme en dues fases:

• Proves alpha: Es duen a terme per un petit grup de persones, que amb

anterioritat estiguin involucrades en el desenvolupament, el que pot incloure

artistes, programadors, coordinadors, etc. El propòsit és corregir els defectes

més greus i millorar característiques de jugabilitat no contemplades en el

document de disseny.

• Proves beta: Aquestes proves es duen a terme per un equip extern de jugadors,

bé sigui que siguin contractats per a l'ocasió o que siguin un grup component del

projecte (grup QA), els quals fan software testing per tal d’informar

objectivament sobre la qualitat del producte. D'aquestes proves el videojoc ha de

sortir amb el mínim possible de defectes menors i cap defecte mitjà o crític.

D’aquesta manera també s’analitza si

s’assoleix l’objectiu de divertir al jugador

(sobretot en les proves beta) i si no com

millorar el videojoc, per exemple canviant

la música, afegint nivells, ... depenent d’on

hi hagi el problema que faci que el joc no

tingui la jugabilitat esperada.

Un cop fet tots els canvis necessaris, si el videojoc no té cap tipus de bug i assoleix

l’objectiu de divertir i entretenir al jugador ja es pot crear la versió (definitiva o no) que

es llançarà al mercat (apartat “2.3. Compilació i distribució del joc”).

Eliminar els bugs i glitches és molt important per tal de què el joc funcioni bé i no provoqui el rebuig del jugador.

Page 72: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 70

2.2.3. El manteniment

Quan un joc surt al mercat, la fase de manteniment per al videojoc comença.

En el passat, els jocs desenvolupats per a les consoles de videojocs gairebé no tenien

cap període de manteniment. El joc allotjaria per sempre tants errors i problemes que

quan es va posar al mercat. Aquesta era la norma per a les consoles ja que totes les

consoles tenien una

maquinaria idèntica o

gairebé idèntica i la

incompatibilitat no era

un problema. En aquest

cas, el manteniment

només es produiria en el

cas d'una seqüela o d'una

nova versió millorada

que tornés a utilitzar una

gran part del motor del

videojoc anterior.

Els videojocs de consola que es consideren 100% completats són els que són

manufacturats i que no es poden canviar. No obstant, amb la introducció de les consoles

per connectar en línia com la PlayStation 3 i la Xbox 360, una gran part dels videojocs

que es connecten en línia es poden arreglar possibles errors, com també l'afegiment de

noves característiques i novetats en el videojoc, molt semblant amb el que ja es feia amb

els videojocs d'ordinador. Els videojocs d'ordinador, d'altra banda, poden tenir

nombrosos conflictes amb el maquinari i les configuracions ja que cada ordinador pot

ser diferent, a diferència de les consoles de joc. Els desenvolupadors intenten aplicar les

configuracions que més es prevaleixen en general, malgrat això no poden garantir que

funcionin en tots els sistemes on el videojoc sigui executat. Una pràctica molt comuna

entre els desenvolupadors de jocs d'ordinador és la de publicar pedaços (patch) pels

seus videojocs (sovint en mesos o anys després). Aquests pedaços, abans s'enviaven als

usuaris a través de discos floppy, però ara generalment es descarreguen a través de la

Per el software en general, el seu manteniment és una activitat molt important degut a que acostuma a requerir més d’un 70% del cost del cicle de vida del producte.

Page 73: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 71

pàgina web dels desenvolupadors. Si esdevé com una segona publicació, la versió amb

pedaç es converteix en la nova.

Els programadors esperen un període per obtenir la major quantitat d'informes d'errors

com sigui possible. Una vegada que el desenvolupador creu que han obtingut

informació suficient, els programadors comencen a treballar en un pedaç. El pedaç pot

trigar setmanes o mesos en desenvolupar-se, però està destinat a solucionar la majoria

de bugs i problemes amb el joc publicat, o en casos estranys, arreglar els problemes no

desitjats causats pels pedaços anteriors. De tant en tant un pedaç pot incloure funcions

addicionals o continguts o fins i tot pot alterar el joc .

En el cas d'un joc en línia multijugador massiu (MMOG), com un MMORPG o

MMORTS, l'enviament del joc és la fase inicial de manteniment. Aquest tipus de jocs

en línia estan en manteniment continu mentre el món del joc es canvia contínuament i

s'afegeixen noves característiques. El personal de manteniment per a un MMOG

popular pot comptar per desenes, de vegades incloent als membres de l'equip de

programació original.

El famós MMORPG World of Warcraft llença nous pedaços cada mes per tal d’ampliar i millorar al màxim el joc i l’experiència del jugador.

Page 74: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 72

2.3. Compilació i distribució del joc

Un cop es té realitzat casi tot el que s’havia plantejat en el disseny del videojoc havent

fet les proves necessàries, toca crear el videojoc arreglat de manera que pugui ser

distribuït fàcilment. Per aconseguir el paquet (fitxer executable “.exe” i arxius adjunts si

és necessari) distribuïble del videojoc s’ha de realitzar una compilació del videojoc que

si pot ser només sigui necessari l’executable.

2.3.1. Compilació estàtica amb Allegro 5 utilitzant l’entorn Dev-C++

Per fer això el primer que s’ha de fer és una compilació estàtica per tal de què les

llibreries adjuntes es comprimeixin dins del fitxer executable i s’hagin de distribuir al

costat del executable. Aquest procés té els seus avantatges i inconvenients: la

compilació estàtica sol augmentar considerablement la mida del fitxer executable i si es

publica una nova versió de les llibreries que utilitza el videojoc s’ha de tornar a enllaçar

les llibreries. Per altra banda aquest procés permet una distribució més senzilla tant per

l’equip creador com pel jugador i de les llibreries només s’afegeix les funcions que són

utilitzades pel joc.

Per realitzar la compilació estàtica amb la llibreria Allegro 5 utilitzant l’entorn Dev-

C++, un cop acabat el videojoc segons s’havia plantejat en el disseny i havent realitzat

les instruccions de l’apartat “1.3. Requeriments per programar en C++”, es va a Eines

>> Opcions del compilador i de la pestanya Compilador es selecciona l’opció Afegeix

això a la línia d’ordres de l’enllaçador si no està seleccionada i just al requadre inferior

ha de quedar escrit:

“-static-libgcc -static-libstdc++” (sense cometes)

A continuació es va a Projecte >> Opcions del projecte i la pestanya Paràmetres. A

sota d’on posa Enllaçador s’afegeixen les següents línies:

"C:/Archivos de programa/Dev-Cpp/MinGW32/lib/liballegro-5.0.10-monolith-static-mt.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libvorbisfile-1.3.2-static-mt.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libvorbis-1.3.2-static-mt.a"

Page 75: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 73

"C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libdumb-0.9.3-static-mt.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libFLAC-1.2.1-static-mt.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libfreetype-2.4.8-static-mt.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libogg-1.2.1-static-mt.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libzlib-1.2.5-static-mt.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libopenal-1.14-static-mt.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libgdiplus.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libuuid.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libkernel32.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libwinmm.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libpsapi.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libopengl32.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libglu32.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libuser32.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libcomdlg32.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libgdi32.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libshell32.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libole32.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libadvapi32.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libws2_32.a" "C:/Archivos de programa/Dev-Cpp/MinGW32/lib/libshlwapi.a"

Es canvia "C:/Archivos de programa/Dev-Cpp/MinGW32” per on es trobi el compilador

MinGW32 en cas de què no sigui aquesta. Les llibreries a incloure i l’ordre en què s’inclouen és

molt important i si no s’incorporen exactament en l’ordre que es mostra a la llista anterior la

compilació fallarà.

Finalment s’afegeix la línia #define ALLEGRO_STATICLINK abans d’incloure les llibreries

d’Allegro 5 de tal manera que quedi de la següent forma (annex C pàgina XIX línia 19):

//Allegro 5 libraries #define ALLEGRO_STATICLINK #include <allegro5/allegro.h> #include <allegro5/allegro_native_dialog.h> #include <allegro5/allegro_audio.h> #include <allegro5/allegro_acodec.h> #include <allegro5/allegro_image.h> #include <allegro5/allegro_memfile.h> #include <allegro5/allegro_primitives.h> #include <allegro5/allegro_ttf.h>

Page 76: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 74

2.3.2. Incorporació d’arxius multimèdia al fitxer final

Ara estaria bé poder incloure tots els arxius multimèdia (imatges, música, etc.) a dins del fitxer

executable de manera que tot el videojoc i els elements necessaris estiguessin en un sol arxiu.

Aquest procés és bastant complex i depèn de l’equip programador del videojoc. Per el videojoc

Tiverton s’ha realitzat un programa anomenat makeUpdateMaps (veieu el seu codi a l’annex D i

el programa compilat al CD) que un cop s’executa crea arxius de C++ que incorporen en

hexadecimal tot el codi dels arxius multimèdia en hexadecimal (veure annex o CD per el codi).

Un cop executat aquest programa que crea els arxius “.cpp” (arxius de codi C++) s’afegeixen

des de l’entorn Dev-C++ al nostre videojoc prement amb el botó dret del ratolí sobre on apareix

el nom del nostre projecte (1) (al marge esquerra a la pestanya Projecte) i es selecciona l’opció

Afegeix al projecte i a partir de la finestra que s’obrirà es seleccionen tots els fitxers creats pel

programa makeUpdateMaps.

Havent realitzat totes les instruccions només s’ha de triar l’opció de Reconstrueix-ho tot (F12)

(2) i ja s’haurà creat l’arxiu executable que incorpora tot el videojoc.

Amb el videojoc final creat es pot distribuir amb un CD o si el videojoc és gratuït com

en el cas del videojoc de mostra es pot penjar el fitxer executable a Internet que és molt

més senzill i garanteix que més persones puguin jugar al joc d’ordinador creat.

S’ha de recordar que un cop es distribueix el videojoc no significa que ja no es pugui

seguir treballant en el mateix projecte, sinó que es poden crear noves versions del

videojoc o millores per garantir l’èxit del joc (apartat “2.2.3. El manteniment”).

1 2

Page 77: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 75

CONCLUSIONS

Amb aquest treball s’ha realitzat una visió general de cada pas per crear un videojoc

veient moltes opcions possibles, el qual permet tenir una idea més clara de com crear un

videojoc de principi a fi. No és pas un procés senzill i crear un bon videojoc passa per

moments en què els creadors es bloquegen i alguns decideixen abandonar el projecte.

Aquest treball és simplement el començament per aprendre a programar i crear

videojocs. S’ha de seguir aprenent sobretot perquè és una industria en constant

actualització i si es necessita ajuda hi ha moltes persones disposades a ajudar. La

creació d’un videojoc pot ser un procés avorrit, esgotador i frustrant, tanmateix el

creador no s’ha de donar per vençut sinó prendre’s un descans. Una de les coses més

molestes i vergonyoses és trobar errors crítics en el teu joc després de distribuir-lo. Per

evitar aquests errors com s’ha vist en el treball la solució és realitzar moltes proves.

Provar ajudarà a aprendre nous conceptes de programació, física, matemàtiques, etc.

La creació de videojocs és com una ciència o art i no s’aprèn amb un manual. La millor

manera de millorar poc a poc en aquest àmbit és practicant tot el que es pugui. A més a

més s’ha de recordar que és un àmbit on intervenen la lògica, les matemàtiques, la

física, i altres tipus de coneixements pels quals una sola persona no té perquè ser

excel·lent en tots els processos que hi ha per crear un videojoc, sinó que aquests

processos es poden dividir entre un grup de persones per així formar un bon videojoc.

I per què un treball sobre la creació de videojocs? Doncs perquè és un disciplina

didàctica de molts temes diferents i també es considera la millor forma de practicar la

programació. D’altra banda també s’ha de pensar que es tracta d’una indústria creixent

que en poc temps pot arribar a ser la feina diària de moltes persones. Un principiant en

aquesta matèria no ha d’esperar que el seu primer joc sigui un punt de referència

revolucionari, sinó un primer pas. En un segon joc, ha d’eliminar els possibles defectes

del primer joc i millorar els aspectes que els hi ha agradat als jugadors.

Abans d’acabar aquest treball, una última recomanació personal per qui es proposi fer

un videojoc o qualsevol altre gran projecte informàtic: fer còpies de seguretat!

Page 78: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 76

BIBLIOGRAFIA

A continuació es citen les diferents fonts utilitzades per l’elaboració del treball:

Llibres

DD.AA., Rules of Play: Game Design Fundamentals. Massachusetts, Estats Units, MIT

Press, 2004.

DD.AA., Technologies for Interactive Digital Storytelling and Entertainment. Berlín,

Alemanya, Springer, 2004.

D’Andrea, E., Desarrollo de Programación de Juegos: Curso de Iniciación. Barcelona,

Inforbook’s, 2009.

DEWHURST, S., C++ Gotchas: Avoiding Common Problems in Coding and Design.

Boston, Estats Units, Addison-Wesley Professional, 2002.

LACREU, J., Vocabulari d’informàtica. València, Generalitat Valenciana, Conselleria

d'Educació i Ciència, Universitat d'Alacant, UJI, Universitat Politècnica de València,

Universitat de València, 1993.

Articles de revistes

GONZÁLEZ, D., “Cómo crear un nivel de videojuego – 1ª parte”, PC Actual (número

212) 163-165.

GONZÁLEZ, D., “Cómo crear un nivel de videojuego – 2ª parte”, PC Actual (número

213) 172-173.

Pàgines web (per ordre temàtic)

VIQUIPÈDIA. Llenguatge de programació

< http://ca.wikipedia.org/wiki/Llenguatge_de_programaci%C3%B3 >

[Consulta: 4 d’agost 2013]

Page 79: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 77

VIQUIPÈDIA. Llenguatge de programació d’alt nivell

< http://ca.wikipedia.org/wiki/Llenguatge_de_programaci%C3%B3_d%27alt_nivell >

[Consulta: 5 d’agost 2013]

VIQUIPÈDIA. Programació orientada a objectes

< http://ca.wikipedia.org/wiki/Programaci%C3%B3_orientada_a_objectes >

[Consulta: 5 d’agost 2013]

VIQUIPÈDIA. C++

< http://ca.wikipedia.org/wiki/C%2B%2B > [Consulta: 6 d’agost 2013]

VIQUIPÈDIA. Java (llenguatge de programació)

< http://ca.wikipedia.org/wiki/Llenguatge_Java > [Consulta: 6 d’agost 2013]

PROGRAMACIONWEB.NET. Lo bueno, lo malo, y lo feo de java

< http://www.programacionweb.net/articulos/articulo/lo-bueno-lo-malo-y-lo-feo-de-

java/ > [Consulta: 6 d’agost 2013]

VIQUIPÈDIA. Entorno de desarrollo integrado

< http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado >

[Consulta: 14 d’octubre 2013]

VIQUIPÈDIA. Visual C++

< http://es.wikipedia.org/wiki/Visual_C%2B%2B > [Consulta: 20 d’octubre 2013]

VIQUIPÈDIA. Dev-C++

< http://es.wikipedia.org/wiki/Dev-C%2B%2B > [Consulta: 20 d’octubre 2013]

VIQUIPÈDIA. GNU

< http://ca.wikipedia.org/wiki/GNU > [Consulta: 20 d’octubre 2013]

Page 80: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 78

BLOODSHED SOFTWARE. Dev-C++

< http://www.bloodshed.net/devcpp.html > [Consulta: 21 d’octubre 2013]

VIQUIPÈDIA. Code::Blocks

< http://es.wikipedia.org/wiki/Code::Blocks > [Consulta: 21 d’octubre 2013]

CODE::BLOCKS. Code::Blocks

< http://www.codeblocks.org/ > [Consulta: 21 d’octubre 2013]

Foros del Web. Dev-C++ o Code Blocks?

< http://www.forosdelweb.com/f96/dev-c-code-blocks-399353/ >

[Consulta: 4 de novembre 2013]

VIQUIPÈDIA . Allegro (biblioteca de programación)

< http://es.wikipedia.org/wiki/Allegro_(biblioteca_de_programaci%C3%B3n) >

[Consulta: 11 de novembre 2013]

ALLEGRO. A game programming library

< http://alleg.sourceforge.net/ > [Consulta: 11 de novembre 2013]

ALLEGRO.CC. Main

< https://www.allegro.cc/ > [Consulta: 11 de novembre 2013]

VIQUIPÈDIA. Género de videojuegos

< http://es.wikipedia.org/wiki/G%C3%A9nero_de_videojuegos >

[Consulta: 27 de novembre 2013]

VIQUIPÈDIA. Videojoc de plataformes

< http://ca.wikipedia.org/wiki/Videojoc_de_plataformes >

[Consulta: 2 de desembre 2013]

Page 81: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 79

ZE[H]N GAMES. DEV: Los problemas al desarrollar un videojuego (cuevas y

terrenos)

< http://www.zehngames.com/dev-los-problemas-al-desarrollar-un-videojuego-cuevas-

y-terrenos/ > [Consulta: 5 de gener 2014]

WIKIHOW. Cómo crear un videojuego desde cero

< http://es.wikihow.com/crear-un-videojuego-desde-cero > [Consulta: 5 de gener 2014]

VIQUIPÈDIA. Desarrollo de videojuegos

< http://es.wikipedia.org/wiki/Desarrollo_de_videojuegos >

[Consulta: 21, 24 i 26 de desembre 2013]

WIKISPACES. Jugabilidad y Experiencia del jugador

< http://jugabilidad.wikispaces.com/ > [Consulta: 21 i 22 de desembre 2013]

PUNTOGEEK. La curva de aprendizaje en los videojuegos

< http://www.puntogeek.com/2013/02/23/la-curva-de-aprendizaje-en-los-videojuegos/ >

[Consulta: 22 de desembre 2013]

MARK BALDWIN. Game Design Document Outline [DOC en línia]

< https://docs.google.com/viewer?url=www-

personal.engin.umd.umich.edu/~bmaxim/cis488/BaldwinGameDesignDocumentTempla

te.doc&embedded=true > [Consulta: 22 de desembre 2013]

PROJECTARY. Cómo crear un videojuego (o APP) desde cero #2: El proceso de

creación.

< http://projectary.wordpress.com/2013/02/16/como-crear-un-videojuego-o-app-desde-

cero-2/ > [Consulta: 23 de desembre 2013]

GENBETA DEV. Cómo empezar a programar videojuegos

< http://www.genbetadev.com/programacion-de-videojuegos/como-empezar-a-

programar-videojuegos > [Consulta: 23 de desembre 2013]

Page 82: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 80

CODINGMADEEASY. C++ Allegro 5 Made Easy [40 vídeos en línia]

< http://www.youtube.com/playlist?list=PL6B459AAE1642C8B4 > (total 8:01:58)

[Consulta: 23 de desembre 2013]

DEIVIDCOPTERO CHANN. Programar Pac-Man [6 vídeos en línia]

< http://www.youtube.com/playlist?list=SP9E48CC99A9EE4F6F > (total 2:40:19)

[Consulta: 24 de desembre 2013]

PROGRAMACIÓN EN LENGUAJE ENSAMBLADOR. Tiles y Sprites en

Ensamblador

< http://asm86.wordpress.com/2011/03/11/tiles-y-sprites-en-ensamblador/ >

[Consulta: 25 de desembre 2013]

IGDA COLOMBIA. Sonido y música para videojuegos: ¿Qué tienen de especial?

< http://igdacolombia.co/2013/02/sonido-y-musica-para-videojuegos-%C2%BFque-

tienen-de-especial/ > [Consulta: 26 de desembre 2013]

GAME AUDIO STUFF. Una página dedicada al audio para videojuegos.

< http://gameaudiostuff.com/ > [Consulta: 26 de desembre 2013]

NIUBIE. Audio En Videojuegos: Herramientas para Efectos de Sonido I

< http://www.niubie.com/2011/02/audio-en-videojuegos-herramientas-para-efectos-de-

sonido-i/ > [Consulta: 26 de desembre 2013]

LIBERTY UNIVERSITY. Testing and Maintenance in the Video Game Industry Today

[PDF en línia]

< http://digitalcommons.liberty.edu/cgi/viewcontent.cgi?article=1136&context=honors >

[Consulta: 27 de desembre 2013]

MUNDO KRAMER. Mantenimiento de software

< http://mundokramer.wordpress.com/2011/05/18/mantenimiento_de_software/ >

[Consulta: 28 de desembre 2013]

Page 83: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller 81

ALLEGRO WIKI. Static and Dynamic Link

< http://wiki.allegro.cc/index.php?title=Static_and_Dynamic_Link >

[Consulta: 29 de desembre 2013]

ALLEGRO WIKI. Windows, Code::Blocks and Allegro 5

< http://wiki.allegro.cc/index.php?title=Windows,_Code::Blocks_and_Allegro_5 >

[Consulta: 29 i 30 de desembre 2013]

XKLIBUR DESIGN BUNKER. 5 consejos para diseñadores de videojuegos

principiantes

< http://www.xklibur.com/archives/2012/02/21/5-consejos-para-disenadores-de-

videojuegos-principiantes/ > [Consulta: 4 de gener 2014]

ARTÍCULOS CON CLASE. Crear el juego de la serpiente en Windows

< http://articulos.conclase.net/?tema=juegos&art=serpiente&pag=000 >

[Consulta: 4 de gener 2014]

INSTITUT D’ESTUDIS CATALANS. DIEC2

< http://dlc.iec.cat/ > [Consulta: del 1 al 5 de gener 2014 pel glossari]

Page 84: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller I

ANNEX

Page 85: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller II

ANNEX A: GLOSSARI

A continuació s’explicarà el significat de les paraules marcades en verd al llarg de tot el

treball que poden resultar desconegudes per un lector sense coneixements profunds

d’informàtica. Alguns d’aquests termes ja s’expliquen en el cos del treball, però aquí

s’amplien més.

Explicació de les següents paraules ordenades alfabèticament:

• Algorisme o Algoritme: Conjunt finit d'instruccions o passos que serveixen per a

executar una tasca o resoldre un problema. D'una manera més formal, un

algorisme és una seqüència finita

d'instruccions realitzables, no ambigües,

l'execució de les quals condueix a una

resolució d'un problema. Aquesta definició es

pot generalitzar des del punt de vista sistèmic,

si se suposa que l'algorisme pot ésser dissenyat

per rebre i aprofitar una determinada entrada,

donant com a resultat una sortida, que pot

resoldre un problema determinat. Alguns

exemples d'algorismes en les matemàtiques són l'algorisme de la divisió per a

calcular el quocient de dos nombres o l'algorisme d'Euclides per obtenir el

màxim comú divisor de dos enters positius.

• API o Application Programming Interface: Una interfície de programació

d'aplicacions és una interfície que especifica com diferents components de

programes informàtics haurien d'interactuar. Dit d'una altra manera, és un

conjunt d'indicacions, en quant a funcions i procediments, ofert per una

biblioteca informàtica o programoteca per ser utilitzat per un altre programa per

interactuar amb el programa en qüestió.

• Arbre: En informàtica, un arbre és una estructura de dades jeràrquica que conté

una col·lecció d'elements distribuïts en nodes enllaçats. Tots els nodes tenen

almenys un únic node anomenat pare o ascendent, excepte un únic node que no

Algorisme babilònic per calcular l’arrel quadrada d’un número.

Page 86: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller III

té node pare que anomenen arrel i que és el punt de

partida de tot l'arbre. Al seu torn, cada node pot tenir

zero o més nodes anomenats fills o descendents. A més,

els nodes fills d'un determinat node tenen un ordre

determinat entre ells. Tots els nodes s’han de poder

abastar des del node arrel seguint els enllaços dels nodes fills.

• Assegurament de la qualitat o Quality Assurance: Conjunt d'activitats

planificades i sistemàtiques aplicades en un sistema de qualitat perquè els

requisits de qualitat d'un producte o servei siguin satisfets. Entre aquestes

activitats es troben la mesura sistemàtica, la comparació amb estàndards, el

seguiment dels processos, totes les activitats associades amb bucles de

realimentació d'informació. Aquestes activitats contribueixen a la prevenció

d'errors, la qual cosa es pot contrastar amb el Control de Qualitat, que se centra

en les sortides del procés.

• bug: Un error de programari (o bug) és el resultat d'una fallada durant el procés

de creació de programari. Aquesta fallada pot presentar-se en qualsevol de les

etapes del cicle de vida del programari encara que els més evidents es donen en

l'etapa de desenvolupament i programació. Alguns errors poden ser de disseny

(per exemple pressuposar que tots els usuaris tenen les mateixes habilitats

motrius, visuals i auditives) comportant que el programa de còmput en qüestió

no sigui utilitzable.

• Clip: Un videoclip, vídeo musical o clip de vídeo és un curtmetratge realitzat

principalment per a la seva difusió en vídeo, televisió i Internet, que ofereix una

representació visual d'una cançó, una composició musical, etc. Els videoclips se

solen realitzar amb multitud d'efectes visuals i electrònics.

• Codi: En la comunicació, un codi és una norma per a convertir un fragment

d'informació (per exemple una lletra, paraula o frase) a una altra forma de

representació, no necessàriament del mateix tipus.

Arbre simple desordenat.

Page 87: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller IV

El procés de codificació, permet convertir la informació origen en unes dades

codificades, que s'emmagatzemen o s'envien a un receptor. El procés invers és el

de descodificació, on es converteix aquests codis en informació interpretable per

al destinatari. Un codec (de codificació/descodificació) és la implementació

d'aquesta norma (o algorisme) per a codificar i descodificar, i pot incloure a més

la compressió de les dades.

Un codi a més pot incloure mecanismes per a ocultar la informació que conté, de

manera que només els destinataris que sàpiguen com descodificar-lo, seran

capaces de reconstruir la informació original. Per exemple usant eines de

criptografia.

• Compilació estàtica: En el procés d'enllaçat durant la compilació les

biblioteques estàtiques (arxius amb codi d'objectes empaquetats) seran copiats i

relocalitzats (si cal) en el fitxer executable final, juntament amb la resta de

fitxers de codi d'objecte.

• Compilador: Programa d'ordinador que tradueix un llenguatge informàtic, com

el Visual Basic o el C, per exemple, a un altre llenguatge informàtic. La tasca

típica d'un compilador és la traducció d'un llenguatge d'alt nivell a un altre

(normalment Assemblador) de baix nivell. Cadascú del processadors que

existeixen tenen una versió pròpia d'un conjunt d'instruccions al qual tradueixen

els compiladors. Aquesta eina permet al programador desconèixer el llenguatge

que utilitza l'ordinador i escriure en un llenguatge més universal i més proper a

com pensa un humà.

• Compilar o Compilació: Acció que realitza un compilador.

• CPU: La unitat central de processament o CPU (per l'acrònim en anglès de

central processing unit), o simplement el processador o microprocessador, és el

component de l'ordinador i d'altres dispositius programables, que interpreta les

instruccions contingudes en els programes i processa les dades. Els CPU

proporcionen les característiques fonamentals de l'ordinador digital (la

Page 88: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller V

programabilitat) i són un dels components necessaris trobats a les computadores

de qualsevol temps, junt amb l'emmagatzemament primari i els dispositius

d'entrada/sortida. Es coneix com a microprocessador la CPU que és

manufacturada amb circuits integrats.

• Delphi: Entorn de desenvolupament de programari dissenyat per a la

programació de propòsit general amb èmfasi en la programació visual, per a

aplicacions Microsoft Windows (32 i 64 bits), Mac OS X i iOS. Delphi s'utilitza

com a llenguatge de programació una versió moderna de Pascal anomenada

Object Pascal.

• Depurador: Programa que permet depurar o netejar els errors d'un altre

programa informàtic. El codi a ser examinat pot alternativament estar executant-

se en un simulador de conjunt d'instruccions (ISS), una tècnica que permet una

gran potència en la seva capacitat de detenir-se quan són oposades condicions

específiques però serà típicament una mica més lent que executant el codi

directament en el processador adequat. Alguns depuradors (en anglès debuggers)

ofereixen dues maneres d'operació: la simulació parcial o completa, per limitar

aquest impacte.

• Diagrama de flux: Representació gràfica d'un

algorisme. S'utilitza en disciplines com la

programació informàtica, l'economia, els

processos industrials i la psicologia cognitiva.

Aquests diagrames utilitzen símbols amb

significats ben definits que representen els

passos de l'algorisme, i representen el flux

d'execució mitjançant fletxes que connecten els

punts d'inici i de finalització.

• Disc floppy: Un disc flexible o disquet (floppy disk) és un dispositiu

d'emmagatzemament de dades format per una peça circular de material magnètic

que permet la gravació i la lectura de dades. És fi, flexible i tancat en una caixa

Diagrama de flux senzill amb els passos a seguir si un llum no funciona.

Page 89: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller VI

fina quadrada o rectangular de plàstic. Durant la dècada del 2000, han estat

majoritàriament substituïts per discs òptics i pels dispositius de memòria flaix.

Han existit tres mides principals de disquets per a PC: 8 polzades, 5 ¼ polzades,

3½ polzades.

• Enllaçar: En informàtica, acció en què els fitxers objecte resultants de la

compilació, juntament amb llibreries ja existents i algun tros de codi afegit, són

agrupats de forma ordenada en un sol fitxer que constitueix l'executable.

• Entorn: Un entorn integrat de desenvolupament o IDE (acrònim en anglès), és

una eina informàtica per al desenvolupament de programari de manera còmoda i

ràpida. El principal avantatge és que facilita la tasca del programador mentre que

l'inconvenient més important és que pot provocar mals hàbits a l'hora de

programar o provocar errors que a priori començant de zero no es produirien.

• Game Over: "Game Over" de significat fi del joc, és un missatge tradicional en

els videojocs, que generalment assenyala que el joc ha acabat, ja sigui amb

resultat negatiu (és a dir, el jugador no ha pogut completar el joc), o en haver

conclòs exitosament la partida. Va ser utilitzat en primer lloc en les màquines de

pinball i, posteriorment, en jocs d'arcade. Des de llavors ha estat adoptat

àmpliament i ara és comunament associada amb els videojocs en general. No

obstant això, en els últims anys la frase ha estat substituïda en diverses ocasions

per missatges diferents, com ara "Estàs mort" (Resident Evil), "Caçat" (Grand

Theft Auto), o "Bona nit!" (Luigi 's Mansion).

• Gameplay: Veure jugabilitat.

• GCC: La GNU Compiler Collection és un conjunt de compiladors de llenguatges

de programació realitzat pel sistema GNU (GNU's Not Unix). Així doncs, és

programari lliure distribuït per la Free Software Foundation (FSF) sota la

llicència GNU General Public License (GPL), i és un dels components clau de

les eines de GNU. Aquest conjunt de compiladors és l'estàndard per a sistemes

Page 90: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller VII

operatius de codi lliure similars a Unix (com Linux), i de certs sistemes operatius

propietaris derivats dels primers com podria ser el Mac OS X.

• glitch: En l'àmbit de la informàtica o els videojocs és un error que, en no afectar

negativament al rendiment, la jugabilitat o l'estabilitat del programa o del joc en

qüestió, no es pot considerar un bug, sinó més aviat una "funció no prevista". En

alguns videojocs es poden observar glitches visuals a causa de fitxers mal

codificats o danyats, que en ser llegits formen figures o imatges errònies.

• hardware: El maquinari (en anglès hardware) d'un ordinador és el conjunt de

les seves parts físiques. Es classifica principalment per situació (central o

perifèric) i funció (entrada, sortida, entrada-sortida o emmagatzematge).

• HTML: Acrònim d’Hyper Text Markup Language, en català, "llenguatge de

marcat d'hipertext", és un llenguatge de marcat que deriva de l'SGML dissenyat

per estructurar textos i relacionar-los en forma d'hipertext. Gràcies a Internet i

als navegadors web, s'ha convertit en un dels formats més populars que

existeixen per a la construcció de documents per a la web.

• HUD: En informàtica, principalment en els videojocs, es diu HUD (de l'anglès:

"Heads-Up Display") a la informació que en tot moment es mostra en pantalla

durant la partida, generalment en forma d'icones i números. El HUD sol mostrar

el nombre de vides, punts, nivell de salut i armadura, mini-mapa etc. depenent

del joc.

• IDE: Sigles en anglès de integrated development environment. Veure entorn.

• Intel·ligència artificial (IA): Part de la informàtica, dedicada al desenvolupament

d'algorismes que permet a una màquina (habitualment un ordinador) prendre

decisions intel·ligents o, si més no, comportar-se com si tingués una

intel·ligència semblant a la humana.

Page 91: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller VIII

• Interfície gràfica d’usuari: GUI de l'anglès Graphic User Interface és la interfície

d'usuari que utilitza elements gràfics que permeten interactuar de forma molt

intuïtiva amb un sistema informàtic que no pas el sistema per la línia d’ordres.

• Intèrpret: A ciències de la computació, intèrpret o interpretador és un programa

informàtic capaç d'analitzar i executar altres programes, escrits en un llenguatge

de alt nivell. Els intèrprets es diferencien dels compilador és que mentre aquests

tradueixen un programa des de la seva descripció en un llenguatge de

programació al codi de màquina del sistema, els primers (els intèrprets) només

fan la traducció a mesura que sigui necessària, típicament, instrucció per

instrucció, i normalment no guarden el resultat d'aquesta traducció.

• Jugabilitat: Terme emprat en el disseny i anàlisi de jocs que descriu la qualitat

del joc en termes de les seves regles de funcionament i del seu disseny com a

joc. Es refereix a totes les experiències d'un jugador durant la interacció amb

sistemes de jocs. La definició estricta de jugabilitat seria allò que fa el jugador.

Una altra definició possible, donada pel famós dissenyador de videojocs Sid

Meier, seria aquesta: La jugabilitat és una sèrie de decisions interessants.

• Llenguatge de programació: Llenguatge informàtic utilitzat per controlar el

comportament d'una màquina, normalment un ordinador. Cada llenguatge té una

sèrie de regles sintàctiques i semàntiques estrictes que cal seguir per escriure un

programa informàtic, i que en descriuen l'estructura i el significat

respectivament. Aquestes regles permeten especificar tant la classe de dades

amb què treballarà el programa com les accions que realitzarà. Mentre que

alguns llenguatges es defineixen per una especificació formal (un document),

altres són definits oficiosament per una implementació concreta (un

compilador).

• Llenguatge multi-plataforma: En informàtica, multi-plataforma, és un atribut

conferit als programes informàtics o als mètodes de càlcul i als conceptes que

s'executen en múltiples plataformes informàtiques.

Page 92: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller IX

• Llibreria: (correctament dit biblioteca informàtica) Conjunt de subprogrames

utilitzats per desenvolupar programari. Les biblioteques contenen codi i dades

que proporcionen serveis a programes independents, és a dir, passen a formar

part d'aquests. Això permet que el codi i les dades es comparteixin i es puguin

modificar de forma modular.

• MIDI: Acrònim de Musical Instrument Digital Interface (interfície digital

d'instruments musicals) és un estàndard tècnic de comunicació entre equips

musicals electrònics utilitzat en informàtica musical que permet l'intercanvi

d'informació entre diversos equips musicals connectats i també entre aquests i un

ordinador personal. Els fitxers que contenen informació midi tenen l'extensió

".mid" i generalment ocupen poc espai en memòria. La informació MIDI pot fer

referència a notes particulars, identificar bancs i sons) de sintetitzadors, valors

de diferents paràmetres de control (velocitat, modulació, tonalitat...), entre altres.

• MMORPG: Els MMORPG (Massively Multiplayer Online Role-Playing Games),

són, com indica el seu nom en anglès, videojocs de rol multijugador massius

jugats per Internet.

• MP3: Format d'àudio digital basat en la compressió amb pèrdues, desenvolupat

pel grup d'experts Media Picture Group (MPEG) i descrit per una norma ISO.

• Multimèdia: Sistema que utilitza més d'un mitjà de comunicació al mateix temps

en la presentació de la informació, com el text, la imatge, l'animació, el vídeo o

el so. Podem qualificar com a multimèdia, a més a més, els mitjans, electrònics

o d'altra mena, que permetin presentar i emmagatzemar contingut multimèdia.

• Ordre: A informàtica, una ordre és una directiva o instrucció que l'usuari

proporciona al sistema, des de la línia d'ordres o directament cridant al

programa, el qual generalment està contingut en un arxiu executable.

Page 93: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller X

• pathfinding: Traçat per una aplicació

d'ordinador, del camí més curt entre dos punts.

Aquesta àrea de recerca està basada

principalment en el Algorisme de Dijkstra per

a la recerca de la ruta més curta.

• Pedaç: En informàtica, un pedaç (de l'anglès patch) és un petit tros de

programari dissenyat per actualitzar o arreglar els problemes d'un programa

informàtic. Això inclou arreglar errors del programa, reemplaçar gràfics o

millorar la utilitat o el rendiment. Tot i que estan dissenyats per arreglar

problemes, alguns pedaços mal dissenyats poden introduir nous problemes.

• Perifèric: Dispositiu que, tot i formar part de l'ordinador, es troba fora del

contenidor principal (anomenat "caixa" o "torre"). Actualment també es fa

referència com a perifèrics els dispositius que, tot i estar inclosos dins d'aquesta

caixa són elements complementaris al funcionament bàsic de l'ordinador. És el

cas d'alguns dispositius inclosos en ordinadors portàtils, com el monitors, el

teclat, el ratolí, càmeres web, etc.

• Perspectiva isomètrica: Cert nombre de videojoc es posa en acció als seus

personatges utilitzant un punt de vista en perspectiva isomètrica, o millor dit, en

l'argot usual, a "perspectiva 3/4". Des d'un angle pràctic, això permet desplaçar

els elements gràfics sense modificar la mida, limitació inevitable per ordinadors

amb baixa capacitat gràfica.

• Plataforma: 1. Estructura, ja sigui de programari o de maquinari, que permet a

un programari ésser executat. Les plataformes de programari més famoses són la

plataforma Java i la plataforma Microsoft .NET. La plataforma de maquinari

més famosa és la combinació de X86 amb els sistemes operatius Windows, Linux

o Mac OS X.

2. Els videojocs de plataformes, o simplement plataformes, són un gènere de

videojocs en el qual cal caminar, saltar-se o escalar sobre una sèrie de

Rutes equivalents entre A i B en un entorn 2D.

Page 94: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XI

plataformes i penya-segats, amb enemics, mentre es recullen objectes per a

poder completar el joc. Sol usar scroll horitzontal cap a esquerra o cap a la dreta.

És un gènere molt popular de videojocs creat en els primers anys 80 i que

continua mantenint bastant de popularitat en l'actualitat.

• Programació orientada a objectes o POO: L'orientació a objectes és un

paradigma de programació en què tot es basa en objectes. Un objecte és un tipus

abstracte de dades que encapsula (amaga) tant les dades necessàries com les

funcions per accedir-hi.

• RAM: De l'anglès Random Access Memory (Memòria d'Accés Aleatori), és un

tipus de memòria informàtica, caracteritzat per un accés directe en qualsevol

ordre (aleatori) en un temps constant, sense distinció de la posició on es trobi la

informació ni de la posició de l'anterior lectura. Actualment es produeixen

mitjançant circuits integrats. L'expressió "Memòria RAM" s'utilitza sovint per a

referir-se als mòduls de memòria.

• Requeriment: En enginyeria, un requisit (o requeriment) és una necessitat

singular documentada de què un determinat producte o servei ha de ser o fer. És

més comunament usat en un sentit formal en enginyeria de sistemes, enginyeria

del programari o enginyeria empresarial. És una declaració que identifica un

atribut necessari, capacitat, característica, o qualitat d'un sistema perquè tingui

valor i utilitat per a un usuari.

• RPG (Role Play Game): Un joc de rol és un joc que es basa en la descripció

d'una situació fictícia i on els jugadors poden canviar els esdeveniments de la

narració pel fet que controlen les accions conscients d'alguns dels personatges

del joc. Normalment es juga entre dues o més persones, una de les quals

assumeix el paper de director de joc mentre la resta assumeixen el control d'un

personatge. Tot i que es pot deixar a decisió del director les qüestions d'atzar, és

usual utilitzar sistemes estadístics per augmentar el realisme o imparcialitat de

les decisions preses pels jugadors.

Page 95: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XII

• script: En informàtica arxiu d'ordres, vulgarment referit amb el barbarisme script

(del llatí scriptum, escrit), és un programa normalment simple, que regularment

s'emmagatzema en un arxiu de text pla. Els scripts són gairebé sempre

interpretats, però no tot programa interpretat és considerat un script. El seu ús

habitual és realitzar diverses tasques com combinar components, interactuar amb

el sistema operatiu o amb l'usuari.

• Servidor: Sistema que proporciona serveis a altres sistemes informàtics

(anomenats clients) dins d'una xarxa informàtica, usant l'arquitectura client-

servidor. El terme pot fer referència a una màquina (per exemple un ordinador

que conté una web) o a un tipus de programari (com per exemple un programari

de base de dades).

• Sistema operatiu: Conjunt dels diferents programes que controlen el

funcionament d'un ordinador. Les seves funcions, entre d'altres, consisteixen a

gestionar les transferències d'informació internes, procurar la comunicació de

l'ordinador amb els operadors, controlar l'execució dels programes amb la

detecció dels errors, encadenar automàticament les feines, optimitzar els

recursos (memòria, unitat aritmètica, etc), carregar i descarregar automàticament

els programes en funció de l'espai de memòria i dels diferents perifèrics.

• smartphone: Un telèfon intel·ligent, també anomenat smartphone, és un telèfon

mòbil amb capacitats d'ordinador de butxaca que compta amb un sistema

operatiu capaç d'instal·lar aplicacions mòbils. Això li permet realitzar múltiples

funcions: accés a Internet, agenda electrònica, gestió del correu electrònic,

videojocs, xarxes socials, etc.

• software testing: Les proves de programari o proves de software és un procés o

investigació dut a terme per a proporcionar als responsables d'un producte o

servei informació sobre qualitat del producte o servei que s'està provant.

• software: El programari (software, en anglès) és el conjunt dels programes

informàtics, procediments i documentació que fan alguna tasca en un ordinador.

Page 96: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XIII

Comprèn el conjunt sistemàtic dels programes d’explotació i dels programes

informàtics que serveixen per a aplicacions determinades.

• sprite: Element gràfic que es pot desplaçar sobre la pantalla. En principi, un

sprite és parcialment transparent, i pot ser animat (és a dir, és format de diversos

mapes de bits que apareixen uns sobre els altres). El fons de la pantalla

constitueix generalment l'escenari i els sprites són els personatges i objectes que

se superposen al fons de la pantalla i que es desplacen. Un sprite també pot de

vegades passar darrere un element del fons de la pantalla.

• Storyboard: Representació il·lustrada d’una pel·lícula abans de la seva

realització. És un document tècnic format un conjunt de vinyetes o

d’il·lustracions mostrades en seqüència amb l’objectiu de servir de guia per

entendre una història, previsualitzar una animació o seguir l’estructura d’una

pel·lícula en la reproducció, acompanyades generalment del text dels diàlegs o

de la veu en off i d’altres anotacions tècniques relatives als efectes sonors o

visuals.

• Suport: Conjunt de maquinari i software que permet executar programes

determinats.

• tile: Part gràfica de cada videojoc que pot ser utilitzada per a completar parts

d'un fons per mitjà d'un tileset (conjunt de tiles). Cada tile és diferent i

bàsicament de la mateixa mida, en els videojocs els tiles estan col·locats en un

tileset. Cada tileset tindrà la combinació bàsica de certs llocs del joc, muntanyes,

llacs, boscos, etc.

• Versió: nom o número únic que se li assigna a

un software per indicar el seu nivell de

desenvolupament i d'actualització.

Generalment s'assigna dos nombres,

mayor.menor (en anglès: major.minor), que

van incrementant a mesura que el

El primer número de la versió designa la variant (línia d'evolució), i el segon la versió particular (revisió) al llarg d'aquesta variant.

Page 97: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XIV

desenvolupament del programari augmenti i es requereixi l'assignació d'un nou

nom o número únic. Encara que sigui menys habitual, també pot indicar un altre

número més, micro, i la fase de desenvolupament en què es troba el programari.

• WAV: (o WAVE, Waveform audio format) Format d'àudio digital normalment

sense compressió de dades, desenvolupat i propietat de Microsoft i d'IBM, que

s'utilitza per a emmagatzemar àudio en el PC, admet arxius mono i estèreo a

diverses resolucions i velocitats de mostreig, la seva extensió és “.wav”.

• workspace: En informàtica, espai (carpeta) on es guarden tots els arxius d’un

projecte.

Com s’ha pogut comprovar moltes de les paraules d’aquest glossari estan en anglès ja

que és la llengua oficial per el camp de la informàtica.

Page 98: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XV

ANNEX B: PROGRAMES UTILITZATS

Els instal·ladors de tots els programes (i les versions portables en alguns) es troben a la

carpeta “Programes” del CD adjunt al treball. Per la realització dels diagrames de flux

que apareixen a la part de “La programació” del apartat “2.2.1. La producció” s’ha

utilitzat l’editor de diagrames Dia gratuït i en castellà. Els tres diagrames de flux que

apareixen al treball es troben a la carpeta “Diagrames” del CD com a imatges de mapa

de bits (“.bmp”) i com a fitxers “.dia” propis del programa utilitzats per crear-los.

L’instal·lador d’aquest programa es pot descarregar l’última versió des de la pàgina

oficial del producte: http://dia-installer.de/; o des de Softonic: http://dia.softonic.com/.

Per la creació del videojoc s’ha utilitzat l’entorn de desenvolupament Dev-C++ que es

pot descarregar l’instal·lador de la versió utilitzada (5.5.3) a

http://orwelldevcpp.blogspot.com.es/2013/11/dev-c-553-released.html o l’última versió

disponible a http://orwelldevcpp.blogspot.com.es/ o des de Softonic: http://dev-

c.softonic.com/. L’instal·lador de la versió 5.5.3 es pot trobar al CD.

Per l’edició d’imatges s’ha utilitzat l’editor Microsoft Paint present a tots els ordinadors

amb sistema operatiu Windows. També s’ha utilitzat l’editor d’imatges GIMP que es pot

descarregar gratuïtament des de la pàgina oficial del producte http://www.gimp.org/ o

des de Softonic http://the-gimp.softonic.com/. L’instal·lador del GIMP està dins del CD.

Per l’edició del so i la música del videojoc s’ha utilitzat el programa Audacity el qual es

pot descarregar a http://audacity.sourceforge.net/?lang=es o des de Softonic

http://audacity.softonic.com/. L’instal·lador del programa Audacity també est`s dins del

CD adjunt al treball.

Encara que per aquest treball no s’hagi utilitzat alguns dels següents programes però si

se n’hagi parlat, l’entorn Code::Blocks es pot instal·lar des del CD o des d’Internet a

http://www.codeblocks.org/ o a http://code-blocks.softonic.com/. El tercer entorn, el

Microsoft Visual Studio Express 2013 (gratuït) es pot instal·lar descarregant

l’executable des de http://www.visualstudio.com/es-es/products/visual-studio-express-

vs.aspx o executant l’instal·lador que hi ha al CD.

Page 99: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XVI

ANNEX C: CODIS DEL VIDEOJOC “Tiverton”

A continuació es mostren només alguns codis del videojoc “Tiverton” degut a la gran

extensió que ocupa tot el projecte. Es poden trobar tots els codis en PDF al CD adjunt. tiverton.dev -> main.cpp 1: //Main program 2: #include "globals.h" 3: 4: #include "init.h" 5: #include "game_loop.h" 6: #include "shutdown.h" 7: #include "abort_game.h" 8:

9: int main(int argc, char* argv[]) 10: { 11: try { 12: init(); 13: game_loop(); 14: shutdown(); 15: }catch(...) { 16: abort_game(); 17: } 18:

19: return EXIT_SUCCESS; 20: } 21:

tiverton.dev -> init.cpp 1: #include "init.h" 2:

3: void restorePevResolution() 4: { 5: ChangeDisplaySettings(&predm, CDS_UPDATEREGISTRY); 6: } 7:

8: void init() 9: { 10: if(initz) return; 11:

12: if (!al_init()) abort_game(); 13: al_inhibit_screensaver(true); 14:

15: if (!al_install_keyboard()) abort_game(); 16:

17: if (!al_init_acodec_addon()) abort_game(); 18: if (!al_install_audio()) abort_game();

Page 100: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XVII

19: if (atexit(al_uninstall_audio) != 0) abort_game(); 20:

21: if (!al_init_image_addon()) abort_game(); 22: if (!al_init_primitives_addon()) abort_game(); 23:

24: al_init_font_addon(); 25: if (!al_init_ttf_addon()) abort_game(); 26:

27: const unsigned char FPS = 60; 28:

29: timer = al_create_timer(1.0 / FPS); 30: if (!timer) abort_game(); 31:

32: windowWidth = 1280; 33: windowHeight = 720; 34:

35: al_set_new_display_flags(ALLEGRO_NOFRAME); 36:

37: screenWidth = GetSystemMetrics(SM_CXSCREEN); 38: screenHeight = GetSystemMetrics(SM_CYSCREEN); 39:

40: memset(&predm, 0, sizeof(DEVMODE)); 41: predm.dmSize = sizeof(DEVMODE); 42: predm.dmPelsWidth = screenWidth; 43: predm.dmPelsHeight = screenHeight; 44: predm.dmFields = DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT|DM_DISPLAYFREQUENCY; 45:

46: DEVMODE dm; 47: memset(&dm, 0, sizeof(DEVMODE)); 48: dm.dmSize=sizeof(DEVMODE); 49: dm.dmPelsWidth = windowWidth; 50: dm.dmPelsHeight = windowHeight; 51: dm.dmFields = DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT|DM_DISPLAYFREQUENCY; 52:

53: VirtualLoad::updateMaps(); 54:

55: al_add_new_bitmap_flag(ALLEGRO_VIDEO_BITMAP); 56: al_add_new_bitmap_flag(ALLEGRO_MIN_LINEAR); 57: al_add_new_bitmap_flag(ALLEGRO_MAG_LINEAR); 58: al_set_new_bitmap_format(ALLEGRO_PIXEL_FORMAT_ANY_32_WITH_ALPHA); 59:

60: ALLEGRO_BITMAP *tempicon = al_load_bitmap("data/logo/icons/icon.png"); 61: if(!tempicon) abort_game(); 62:

63: if(screenWidth != windowWidth || screenHeight != windowHeight){ 64: bool finsihCheck = false; 65: for(int i = 0; i < al_get_num_display_modes() && !finsihCheck; i++){ 66: ALLEGRO_DISPLAY_MODE mode;

Page 101: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XVIII

67: if(al_get_display_mode(i, &mode)){ 68: if(mode.width == windowWidth && mode.height == windowHeight){ 69: if(atexit(restorePevResolution) == 0){ 70: ChangeDisplaySettings(&dm,

CDS_UPDATEREGISTRY); 71: screenWidth = GetSystemMetrics(SM_CXSCREEN); 72: screenHeight =

GetSystemMetrics(SM_CYSCREEN); 73: finsihCheck = true; 74: } 75: } 76: } 77: } 78: } 79: display = al_create_display(screenWidth, screenHeight); 80: if (!display) abort_game(); 81: al_set_window_title(display, "Tiverton"); 82: al_set_display_icon(display, tempicon); 83: al_hide_mouse_cursor(display); 84: al_destroy_bitmap(tempicon); 85:

86: buffer = al_create_bitmap(windowWidth, windowHeight); 87: if (!buffer) abort_game(); 88:

89: al_set_target_bitmap(buffer); 90: al_clear_to_color(al_map_rgb_f(0, 0, 0)); 91:

92: mylogo0 = al_load_bitmap("data/logo/staticlogos/logo0.png"); 93: if (!mylogo0) abort_game(); 94:

95: mylogo1 = al_load_bitmap("data/logo/staticlogos/logo1.png"); 96: if (!mylogo1) abort_game(); 97:

98: event_queue = al_create_event_queue(); 99: if (!event_queue) abort_game(); 100:

101: al_register_event_source(event_queue, al_get_keyboard_event_source()); 102: al_register_event_source(event_queue, al_get_timer_event_source(timer)); 103: al_register_event_source(event_queue, al_get_display_event_source(display)); 104:

105: voice = al_create_voice(44100, ALLEGRO_AUDIO_DEPTH_INT16, ALLEGRO_CHANNEL_CONF_2); 106: if(!voice) abort_game(); 107:

108: mixer = al_create_mixer(44100, ALLEGRO_AUDIO_DEPTH_FLOAT32, ALLEGRO_CHANNEL_CONF_2);

109: if(!mixer) abort_game(); 110:

Page 102: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XIX

111: if(!al_set_default_mixer(mixer)) abort_game(); 112:

113: if(!al_attach_mixer_to_voice(mixer, voice)) abort_game(); 114:

115: msouback = al_load_sample("data/menu/back.wav"); 116: if(!msouback) abort_game(); 117:

118: msoumove = al_load_sample("data/menu/move.wav"); 119: if(!msoumove) abort_game(); 120:

121: msouclick = al_load_sample("data/menu/click.wav"); 122: if(!msouclick) abort_game(); 123:

124: mymenu = new Menu(); 125: if(!mymenu) abort_game(); 126:

127: pcgame = new Game(); 128: if(!pcgame) abort_game(); 129: 130:

131: extratpass = 0.0; 132:

133: done = false; 134: initz = true; 135: } 136:

tiverton.dev -> includes.h 1: //C++ libraries 2: #include <cstdlib> 3: #include <cfloat> 4: #include <climits> 5: #include <cmath> 6: #include <vector> 7: #include <map> 8: #include <algorithm> 9: #include <string> 10: #include <sstream> 11: #include <ctime> 12: #include <cstdio> 13: 14: //Extended maths 15: #include "Maths.h" 16: #include "Func.h" 17: 18: //Allegro 5 libraries 19: #define ALLEGRO_STATICLINK 20: #include <allegro5/allegro.h> 21: #include <allegro5/allegro_native_dialog.h> 22: #include <allegro5/allegro_audio.h> 23: #include <allegro5/allegro_acodec.h> 24: #include <allegro5/allegro_image.h> 25: #include <allegro5/allegro_memfile.h> 26: #include <allegro5/allegro_primitives.h> 27: #include <allegro5/allegro_ttf.h>

Page 103: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XX

28: 29: //Display 30: #include "MyDisplay.h" 31: 32: //Load virtual files 33: #include "VirtualLoad.h" 34: 35: //Level code 36: #include "Level.h" 37: 38: //Configuring the use of C + + standard library 39: using namespace std; 40: 41: 42: //Enum keys statement 43: #ifndef ENUM_KEYS_G 44: #define ENUM_KEYS_G 45:

46: enum Keys { 47: KEY_SPACE, 48: KEY_LEFT, 49: KEY_RIGHT, 50: KEY_UP, 51: KEY_DOWN, 52: NUM_REG_KEYS

53: }; 54: 55: #endif 56: 57: 58: //Enum menu sounds statement 59: #ifndef ENUM_MSOU_G 60: #define ENUM_MSOU_G 61:

62: enum Msou { 63: CLICK, 64: MOVE, 65: BACK

66: }; 67: 68: #endif 69: 70: 71: #ifndef GENERALDATA_H 72: #define GENERALDATA_H 73:

74: typedef struct GeneralData { 75: unsigned char lifes; 76: unsigned char hearts; 77: unsigned short coins; 78: unsigned long lscore; 79: unsigned char rtime; 80: bool levelstoped; 81: bool dead; 82: } GeneralData; 83:

Page 104: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XXI

84: #endif 85: 86: 87: //Globalization 88: #ifndef GLOB_G 89: #define GLOB_G 90: 91: #include "Menu.h" 92: #include "Game.h" 93:

94: extern ALLEGRO_SAMPLE *msouback, *msoumove, *msouclick; 95: extern Menu* mymenu; 96: extern Game* pcgame; 97: extern double extratpass; 98: extern GeneralData GData; 99: extern bool done, initz; 100: extern vector<bool> key, notCheckKey; 101:

102: extern ALLEGRO_BITMAP *mylogo0, *mylogo1; 103:

104: extern ALLEGRO_TIMER* timer; 105: extern ALLEGRO_EVENT_QUEUE* event_queue; 106: extern ALLEGRO_BITMAP* buffer; 107: extern ALLEGRO_VOICE* voice; 108: extern ALLEGRO_MIXER* mixer; 109: extern ALLEGRO_DISPLAY* display; 110:

111: extern unsigned short screenWidth, screenHeight, windowWidth, windowHeight; 112: extern DEVMODE predm; 113:

114: extern void abort_game(); 115: extern void paint(); 116: extern void checkKeysWhenSwitchIn(); 117: 118: #endif 119:

tiverton.dev -> game_loop.cpp 1: #include "game_loop.h" 2:

3: void paint() 4: { 5: al_set_target_bitmap(al_get_backbuffer(display)); 6: al_draw_scaled_bitmap(buffer, 0, 0, windowWidth, windowHeight, 0, 0, screenWidth,

screenHeight, 0); 7: al_flip_display(); 8: al_set_target_bitmap(buffer); 9: al_clear_to_color(al_map_rgb(0, 0, 0)); 10: }

Page 105: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XXII

11: --------------- 96:

97: void game_loop(void) 98: { 99: if (!initz) abort_game(); 100: if (!al_is_system_installed()) abort_game(); 101: if (!al_is_keyboard_installed()) abort_game(); 102: if (!al_is_audio_installed()) abort_game(); 103:

104: paint(); 105: if(!logo()) abort_game(); 106:

107: do { 108: done = mymenu‐>playMenu(); 109:

110: if(!done){ 111: al_clear_to_color(al_map_rgb_f(0, 0, 0)); 112: paint(); 113: al_rest(0.2); 114:

115: al_start_timer(timer); 116: if (!al_get_timer_started(timer)) abort_game(); 117:

118: extratpass = 0.0; 119:

120: al_flush_event_queue(event_queue); 121: pcgame‐>enteringLoop(mymenu‐>getGamePart()); 122: al_flush_event_queue(event_queue); 123: } 124:

125: bool redraw = true; 126:

127: while (!done && pcgame‐>isPlaying()) { 128: ALLEGRO_EVENT event; 129: al_wait_for_event(event_queue, &event); 130:

131: switch (event.type) { 132: case ALLEGRO_EVENT_TIMER: ---------------

148: redraw = true; 149: pcgame‐>update_logic(‐extratpass); 150: extratpass = 0.0; 151: break; 152:

153: case ALLEGRO_EVENT_KEY_DOWN: 154: pcgame‐>get_user_input(event.keyboard.keycode, true); 155: break; 156:

Page 106: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XXIII

157: case ALLEGRO_EVENT_KEY_UP: ---------------

165: else pcgame‐>get_user_input(event.keyboard.keycode, false);

166: break; 167:

168: case ALLEGRO_EVENT_DISPLAY_SWITCH_OUT: 169: pcgame‐>in_game(false); 170: break; 171:

172: case ALLEGRO_EVENT_DISPLAY_SWITCH_IN: 173: checkKeysWhenSwitchIn(); 174: pcgame‐>in_game(true); 175: break; 176: } 177:

178: if (redraw && al_is_event_queue_empty(event_queue)) { 179: redraw = false; 180: pcgame‐>update_graphics(); 181: paint(); 182: } 183: } 184: al_stop_timer(timer); 185: if (al_get_timer_started(timer)) abort_game(); 186:

187: al_flush_event_queue(event_queue); 188: 189:

190: al_set_target_bitmap(buffer); 191: al_clear_to_color(al_map_rgb_f(0, 0, 0)); 192: paint(); 193: al_rest(done ? 0.1 : 0.2); 194: } while(!done); 195: } 196:

tiverton.dev -> Life.cpp 1: #include "Life.h" 2:

3: bool Life::slifeloaded = false; 4: vector<Life*> Life::staticLifes; 5: ALLEGRO_BITMAP *Life::life; 6: float Life::lifeRadius; 7:

8: void Life::loadLife(){ 9: if(slifeloaded) return; 10:

Page 107: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XXIV

11: life = al_load_bitmap("data/spritelib/intlife.png"); 12: if(!life) abort_game(); 13:

14: lifeRadius = (float)(((double)(al_get_bitmap_width(life) + al_get_bitmap_height(life)))/4.0);

15: 16:

17: slifeloaded = true; 18: } 19:

20: Life::Life(int _cx, int _cy){ 21: if(!slifeloaded) abort_game(); 22:

23: if(!pcgame‐>isRepeatingLvl()){ 24: cx = _cx; 25: cy = _cy; 26:

27: visible = true; 28: caught = false; 29:

30: alpha = 1.0; 31:

32: staticLifes.push_back(this); 33: } 34: } 35:

36: void Life::clean(){ 37: if(!pcgame‐>isRepeatingLvl()){ 38: for(int i = 0; i < staticLifes.size(); i++) delete staticLifes[i]; 39: staticLifes.clear(); 40: } 41: loadLife(); 42: } 43:

44: bool Life::checkThisCollision(){ 45: if(Player::circularCollision(cx, cy, (int)(lifeRadius ‐ 3))){ 46: caught = Level::addLife(); 47: } 48:

49: return caught; 50: } 51:

52: void Life::changeAlpha(float tpas){ 53: alpha ‐= 200.0 * (((1/(alpha*alpha))‐0.95)/16) * tpas; 54:

55: if(alpha <= 0.0){ 56: alpha = 0.0; 57: visible = false;

Page 108: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XXV

58: } 59: } 60:

61: bool Life::checkAllCollisions(float tpas){ 62: if(!slifeloaded) abort_game(); 63: bool oneCollision = false; 64: for(int i = 0; i < staticLifes.size(); i++){ 65: if(!GData.dead) if(!staticLifes[i]‐>caught &&

staticLifes[i]‐>checkThisCollision()) oneCollision = true;

66: if(staticLifes[i]‐>visible && staticLifes[i]‐>caught) staticLifes[i]‐ >changeAlpha(tpas);

67: if(!staticLifes[i]‐>visible){ 68: delete staticLifes[i]; 69: staticLifes.erase(staticLifes.begin() + (i‐‐)); 70: } 71: } 72: return oneCollision; 73: } 74:

75: void Life::tPaint(){ 76: if(!slifeloaded) abort_game(); 77: for(int i = 0; i < staticLifes.size(); i++){ 78: if(!staticLifes[i]‐>visible) continue; 79: MyDisplay::my_draw_tinted_bitmap(life,

al_map_rgba_f(1.0*staticLifes[i]‐>alpha, 1.0*staticLifes[i]‐>alpha, 1.0*staticLifes[i]‐>alpha, staticLifes[i]‐>alpha), (float)staticLifes[i]‐>cx ‐ lifeRadius, (float)staticLifes[i]‐>cy ‐ lifeRadius, 0);

80: } 81: } 82:

tiverton.dev -> Maths.cpp 1: #include "Maths.h" 2:

3: double Maths::distancePointToPoint(int ax, int ay, int bx, int by){ 4: return sqrt((bx ‐ ax) * (bx ‐ ax) + (by ‐ ay) * (by ‐ ay)); 5: } 6:

7: bool Maths::detectCollisionRectRect(int cxi, int cyi, int cxf, int cyf, int dxi, int dyi, int dxf, int dyf){ 8: vector<int> tempv(4); 9: if(!(cxi == dxi || cxi == dxf || cxf == dxi || cxf == dxf)){ 10: tempv[0] = cxi; 11: tempv[1] = cxf;

Page 109: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XXVI

12: tempv[2] = dxi; 13: tempv[3] = dxf; 14: sort(tempv.begin(), tempv.end()); 15: if((tempv[0] == cxi && tempv[1] == cxf) || (tempv[0] == dxi && tempv[1] == dxf))

return false; 16: } 17:

18: if(!(cyi == dyi || cyi == dyf || cyf == dyi || cyf == dyf)){ 19: tempv[0] = cyi; 20: tempv[1] = cyf; 21: tempv[2] = dyi; 22: tempv[3] = dyf; 23: sort(tempv.begin(), tempv.end()); 24: if((tempv[0] == cyi && tempv[1] == cyf) || (tempv[0] == dyi && tempv[1] == dyf))

return false; 25: } 26:

27: return true; 28: } 29:

30: bool Maths::getXPointCircleRectY(double & x1, double & x2, int y, int cx, int cy, int r){ 31: int dis = r*r‐(y‐cy)*(y‐cy); 32: if(dis < 0) return false; 33: x1 = x2 = cx; 34: x1 += sqrt(dis); 35: x2 ‐= sqrt(dis); 36: return true; 37: } 38:

39: bool Maths::getYPointCircleRectX(int x, double & y1, double & y2, int cx, int cy, int r){ 40: int dis = r*r‐(x‐cx)*(x‐cx); 41: if(dis < 0) return false; 42: y1 = y2 = cy; 43: y1 += sqrt(dis); 44: y2 ‐= sqrt(dis); 45: return true; 46: } 47:

48: bool Maths::detectCollisionRectCircle(int rxi, int ryi, int rxf, int ryf, int cx, int cy, int r){ 49: double a, b; 50: if(getXPointCircleRectY(a, b, ryi, cx, cy, r)){ 51: if(((int)a >= rxi && (int)a <= rxf) || ((int)b >= rxi && (int)b <= rxf)) return true; 52: } 53:

54: if(getXPointCircleRectY(a, b, ryf, cx, cy, r)){

Page 110: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XXVII

55: if(((int)a >= rxi && (int)a <= rxf) || ((int)b >= rxi && (int)b <= rxf)) return true; 56: } 57:

58: if(getYPointCircleRectX(rxi, a, b, cx, cy, r)){ 59: if(((int)a >= ryi && (int)a <= ryf) || ((int)b >= ryi && (int)b <= ryf)) return true; 60: } 61:

62: if(getYPointCircleRectX(rxf, a, b, cx, cy, r)){ 63: if(((int)a >= ryi && (int)a <= ryf) || ((int)b >= ryi && (int)b <= ryf)) return true; 64: } 65:

66: return false; 67: } 68:

69: bool Maths::detectCollisionRectXSegment(int rxi, int ryi, int rxf, int ryf, int xseg, int yixseg, int yfxseg){ 70: return ((xseg >= rxi && xseg <= rxf) && ((ryi >= yixseg && ryi <= yfxseg) || (ryf >=

yixseg && ryf <= yfxseg) || ((ryi < yixseg && ryi < yfxseg) && (ryf > yixseg && ryf > yfxseg))));

71: } 72:

73: bool Maths::detectCollisionRectYSegment(int rxi, int ryi, int rxf, int ryf, int yseg, int xiyseg, int xfyseg){ 74: return ((yseg >= ryi && yseg <= ryf) && ((rxi >= xiyseg && rxi <= xfyseg) || (rxf >=

xiyseg && rxf <= xfyseg) || ((rxi < xiyseg && rxi < xfyseg) && (rxf > xiyseg && rxf > xfyseg))));

75: } 76:

77: bool Maths::detectCollisionSegmXSegment(int poxi, int poyi, int poxf, int poyf, int xseg, int yixseg, int yfxseg){ 78: if(poxf < poxi){ 79: swap(poxi, poxf); 80: swap(poyi, poyf); 81: } 82: if(xseg < poxi || xseg > poxf) return false; 83: int a = poxf ‐ poxi; 84: if(a == 0) return (poxi == xseg && ((poyi >= yixseg && poyi <= yfxseg) || (poyf >=

yixseg && poyf <= yfxseg) || (poyf >= yixseg && poyi <= yixseg))); 85: int y = (int)(((double)((poyf ‐ poyi)*xseg + (poxf*poyi‐poxi*poyf)))/((double)a)); 86: return (y >= yixseg && y <= yfxseg); 87: } 88:

89: bool Maths::detectCollisionSegmYSegment(int poxi, int poyi, int poxf, int poyf, int yseg, int xiyseg, int xfyseg){ 90: int a = poyf ‐ poyi; 91: if(a == 0) return (poyi == yseg);

Page 111: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XXVIII

92: int x = (int)(((double)((poxf ‐ poxi)*yseg ‐ (poxf*poyi‐poxi*poyf)))/((double)a)); 93: return (x >= xiyseg && x <= xfyseg); 94: } 95:

Al CD hi ha tots els arxius de codi C++ (“.cpp”, “.h” i “.rc”) i aquests mateixos arxius

en PDF. A part del codi també hi és present tot el videojoc desenvolupat fins al moment

(imatges, música, etc.)

Page 112: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XXIX

ANNEX D: CODIS DEL PROGRAMA “makeUpdateMaps”

A continuació les línies de codi del fitxer “main.cpp” que formen el programa

“makeUpdateMaps”. Veieu l’apartat “2.3.2. Incorporació d’arxius multimèdia al fitxer

final” per veure l’ús d’aquest programa. Al CD es pot trobar aquest programa i un PDF. makeUpdateMaps.dev -> main.cpp 1: #include <cstdio> 2: #include <cstdlib> 3: #include <iostream> 4: #include <sstream> 5: #include <fstream> 6: #include <string.h> 7: 8: #include <sys/stat.h> 9: #include <dirent.h> 10:

11: using namespace std; 12:

13: int n = 0; 14:

15: void addUpdateMapN(string filename){ 16: string *str = new string(filename); 17: string extension = str‐>substr(str‐>find_last_of(".")); 18: delete str; 19: if(filename[0] == '.') filename = filename.substr(1); 20: if(filename[0] == '/') filename = filename.substr(1); 21:

22: for(int i = 0; i < extension.length(); i++) 23: extension[i] = tolower(extension[i]); 24:

25: const char *file_extension = extension.c_str(); 26: if(strcmp(file_extension, ".ttf") == 0 || strcmp(file_extension, ".wav") == 0 ||

strcmp(file_extension, ".flac") == 0 || strcmp(file_extension, ".ogg") == 0 || strcmp(file_extension, ".it") == 0 || strcmp(file_extension, ".mod") == 0 || strcmp(file_extension, ".s3m") == 0 || strcmp(file_extension, ".xm") == 0 || strcmp(file_extension, ".bmp") == 0 || strcmp(file_extension, ".pcx") == 0 || strcmp(file_extension, ".tga") == 0 || strcmp(file_extension, ".jpeg") == 0 || strcmp(file_extension, ".jpg") == 0 || strcmp(file_extension, ".png") == 0){

27: cout << "Creating element " << n << ": " << filename << endl; 28: ostringstream convert; 29: convert << (unsigned int)n; 30: string extfile = "updateMaps" + convert.str(); 31: string extfile2 = extfile + ".tmp"; 32: string extfile3 = extfile + ".cpp"; 33: string str = "bin2h "; 34: str += '"';

Page 113: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XXX

35: str += filename; 36: str += '"'; 37: str += " "; 38: str += '"'; 39: str += extfile2; 40: str += '"'; 41: str += " ‐id=data_" + convert.str() + " ‐ns=virtualdata"; 42: system(str.c_str()); 43: ofstream myfile; 44: ifstream mytfile; 45: mytfile.open(extfile2.c_str()); 46: myfile.open(extfile3.c_str()); 47: myfile << "#include " << '"' << "updateMaps.h" << '"' << "\n"; 48: while(getline(mytfile, str)) myfile << str << "\n"; 49: mytfile.close(); 50: remove(extfile2.c_str()); 51: myfile << "\nvoid updateMaps::" + extfile + "(map<string, unsigned char*> &

media_data, map<string, size_t> & media_data_size){\n"; 52: myfile << "\tunsigned char *data_pointer = virtualdata::data_" + convert.str() +

";\n"; 53: myfile << "\tstring fileid = string("; 54: myfile << '"' + filename + '"'; 55: myfile << ");\n"; 56: myfile << "\tmedia_data_size[fileid] = virtualdata::data_" + convert.str() +

"_len;\n"; 57: myfile << "\tmedia_data[fileid] = data_pointer;\n"; 58: myfile << "}" << endl << endl; 59: myfile.close(); 60: n++; 61: } 62: } 63:

64: void dirAddUpdateMap(string path){ 65: DIR* dir_point = opendir(path.c_str()); 66: dirent* entry; 67: while(entry = readdir(dir_point)){ 68: string fname = entry‐>d_name; 69: if(fname != "." && fname != ".."){ 70: struct stat s; 71: string entn = path + "/" + fname; 72: stat(entn.c_str(), &s); 73: (S_ISDIR(s.st_mode)) ? dirAddUpdateMap(path + "/" + fname) :

addUpdateMapN(path + "/" + fname); 74: }

Page 114: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons

Curs 2013 - 2014 Creació i desenvolupament d’un videojoc – Guillem Rueda Oller XXXI

75: } 76: } 77:

78: int main(int argc, char* argv[]){ 79: dirAddUpdateMap("."); 80: ofstream myfile, myhfile; 81:

82: myfile.open("updateMaps.cpp"); 83: myfile << "#include " << '"' << "updateMaps.h" << '"' << "\n\n"; 84: myfile << "void updateMaps::updateMapsAll(map<string, unsigned char*> & media_data,

map<string, size_t> & media_data_size){\n"; 85: myhfile.open("updateMaps.h"); 86: myhfile << "#ifndef UPDATEMAPS_H\n#define UPDATEMAPS_H\n\nclass

updateMaps;\n\n#include"; 87: myhfile << '"'; 88: myhfile << "includes.h"; 89: myhfile << '"'; 90: myhfile << "\n\nclass updateMaps {\n"; 91: for(int i = 0; i < n; i++){ 92: ostringstream convert; 93: convert << (unsigned int)i; 94: myfile << "\tupdateMaps" + convert.str() + "(media_data, media_data_size);\n"; 95: myhfile << "\tstatic void updateMaps" + convert.str() + "(map<string, unsigned

char*> & media_data, map<string, size_t> & media_data_size);\n"; 96: } 97: myhfile << "\tpublic:\n\t\tstatic void updateMapsAll(map<string, unsigned char*> &

media_data, map<string, size_t> & media_data_size);\n};\n\n#endif" << endl << endl; 98: myfile << ((n == 0) ? "\t\n" : "") << "}" << endl << endl; 99:

100: myfile.close(); 101: myhfile.close(); 102: return 0; 103: } 104:

Page 115: CREACIÓ I DESENVOLUPAMENT D’UN VIDEOJOC · Això fa que els videojocs que es creen per telèfons mòbils s’hagin d’adaptar al sistema operatiu, i a casi cada sèrie de telèfons