Das traditionelle Spieldesign , wie ich es kenne, verwendet Polymorphismus und virtuelle Funktionen, um den Status von Spielobjekten zu aktualisieren. Mit anderen Worten, derselbe Satz virtueller Funktionen wird in regelmäßigen Intervallen (z. B. pro Frame) für jedes Objekt im Spiel aufgerufen.
Kürzlich entdeckte ich, dass es ein anderes ereignisgesteuertes Nachrichtensystem gibt , mit dem der Status von Spielobjekten aktualisiert werden kann. Hier werden die Objekte normalerweise nicht pro Frame aktualisiert. Stattdessen wird ein hocheffizientes Ereignisnachrichtensystem erstellt , und Spielobjekte werden erst aktualisiert, nachdem eine gültige Ereignisnachricht empfangen wurde.
Event Driven Game Architecture ist gut beschrieben in: Game Coding Complete von Mike McShaffry .
Könnte ich Sie bitte um Hilfe bei folgenden Fragen bitten:
- Was sind die Vor- und Nachteile beider Ansätze?
- Wo ist einer besser als der andere?
- Ist Event Driven Game Design universell und in allen Bereichen besser? Wird es daher auch für mombile Plattformen empfohlen?
- Welches ist effizienter und welches ist schwieriger zu entwickeln?
Zur Verdeutlichung geht es bei meiner Frage nicht darum, Polymorphismus vollständig aus einem Spieldesign zu entfernen. Ich möchte einfach den Unterschied verstehen und von der Verwendung von ereignisgesteuertem Messaging im Vergleich zu regulären (pro Frame) Aufrufen virtueller Funktionen profitieren, um den Spielstatus zu aktualisieren.
Beispiel: Diese Frage hat hier einige Kontroversen ausgelöst. Lassen Sie mich Ihnen ein Beispiel geben: Laut MVC ist die Spiel-Engine in drei Hauptteile unterteilt:
- Anwendungsschicht (Hardware- und Betriebssystemkommunikation)
- Spielelogik
- Spielansicht
In einem Rennspiel ist die Spieleansicht dafür verantwortlich, dass der Bildschirm so schnell wie möglich mit mindestens 30 Bildern pro Sekunde gerendert wird. Game View wartet auch auf Eingaben des Spielers. Nun passiert dies:
- Der Spieler drückt das Kraftstoffpedal auf 80%
- GameView erstellt eine Meldung "Car 2 Fuel Pedal auf 80% gedrückt" und sendet sie an Game Logic.
- Game Logic erhält die Nachricht, wertet sie aus, berechnet die Position und das Verhalten des neuen Autos und erstellt die folgenden Nachrichten für GameView: "Auto 2-Kraftstoffpedal ziehen 80% gedrückt", "Auto 2-Geräuschbeschleunigung", "Auto 2-Koordinaten X, Y". .
- GameView empfängt die Nachrichten und verarbeitet sie entsprechend
update
sie einfach auf). Das zweite können Sie aus verschiedenen Gründen mit Messaging tun.