Zachowania postaci niezależnych (NPC) odgrywają kluczową rolę w wielu grach. Od kompanów po bossów, od kupców po strażników – sposób, w jaki postacie niezależne wchodzą w interakcję z otaczającym je światem, napędza wciągającą, angażującą rozgrywkę. Na pierwszy rzut oka zachowania te mogą wydawać się niepokojące, ale w rzeczywistości większość postaci niezależnych przestrzega ścisłego zestawu logicznych zasad. Zrozumienie tych zasad ma kluczowe znaczenie podczas tworzenia postaci niezależnych, a z tej strony dowiesz się, w jaki sposób postacie niezależne wchodzą w interakcje ze światem oraz jak możesz przedstawiać ich zachowania i manipulować nimi, aby tworzyć własne, unikatowe przygody.
Urządzenie generatora postaci niezależnych ułatwia wiele interakcji postaci niezależnych i SI. Aby dowiedzieć się więcej o urządzeniu, patrz: Urządzenie generatora NPC, Definicja postaci niezależnej, Tworzenie niestandardowego zachowania postaci niezależnej oraz Używanie generatora NPC z animacjami.
Reguły logiczne
Większość postaci niezależnych nie działa losowo i wybiera swoje następne działania na podstawie swojego stanu. Stan postaci niezależnej można rozumieć jako migawkę świata postaci niezależnej w danym momencie. Na stan postaci niezależnej składają się podejmowane przez nią działania, a także działania podejmowane przez graczy i wszelkie inne zmienne, o których postać niezależna może wiedzieć. Postacie niezależne używają reguł logicznych, aby zdecydować, kiedy przejść z jednego stanu do drugiego, i mogą stosować wiele różnych reguł w zależności od ich aktualnego stanu.
Maszyny skończone
Częstym sposobem wizualizacji stanów jest użycie maszyny skończonej (Finite-State Machine, FSM). Automat skończony opisuje różne stany, w których może znajdować się postać niezależna, oraz przejścia z jednego stanu do drugiego. Węzły reprezentują różne stany, a strzałki między nimi opisują warunki potrzebne do przejścia z jednego stanu do drugiego. Podstawowy schemat FSM może wyglądać następująco:
Tutaj FSM ma trzy stany i rozpoczyna się w stanie 1. Po osiągnięciu określonych warunków postać niezależna przeskakuje z jednego stanu do drugiego i kontynuuje przeskakiwanie między stanami wraz ze zmianą warunków.
Weźmy na przykład FSM dla prostej postaci medyka bojowego. Jeśli w pobliżu znajdują się ranni członkowie drużyny, medyk leczy ich. Jeśli w pobliżu znajdują się wrogowie, medyk atakuje ich. W przeciwnym razie pozostaje bezczynny. Podstawowy schemat FSM dla tej postaci może wyglądać następująco:
FSM pomagają zobrazować i zrozumieć sposób, w jaki działają postacie, a także pomagają odwzorować sposób, w jaki postacie reagują na wydarzenia i otaczający je świat.
Przykładowa maszyna skończona strażnika
Jako przykład w grze, spójrzmy na postać niezależną strażnika. Postacie niezależne strażników mogą być spawnowane z urządzenia generatora strażników lub tworzone za pomocą definicji postaci niezależnej. Postać niezależna typu strażnik przestrzega określonego zestawu reguł logicznych, które odpowiadają różnym aktywnym stanom, w jakich może znajdować się strażnik:
Bezczynność
Patrolowanie
Podejrzliwość
Alarm
Atakowanie
Po spawnie strażnik rozpoczyna albo bezczynność, albo patrol, jeśli opcja patrolowania jest włączona. Gdy strażnik wykryje cel, jego miernik podejrzeń zaczyna się zapełniać. Po zapełnieniu miernika strażnik wchodzi w fazę zaalarmowania, w przeciwnym razie powraca do patrolowania. Gdy strażnik jest zaalarmowany, będzie stale nawigował w kierunku celu, atakując go, jeśli ten znajdzie się w jego zasięgu. Jeśli cel zostanie zlikwidowany lub ucieknie, strażnik powróci do patrolowania. Logikę strażnika można zobrazować następującym schematem FSM:
Ten schemat FSM zapewnia ogólny przegląd zachowania strażnika, ale może istnieć o wiele więcej reguł i działań podejmowanych przez strażnika. Postacie niezależne mogą oddziaływać na wiele rzeczy jednocześnie i ważne jest, aby dodając je do swojej gry, brać pod uwagę czynniki środowiskowe.
Stany postaci niezależnych i Verse
Postacie niezależne w UEFN dziedziczą z modułu SI i udostępniają funkcje, których można użyć do bezpośredniego sterowania ich stanem. Na przykład interfejs navigatable pozwala nawigować postacią niezależną do obszaru, podczas gdy interfejs focus_interface pozwala zmusić postać do skupienia się na konkretnym obiekcie lub agencie. Przy użyciu tych interfejsów w ramach urządzeń Verse lub zachowań postaci niezależnych możesz tworzyć niestandardowe postacie niezależne, które wzbogacą twoją rozgrywkę.
Więcej informacji na temat tworzenia własnych zachowań postaci niezależnych można znaleźć na stronie Tworzenie niestandardowych zachowań postaci niezależnych.
Jako przykład weźmy następujące zachowanie postaci niezależnej:
using { /Fortnite.com/AI }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Game }
using { /Verse.org/Simulation }
on_damaged_behavior<public> := class(npc_behavior):
# This function runs when the NPC is spawned in the world and ready to follow a behavior.
OnBegin<override>()<suspends>:void=
if:
Wszystkie postacie niezależne implementują interfejs damageable, który pozwala im na odnoszenie obrażeń. Subskrybowanie funkcji do zdarzenia DamagedEvent interfejsu damageable informuje, kiedy postać niezależna odniesie obrażenia, i w odpowiedzi uruchamia kod. W powyższym skrypcie, gdy postać niezależna implementująca to zachowanie odniesie obrażenia, pobierze agenta, który zadał obrażenia, i zapisze go w zmiennej InstigatingAgent. Następnie, używając interfejsu navigatable postaci niezależnej, ustawi inicjatora jako NavigationTarget i rozpocznie za nim pościg.
Zachowanie to jest rozszerzeniem oryginalnego zachowania postaci niezależnej. Jeśli ten skrypt jest dołączony do postaci typu strażnik, będzie ona nadal zachowywać się w zwykły sposób, ale po odniesieniu obrażeń będzie nawigować bezpośrednio do celu. To samo dotyczy postaci typu zwierzę i postaci niestandardowych. Skrypty zachowań postaci niezależnych są potężnym narzędziem pozwalającym rozszerzyć funkcjonalność postaci niezależnych i umożliwiającym tworzenie własnych, niestandardowych postaci niezależnych dopasowanych do twojej gry. Więcej informacji na temat tworzenia własnych skryptów zachowania postaci niezależnej można znaleźć w sekcji Tworzenie niestandardowego zachowania postaci niezależnej.
Typy postaci niezależnych
Różne typy postaci niezależnych implementują różne podstawowe zachowania, a niestandardowe postacie niezależne utworzone na ich podstawie dziedziczą te zachowania. Więcej informacji na temat różnych podstawowych typów postaci niezależnych i powiązanych z nimi zachowań można znaleźć w artykule Typy postaci niezależnych.
Poruszanie się w świecie
Poruszając się po świecie, postacie niezależne muszą dokonywać wyborów dotyczących najlepszej drogi do celu. Strażnik wspina się po ścianie czy raczej się przez nią przebija? Powinien przepłynąć zbiornik wodny czy go obejść? Postacie niezależne podejmują te decyzje w oparciu o siatkę nawigacyjną świata. Postacie niezależne używają siatki nawigacyjnej do podejmowania decyzji związanych z wyznaczaniem ścieżek i aktualizowania swoich wyborów w miarę aktualizacji świata wokół nich. Więcej informacji na temat korzystania z siatki nawigacyjnej i jej wizualizacji można znaleźć na stronie Siatka nawigacyjna.