Réponse à la question réelle (une boucle de jeu doit-elle être dans un thread séparé):
La raison pour laquelle les gens recommandent souvent d'utiliser un thread séparé est parce qu'ils ne veulent pas qu'un traitement lourd interfère avec l'interactivité de l'interface utilisateur. Vous êtes le seul à savoir si un thread séparé est nécessaire pour votre jeu. Cela dépend entièrement du moteur et du framework si la boucle de jeu principale dans votre conception actuelle peut interférer avec le temps de réponse de l'interface utilisateur. Je pensais que vous supposez généralement que ce ne sera pas le cas (dans les petits projets), sauf si vous avez une raison de penser le contraire.
Une autre raison de conserver le code dans des threads séparés est de garder le code modulaire et simple. La combinaison de deux parties de code non liées peut souvent rendre le code moins lisible et maintenable à long terme.
Une boucle de jeu doit-elle s'exécuter sur son propre thread séparé? Peut-être. S'il y a un problème avec le temps de réponse ou le code et que vous avez besoin de plusieurs éléments d'interface utilisateur pour répondre indépendamment du traitement lourd ou si vous souhaitez simplement diviser le code en tâches spécifiques qui se produisent simultanément pour des raisons de conception, allez-y. Cependant, il est considéré comme une pratique de programmation avancée .
Un simple mais peut-être pas un bon exemple pour illustrer est un jeu à deux joueurs. Vous souhaiterez peut-être exécuter deux instances d'une classe qui gèrent les entrées utilisateur et se convertissent en changements d'état dans l'instance de personnage du joueur.
Certains frameworks vous encouragent / vous obligent à utiliser un système basé sur les événements / interruptions comme ActionScript3.0. Dans ces cas, le code de boucle ira normalement à l' OnEnterFrame
événement ou quelque chose de similaire qui se produit 20 à 60 ou 120 fois par seconde.
Réponse à la question d'origine (ai-je besoin d'une boucle principale):
Tout se résume au compteur de programme . Si vous créez un jeu qui fonctionnera plus d'une durée prédéterminée et ne générera pas de code au fur et à mesure, vous devrez demander au PC de votre utilisateur de répéter certaines instructions qu'il a déjà traitées et ce qui changera éventuellement dans le entre-temps est l'état (les valeurs stockées dans les objets et les globaux du jeu).
Comme vous savez que vous devrez répéter les instructions, il existe plusieurs façons de terminer cette tâche et de traiter en permanence les mêmes instructions. Toutes ces méthodes impliquent de ramener le compteur de programme à l'instruction actuellement pertinente. Les instructions de flux de contrôle les plus courantes qui provoquent la répétition du code sont appelées boucles, une autre est l' goto
instruction qui est rarement utilisée dans le code moderne et a un effet similaire dans ce cas (complètement sans rapport avec vous).
Donc, pour répondre à votre question précédente, avez-vous besoin d'une boucle? Oui.