Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa...

24
iPhone e iPad - Marco Girasoli - Sviluppare videogiochi per iPhone e iPad con Cocos 2D, Box 2D e Sprite Kit 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 >> A COLORI A COLORI

Transcript of Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa...

Page 1: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

Sviluppare videogiochi per iPhone e iPad

- Marco Girasoli -

Sviluppare videogiochi per

iPhone e iPadcon Cocos 2D, Box 2D e Sprite Kit

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

A COLORIA COLORI

Page 2: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore
Page 3: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

Sviluppare videogiochi per

iPhone e iPadcon Cocos 2D, Box 2D e Sprite Kit

Marco Girasoli

Page 4: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

Sviluppare videogiochi per iPhone e iPad con Cocos 2D, Box 2D e Sprite Kit

Autore: Marco Girasoli

Collana:

Publisher: Fabrizio ComolliEditor: Marco AleottiProgetto grafico: Roberta Venturieri

ISBN: 978-88-6895-014-9

Copyright © 2014 LSWR SrlVia 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 al-trimenti, 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’edi-tore 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.

Page 5: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

5

Sommario

INTRODUZIONE ....................................................................................................... 9

1. INTRODUZIONE ALLO SVILUPPO DI VIDEOGAME PER IOS .............11Requisiti ........................................................................................................................................ 11Registrazione Apple iOS Developer ......................................................................................12Il framework Cocos2D ..............................................................................................................13Cocos2D vs Kobold2D ............................................................................................................. 14Download e installazione di Kobold2D ................................................................................ 16Accorgimenti per le estensioni .mm dei file .......................................................................22Target ............................................................................................................................................22

2. LA SPLASH SCREEN ......................................................................................25Download di un software di grafica ......................................................................................26Un po’ di grafica con Photoshop ............................................................................................26Download di CocosBuilder......................................................................................................27Carichiamo la nostra grafica ..................................................................................................29

3. LE SPRITE ..........................................................................................................35La sprite statica ..........................................................................................................................35Creare una sprite per lo sfondo .............................................................................................43Lo z-index e l’ordine di visualizzazione ................................................................................47Le proprietà di una sprite ....................................................................................................... 49I tag ................................................................................................................................................51L’evento ccTouchesEnded .......................................................................................................54Rotazione e traslazione ............................................................................................................54L’evento ccTouchesMoved ......................................................................................................57Coloriamo lo sfondo .................................................................................................................58Trasparenza e visibilità .............................................................................................................59L’anchorPoint (punto di ancoraggio) ................................................................................... 60

4. SPRITE SHEET E ANIMAZIONI ...................................................................65Sprite sheet .................................................................................................................................65Sprite sheet vs sprite statica ..................................................................................................65Creare uno sprite sheet ...........................................................................................................67Zwoptex .......................................................................................................................................67Caricamento di una sprite mediante plist ...........................................................................76

Page 6: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

6

Sviluppare videogiochi per iPhone e iPad con Cocos 2D, Box 2D e Sprite Kit

Animazione di una sprite ........................................................................................................77Texture Packer ............................................................................................................................78SpriteHelper Pro ........................................................................................................................79Creazione delle animazioni con SpriteHelper Pro .............................................................83Esportazione della sprite e delle animazioni ......................................................................87Generazione del codice di supporto .................................................................................... 89Caricamento della sprite creata con SpriteHelper Pro .................................................... 91

5. LAYER E SCENE ...............................................................................................93La scena di gioco .......................................................................................................................93CCDirector ..................................................................................................................................95I layer ............................................................................................................................................95CCLabelTTF ................................................................................................................................97CCMenu e CCMenuItem ........................................................................................................ 99Le transizioni ............................................................................................................................. 99Caricare il testo da un file esterno ......................................................................................105

6. FONT BITMAP E TESTI ............................................................................... 107Introduzione a un motore fisico ...........................................................................................107

7. PARTICELLE E ANIMAZIONI DI TRANSIZIONE ................................... 113Particle Designer ...................................................................................................................... 113Creazione di un emettitore ....................................................................................................116CCAction ...................................................................................................................................120

8. LA FISICA NEI GIOCHI ................................................................................ 123Introduzione a un motore fisico ........................................................................................... 123L’oggetto fisico ......................................................................................................................... 124Il mondo fisico di Box2D ........................................................................................................ 125Il corpo (body) .......................................................................................................................... 131La shape ..................................................................................................................................... 132La fixture .................................................................................................................................... 133I sensori...................................................................................................................................... 133Le proprietà allowSleep, awake, fixedRotation e bullet ................................................. 134Creazione di una scena con il template di Box2D ........................................................... 134La funzione addNewSpriteAt ............................................................................................... 147La funzione update .................................................................................................................. 147Revolute joint ............................................................................................................................148Rope joint ................................................................................................................................... 151Prismatic joint .......................................................................................................................... 152Distance joint ........................................................................................................................... 153Pulley joint .................................................................................................................................154Gear joint ................................................................................................................................... 155Line joint .................................................................................................................................... 157Welt joint ................................................................................................................................... 157

Page 7: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

7

Sommario

9. I SUONI E LA MUSICA NEI VIDEOGIOCHI ........................................... 159Tipologie di suoni .................................................................................................................... 159SimpleAudioEngine ................................................................................................................160PlayEffect ....................................................................................................................................161Conversione dei file MP3 in CAF ......................................................................................... 162

10. CREAZIONE DI UN GIOCO ....................................................................... 163Mockup ...................................................................................................................................... 163La grafica ...................................................................................................................................164Creazione delle sprite ............................................................................................................ 167LevelHelper Pro ........................................................................................................................ 172Creazione del progetto in Xcode ......................................................................................... 177Movimenti al tocco .................................................................................................................190Colpi d’arma da fuoco ............................................................................................................ 193Contrattacco .............................................................................................................................196Punteggio................................................................................................................................... 197Completamento della grafica ...............................................................................................198Aggiunta della schermata iniziale ......................................................................................200Versione iPad ...........................................................................................................................200Conclusione .............................................................................................................................202

11. MARKETING DI UN GIOCO ..................................................................... 203Pubblicazione nell’App Store ...............................................................................................203Far conoscere il gioco ............................................................................................................205

12. IOS7 E LE LIBRERIE SPRITE KIT .................................................................. 211Cocos2D vs Sprite Kit .............................................................................................................211Che cos’è Sprite Kit? .............................................................................................................. 212Primo assaggio: loSKSpriteNode ......................................................................................... 213Creazione di una texture .......................................................................................................216Ciak, azione! ............................................................................................................................. 217Transizioni tra le scene ........................................................................................................... 217Label di testo ............................................................................................................................218Emettitori di particelle ...........................................................................................................218La fisica in Sprite Kit ...............................................................................................................218Conclusione ..............................................................................................................................219

INDICE ANALITICO ............................................................................................. 221

Page 8: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore
Page 9: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

9

Realizzare un videogioco richiede ampie conoscenze in diversi settori, quali la gra-fica, 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 libroQuesto 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 gene-rale aiuterà ad affrontare molti aspetti e a capire determinate procedure più facilmen-te. 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.

Introduzione

Page 10: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

10

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 studie-ranno 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

Page 11: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

11

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 no-

stro videogame effetti speciali e potenti funzionalità.

In questo capitolo, dopo aver esaminato i requisiti fondamentali per realizzare un vi-deogame 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.

RequisitiPer 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.

Introduzione allo sviluppo di videogame per iOS

1

Page 12: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

12

Sviluppare videogiochi per iPhone e iPad con Cocos 2D, Box 2D e Sprite Kit

Registrazione Apple iOS DeveloperTerminato 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 scarica-re 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.

Page 13: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

13

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 Cocos2DIl linguaggio Cocoa per l’ambiente iOS, grazie all’implementazione di numerose libre-rie grafiche e a OpenGL ES, già consente nativamente di produrre non solo applicazio-ni 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

Page 14: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

14

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 inte-ramente 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 age-vola 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 Kobold2DInstallare Cocos2D è molto semplice. Accediamo al blog ufficiale http://www.co-cos2d-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 notia-mo 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).

Page 15: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

15

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 partico-lare 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 soffer-marci 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 pro-grammazione, 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 Objec-tive-C al nostro posto; utilizzandolo, quindi, non dovremmo più occuparci di questo «problema», ma al tempo stesso dovremmo perdere qualche vecchia abitudine di pro-grammazione 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 cre-are 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 pro-getti avremmo a disposizione template già configurati per iniziare a interagire con Co-cos2d e/o con i motori fisici supportati.

Page 16: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

16

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, quin-di è consigliato scaricare e installare Kobold2D.

Download e installazione di Kobold2DKobold2D è 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 Downlo-ad. Diversamente dalla procedura precedente, per cui abbiamo fatto uso dello stru-mento 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.

Page 17: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

17

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’in-terno 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.

Page 18: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

18

Sviluppare videogiochi per iPhone e iPad con Cocos 2D, Box 2D e Sprite Kit

Possiamo scegliere, per esempio, un progetto preconfigurato per realizzare un video-gioco usando solo le librerie di Cocos2D oppure, come vedremo più avanti, possiamo integrare anche il motore fisico Box2D oppure Chipmunk.

Scegliamo, come nell’esempio mostrato in Figura 1.8, la voce Hello-Kobold2D per ca-ricare 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.

Figura 1.8 - Elenco dei template di Kobold2D.

Page 19: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

19

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 pos-siamo 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 anima-zioni. 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

Page 20: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

20

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";

Page 21: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

21

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-custom-fonts-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, permet-tendoci 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.

Page 22: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

22

Sviluppare videogiochi per iPhone e iPad con Cocos 2D, Box 2D e Sprite Kit

Accorgimenti per le estensioni .mm dei fileCome 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. Utiliz-zando 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++.

TargetCreato 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-

Figura 1.10 - La nostra prima app creata con il template di Kobold2D all’interno del simulatore iPhone.

Page 23: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore

23

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 selezio-niamo 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.

Page 24: Sviluppare per iPhone e iPad - Edizioni FAG · dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’edi-tore