Planuję grę przygodową i nie mogę ustalić, w jaki sposób można wdrożyć zachowanie poziomu w zależności od postępu fabuły.
Moja gra dla jednego gracza ma ogromny świat, w którym gracz musi wchodzić w interakcje z ludźmi w mieście w różnych momentach gry. Jednak w zależności od przebiegu historii graczowi zostaną przedstawione różne rzeczy, np. Przywódca Gildii zmieni lokalizacje z rynku na różne lokalizacje w mieście; Drzwi były odblokowywane tylko o określonych porach dnia po zakończeniu określonej procedury; Różne zdarzenia odcięcia / wyzwalacza mają miejsce dopiero po osiągnięciu określonego kamienia milowego.
Naiwnie pomyślałem na początku o użyciu instrukcji switch {}, aby zdecydować, co NPC powinien powiedzieć lub w którym można go znaleźć, i umożliwić celom misji interakcję tylko po sprawdzeniu stanu globalnej zmiennej stanu gry. Ale zdałem sobie sprawę, że szybko napotkam wiele różnych stanów gry i skrzynek przełączników, aby zmienić zachowanie obiektu. Ta instrukcja przełączania byłaby również bardzo trudna do debugowania i myślę, że może być również trudna w użyciu w edytorze poziomów.
Pomyślałem więc, że zamiast mieć jeden obiekt z wieloma stanami, może powinienem mieć wiele instancji tego samego obiektu z jednym stanem. W ten sposób, jeśli użyję czegoś w rodzaju edytora poziomów, mogę umieścić instancję NPC we wszystkich różnych lokalizacjach, w których kiedykolwiek mógłby się pojawić, a także instancję dla każdego stanu konwersacji, który ma. Ale to oznacza, że wokół poziomu będzie unosiło się wiele nieaktywnych, niewidzialnych obiektów gry, co może być kłopotem z pamięcią lub po prostu trudne do zobaczenia w edytorze poziomów, nie wiem.
Lub po prostu utwórz identyczny, ale osobny poziom dla każdego stanu gry. Jest to najczystszy i wolny od błędów sposób robienia rzeczy, ale wydaje się, że to ogromna ręczna praca, upewniająca się, że każda wersja poziomu jest naprawdę identyczna.
Wszystkie moje metody wydają się tak nieefektywne, więc podsumowując moje pytanie, czy istnieje lepszy lub ustandaryzowany sposób na wdrożenie zachowania poziomu w zależności od stanu rozwoju historii?
PS: Nie mam jeszcze edytora poziomów - myślę o użyciu czegoś takiego jak JME SDK lub zrobieniu własnego.