Jaką rolę w grach odgrywa rozwijanie wydarzeń?

9

Większość tworzenia aplikacji opiera się na programowaniu przy użyciu zdarzeń, ale biorąc pod uwagę styl tworzenia gier w pętli i (często) potrzebę wysokiej wydajności / przepustowości, jaką rolę ma programowanie przy użyciu zdarzeń i jakie są kompromisy? Czy często występująca synchronizacja / blokowanie ma większy wpływ?

Na przykład: - W jaki sposób sieć [warstwa] powiadamia pętlę gry o otrzymanych danych? - W jaki sposób system fizyki powiadamia o kolizjach

Pytam, bo pamiętam czas, w którym tworzenie gier przy użyciu zdarzeń było surowym „nie”. Czy to się zmieniło?

Steven Evers
źródło

Odpowiedzi:

5

System zdarzeń jest potężny i może być wykonany bardzo szybko.

Pozwalają również modulować sekcje kodu w bardzo luźnej strukturze sprzęgania. Pozwalają ci wykonywać zadania wsadowe i oddzielać zadania. Działa dobrze z funkcjami wielordzeniowymi i asynchronicznymi.

Fizyka - wywołania zwrotne kolizji, aktywacja lub odpoczynek obiektów dobrze przekładają się na zdarzenia. Praca w sieci - w miarę możliwości powinno to być wydarzenie (czat głosowy itp. Wyjątek) Logika gry - Naturalnie nadaje się do modelu wydarzeń Menu i interfejs użytkownika - Świetna praca w systemie opartym na zdarzeniach

Wiele współczesnych konsol i bibliotek oprogramowania pośredniego wykorzystuje zdarzenia.

Renderowanie i odpytywanie urządzeń wejściowych może być nieco mylące, aby się zmieściło. Zwłaszcza jeśli używasz kontrolek ruchu, ponieważ zdarzenia mogą wprowadzić zauważalne opóźnienia i być sprzeczne z intuicją formatu odpytywania.

Kimau
źródło
4

Powiedziałbym, że nadal zaleca się używanie stylu głównej pętli: jest szybki, daje całkowitą kontrolę nad kolejnością akcji (jest to ważne w grze) i trudniej jest popełnić błędy w jego kodowaniu. Jeśli jednak technologia, której używasz, pozwala na łatwe korzystanie ze zdarzeń, może być naprawdę przydatna w wielu sprawach. Na przykład używam ich do powiadamiania, kiedy i gdzie umrą wrogowie, kiedy naciskane są klawisze klawiatury ...

Podsumowując: Użyj pętli gry, aby kontrolować główną logikę gry, ale pamiętaj, że zdarzenia mogą być przydatne w innych sytuacjach.

miguelSantirso
źródło
Nie zgadzam się, że zalecany jest styl głównej pętli. Gry w głównej pętli przegrywają z dobrze napisaną grą sterowaną zdarzeniami w kilku obszarach: 1) w systemie wielozadaniowym zużywają niepotrzebnie dużą ilość procesora dla ustalonego zestawu funkcji, 2) na urządzeniach przenośnych, nawet na jednym -zadawanie systemów dodatkowe użycie procesora niekorzystnie wpływa na żywotność baterii, 3) im prostsza gra, tym większe problemy stają się w porównaniu z odpowiednią grą sterowaną zdarzeniami.
Sam Harwell,