2011-11-21 11 views
16

Se fossi interessato a conoscere lo sviluppo del gioco su iPhone/iPAD, quali suggerimenti su quale tecnologia (s) iniziare a esaminare? In effetti solo una semplice pallottola su ciascuna di queste tecnologie che evidenzia come si adatta allo sviluppo tipico del gioco sarebbe grandiosa, poiché la ragione di questa domanda non è stata la comprensione di come questi si incastrano. Quindi, in questo caso è dove fare queste più o meno in forma in qui:da dove cominciare per lo sviluppo del gioco? UIKit vs Core Animation vs QuartzCore vs OpenGL vs cocos2D

  • UIKit
  • Core Animation
  • QuartzCore
  • OpenGL
  • Cocos2d

mi è stato sempre l'impressione che Cocos2d sarebbe la strada da percorrere, e sembra essere un involucro più semplice per OpenGL? Non sei sicuro di dove rimanga UIKit vs Core Animation vs QuartzCore?

risposta

38

Ok bene proverò a fare una risposta piuttosto lunga corta: dipende.

Ora per alcuni pensieri e spiegazioni più lunghe - questo è lungo. Se non lo leggerete fino alla fine, assicuratevi di leggere le ultime frasi.

prima ho bisogno di chiarire che le "tecnologie" o API che hai elencato sono per lo più interessati esclusivamente con grafica (tranne UIKit che gestisce anche l'input) e che è ok, purché si capisce che la grafica è solo una parte (e alla mia esperienza potrei aggiungere "minore") di un intero gioco.

Oltre alla grafica, ci sarà un bel po 'di più da gestire quando si fa un vero gioco. Per non allontanarmi troppo dalla domanda lasciatemi solo inserire alcune parole chiave: logica di gioco, intelligenza artificiale, gestione delle risorse, fisica, interazione, networking (possibilmente), suono, ecc. La mia raccomandazione è di ottenere un buon libro sull'argomento e tuffati in [1,2].

Ora che ho scremato che, tornando alla tua domanda:

In sostanza, OpenGL e QuarzCore sono le tecnologie di base a "ottenere qualcosa disegnato sullo schermo". Tutte le altre tecnologie sono costruite su questo. Quindi, in teoria, se vuoi andare in questo modo , puoi implementare tutto ciò che riguarda l'output grafico solo con OpenGL o QuarzCore (mentre dovrai tener conto del fatto che QuarzCore è solo disegno 2D, mentre OpenGL supporta anche 3D e 2D è davvero solo un caso speciale di 3D). In realtà credo che Quarz sia costruito anche su OpenGL, ma non ne sono sicuro.

UIKit è costruito sopra a quelli e usarlo fa fondamentalmente due cose: a) evitare di re-inventare la ruota eb) rendere la creazione di interfacce utente più facile, più veloce e più robusta. Ovviamente è possibile disegnare ogni pulsante stesso specificando le coordinate di un quad e inviandolo a OpenGL per l'elaborazione. Quindi dovresti controllare ogni input dell'utente se colpisce il tuo pulsante e chiamare un gestore associato. Tuttavia, la semplice creazione di un'istanza UIButton (forse anche in IB) e la specificazione di un gestore on-click rimuovono un bel po 'di lavoro.

Bottom line: UIKit è perfetto per la creazione di interfacce utente. Inoltre può essere utilizzato insieme a OpenGL e QuarzCore. Lo uso per l'interfaccia utente su iOS anche nei giochi.

Per quanto riguarda Cocos2D: Questo è un "motore di gioco" costruito su OpenGL. Come tale include un sacco di cose che dovresti gestire da solo quando giri il tuo motore basato su OpenGL, cioè gestione delle scene, sprite, texturing, mesh, risorse ecc. Credo che abbia anche connessioni alle librerie di fisica e di rilevamento delle collisioni . Per capire cosa succede lì, tuttavia, è necessario imparare come funzionano la grafica e i giochi [1,2,3].

Bottom line: si utilizza Cocos2D per la grafica di gioco (2D) e UIKit per l'interfaccia utente.

Core Animation, allora è per l'animazione CoreGraphics roba. Fornisce un'interfaccia semplice, ad es. per scivolare o ruotare senza problemi, incapsulando tutti i calcoli richiesti (interpolazioni, ridisegno, ecc.). Non funzionerà con OpenGL - ma penso che Cocos2D avrà anche un wrapper per questo.

Linea di fondo: utilizzare per le animazioni di interfaccia utente di fantasia.

Avendo detto tutto ciò e solo semplicemente sfiorando la parte superiore non volevo spaventarti in primo luogo.

Per il tuo gioco speciale (e ogni gioco è speciale) potresti farla finita con UIKit e CoreAnimiation per la grafica e potrebbe essere un gioco di successo. Permettono di disegnare molto con un'interfaccia facile da usare e non richiedono conoscenze di base troppo profonde e sono sufficientemente performanti per piccoli progetti.

Se si dispone di una grande idea di gioco, utilizzare il più semplice possibile soluzione grafica in grado di soddisfare voi e ai vostri giocatori e realizzarla. Una volta che hai ottenuto, puoi ancora migliorarlo se necessario.

[1] http://www.mcshaffry.com/GameCode/

[2] http://www.gameenginebook.com/

[3] http: //www.opengl .org/documentazione/red_book/

+0

eccellente - grazie per la panoramica - Vado a controllare i riferimenti. a proposito, qualche motivo per cui non si andrebbe per cocos2d su Core Animation? Sai se cocos2d può fare ciò che Core Animation può fare e molto altro? – Greg

+0

Non mi piace veramente Cocos2D, ma penso che possa fare ciò che CA può fare e molto altro, ma in termini di OpenGL piuttosto che Quarz. Quindi le animazioni di UIKit e Quarz andranno con CA, tutto il resto con Cocos - ma come ho detto, non sono sicuro di quello che forniscono (ma in genere qualsiasi motore di gioco decente ha una buona libreria matematica per eseguire il backup). –

+1

E sì, quello che mi viene in mente è che la differenza è che Cocos2D è (ho letto a pieno titolo ma non posso confermare) "game engine" e CA è solo un modo semplice per aggiungere animazioni agli elementi dell'interfaccia utente - quindi questa è sicuramente una differenza . –