Pomyślałem, że musisz wiedzieć, jak tworzyć te zdarzenia, a reszta postu dotyczy tego. Jeśli chcesz po prostu przechowywać te zdarzenia, skorzystaj z relacyjnej bazy danych lub opisz je tekstem i użyj języka skryptowego (zrobi to parsowanie i ocenę Ty). :)
To, co chcesz, to rozpoznać zdarzenia, które się wydarzyły (1), a następnie wykonać pewne czynności wymagane przez te zdarzenia (wydrukuj wiadomość, sprawdź naciśnięcie klawisza ...) (2). Chcesz również, aby te zdarzenia zdarzały się tylko raz (3).
Zasadniczo chcesz sprawdzić warunki, a następnie zaplanować pewne zachowanie.
Jak rozpoznać zdarzenia (1)
- Chcesz rozpoznać zdarzenia takie jak „pierwszy napotkany wróg”, „nowy przedmiot zdobyty”
- jeśli zdarzy się część ogólna, „ napotkany wróg ”, „ przedmiot zdobyty ” Sprawdzasz konkretną część „ pierwszy ...”, „ nowy przedmiot zdobyty”
Z czego wykonane są wydarzenia
Mówiąc bardziej ogólnie, każde takie zdarzenie składa się z:
- warunki wstępne , sprawdzasz je
- działania, które zostaną wykonane, gdy zostaną spełnione warunki wstępne (powiedz „Zabiłeś pierwszego wroga!”, powiedz „” wykonaj kombinacje, naciskając przyciski A i B ”, powiedz„ naciśnij 'enter', aby kontynuować ”, klawisz wymagający„ enter ”)
Jak przechowywać te wydarzenia
W niektórych strukturach danych:
- mieć listę warunków wstępnych (ciągi znaków lub kod, jeśli piszesz go w jakimś języku wysokiego poziomu)
- mają listę akcji (mogą to być ciągi znaków, silnik Quake używa ciągów zdarzeń)
Możesz również przechowywać go w relacyjnej bazie danych, chociaż wygląda na to, że nie jest to konieczne, jeśli chcesz stworzyć tę grę w dużych rozmiarach, być może będziesz musiał ją stworzyć.
Następnie musisz przeanalizować te ciągi / rzeczy. Lub możesz użyć jakiegoś języka skryptowego, takiego jak Python lub LUA, lub języka takiego jak LISP, wszystkie one mogą przeanalizować i wykonać dla Ciebie. :)
Jak korzystać z tych zdarzeń w pętli gry (2)
Będziesz potrzebować tych dwóch struktur danych:
- kolejka zdarzeń (tutaj umieszczane są zdarzenia, które mają zostać uruchomione)
- kolejka akcji (zaplanowane akcje, zdarzenia wskazują, które akcje są wykonane)
Algorytm:
- Jeśli uznają niektóre zdarzenia „s warunki te są spełnione, umieścić go w kolejce zdarzeń
- (3) Następnie powinieneś upewnić się, że to zdarzenie miało miejsce tylko raz, jeśli chcesz :) (na przykład z tablicą boolowską has_this_event_happened [„napotkano pierwszego wroga”])
- (jeśli kolejka akcji jest pusta, to) Jeśli w kolejce zdarzeń znajduje się zdarzenie Umieścisz jego akcje w kolejce akcji i usuniesz go z kolejki zdarzeń
- Jeśli w kolejce akcji jest akcja Zaczynasz robić to, czego żąda
- Jeśli takie działanie zostanie wykonane, usuwasz je z kolejki działań
Jak samodzielnie wykonać te działania (2)
Tworzysz listę obiektów, które mają funkcję „aktualizacja”. Czasami nazywane są bytami (w silniku Quake) lub aktorami (w silniku Unreal).
- Obiekty te uruchamia się, gdy mają być uruchamiane w kolejce działań.
- obiekty te mogą być używane do innych rzeczy, takich jak niektóre inne liczniki czasu. W Quake te byty są wykorzystywane do logiki całej gry, polecam przeczytać o tym trochę materiału .
Akcja „powiedz coś”
- Drukujesz coś na ekranie
- Chcesz, aby ten komunikat pojawiał się przez kilka sekund
- w „aktualizacji”:
- utwórz zmienną remove_me_after i zmniejsz ją o upływ czasu
- gdy zmienna ma wartość 0, usuwasz tę akcję z kolejki akcji
- Usuwasz również ten obiekt (lub planujesz jego usunięcie ...)
Działanie „wymaga klucza”
- To zależy od tego, jak chcesz to zrobić, ale myślę, że przekazujesz wiadomość
- w „aktualizacji”:
- Sprawdzasz tylko pożądane zdarzenie naciśnięcia klawisza
- Prawdopodobnie potrzebujesz tablicy / kolejki do przechowywania zdarzeń naciśnięcia klawisza
- następnie możesz usunąć go z kolejki akcji i usunąć obiekt
Jakie metody się uczyć