Risposta alla domanda effettiva (un loop di gioco deve trovarsi in un thread separato):
Il motivo per cui le persone spesso raccomandano di usare un thread separato è perché non vogliono che l'elaborazione pesante interferisca con l'interattività dell'interfaccia utente. Sei l'unico che può dire se è necessario un thread separato per il tuo gioco. Dipende interamente dal motore e dal framework se il loop di gioco principale nel tuo progetto attuale può interferire con i tempi di risposta dell'interfaccia utente. In genere pensavi che non lo facesse (in piccoli progetti) a meno che tu non abbia un motivo per pensare diversamente.
Un altro motivo per mantenere il codice in thread separati è quello di mantenere il codice modulare e semplice. Avere due pezzi di codice non correlati mescolati insieme può spesso rendere il codice meno leggibile e gestibile a lungo termine.
Un loop di gioco deve essere eseguito sul proprio thread separato? Possibilmente. Se si verifica un problema con il tempo di risposta o il codice e sono necessari più elementi dell'interfaccia utente per rispondere indipendentemente dall'elaborazione pesante o si desidera semplicemente suddividere il codice in attività specifiche che si verificano contemporaneamente per motivi di progettazione, procedere con esso. Tuttavia, è considerata una pratica di programmazione avanzata .
Un esempio semplice ma forse non eccezionale da illustrare è un gioco a due giocatori. Potresti voler eseguire due istanze di una classe che gestisce l'input dell'utente e si converte in cambiamenti di stato nell'istanza del personaggio del giocatore.
Alcuni framework incoraggiano / richiedono l'utilizzo e un sistema basato su eventi / interruzioni come fa ActionScript3.0. In questi casi il codice del loop andrà normalmente OnEnterFrame
all'evento o qualcosa di simile che si verifica 20 - 60 o 120 volte al secondo.
Risposta alla domanda originale (ho bisogno di un ciclo principale):
Tutto si riduce al contatore del programma . Se stai realizzando un gioco che durerà più di un periodo di tempo prestabilito e non genererà codice man mano che procede , dovrai richiedere gentilmente al pc del tuo utente di ripetere alcune istruzioni che ha già elaborato e che cosa potrebbe cambiare nel nel frattempo è lo stato (i valori memorizzati negli oggetti e nei globi del gioco).
Poiché sai che dovrai ripetere le istruzioni, esistono diversi modi per completare questa attività ed elaborare continuamente le stesse istruzioni. Tutti questi metodi comportano il ripristino del contatore del programma sull'istruzione attualmente pertinente. Le istruzioni di flusso di controllo più comuni che causano la ripetizione del codice sono chiamate loop, un'altra è l' goto
istruzione che viene raramente utilizzata nel codice moderno e ha un effetto simile in questo caso (completamente non rilevante per te).
Quindi, per rispondere alla tua domanda precedente, hai bisogno di un ciclo? Si.