Antwort auf die eigentliche Frage (Muss sich eine Spielschleife in einem separaten Thread befinden):
Der Grund, warum Benutzer häufig die Verwendung eines separaten Threads empfehlen, liegt darin, dass keine starke Verarbeitung die Interaktivität der Benutzeroberfläche beeinträchtigen soll. Sie sind der einzige, der feststellen kann, ob für Ihr Spiel ein separater Thread benötigt wird . Es hängt ganz von der Engine und dem Framework ab, ob die Hauptspielschleife in Ihrem aktuellen Design die Reaktionszeit der Benutzeroberfläche beeinträchtigt. Ich dachte, Sie gehen im Allgemeinen davon aus, dass dies nicht der Fall ist (bei kleinen Projekten), es sei denn, Sie haben einen Grund, anders zu denken.
Ein weiterer Grund, Code in separaten Threads zu halten, besteht darin, den Code modular und einfach zu halten. Wenn zwei nicht miteinander verbundene Codeteile zusammengemischt werden, kann dies häufig dazu führen, dass Code auf lange Sicht weniger lesbar und wartbar wird.
Muss eine Spieleschleife in einem eigenen Thread ausgeführt werden? Möglicherweise. Wenn es ein Problem mit der Antwortzeit oder dem Code gibt und Sie mehrere UI-Elemente benötigen, um unabhängig von der umfangreichen Verarbeitung zu antworten, oder wenn Sie den Code einfach in bestimmte Aufgaben aufteilen möchten, die aus Entwurfsgründen gleichzeitig ausgeführt werden, dann machen Sie mit. Es wird jedoch als fortgeschrittene Programmierpraxis angesehen.
Ein einfaches, aber vielleicht nicht gutes Beispiel ist ein Zwei-Spieler-Spiel. Möglicherweise möchten Sie zwei Instanzen einer Klasse ausführen, die Benutzereingaben verarbeitet und in Statusänderungen in der Spielercharakterinstanz konvertiert.
Einige Frameworks ermutigen / verlangen, dass Sie ein ereignis- / Interrupt-basiertes System verwenden, wie dies ActionScript3.0 tut. In diesem Fall geht der Schleifencode normalerweise zu dem OnEnterFrame
Ereignis oder etwas Ähnlichem, das 20 - 60 oder 120 Mal pro Sekunde auftritt.
Antwort auf die ursprüngliche Frage (brauche ich eine Hauptschleife):
Alles läuft auf den Programmzähler hinaus . Wenn Sie ein Spiel erstellen , das länger als eine vorgegebene Zeit läuft und dabei keinen Code generiert, müssen Sie den PC Ihres Benutzers bitten, einige Anweisungen zu wiederholen, die er bereits verarbeitet hat, und was sich möglicherweise in der ändern wird In der Zwischenzeit ist der Status (die Werte, die in den Objekten und Globals des Spiels gespeichert sind).
Da Sie wissen, dass Sie Anweisungen wiederholen müssen, gibt es verschiedene Möglichkeiten, diese Aufgabe auszuführen und dieselben Anweisungen kontinuierlich zu verarbeiten. Bei all diesen Methoden wird der Programmzähler auf den aktuell relevanten Befehl zurückgesetzt. Die häufigsten Kontrollflussanweisungen, die dazu führen, dass Code wiederholt wird, werden als Schleifen bezeichnet. Eine andere ist die goto
Anweisung, die im modernen Code selten verwendet wird und in diesem Fall einen ähnlichen Effekt hat (für Sie völlig nicht relevant).
Benötigen Sie eine Schleife, um Ihre vorherige Frage zu beantworten? Ja, das tust du.