Na przykład:
- Powiedzmy, że na świecie jest 10 pokoi.
- Powiedzmy, że świat zamieszkuje 10 bytów.
- I każda istota ma swoją „codzienną rutynę”, w której wykonuje określone czynności w pokoju, a także może nawigować między pokojami.
Biorąc pod uwagę, że gracz może znajdować się tylko w jednym pokoju na raz, co jest dobrym sposobem na śledzenie działań, które inne podmioty wykonują w innych pokojach poza ekranem?
- Najprostszą opcją jest sprawdzenie każdego z 10 podmiotów w każdej ramce, sprawdzenie ich pozycji / stanu i ustalenie, czy podmiot powinien znajdować się w pokoju, w którym znajduje się gracz w danym momencie. (To jednak wydaje się naprawdę duże zasoby, szczególnie gdy zwiększa się ilość pokoju / obiektu).
Inną opcją jest śledzenie czasu, który upłynął od początku gry, a następnie każdy z podmiotów sprawdza, czy jego wzór przecina się z pokojem, w którym znajduje się gracz, i czy sprawdza, czy czas jednostka powinna znajdować się w tym samym pomieszczeniu w tym konkretnym czasie, istoty, których wzory nie przecinają się z bieżącym pokojem, w którym znajduje się gracz, nie rób nic, dopóki gracz nie wejdzie do pokoju, w którym przecina się ich wzór, i tylko w tym momencie oblicza, czy nie powinni renderować. (Ale jeśli wejdą w interakcję z pokojem, będą musieli zawsze sprawdzać stan pokoi, które przecinają ich trasę, aby ustalić ich lokalizację w danym momencie, co nie jest takie świetne.)
Trzecią opcją, do której doszedłem, byłoby po pierwsze spojrzenie tylko na trasy, które przecinają lokalizację gracza (jak opisano wcześniej), po drugie po wejściu do pokoju sprawdź, czy gracz jest w tym pokoju, a jeśli nie, to tylko sprawdź stan pokoju i ile czasu zajmie przejście do następnego pokoju. Na przykład woźny NPC wchodzi do pokoju, sprawdza stan pokoju, widzi, że gracz rozlał się, oblicza, ile czasu zajmie oczyszczenie go i jak długo potrwa ściekanie itp. I do wspomnianego czas na wejście do następnego pokoju, sprawdzamy tylko, czy gracz jest w pokoju. Dokładna lokalizacja NPC do celów renderowania zostanie obliczona tylko wtedy, gdy gracz wejdzie do pokoju.
Po burzy mózgów doszedłem do trzeciej opcji, ale zastanawiałem się, czy może jest znany lub lepszy sposób radzenia sobie z takimi rzeczami?