Zaprojektowałem grę RPG, która ma wiele wątków fabularnych, co oznacza, że w zależności od wyboru użytkownika mogą się zdarzyć pewne rzeczy, możesz osiągnąć to samo na kilka sposobów, zakończenie może być inne i tak dalej.
Wdrożyłem prosty silnik decyzyjny, który działa dobrze, ale ma jedną wielką wadę. W momencie podjęcia decyzji na twoją decyzję ma wpływ natychmiastowa historia, co oznacza, że nie możesz podjąć decyzji, która wpłynie na ciebie w dalekiej przyszłości . Dzieje się tak, ponieważ historia rozwija się jak gałąź w strukturze drzewa i zawsze musi wiedzieć, który węzeł jest następny. Pod maską decyzje są wdrażane za pomocą kolejki: każdy węzeł wie o poprzednim węźle i następnym węźle (lub jeśli jest to węzeł decyzyjny, czeka na dane wejściowe użytkownika, aby ustawić następny węzeł)
Widziałem wiele gier ze złożonymi silnikami decyzyjnymi i zastanawiam się, jak są one tworzone? Czy istnieje specjalny projekt, który sprawia, że wszystko jest naprawdę łatwe? Czy ktoś zrobił coś podobnego i może dać mi wskazówkę, jak sobie z tym poradzić?
AKTUALIZACJA 1:
Ważnym aspektem jest zachowanie niezależności kodu opowieści, aby można było nim manipulować z zewnętrznego pliku. Planuję używać tego jako silnika, więc nawet możliwe wybory muszą pochodzić z zewnętrznego pliku. Kod musi być całkowicie abstrakcyjny.
Ponadto interesuje mnie rozwiązanie projektowe, dobry sposób na zrobienie tego, jak inni to zrobili lub zrobili.
if (isTree)
ani zachować isTree
globalnego var, ponieważ historia może mieć wybór. Wiesz co mam na myśli? To bardziej jak silnik wyboru, który będzie obsługiwał wiele historii.
isTree=true
, to później robi coś innego, na przykład walcząc ze szkolnym kolegą, który w zamian idzie i ściąga swoje drzewo, gdy drzewo jest jeszcze młode bo skopał mu tyłek. Teraz mamy 2 zmienne, które wpływają na istnienie drzewa isTree==true' and
didFightBrat == false`. Wiesz co mam na myśli? I łańcuch może trwać wiecznie, na istnienie drzewa może mieć wpływ nieznana liczba czynników. Wiesz co mam na myśli?