Jak śledzą NPC w Left 4 Dead?

11

Jak śledzą zombie NPC w Left 4 Dead?

Mówię o NPCach, którzy po prostu wchodzą do ścian lub wędrują bez celu. Chociaż gracze ich nie widzą, są tam (powiedzmy w pokojach lub za drzwiami). Załóżmy, że w korytarzu i pokojach jest około 10 zombie. Czy gra utrzymuje wszystkie zombie na liście i iteruje poprzez wydawanie im poleceń? Czy odradzają się, gdy użytkownik znajduje się w określonym promieniu lub osiągnął specjalną lokalizację?

Powiedzmy, że umieściłeś 4 jednostki (kontrolowane przez graczy) w zupełnie różnych miejscach na mapie. Załóżmy, że nie jesteście rojowani, a następnie nie zabiliście żadnego z tych bezcelowych NPC. Czy gra śledziłaby w sumie 10 x 4 = 40 zombie?

A może moje zrozumienie jest całkowicie nieaktualne?

Powód, dla którego pytam, to czy miałbym zaimplementować coś podobnego na urządzeniu mobilnym, śledzenie 40 lub więcej postaci niezależnych może nie być świetnym pomysłem.

f20k
źródło
1
Widziałem prezentację Valve wyjaśniającą wszystko o zombie w L4D. Nie mogę tego jednak znaleźć.
Kaczka komunistyczna
2
@ The Communist Duck - To byłoby bardzo przydatne. Prześlij, jeśli znajdziesz. Jedyne, co mogę znaleźć online, to najczęściej zadawane pytania dotyczące gier.
f20k

Odpowiedzi:

24

Interesuje Cię papier znaleziony tutaj:

Systemy AI Left 4 Dead

ChrisE
źródło
Tak, właśnie tego szukam dzięki!
f20k
1
Nie ma problemu. Na szczęście dla nas deweloperzy są na tyle mili, że mogą publikować swoje publikacje.
ChrisE
4

Nie przeczytałem artykułu, do którego ChrisE napisał link, ale albo z rozmowy, którą przeprowadziłem z pracownikiem Valve, albo gdzieś na jego Wiki Rozwoju (nie pamiętam, które) Pamiętam, że zostałem poinformowany, że w zasadzie mają tylko kilka prawdziwe byty (dyrektor AI); awatary przedstawiające zainfekowanych NPC są po prostu „marionetkami” dla tych istot. Zrobili to, aby ograniczyć liczbę wpisów edyktu (słownika jednostek) do minimum, ponieważ oczywiście jest mnóstwo zainfekowanych NPC do śledzenia.

Słownik encji silnika ma ustalony rozmiar i nie może się powiększać. Oznacza to, że każda gra zbudowana na tym silniku, która wymaga dużej liczby postaci niezależnych - lub jakiegokolwiek innego podmiotu w tym zakresie - musi korzystać z takiego systemu, aby silnik działał poprawnie, a nie dławił się (a ostatecznie powodował awarię), ponieważ liczba jednostek jest zbyt wysoka.

Cale
źródło
Czy zdarza ci się wiedzieć, jakie są inne rodzaje bytów? Czy specjalnymi zainfekowanymi byliby byty? Mam problem ze zrozumieniem „bytu” kontra „marionetki”, kiedy mogę wchodzić w interakcje z zainfekowanym NPC.
f20k
1
Promocje to byty. Najłatwiejszym sposobem ustalenia, co jest prawdziwe, a co fałszywe, jest obejrzenie konsoli. Możesz przyjmować obrażenia od innych graczy, od specjalnych po imieniu, ale kiedy otrzymujesz obrażenia od wspólnych, konsola pokazuje ci obrażenia z „świata” (iirc).
Rob N
Tak, rozumiem twój punkt widzenia. Po prostu gromadzą się wokół mnie i robią animację szponów. To bardzo interesujące, dziękuję.
f20k
Prawdopodobnie najlepszym sposobem wyjaśnienia, jak działa koncepcja „marionetki palcowej”, jest porównanie jej z psem owczym. Istnieje jeden „kontroler” (np. Pies) i stado (lub horda w tym przypadku) „lalek” (np. Owca). „Lalki” nie mogą myśleć same za siebie, robią tylko to, do czego kieruje nimi kontroler. Lalki są zasadniczo rozszerzeniem jednostki kontrolującej, ale zamiast używać jednego elementu wizualnego, takiego jak przypadek specjalnie zainfekowanego, używają wielu elementów wizualnych, które są kontrolowane niezależnie.
Cale
1

Nie mogę rozmawiać o tym, jak działa implementacja Left 4 Dead, ale mogę powiedzieć, jak bym to zrobił.

Wybrałbym coś w rodzaju drugiej opcji, śledziłbym każdego gracza i ładował NPC tylko wtedy, gdy gracze przechodzą obok punktów spustowych. Kluczem w takim systemie jest umieszczenie punktów wyzwalających wystarczająco daleko od gracza, aby nie byli w stanie powiązać tych walking past this fence postwyzwalaczythat car to blow up, and shoot a zombie at them.

Prawdopodobnie miałbym aktywną kolekcję NPC, której punkty spustowe albo dodają, albo usuwają NPC z kolekcji. Pozwala to wydawać zasoby CPU / GPU na postacie niezależne, z którymi gracze faktycznie wchodzą w interakcje, ale daje elastyczność w ładowaniu postaci niezależnych w dowolnym momencie.

Pomyśl o bossie, który słyszy dźwięki, być może boss jest załadowany na początku mapy, a jeśli gracz przechodzący przez mapę robi dużo hałasu (granaty, bomby rurowe itp.), Szef wyszuka gracza i zaatakuje nieoczekiwanie, zamiast czekać, aż gracz dotrze do areny bossów.

Nate
źródło