Sviluppare videogiochiper

Transcript

Sviluppare videogiochiper
- Marco Girasoli -
Sviluppare videogiochi per
iPhone e iPad
con Cocos 2D, Box 2D e Sprite Kit
I
LOR
O
C
A
Che cos'è e come funziona Cocos2D. Sprite, scene, nodi e livelli >>
Comporre melodie e caricarle all'interno nel gioco >>
Aggiungere la fisica con Box 2D >>
iOS7 e le nuove librerie Sprite Kit >>
Sviluppare videogiochi per
iPhone e iPad
con Cocos 2D, Box 2D e Sprite Kit
Marco Girasoli
Sviluppare videogiochi per iPhone e iPad con Cocos 2D, Box 2D e Sprite Kit
Autore: Marco Girasoli
Collana:
Publisher: Fabrizio Comolli
Editor: Marco Aleotti
Progetto grafico: Roberta Venturieri
ISBN: 978-88-6895-014-9
Copyright © 2014 LSWR Srl
Via Spadolini, 7 - 20141 Milano (MI) - www.lswr.it
Finito di stampare nel mese di marzo 2014 presso “Rotolito Lombarda” spa, Pioltello (MI)
Nessuna parte del presente libro può essere riprodotta, memorizzata in un sistema che ne permetta l’elaborazione, né trasmessa
in qualsivoglia forma e con qualsivoglia mezzo elettronico o meccanico, né può essere fotocopiata, riprodotta o registrata altrimenti, senza previo consenso scritto dell’editore, tranne nel caso di brevi citazioni contenute in articoli di critica o recensioni.
La presente pubblicazione contiene le opinioni dell’autore e ha lo scopo di fornire informazioni precise e accurate. L’elaborazione
dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’editore per eventuali errori o inesattezze.
Nomi e marchi citati nel testo sono generalmente depositati o registrati dalle rispettive aziende. L’autore detiene i diritti per tutte le fotografie,
i testi e le illustrazioni che compongono questo libro, salvo quando diversamente indicato.
Sommario
INTRODUZIONE........................................................................................................ 9
1.
INTRODUZIONE ALLO SVILUPPO DI VIDEOGAME PER IOS..............11
Requisiti......................................................................................................................................... 11
Registrazione Apple iOS Developer.......................................................................................12
Il framework Cocos2D...............................................................................................................13
Cocos2D vs Kobold2D.............................................................................................................. 14
Download e installazione di Kobold2D................................................................................. 16
Accorgimenti per le estensioni .mm dei file........................................................................22
Target.............................................................................................................................................22
2. LA SPLASH SCREEN.......................................................................................25
Download di un software di grafica.......................................................................................26
Un po’ di grafica con Photoshop.............................................................................................26
Download di CocosBuilder......................................................................................................27
Carichiamo la nostra grafica...................................................................................................29
3. LE SPRITE...........................................................................................................35
La sprite statica...........................................................................................................................35
Creare una sprite per lo sfondo..............................................................................................43
Lo z-index e l’ordine di visualizzazione.................................................................................47
Le proprietà di una sprite........................................................................................................ 49
I tag.................................................................................................................................................51
L’evento ccTouchesEnded........................................................................................................54
Rotazione e traslazione.............................................................................................................54
L’evento ccTouchesMoved.......................................................................................................57
Coloriamo lo sfondo..................................................................................................................58
Trasparenza e visibilità..............................................................................................................59
L’anchorPoint (punto di ancoraggio).................................................................................... 60
4. SPRITE SHEET E ANIMAZIONI....................................................................65
Sprite sheet..................................................................................................................................65
Sprite sheet vs sprite statica...................................................................................................65
Creare uno sprite sheet............................................................................................................67
Zwoptex........................................................................................................................................67
Caricamento di una sprite mediante plist............................................................................76
5
Sviluppare videogiochi per iPhone e iPad con Cocos 2D, Box 2D e Sprite Kit
Animazione di una sprite.........................................................................................................77
Texture Packer.............................................................................................................................78
SpriteHelper Pro.........................................................................................................................79
Creazione delle animazioni con SpriteHelper Pro..............................................................83
Esportazione della sprite e delle animazioni.......................................................................87
Generazione del codice di supporto..................................................................................... 89
Caricamento della sprite creata con SpriteHelper Pro..................................................... 91
5. LAYER E SCENE................................................................................................93
La scena di gioco........................................................................................................................93
CCDirector...................................................................................................................................95
I layer.............................................................................................................................................95
CCLabelTTF.................................................................................................................................97
CCMenu e CCMenuItem......................................................................................................... 99
Le transizioni.............................................................................................................................. 99
Caricare il testo da un file esterno.......................................................................................105
6. FONT BITMAP E TESTI................................................................................ 107
Introduzione a un motore fisico............................................................................................107
7. PARTICELLE E ANIMAZIONI DI TRANSIZIONE.................................... 113
Particle Designer....................................................................................................................... 113
Creazione di un emettitore.....................................................................................................116
CCAction....................................................................................................................................120
8. LA FISICA NEI GIOCHI................................................................................. 123
Introduzione a un motore fisico............................................................................................ 123
L’oggetto fisico.......................................................................................................................... 124
Il mondo fisico di Box2D......................................................................................................... 125
Il corpo (body)........................................................................................................................... 131
La shape...................................................................................................................................... 132
La fixture..................................................................................................................................... 133
I sensori...................................................................................................................................... 133
Le proprietà allowSleep, awake, fixedRotation e bullet..................................................134
Creazione di una scena con il template di Box2D............................................................134
La funzione addNewSpriteAt................................................................................................ 147
La funzione update................................................................................................................... 147
Revolute joint.............................................................................................................................148
Rope joint.................................................................................................................................... 151
Prismatic joint........................................................................................................................... 152
Distance joint............................................................................................................................ 153
Pulley joint..................................................................................................................................154
Gear joint.................................................................................................................................... 155
Line joint..................................................................................................................................... 157
Welt joint.................................................................................................................................... 157
6
Sommario
9. I SUONI E LA MUSICA NEI VIDEOGIOCHI............................................ 159
Tipologie di suoni..................................................................................................................... 159
SimpleAudioEngine.................................................................................................................160
PlayEffect.....................................................................................................................................161
Conversione dei file MP3 in CAF.......................................................................................... 162
10. CREAZIONE DI UN GIOCO........................................................................ 163
Mockup....................................................................................................................................... 163
La grafica....................................................................................................................................164
Creazione delle sprite............................................................................................................. 167
LevelHelper Pro......................................................................................................................... 172
Creazione del progetto in Xcode.......................................................................................... 177
Movimenti al tocco..................................................................................................................190
Colpi d’arma da fuoco............................................................................................................. 193
Contrattacco..............................................................................................................................196
Punteggio................................................................................................................................... 197
Completamento della grafica................................................................................................198
Aggiunta della schermata iniziale.......................................................................................200
Versione iPad............................................................................................................................200
Conclusione.............................................................................................................................. 202
11. MARKETING DI UN GIOCO...................................................................... 203
Pubblicazione nell’App Store................................................................................................ 203
Far conoscere il gioco.............................................................................................................205
12. IOS7 E LE LIBRERIE SPRITE KIT................................................................... 211
Cocos2D vs Sprite Kit..............................................................................................................211
Che cos’è Sprite Kit?............................................................................................................... 212
Primo assaggio: loSKSpriteNode.......................................................................................... 213
Creazione di una texture........................................................................................................ 216
Ciak, azione!.............................................................................................................................. 217
Transizioni tra le scene............................................................................................................ 217
Label di testo.............................................................................................................................218
Emettitori di particelle............................................................................................................218
La fisica in Sprite Kit................................................................................................................218
Conclusione............................................................................................................................... 219
INDICE ANALITICO.............................................................................................. 221
7
Introduzione
Realizzare un videogioco richiede ampie conoscenze in diversi settori, quali la grafica, la programmazione, i device e il marketing, oltre naturalmente alla creatività.
Questo libro vuole essere un valido aiuto per semplificare il lavoro di apprendimento
e al tempo stesso suggerire l’approccio più veloce e performante per raggiungere i
risultati attesi.
Lo sviluppo di un videogioco negli ultimi anni è stato reso molto più semplice grazie ai
meccanismi user-friendly di Apple, diversamente dal passato in cui il lavoro risultava
molto più complesso. Di pari passo, però, la tecnologia ha continuato a evolversi e
gli utenti sono diventati sempre più esigenti, portando a un’innovazione molto rapida
dei device e dei loro componenti. Per questa ragione sviluppare un prodotto che sia
sempre compatibile con tutti i sistemi e addirittura adattabile ai futuri rilasci è “quasi”
impossibile. Questo libro affronta gli argomenti più importanti per realizzare subito un
videogioco per iPhone e iPad, illustrando le tecniche fondamentali e gli strumenti che
aiutano lo sviluppatore a evitare, nella maggior parte dei casi, il faticosissimo lavoro di
porting, garantendo un’elevata compatibilità con i vari formati e display.
A chi è rivolto questo libro
Questo libro è rivolto a tutti coloro che vogliono realizzare prodotti multimediali o
videogiochi per iPhone e iPad sfruttando le potentissime librerie di Cocos2D e Box2D,
nonché il nuovissimo SpriteKit. Non è necessario essere un programmatore esperto di
Objective-C, ma sicuramente un’infarinatura alla programmazione a oggetti in generale aiuterà ad affrontare molti aspetti e a capire determinate procedure più facilmente. Diversamente, è opportuno approfondire la parte relativa alla conoscenza della
programmazione basandosi su altri testi didattici, come Programmare con Objective-C
2.0 di Andrea Picchi, pubblicato sempre da Edizioni FAG. In ogni caso, una lettura del
presente manuale, anche senza conoscenze di base, può tornare utile per avvicinarsi
al mondo della programmazione e allo sviluppo dei videogame.
9
Sviluppare videogiochi per iPhone e iPad con Cocos 2D, Box 2D e Sprite Kit
Un aspetto importante e originale di questo libro è l’analisi di strumenti ed editor come
SpriteHelper Pro e LevelHelper Pro, ormai indispensabili per sviluppare un videogioco
professionale. Questo libro, infatti, non si limita alla descrizione del motore grafico di
Cocos2D, ma affronta concretamente le modalità di lavoro di un vero team di sviluppo,
dove si adottano sistemi professionali per disegnare, per esempio, le mappe dei livelli
e le animazioni.
In questo libro non si analizzerà una tipologia di gioco in particolare, ma si studieranno i vari strumenti per consentire di realizzare qualsiasi prodotto. In questo modo
sarà possibile creare uno strategico, un platform, un click and learn o un gioco fisico
evitando, soprattutto per chi è alle prime armi, di tentare di riscrivere librerie nate per
una categoria di videogame e adattarle a un’altra. Questo approccio, anche se diverso
dalla maggior parte dei libri che trattano lo stesso argomento, nasce da una lunga e
consolidata esperienza e il lettore ne trarrà concreti vantaggi una volta terminata la
lettura ed entrato nel vivo della concreta progettazione.
Se si possiede un iPhone o più in generale un device Apple basato su iOS, e si conosce
il linguaggio a oggetti Cocoa, allora si è sicuramente pronti per esplorare il mondo di
Cocos2D con grande facilità. In caso contrario questo libro può sicuramente aiutare a
consolidare un primo approccio alla programmazione per iOS e per i videogiochi più
in generale.
È possibile scaricare i materiali degli esempi dall’indirizzo:
www.milkywaydigital.com/libri/sviluppare_videogiochi_per_iphone_e_ipad.php
10
1
Introduzione allo sviluppo
di videogame per iOS
Cocos2D è un framework finalizzato alla realizzazione di
videogiochi in 2D. Un valido aiuto per ottimizzare i tempi
di sviluppo e programmazione, ma anche per aggiungere al nostro videogame effetti speciali e potenti funzionalità.
In questo capitolo, dopo aver esaminato i requisiti fondamentali per realizzare un videogame per iPhone e iPad, introduciamo l’argomento del motore o framework 2D.
Conosceremo gli strumenti che useremo costantemente all’interno di questo manuale
e che diventeranno nostri affezionati compagni di lavoro, come Cocos2D, Kobold2D,
Xcode e Objective-C.
Requisiti
Per la messa in pratica degli esempi proposti in questo libro, come requisito base, è
necessario possedere un computer Macintosh recente con configurazione standard. I
vari MacBook, iMac, MacBook Air o anche Mac Mini sono perfetti per lo scopo purché
montino almeno OS X Snow Leopard. Per alcuni esempi potrebbe essere necessario
un sistema operativo più recente come OS X Lion o superiori.
Come IDE di sviluppo utilizzeremo Xcode aggiornato alla versione 4.6.2, che potete
scaricare gratuitamente dall’indirizzo https://developer.apple.com/xcode/. Il sito vi
reindirizzerà all’App Store da cui potrete scaricare il software. È necessario avere un
account ad iTunes Store per procedere al download. Tale account vi servirà comunque
in futuro anche per gestire la vostra applicazione e monitorarla.
11
Sviluppare videogiochi per iPhone e iPad con Cocos 2D, Box 2D e Sprite Kit
Registrazione Apple iOS Developer
Terminato il download e installato Xcode è necessario aprire un account come iOS
developer all’indirizzo:
https://developer.apple.com/devcenter/ios/index.action
Se si possiede già un Apple ID la procedura sarà più breve loggandosi con i dati di tale
account, altrimenti occorrerà creare un nuovo Apple ID.
Dopo la creazione dell’account è possibile scaricare l’ultima versione di Xcode dall’App
Store e procedere con l’acquisto della licenza di Apple iOS Developer Program, con cui
è possibile distribuire applicazioni iOS sui device iPhone e iPad.
Tale licenza ci permetterà di pubblicare le nostre app sull’App Store e di incassare gli
eventuali ricavi generati dalle vendite, attraverso l’accredito automatico sul proprio
conto bancario comunicato in fase di configurazione dell’account iTunes Connect sul
sito www.itunesconnect.com.
Il prezzo dell’iOS Developer Program ammonta a 99 $ o 80 €, ma possiamo scaricare Xcode e posticipare questo pagamento, almeno in un primo momento, finché non
avremo una app da distribuire.
Figura 1.1 - Registrazione all’Apple Developer Program.
12
Introduzione allo sviluppo di videogame per iOS
Capitolo 1
Figura 1.2 - Acquisto della licenza per l’iOS Developer Program.
Figura 1.3 - Download dell’ultima versione di Xcode.
Il framework Cocos2D
Il linguaggio Cocoa per l’ambiente iOS, grazie all’implementazione di numerose librerie grafiche e a OpenGL ES, già consente nativamente di produrre non solo applicazioni potentissime, ma anche videogiochi interessanti. Questa configurazione, però, non
è ottimizzata per la realizzazione di prodotti ludici dove si richiede ad un supereroe
con i baffi di saltellare su varie piattaforme e schiacciare tartarughe, né tantomeno
13
Sviluppare videogiochi per iPhone e iPad con Cocos 2D, Box 2D e Sprite Kit
a un uccello paffuto e arrabbiato di farsi catapultare su muri di mattoni cercando di
colpire i maiali antagonisti.
Cocos2D è un framework addizionale alle librerie fornite con Xcode e sviluppato interamente in Objective-C nella sua versione compatibile con iOS e Xcode.
Inoltre l’utilizzo delle librerie di Cocos2D all’interno del nostro progetto Xcode ci agevola nella gestione delle risorse grafiche come sfondi, sprite, item, animazioni, effetti
particellari, aggiungendo anche tantissime altre funzionalità.
Figura 1.4 - La pagina di download del sito ufficiale di Cocos2D.
Cocos2D vs Kobold2D
Installare Cocos2D è molto semplice. Accediamo al blog ufficiale http://www.cocos2d-iphone.org e clicchiamo sulla voce Download. Al momento della stesura di
questo libro la versione più aggiornata e stabile era la 2.1.
Scaricando il file compresso e scompattandolo all’interno della cartella estratta notiamo vari file e altre cartelle. Questo materiale non è ancora installato in Xcode. Per farlo
dobbiamo installare i template, ovvero modelli preconfezionati in base alle preferenze
di scelta sulle caratteristiche del videogioco e/o prodotto che si vuole sviluppare.
Capiremo meglio questo concetto successivamente. Per il momento procediamo con
l’installazione dei template. Apriamo il terminale (digitiamo terminale nello Spotlight
del nostro Sistema operativo Mac oppure clicchiamo sull’applicazione Terminale nella
cartella Applicazioni).
14
Introduzione allo sviluppo di videogame per iOS
Capitolo 1
Digitiamo cd, trasciniamo la cartella estratta dal file compresso scaricato dal sito di
Cocos2D nella finestra del terminale e premiamo Invio. In questo modo il terminale si
posizionerà all’interno della cartella. Digitando il comando:
$ sudo ./install-templates.sh
e premendo Invio si avvierà la procedura di installazione. Una volta conclusa, all’avvio
di Xcode potremo scegliere nuove configurazioni di prodotti da sviluppare. In particolare sotto la voce iOS selezionando Cocos2D avremo a disposizione tre nuove opzioni.
Scegliendo la prima voce, cocos2d, Xcode confezionerà automaticamente per noi un
nuovo progetto con tutte le librerie necessarie ai nostri scopi. Scegliendo invece la
seconda o terza voce (cocos2d_box2d e cocos2d_chipmunk) oltre alle librerie base
per programmare con Cocos2D verranno installati i file per abilitare e poter utilizzare
anche un motore fisico all’interno del gioco.
Analizzeremo l’argomento motore fisico più avanti. Per il momento possiamo soffermarci sulla prima scelta.
Per tutti coloro che si cimentano con programmazione del linguaggio C per la prima
volta o, più in generale, per tutti quelli che si avvicinano per la prima volta alla programmazione, può essere d’aiuto l’installazione di una piattaforma complementare
chiamata Kobold2D. Che cos’è Kobold2D? Per molti è un modo per complicarsi la vita
da programmatori, per altri invece è il modo per semplificarsela.
A essere onesti, anche se Kobold2D nasce per semplificarci la vita nel processo di
programmazione del gioco potremmo non percepire questo vantaggio, almeno nei
primissimi momenti. Kobold2D gestisce il rilascio della memoria degli oggetti Objective-C al nostro posto; utilizzandolo, quindi, non dovremmo più occuparci di questo
«problema», ma al tempo stesso dovremmo perdere qualche vecchia abitudine di programmazione su piattaforma Xcode.
Ricordarsi, infatti, di rilasciare la memoria degli oggetti, svuotare array e deallocare
puntatori non è sempre la priorità durante la quotidianità lavorativa o, per lo meno,
non sempre ci ricordiamo di farlo. Per questo motivo Kobold2D può fornirci un valido
aiuto abilitando i nostri progetti all'ARC (Automatic Reference Counting).
L'ARC è un sistema introdotto da Apple per iOS e OS X che abilita Xcode alla gestione
automatica del rilascio della memoria. In sostanza dobbiamo solo preoccuparci di creare nel solito modo gli oggetti Objective-C, mentre al rilascio della memoria ci penserà
il compilatore.
Kobold2D non si limita a questo. Scegliendo di installarlo e utilizzarlo per i nostri progetti avremmo a disposizione template già configurati per iniziare a interagire con Cocos2d e/o con i motori fisici supportati.
15
Sviluppare videogiochi per iPhone e iPad con Cocos 2D, Box 2D e Sprite Kit
Un'interessante documentazione in inglese su ARC la si può trovare al link:
http://clang.llvm.org/docs/AutomaticReferenceCounting.html
Negli esempi illustrati in questo libro faremo riferimento a progetti ARC abilitati, quindi è consigliato scaricare e installare Kobold2D.
Download e installazione di Kobold2D
Kobold2D è una piattaforma in continuo aggiornamento come il classico framework
Cocos2D ed è sempre allineato all’ultima release stabile e anche beta del sopracitato
motore grafico.
Scarichiamo Kobold2D v2.1.0 dal sito www.kobold2d.com facendo clic sulla tab Download. Diversamente dalla procedura precedente, per cui abbiamo fatto uso dello strumento Terminale per avviare l’installazione, per Kobold2D è tutto molto più semplice
dato che, una volta scaricato il file di immagine si avvierà una procedura automatica di
installazione come mostrato in Figura 1.5.
Figura 1.5 - Installazione di Kobold2D.
16
Introduzione allo sviluppo di videogame per iOS
Capitolo 1
Figura 1.6 - Accettazione della licenza.
Al termine dell’installazione avviamo il programma Kobold2d Project Starter all’interno della cartella dei file precedentemente installati, come mostrato in Figura 1.7.
Apparirà una finestra con un elenco dei possibili template con cui si vuole partire per
il proprio progetto.
Figura 1.7 - Elenco dei file installati e del programma Kobold2D Project Starter.
17
Sviluppare videogiochi per iPhone e iPad con Cocos 2D, Box 2D e Sprite Kit
Possiamo scegliere, per esempio, un progetto preconfigurato per realizzare un videogioco usando solo le librerie di Cocos2D oppure, come vedremo più avanti, possiamo
integrare anche il motore fisico Box2D oppure Chipmunk.
Figura 1.8 Elenco dei template
di Kobold2D.
Scegliamo, come nell’esempio mostrato in Figura 1.8, la voce Hello-Kobold2D per caricare un progetto con le librerie di Cocos2D già configurate a partire da un template
semplice. Inseriamo un nome nel campo New Project Name e clicchiamo sul pulsante
Create Project from Template.
La Figura 1.9 mostra il progetto generato da Kobold2D, a partire dal template scelto,
all’interno di Xcode.
18
Introduzione allo sviluppo di videogame per iOS
Capitolo 1
Figura 1.9 - Il progetto generato da Kobold2D in Xcode.
Esplodendo la cartella ProjectFiles nell’elenco ad albero a sinistra del programma possiamo individuare tutti i file creati in automatico per noi da Kobold2D e in particolare
le classi HelloWorld.h e HelloWorld.m, che rappresentano una schermata di livello
contenente alcuni tipi di oggetti grafici di Cocos2D come label di testo, sprite e animazioni. Il codice autogenerato per questa classe è il seguente:
/*
* Kobold2D™ --- http://www.kobold2d.org
*
* Copyright (c) 2010-2011 Steffen Itterheim.
* Released under MIT License in Germany (LICENSE-Kobold2D.txt).
*/
#import "cocos2d.h"
@interface HelloWorldLayer : CCLayer
{
NSString* helloWorldString;
NSString* helloWorldFontName;
int helloWorldFontSize;
}
@property (nonatomic, copy) NSString* helloWorldString;
@property (nonatomic, copy) NSString* helloWorldFontName;
@property (nonatomic) int helloWorldFontSize;
@end
19
Sviluppare videogiochi per iPhone e iPad con Cocos 2D, Box 2D e Sprite Kit
/*
* Kobold2D™ --- http://www.kobold2d.org
*
* Copyright (c) 2010-2011 Steffen Itterheim.
* Released under MIT License in Germany (LICENSE-Kobold2D.txt).
*/
#import "HelloWorldLayer.h"
#import "SimpleAudioEngine.h"
@interface HelloWorldLayer (PrivateMethods)
@end
@implementation HelloWorldLayer
@synthesize helloWorldString, helloWorldFontName;
@synthesize helloWorldFontSize;
-(id) init
{
if ((self = [super init]))
{
CCLOG(@"%@ init", NSStringFromClass([self class]));
CCDirector* director = [CCDirector sharedDirector];
CCSprite* sprite = [CCSprite spriteWithFile:@"ship.png"];
sprite.position = director.screenCenter;
sprite.scale = 0;
[self addChild:sprite];
id scale = [CCScaleTo actionWithDuration:1.0f scale:1.6f];
[sprite runAction:scale];
id move = [CCMoveBy actionWithDuration:1.0f position:CGPointMake(0, -120)];
[sprite runAction:move];
// get the hello world string from the config.lua file
[KKConfig injectPropertiesFromKeyPath:@"HelloWorldSettings" target:self];
CCLabelTTF* label = [CCLabelTTF labelWithString:helloWorldString
fontName:helloWorldFontName
fontSize:helloWorldFontSize];
label.position = director.screenCenter;
label.color = ccGREEN;
[self addChild:label];
// print out which platform we're on
NSString* platform = @"(unknown platform)";
if (director.currentPlatformIsIOS)
{
// add code
platform = @"iPhone/iPod Touch";
if (director.currentDeviceIsIPad)
platform = @"iPad";
20
Introduzione allo sviluppo di videogame per iOS
Capitolo 1
if (director.currentDeviceIsSimulator)
platform = [NSString stringWithFormat:@"%@ Simulator", platform];
}
else if (director.currentPlatformIsMac)
{
platform = @"Mac OS X";
}
CCLabelTTF* platformLabel = nil;
if (director.currentPlatformIsIOS)
{
// how to add custom ttf fonts to your app is described here:
// http://tetontech.wordpress.com/2010/09/03/using-customfonts-in-your-ios-application/
float fontSize = (director.currentDeviceIsIPad) ? 48 : 28;
platformLabel = [CCLabelTTF labelWithString:platform
fontName:@"Ubuntu Condensed"
fontSize:fontSize];
}
else if (director.currentPlatformIsMac)
{
// Mac builds have to rely on fonts installed on the system.
platformLabel = [CCLabelTTF labelWithString:platform
fontName:@"Zapfino"
fontSize:32];
}
platformLabel.position = director.screenCenter;
platformLabel.color = ccYELLOW;
[self addChild:platformLabel];
id movePlatform = [CCMoveBy actionWithDuration:0.2f
position:CGPointMake(0, 50)];
[platformLabel runAction:movePlatform];
glClearColor(0.2f, 0.2f, 0.4f, 1.0f);
// play sound with CocosDenshion's SimpleAudioEngine
[[SimpleAudioEngine sharedEngine] playEffect:@"Pow.caf"];
}
return self;
}
@end
È facile intuire come Kobold2D sia indispensabile per ottimizzare i tempi, permettendoci di concentrarci sulla parte più creativa del gioco. Se proviamo a compilare
ed eseguire il programma premendo il pulsante Run in alto a sinistra all’interno della
toolbar di Xcode verrà lanciato il simulatore di iPhone mostrando un prodotto simile
alla Figura 1.10.
21
Sviluppare videogiochi per iPhone e iPad con Cocos 2D, Box 2D e Sprite Kit
Figura 1.10 - La nostra prima app creata con il template di
Kobold2D all’interno del simulatore iPhone.
Accorgimenti per le estensioni .mm dei file
Come possiamo notare, in particolare se siamo programmatori di C/C++ esperti, i file
del nostro progetto contenenti i codici sorgenti in Objective-C hanno estensione .mm,
diversamente da un classico progetto Xcode dove i file hanno estensione .m. Utilizzando file con estensione .mm il compilatore di Xcode gestirà, in fase di elaborazione,
file ibridi in cui è possibile la presenza di collegamenti a librerie o porzioni di codice
scritte in C/C++. Da questo momento in poi, quando creeremo un nuovo oggetto, o ne
importeremo uno da una libreria condivisa, dobbiamo ricordarci sempre di rinominare
l’estensione del file da .m a .mm per evitare errori in fase di compilazione e garantirci
una compatibilità tra Cocos2D ed eventuali librerie di supporto scritte in C o C++.
Target
Creato un progetto Kobolld2D è possibile che vengano creati due target differenti,
uno per iOS e il secondo per OS X. Questa operazione automatica facilita il lavoro a
eventuali programmatori che volessero realizzare un’unica applicazione compatibile
con più piattaforme. Nel nostro caso possiamo escludere il secondo target: faccia-
22
Introduzione allo sviluppo di videogame per iOS
Capitolo 1
mo clic sull’icona blu del progetto (la prima icona con il nome del progetto presente
nell’albero dei file a sinistra all’interno di Xcode), poi nella colonna centrale selezioniamo la seconda voce sotto Targets ed eliminiamola facendo clic con il tasto destro e
scegliendo Elimina. Procediamo in questo modo dato che l’obiettivo di questo libro è
apprendere le conoscenze di base per lo sviluppo di un videogioco per iPhone e iPad.
Per i nostri progetti, inoltre, è opportuno tenere presente l’aspect ratio e le dimensioni
degli schermi dei vari device in modo da poter realizzare le grafiche e i vari elementi
partendo dal formato più esteso sul quale si vuole distribuire la propria app. La Figura
1.11 mostra i riquadri con le dimensioni in pixel dei display dei vari device iOS, dai più
recenti come iPad 3 e iPhone 5 fino al primissimo iPhone.
Figura 1.11 - Le dimensioni in pixel dei device iOS.
23