Systemy przedmiotów i ekwipunku stanowią kluczowy element wielu rodzajów gier. Przy użyciu jednostek i komponentów Scene Graph można dostosowywać ekwipunek gracza Fortnite, aby tworzyć przedmioty, które będą unikalne dla wyspy.
Przedmioty to obiekty, które mogą być używane oraz posiadane przez graczy i agentów. Ekwipunek obejmuje istniejący ekwipunek gracza Fortnite, a także wszelkie niestandardowe ekwipunki utworzone za pomocą komponentu inventory_component. System niestandardowych ekwipunków i przedmiotów to system do tworzenia i przechowywania przedmiotów oraz do sterowania nimi. Ten system jest funkcją eksperymentalną, którą należy włączyć w ustawieniach projektu, aby móc jej używać w przypadku narzędzia Scene Graph i języka Verse w Unreal Editor dla Fortnite.
Podstawy Scene Graph
Scene Graph to system jednostek i komponentów zbudowany w oparciu o język Verse. Jednostki to kontenery dla komponentów, a komponenty zapewniają jednostce funkcjonalność. Jednostki można łączyć ze sobą w relacjach nadrzędności i podrzędności, tworząc hierarchie. Układ jednostek i komponentów przeznaczony do wielokrotnego użytku jest nazywany gotowcem.
Aby uzyskać więcej informacji na temat jednostek i komponentów, patrz: Praca z jednostkami i komponentami. Aby uzyskać więcej informacji na temat gotowców, patrz: Gotowce i instancje gotowców.
Przedmioty
Przedmioty są tworzone w narzędziu Scene Graph poprzez umieszczenie komponentu item_component w jednostce. Ekwipunki traktują komponent jako obiekt. Komponent item_component zapewnia funkcjonalność taką jak:
Wyposażanie i usuwanie z wyposażenia.
Nazwane kategorie na potrzeby porównywania i sortowania.
Sam w sobie komponent item_component zapewnia ograniczoną funkcjonalność w zakresie obsługi przedmiotu. Dodatkowe komponenty sprawiają, że jego możliwości stają się ciekawsze dzięki zwiększonej funkcjonalności.
Aby uzyskać więcej informacji, patrz: Komponent przedmiotu.
Ekwipunki
Ekwipunki są kontenerami na przedmioty i umożliwiają sterowanie tym, co dzieje się z przedmiotami. Ekwipunek to jednostka, która ma komponent inventory_component i działa w następujący sposób:
Śledzi wszystkie przedmioty, które się w niej znajdują.
Decyduje o tym, które przedmioty mogą zostać dodane do ekwipunku lub z niego usunięte.
Określa, co dzieje się, gdy przychodzący przedmiot chce połączyć się z przedmiotem już znajdującym się w ekwipunku.
Przedmiot może istnieć tylko w jednym ekwipunku naraz, dlatego ekwipunki decydują również o tym, który z nich jest właścicielem jednostki przedmiotu. Podjednostki ekwipunku są uznawane za przedmioty znajdujące się w ekwipunku tylko wtedy, gdy również mają komponent item_component. W przeciwnym razie są podjednostkami podrzędnymi.
Domyślnie w ekwipunkach może znajdować się nieskończona liczba typów przedmiotów i nieskończona liczba przedmiotów. Za pomocą języka Verse możesz tworzyć ograniczenia i reguły, które wpływają na dodawanie i usuwanie przedmiotów. Na przykład:
Dodawaj przedmiot do ekwipunku tylko wtedy, gdy istnieje poprawna kategoria.
Ograniczenie liczby przedmiotów w ekwipunku.
Zapobiegaj usunięciu ostatniego przedmiotu z ekwipunku.
Zezwalanie przedmiotom o wyższym priorytecie na wyrzucanie przedmiotów o niższym priorytecie, gdy ekwipunek jest pełny.
Ograniczenie ekwipunku do pojedynczego przedmiotu.
Drzewa ekwipunków
Ekwipunki śledzą istnienie ekwipunków znajdujących się poniżej nich w hierarchii Scene Graph. Te ekwipunki podrzędne to tzw. podekwipunki. Drzewo ekwipunków można wykorzystać na wiele sposobów.
Na przykład można dodać przedmiot do ekwipunku nadrzędnego, z którego może trafić do bardziej wyspecjalizowanego ekwipunku podrzędnego. Możesz to sobie wyobrazić w ten sposób: wręczasz graczowi monetę, która przemieszcza się przez system ekwipunku do portfela (Ekwipunek gracza > Ekwipunek plecaka > Ekwipunek sakiewki).
Aby utworzyć bardziej zaawansowane zachowanie ekwipunku, należy napisać kod Verse.
Verse: Ekwipunki
Istnieją dwa sposoby na dodanie przedmiotu do ekwipunku.
Wywołaj funkcję
AddItem(), aby dodać przedmiot do konkretnego ekwipunku.Wywołaj funkcję
AddItemDistribute()i użyj hierarchii ekwipunków w celu znalezienia najodpowiedniejszego ekwipunku lub podekwipunku.
Po wywołaniu funkcji AddItemDistribute() docelowy ekwipunek i wszystkie jego podekwipunki otrzymują możliwość ocenienia i odebrania przedmiotu. Po rozważeniu każdego z nich najodpowiedniejszy ekwipunek podejmuje próbę dodania przedmiotu.
Ekwipunek główny gracza
Gracze mają ekwipunek domyślny. Jest on nazywany ekwipunkiem głównym. W przeciwieństwie do innych ekwipunków ekwipunek główny gracza nie może akceptować przedmiotów. Zamiast tego działa jako element nadrzędny dla podekwipunków znajdujących się poniżej niego. To umożliwia wskazanie ekwipunku głównego jako celu za pomocą funkcji AddItemDistribute() i znalezienie kwalifikującego się ekwipunku dla przedmiotu, nawet jeśli cel początkowy nie może go odebrać.
Aby gracz mógł odbierać przedmioty, musi mieć co najmniej jeden podekwipunek poniżej ekwipunku głównego.
Powyższe wyjaśnienie nie dotyczy jednostek, które mają komponent inventory_component dodany przy użyciu kodu Verse lub edytora gotowców.