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