Pakiet funkcji Misje oferuje funkcjonalność out-of-the-box do tworzenia misji, które gracze mogą ukończyć, aby uzyskać nagrody i postęp w swoim doświadczeniu.Wszystkie misje muszą mieć identyfikator, kategoriai listę zadań, które gracze muszą ukończyć, aby ukończyć misję.Jednak lista zadań może być pusta, umożliwiając natychmiastowe odebranie nagród misji.
Wykorzystując opcje personalizacji pakietu, możesz dostosować wszystkie misje, aby spełnić swoje unikalne wymagania dotyczące rozgrywki, takie jak:
- Tworzenie misji, które włączają nowych graczy do swojego doświadczenia i poprawiają zatrzymanie D1.
- Celowanie w zatrzymanie D7 i D30 poprzez dodanie celów średnioterminowych i poczucia postępu.
- Zwiększanie zaangażowania poprzez wyświetlanie różnych systemów w grze i nagradzanie graczy za interakcję z nimi.

Zdobądź pakiet
Sklep Twórców jest zakładką Toolbox, którą możesz użyć, aby znaleźć wszystkie zasoby, które są tworzone przez Roblox i społeczność Roblox do użytku w twoich projektach, w tym modele, obrazy, siatki, dźwięki, wtyczki, wideo i czcionki.Możesz użyć sklepu dla twórców, aby dodać jeden lub więcej zasobów bezpośrednio do otwartego doświadczenia, w tym pakietów funkcji!
Każdy pakiet funkcji wymaga, aby pakiet funkcji Rdzeń działał prawidłowo.Gdy pakiet funkcji Rdzeń i Misje będzie już w twoim wyposażenie, możesz ponownie ich użyć w dowolnym projekcie na platforma.
Aby otrzymać pakiety z twojego zapasu do twojego doświadczenia:
Dodaj Rdzeń i Misje do swojego zapasu w Studio, klikając link Dodaj do zapasu w następującym zestawie komponentów.
W pasku narzędzi wybierz zakładkę Widok.
Kliknij Pudełko narzędzi . Okno Pudełko narzędzi wyświetla się.
W oknie Pudełko z narzędziami , kliknij zakładkę Ekwipunek . Wyświetlają się sortowania Moje modele .
Kliknij pasek Pakiet podstawowy funkcji , a następnie pasek Pakiet funkcji misji .Oba foldery pakietowe wyświetlają się w oknie Eksploratora .
Przeciągnij foldery pakietowe do ReplicatedStorage .
Określ misje
Każda ukończalna misja obejmuje zestaw zadań, które muszą zostać zakończone, aby ukończyć misję, opcje konfiguracji i opcjonalne metadane wyświetlania, które wszystkie mogą być zdefiniowane w ReplicatedStorage.Missions.Configs.Missions , z typami eksportowanymi z kodu Types ze skryptu w tym samym folderze.
Wymagane pola
Poniższe pola są wymagane dla każdej misji.
Nazwa | Typ | Opis |
---|---|---|
missionId | string | Główny klucz tablicy misji. Wszystkie misje są oznaczane przez własną unikalną ciąg. |
categoryId | string | Misje muszą należeć do kategoriai są grupowane według kategorii w interfejsie użytkownika. |
tasks | table | Lista zadań, które gracz musi ukończyć, aby ukończyć misję. |
Odblokuj warunki
Domyślnie misje są odblokowane dla graczy automatycznie i mogą zostać ukończone dokładnie raz.Jednak możesz użyć następujących opcji konfiguracyjnych opcjonalnych , aby zmienić to zachowanie.
Nazwa | Typ | Opis |
---|---|---|
prerequisites | table | Lista innych identyfikatorów misji, które muszą zostać ukończone przed odblokowaniem misji. |
manualOnly | bool | Wyłącza automatyczne odblokowanie misji.Zamiast tego należy wezwać funkcję, aby odblokować misję.Należy również spełnić wszystkie inne warunki odblokowania. |
availableAfterUtc | bool | Misję nie można odblokować przed określonym czasem w UTC. |
availableBeforeUtc | bool | Misja nie może zostać odblokowana po określonym czasie w UTC. Jeśli zostanie odblokowana, ale nie zostanie ukończona przed tym czasem, misja nie powiedzie się. |
repeatable | bool | Misja zostaje odblokowana ponownie po jej zakończeniu. |
repeatLimit | number | Jeśli misja jest powtarzalna, nie można jej powtórzyć więcej niż kilka razy. |
repeatCooldownSeconds | number | Jeśli misja jest powtarzalna, występuje opóźnienie, zanim zostanie odblokowana. |
expireSeconds | number | Jeśli misja nie zostanie odblokowana i nie zostanie ukończona w określonym czasie, zamiast tego zawiedzie. |
expireCountOffline | bool | Jeśli misja ma expireSeconds i expireCountOffline jest ustawiona na prawdę, czas, gdy gracz nie jest rzeczywiście w doświadczeniu, będzie liczony w kierunku wygaśnięcia misji. |
Opis metadanych
Misje mają metadane, które określają, jak będą wyświetlane w interfejsie użytkownika misji.Możesz użyć następujących opcjonalnych pól, aby dostosować jego metadane.
Nazwa | Typ | Opis |
---|---|---|
displayName | string | Nazwa do wyświetlenia dla misji w interfejsie użytkownika zamiast missionId. |
description | string | Dłuższy blok tekstu, który dostarcza dodatkowe informacje lub kontekst o misji. |
visibleAfterComplete | bool | Jeśli ustawiono na prawdę, misja pojawi się na liście misji nawet po zakończeniu, ale oznaczona jako zakończona. |
visibleAfterFailed | bool | Jeśli ustawiono na prawdę, misja pojawi się na liście misji nawet po niepowodzeniu, ale oznaczona jako nieudana. |
visibleBeforeUnlocked | bool | Jeśli ustawiono na prawdę, misja będzie widoczna, ale zablokowana na liście misji, zanim będzie dostępna do ukończenia. |
invisibleWhileActive | bool | Jeśli ustawiono na prawdę, misja będzie niewidoczna nawet wtedy, gdy aktywnie się realizuje. |
rewards | table | Lista informacji o wyświetlaniu nagród.
|
Określ zadania
Każda misja może mieć zero lub więcej zadań.Jeśli misja ma zadania zero, można ją odebrać natychmiast po jej odblokowaniu; jeśli misja ma jedno lub więcej zadań, po zakończeniu zadań gracz może zebrać wszelkie nagrody związane z misją.Każde zadanie ma taskId, który jest kluczem powiązanym z zadaniem dla danej misji.
Zadania występują w dwóch typach:
- Zadania czasowe - Pozwala ci rozpocząć i zatrzymać zadanie w różnych punktach w czasie.Musi upłynąć pewna ilość czasu, gdy czasomierz zadania jest uruchomiony, a zadanie jest zakończone.
- Licz zadania - Pozwala dodawać lub ustawiać postęp zadania. Gdy postęp osiągnie określoną wartość, zadanie jest ukończone.
Oba typy zadań dzielą następujące pola:
Nazwa | Typ | Opis |
---|---|---|
taskType | string | Określa, czy typ zadania jest liczony czy czasowy. |
counter | object | (Opcjonalnie) licznik, który śledzi zadanie to.Liczniki są trwałymi pamięciami gracza specyficznymi dla liczby lub czasu trwania.Wiele zadań może śledzić jeden kontroferta; na przykład, jeśli więcej niż jedno zadanie śledzi, ile monet zebrał gracz, wszyscy mogą dzielić ten sam licznik "monet".Te zadania mogą niezależnie śledzić zebrane nowe monety, zaczynając od zera, lub kontynuować liczenie od wartości licznika (wszystkie już zebrane monety).
|
metadata | object | (Opcjonalnie) Informacje o tym, jak zadanie wyświetla się w interfejsie użytkownika.
|
callToAction | object | (Opcjonalnie) Przycisk, który uruchamia funkcję powrotną.
|
Licz pola zadań
Liczba zadań ma wymaganą wartość. Gdy postęp zadania spełnia tę kwotę, zadanie jest ukończone.
Nazwa | Typ | Opis |
---|---|---|
goalCount | number | (Opcjonalnie) Postęp wymagany do ukończenia zadania. |
Pola zadań czasowych
Zadania czasowe mają określoną ilość czasu spędzonego i są uruchamiane i zatrzymywane. Gdy osiągnięta zostanie określona ilość czasu, zadanie jest zakończone.
Nazwa | Typ | Opis |
---|---|---|
goalSeconds | number | Liczba sekund, które muszą upłynąć, aby ukończyć zadanie. |
startImmediately | bool | Jeśli zadanie powinno zacząć liczyć czas od razu po jego odblokowaniu, a nie dopiero po jego uruchomieniu. |
includesOfflineTime | bool | Jeśli zadanie powinno obejmować czas spędzony, gdy gracz nie jest aktywny w doświadczeniu. |
Konfiguruj kategorie
Kategorie nie muszą być wyraźnie zdefiniowane, aby były używane, ponieważ kategoria dla misji ma domyślne wartości, które zostaną użyte.Jednak możesz skonfigurować te wartości w ReplicatedStorage.Missions.Configs.Categories , aby dodać dodatkowe efekty do kategorii.Kategorie są oznaczane unikalnym CategoryIds, tymi samymi, które są odwołane w konfiguracji misji.
Nazwa | Typ | Opis |
---|---|---|
repeatDelaySeconds | number | (Opcjonalnie) Jeśli zostanie ustawiać, wszystkie misje w kategorii zostaną zresetowane za każdym razem, gdy przejdzie określona ilość czasu, a można je odblokować, ukończyć i ponownie odebrać nagrody.Jest to odrębne od powtarzalnych misji, które można powtarzać w ramach danej kategorii powtarzania. |
Zintegruj logikę serwera
Spójrz na ReplicatedStorage.Missions.Server.Examples.MissionsExample, który pokazuje, w jaki sposób twój serwer będzie interakcjonował z pakietem funkcji Misje .
Głównie musisz podłączyć cztery rzeczy po przeciągnięciu pakietu funkcji Misje do swojego doświadczenia:
Określ misje w konfiguracji misji.
Dodaj logikę do swojego doświadczenia, aby zaktualizować postęp zadania lub liczniki, do których jest powiązany postęp.
Przeczytaj README-- Zwiększenie postępu w misji Skoku z zadaniem skokuMissions.addProgressToTask(player, "Jumping", "Jumps", 1)-- Rozpoczyna minutnik w misji BattlingTime za pomocą zadania TimeInBattleMissions.startTimedTask(player, "BattlingTime", "TimeInBattle")-- Zatrzymuje minutnik w czasie misji BattlingTime za pomocą zadania TimeInBattleMissions.stopTimedTask(player, "BattlingTime", "TimeInBattle")-- Zwiększa postęp we wszystkich zadaniach powiązanych z kontrofertaskokówCounterSystem.addCounter(player, "Jumps", 1)-- Rozpoczyna zegar na wszystkich zadaniach czasowych powiązanych z licznikiem czasu w kontrofertaCounterSystem.startTimer(player, "TimeInBattle")-- Zatrzymuje czasomierz na wszystkich zadaniach czasowych powiązanych z licznikiem czasu w trybie kontrofertaCounterSystem.stopTimer(player, "TimeInBattle")Ustaw końcówki ukończenia misji i opcjonalnie odblokuj lub nie powiodą się końcówki.Użyj kompletora, aby przyznać nagrody z misji w swoim doświadczeniu.
Przeczytaj READMElocal function completeHandler(player: Player, missionId: Types.MissionId)print(`{player} completed mission {missionId}`)-- Nagradzaj graczy ich nagrodami.endMissions.setCompletionHandler(missionId, completeHandler)Odblokuj misje, które nie są odblokowane automatycznie.Logika pakietu funkcji Misje zapewnia, że wszystkie wymagania misji zostaną spełnione przed ukończeniem misji i jej nagrody będą przedmiot kolekcjonerski.
Przeczytaj READMEMissions.unlockMission(player, "Manual")
Konfiguruj stałe
Stałe dla pakietu funkcji Rdzenia żyją w dwóch miejscach:
Wspólne konstytucje żyją w ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants .
Konstytucje pakietowe, w tym przypadku pakiet funkcji Misje , żyją w ReplicatedStorage.Missions.Configs.Constants .
Ponadto możesz znaleźć struny do tłumaczenia rozdzielone w jednym miejscu: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings .
Dostosuj komponenty interfejsu
Poprzez modyfikowanie obiektów pakietu, takich jak kolory, czcionka i przejrzystość, możesz dostosować wizualną prezentację interfejsu użytkownika misji.Na przykład, w ReplicatedStorage.Missions.Configs.Constants możesz włączyć SingleTaskMode wyświetlanie paska postępu dla zadania bezpośrednio na misji dla misji, które mają tylko jedno zadanie.
Ponadto, jeśli twoje doświadczenie ma już istniejący interfejs, z którym chcesz się zintegrować z pakietem funkcji Misje, klient zawiera wszystkie funkcje niezbędne do uzyskania informacji o misjach gracza wysyłanych z serwera.