Welche Rolle spielt die Entwicklung mit Ereignissen in Spielen?

9

Die meisten Anwendungsentwicklungen basieren auf der Entwicklung mit Ereignissen. Welche Rolle spielt die Entwicklung mithilfe von Ereignissen und welche Kompromisse gibt es angesichts des Game-Loop-Stils bei der Entwicklung von Spielen und der (häufig) erforderlichen hohen Leistung / des hohen Durchsatzes? Hat die häufig betroffene Synchronisation / Sperrung einen größeren Einfluss?

Zum Beispiel: - Wie benachrichtigt das Netzwerk [Schicht] die Spielschleife über empfangene Daten? - Wie meldet das Physiksystem Kollisionen?

Ich frage, weil ich mich an eine Zeit erinnern kann, als die Spieleentwicklung mit Ereignissen ein striktes Nein-Nein war. Hat sich das geändert?

Steven Evers
quelle

Antworten:

5

Ereignissysteme sind leistungsstark und können sehr schnell erstellt werden.

Sie ermöglichen es Ihnen auch, Codeabschnitte in einer sehr lockeren Kopplungsstruktur zu modulieren. Mit ihnen können Sie Stapelarbeiten erledigen und Aufgaben erledigen. Das funktioniert gut mit Multi-Core- und Asynchron-Funktionen.

Physik - Kollisionsrückrufe, Aktivieren oder Ruhen von Objekten lassen sich gut in Ereignisse übersetzen. Networking - So viel wie möglich sollte ein Ereignis sein (Voice-Chat ect .. die Ausnahme). Spielelogik - Bietet sich natürlich für ein Ereignismodell an. Menüs & Benutzeroberfläche - Arbeiten Sie hervorragend in einem ereignisbasierten System

Auch viele moderne Konsolen und Middleware-Bibliotheken verwenden Ereignisse.

Das Rendern und Abrufen von Eingabegeräten kann etwas verwirrend sein. Dies gilt insbesondere dann, wenn Sie Bewegungssteuerungen verwenden, da Ereignisse eine spürbare Latenz verursachen und dem Abfrageformat widersprechen können.

Kimau
quelle
4

Ich würde sagen, dass die Verwendung des Hauptschleifenstils immer noch empfohlen wird: Es ist schnell, gibt Ihnen die vollständige Kontrolle über die Reihenfolge der Aktionen (dies ist in einem Spiel wichtig) und es ist schwieriger, Fehler beim Codieren zu machen. Wenn die von Ihnen verwendete Technologie es Ihnen jedoch ermöglicht, Ereignisse einfach zu verwenden, kann dies für viele Dinge sehr nützlich sein. Ich benutze sie zum Beispiel, um zu benachrichtigen, wann und wo die Feinde sterben, wenn die Tastaturtasten gedrückt werden ...

Fazit: Verwenden Sie die Spielschleife, um die Hauptlogik des Spiels zu steuern. Beachten Sie jedoch, dass Ereignisse in anderen Situationen nützlich sein können.

miguelSantirso
quelle
Ich bin nicht der Meinung, dass ein Hauptschleifenstil empfohlen wird. Spiele im Main-Loop-Stil verlieren in mehreren Bereichen gegen ein gut geschriebenes ereignisgesteuertes Spiel: 1) Auf Multitasking-Systemen verbrauchen sie unnötig viel Prozessor für einen festen Satz von Funktionen, 2) auf tragbaren Geräten, sogar auf einzelnen -Tasking-Systeme Die zusätzliche Prozessorauslastung wirkt sich nachteilig auf die Akkulaufzeit aus. 3) Je einfacher das Spiel ist, desto größer werden diese Probleme im Vergleich zu einem richtigen ereignisgesteuerten Spiel.
Sam Harwell