2012-04-10 15 views
5

In tutti i miei precedenti giochi iOS ho avuto il gioco configurato come una semplice applicazione View-Based con un controller di visualizzazione, file .h e file .m. Ho impostato uno NSTimer impostato a 30, 40 o 60 frame al secondo che chiamavano il ciclo di esecuzione principale. Più tardi nello sviluppo, ho diviso gli aggiornamenti grafici (con un FPS più alto) e i calcoli di gioco (FPS inferiore) per ridurre il ritardo. Non ho mai capito come implementare il multithreading/concorrenza in giochi come la grafica e calcoli sono dipendenti l'uno dall'altro ...Come vengono configurati i giochi iOS?

Dato che non ho mai avuto l'opportunità di leggere il codice sorgente di un gioco "reale", sono Lo sto configurando in modo ragionevole, o sto prendendo un approccio totalmente sbagliato al framework principale del gioco e faccio il loop?

Lo chiedo perché ho notato che le mie applicazioni hanno un sacco di ritardo rispetto ad altre applicazioni su App Store (per esempio, la mia app ritardo orribilmente su un iPhone 3G, ma Doodle Jump, Fruit Ninja, Cut the Corda, ecc. Funzionano senza intoppi).

risposta

9
  1. Si desidera utilizzare CADisplayLink anziché NSTimer per il ciclo di esecuzione.
  2. Si desidera eseguire il maggior numero di disegni sulla GPU possibile. Ciò libererà i cicli della CPU e l'hardware accelererà molti calcoli che stai facendo attualmente nel software. Lo fai disegnando i tuoi sprite in OpenGL come trame OpenGL. Ci sono librerie che fanno questo per te come Cocos2D. Cocos2D fornisce una semplice API per la creazione e animazione di sprite, e fa tutto l'OpenGL sotto la cappa in modo da non dover.
Problemi correlati