Voglio fare un gioco per iPhone anch’io, come posso iniziare ? da Bubble Touch, PiXy ci dice come
by Stefano Lo DucaNel mentre che questi due fratelli portano avanti la loro missione: sviluppare un gioco per iPhone (Bubble Touch), riescono anche a regalarci il tempo per questo articolo facendo una carellata di consigli e suggerimenti su come iniziare a sviluppare un gioco (video games) per iPhone.
LINGUAGGIO DI PROGRAMMAZIONE:
Molto semplicemente, se si conosce gia’ qualcosa di C / C ++ conviene utilizzare direttamente questo linguaggio ed impararsi i costrutti e i fondamenti di Objective-C.
Objective-C deve essere necessariamente utilizzato per poter comunicare direttamente con le API del dispositivo e gestire il suo HW (ad esempio per poter creare una view che contiene una finestra OpenGL ES, oppure per poter gestire il touch (o il multitouch), l’accellerometro, … ).
Se non si conosce nessun linguaggio tanto vale imparare l’objective-c da 0.
Quali sono i vantaggi e gli svantaggi di una scelta (C/C++) piuttosto che l’altra (Objective-C) ?
Principalmente la portabilita’. Se scrivo un codice C++, utilizzando le librerie standard il gioco che scrivero’ sara’ molto facile da portare su altre piattaforme (anche su PC stesso) senza troppe modifiche. Per quanto riguarda i dispositivi mobili, windows CE (o mobile), il vecchio Symbian, o anche le stesse Qt (ora passate a Nokia) utilizzano estensivamente e in maniera completa il C++. Android di Google e’ l’unico sistema di API che attualemente utilizza Java e per cui il porting richiede la riscrittura di buona parte di codice.
Conoscendo solo l’Objective-C, per poter fare il porting (trasferire cioe’ l’applicazione da un dispositivo ad un altro) probabilmente ci sara’ molto piu’ lavoro da fare.
Ma non e’ che scrivere in Objective-C porta vantaggi nelle performance dell’applicazione ?
Assolutamente No. Il compilatore GCC e’ in grado di compilare allo stesso modo (ed anche in modo promiscuo) cocice C/C++ ed Objective-C. Molti sviluppatori non hanno trovato nessun calo dal punto di vista delle performance.
E’ possibile “mischiare” codice C++ ed Objective-C ?
Si ! Ed e’ quello che attualmente facciamo noi nel nostro gioco, se si conoscono e si utilizzano entrambi i linguaggi si puo’ prendere il meglio dall’uno e dall’altro e farli convivere tranquillamente.
Ad esempio il codice del nostro gioco che legge i livelli (che sono semplicemente file XML) utilizza il parser presente in Cocoa (la NSXMLParser ) fornendo metodi e comunicando con oggetti C++.
CONCLUSIONI:
Questi i nostri consigli:
Se si conosce gia’ il C++ incominciare ad imparare, quando serve e necessario, Objective-C (le basi sono comunque obbligatorie).
Se si hanno necessita’ e si pensa in futuro di riscrivere il codice per altri dispositivi pensare al C++ come linguaggio “primario”.
Se non si conosce nessun linguaggio e si vuole sviluppare solo per iPod /iPhone (ed al massimo Mac) imparare da 0 e per bene Objective-C.
OpenGL ES:
Se si vuole fare un gioco (sia 2D che 3D) penso la cosa migliore sia imparare ed utilizzare OpenGL ES.
OpenGL ES e’ un API (Application Programming Interface) di basso livello dedicata alla grafica tridimensionale e non solo.
E’ vero che per sviluppare una semplice applicazione 2D probabilmente anche le librerie messe a disposizione da Cocoa (nell’SDK di iPhone) potrebbero essere sufficienti, credo sia comunque meglio imparare OpenGL ES in quanto permette poi di poter sviluppare anche applicazioni 3D e sopratutto (cosa piu’ importante) comunicano a basso livello direttamente con il sottosistema grafico (scheda grafica + GPU).
Ci sono alcuni semplici esempi di utilizzo, basilare di OpenGL ES per una semplice applicazione 2D o 3D che possono essere “studiati”.
FISICA (physics engine):
Un buon gioco ha oramai anche un buon motore fisico alle spalle per gestire collisioni, interazioni tra oggetti, gravita’ , frizione, etc. etc.
Su iPhone vengono attualmente utilizzate due librerie:
* Box2D (nel prossimo articolo)
* Chipmunk (molto piu’ semplice e snella)
LIBRERIE AD ALTO LIVELLO:
Se volete utilizzare delle librerie (o motori grafici) di alto livello per sviluppare (evitando di dover imparare i concetti di basso livello) potete provare benissimo
Cocos2D (per il 2D) (che e’ scritta in Objective-C) o altre librerie gia’ esistenti per il 3D (simili).
AUDIO:
Per l’audio conviene utilizzare le librerie e le API messe a disposizione da Apple nell’SDK.
Ecco… per voi PiXy…! e un grazie da iPhone and Go.



