2009-04-17 24 views
5

Sono confuso su quale sia l'approccio migliore quando si scrive un gioco per l'iphone. Il gioco sarà reso con OpenGL, ma sono curioso quando creo la schermata iniziale, il menu, la pagina di punteggio alto, ecc. Tutto ciò con OpenGL o crei ulteriori UIViews e usi l'UIKit?IPhone OpenGL ES viste singole o multiple?

risposta

2

Non penso che ci sia un approccio migliore. Se hai il tempo di programmare i menu e le tabelle dei punteggi più alti in OpenGL, hai molta più flessibilità - potresti avere ad esempio un'animazione 3D in background.

Se si codificano i menu, le tabelle punteggio elevato, ecc. Usando le viste standard UIKit e si passa alla vista OpenGL mentre vengono mostrati, questo ha il vantaggio che è molto veloce da codificare (specialmente se si è preso il tempo di imparare usare Interface Builder), ma è intrinsecamente 2d. Anche se puoi ancora utilizzare la grafica e i caratteri dei pulsanti personalizzati per renderla meno simile a un'app aziendale, sarà comunque meno brillante rispetto ad altri giochi nell'app store.

Quello che non si vuole fare è sovrapporre un UIView trasparente sopra la vista OpenGL - questo sarà molto lento.

Personalmente utilizzo le viste generate da Interface Builder per ottenere elementi come i menu mentre sto creando il resto del programma. L'intenzione è quella di sostituire quella con il codice animato OpenGL in seguito. Alla fine, però, dipende da quanto tempo hai a disposizione.

+0

Grazie, penso che andrò per la strada ES per fare tutto questo. – chicken

+0

Ma, cosa fai del testo? ... Posso creare i miei pulsanti e le mie interfacce in openGL, ma come gestisci il testo? ... se tutto il mio gioco è in inglese, ad esempio, lo scrivo solo le mie risorse grafiche, ma cosa succede se ho bisogno di localizzarlo?, sembra un po 'complicato –

+0

Di solito in un gioco si hanno due situazioni: una piccola quantità di testo e una grande quantità. Se è una piccola quantità, probabilmente masterizzeresti il ​​testo in una bitmap e, nel caso della localizzazione, hai solo più copie della bitmap. Nei casi in cui si dispone di grandi quantità di testo, non è pratico memorizzarlo in una bitmap in ogni caso, è necessario eseguire il rendering del testo in fase di esecuzione. È possibile creare un contesto grafico su una bitmap fuori campo, utilizzare le API Quartz per eseguire il rendering di qualsiasi cosa (incluso il testo) e quindi utilizzare quella bitmap come trama OpenGL. – U62

1

Non penso che ci sia una risposta giusta per questo. Io personalmente uso opengl per tutto, per esempio nelle strutture di menu io uso trame per il testo. Immagino dipenda da ciò che vuoi mostrare, penso che sarebbe più facile creare un look personalizzato che si adatti al tuo gioco se ti ostini con opengl.

+0

Sì, penso che prenderò questo approccio, ma semplicemente non sapevo se era una buona pratica lasciare che le mele uikit gestissero le basi. – chicken

1

Ho sentito cose contraddittorie su questo. Ho sentito che è lento quando si esegue il rendering di UIKit su OES.

Dico, se vedi un'altra app che funziona, segui l'esempio.

Alcuni dei giochi più popolari fanno tutto in OES - ad es. Rolando. Forse è meglio seguire questo schema.

+0

Non penso che stia chiedendo di stratificare UIKit su viste OpenGLES, solo se usarlo per altre "modalità" del gioco. – U62

+0

Sì, come ha detto u62, in pratica avrei in questo esempio un gruppo di controller di visualizzazione e di visualizzazione push/poping basati su quello corretto da visualizzare. – chicken

0

In aggiunta a ciò che altri hanno detto, considera che è un po 'più facile per te attenersi ad OpenGL poiché questo sarà il grosso del codice base.