Pakiet funkcji Misje oferuje gotową funkcjonalność do tworzenia misji, które gracze mogą ukończyć, aby zdobyć nagrody i postępować w swojej grze. Wszystkie misje muszą mieć identyfikator, kategorię i listę zadań, które gracze muszą wykonać, aby zakończyć misję. Jednak lista zadań może być pusta, co pozwala na natychmiastowe odebranie nagród za misję.
Korzystając z opcji dostosowywania pakietu, możesz spersonalizować wszystkie misje, aby spełniały Twoje unikalne wymagania dotyczące rozgrywki, takie jak:
- Tworzenie misji, które wprowadzają nowych graczy do Twojej gry i poprawiają retencję D1.
- Celowanie w retencję D7 i D30 poprzez dodawanie celów średnio- i długoterminowych oraz poczucia postępu.
- Zwiększanie zaangażowania poprzez ujawnianie różnych systemów w Twojej grze i nagradzanie graczy za interakcję z nimi.

Pobierz pakiet
Sklep Twórcy to zakładka w Narzędziu, której możesz użyć do znalezienia wszystkich zasobów stworzonych przez Roblox i społeczność Roblox do wykorzystania w Twoich projektach, w tym modele, obrazy, siatki, dźwięki, wtyczki, filmy i czcionki. Możesz użyć Sklepu Twórcy, aby dodać jeden lub więcej zasobów bezpośrednio do otwartej gry, w tym pakiety funkcji!
Każdy pakiet funkcji wymaga pakietu funkcji Core, aby działał poprawnie. Gdy zasoby pakietu Core i Misje znajdują się w Twoim inwentarzu, możesz je ponownie wykorzystać w dowolnym projekcie na platformie.
Aby przenieść pakiety z inwentarza do gry:
Dodaj Core i Misje do swojego inwentarza w Studio, klikając link Dodaj do inwentarza w następującym zestawie komponentów.
Z menu Okno w Studio lub z paska narzędzi zakładki Strona główna, otwórz Narzędzie.
W oknie Narzędzie kliknij zakładkę Inwentarz. Wyświetli się sortowanie Moje modele.

Kliknij kafelek Pakiet funkcji Core, a następnie kafelek Pakiet funkcji Misje. Oba foldery pakietów wyświetlą się w oknie Eksplorator.
Przeciągnij foldery pakietów do ReplicatedStorage.
Zdefiniuj misje
Każda misja do ukończenia zawiera zestaw zadań, które muszą być zakończone, aby ukończyć misję, opcje konfiguracyjne oraz opcjonalne metadane wyświetlania, które można zdefiniować w ReplicatedStorage.Missions.Configs.Missions, z typami eksportowanymi z skryptu Types w tym samym folderze.
Wymagane pola
Poniższe pola są wymagane dla każdej misji.
| Nazwa | Typ | Opis |
|---|---|---|
| missionId | string | Główny klucz tabeli Misji. Wszystkie misje są identyfikowane przez swój unikalny ciąg. |
| categoryId | string | Misje muszą należeć do kategorii i są grupowane według kategorii w interfejsie użytkownika. |
| tasks | table | Lista zadań, które gracz musi ukończyć, aby zakończyć misję. |
Warunki odblokowania
Domyślnie misje są automatycznie odblokowywane dla graczy i mogą być ukończone dokładnie raz. Możesz jednak użyć następujących opcjonalnych opcji konfiguracyjnych, aby zmienić to zachowanie.
| Nazwa | Typ | Opis |
|---|---|---|
| prerequisites | table | Lista innych missionIds, które muszą być ukończone, zanim misja może zostać odblokowana. |
| manualOnly | bool | Wyłącza automatyczne odblokowywanie misji. Zamiast tego, musi być wywołana funkcja, aby odblokować misję. Muszą być również spełnione wszelkie inne warunki odblokowania. |
| availableAfterUtc | bool | Misja nie może być odblokowana przed określonym czasem w UTC. |
| availableBeforeUtc | bool | Misja nie może być odblokowana po określonym czasie w UTC. Jeśli zostanie odblokowana, ale nie ukończona przed tym czasem, misja zostanie niepowodzeniem. |
| repeatable | bool | Misja zostaje odblokowana ponownie po jej ukończeniu. |
| repeatLimit | number | Jeśli misja jest powtarzalna, nie może być powtarzana więcej niż określoną liczbę razy. |
| repeatCooldownSeconds | number | Jeśli misja jest powtarzalna, istnieje opóźnienie przed jej odblokowaniem. |
| expireSeconds | number | Jeśli misja jest odblokowana i nie ukończona w określonej liczbie sekund, to zakończy się niepowodzeniem. |
| expireCountOffline | bool | Jeśli misja ma expireSeconds i expireCountOffline jest ustawione na true, czas, gdy gracz nie jest faktycznie w grze, będzie się liczył do wygaśnięcia misji. |
Metadane
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ć ich metadane.
| Nazwa | Typ | Opis |
|---|---|---|
| displayName | string | Nazwa do wyświetlenia dla misji w interfejsie użytkownika zamiast missionId. |
| description | string | Większy blok tekstu, który dostarcza dodatkowych informacji lub kontekstu na temat misji. |
| visibleAfterComplete | bool | Jeśli ustawione na true, misja będzie widoczna na liście misji nawet po jej ukończeniu, ale oznaczona jako ukończona. |
| visibleAfterFailed | bool | Jeśli ustawione na true, misja będzie widoczna na liście misji nawet po jej niepowodzeniu, ale oznaczona jako nieudana. |
| visibleBeforeUnlocked | bool | Jeśli ustawione na true, misja będzie widoczna, ale zablokowana na liście misji przed jej dostępnością do ukończenia. |
| invisibleWhileActive | bool | Jeśli ustawione na true, misja będzie niewidoczna nawet podczas aktywnego postępu. |
| rewards | table | Lista informacji o wyświetlaniu nagród.
|
Zdefiniuj zadania
Każda misja może mieć zero lub więcej zadań. Jeśli misja ma zero zadań, można ją odebrać natychmiast po odblokowaniu; jeśli misja ma jedno lub więcej zadań, po ich ukończeniu gracz może odebrać wszelkie nagrody związane z misją. Każde zadanie ma taskId, który jest kluczem związanym z zadaniem dla danej misji.
Zadania występują w dwóch typach:
- Zadania czasowe - Pozwalają na rozpoczęcie i zatrzymanie zadania w różnych momentach czasowych. Musi upłynąć określona ilość czasu, podczas gdy zegar zadania działa, a następnie zadanie jest ukończone.
- Zadania liczbowe - Pozwalają na dodawanie lub ustawianie postępu zadania. Gdy postęp osiągnie ustaloną wartość, zadanie jest ukończone.
Oba typy zadań mają następujące pola:
| Nazwa | Typ | Opis |
|---|---|---|
| taskType | string | Określa, czy typ zadania to liczba czy czas. |
| counter | object | (Opcjonalne) Licznik, który to zadanie śledzi. Liczniki to specyficzne dla gracza trwałe przechowywanie dla liczby lub timera. Wiele zadań może śledzić jeden licznik; na przykład, jeśli więcej niż jedno zadanie śledzi, ile monet gracz zebrał, to wszystkie mogą dzielić ten sam licznik „monet”. Te zadania mogą niezależnie śledzić nowe zebrane monety, zaczynając od zera, lub kontynuować liczenie od wartości licznika (wszystkie już zebrane monety).
|
| metadata | object | (Opcjonalne) Informacje o tym, jak zadanie wyświetla się w interfejsie użytkownika.
|
| callToAction | object | (Opcjonalne) Przycisk, który wywołuje funkcję zwrotną.
|
Pola zadań liczbowych
Zadania liczbowe mają wymaganą wartość. Gdy postęp zadania osiągnie tę wartość, zadanie jest ukończone.
| Nazwa | Typ | Opis |
|---|---|---|
| goalCount | number | (Opcjonalne) Postęp wymagany do ukończenia zadania. |
Pola zadań czasowych
Zadania czasowe mają docelową ilość czasu spędzonego, a także są uruchamiane i zatrzymywane. Gdy docelowa ilość czasu zostanie osiągnięta, zadanie jest ukoń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, gdy tylko zostanie odblokowane, a nie tylko po jego rozpoczęciu. |
| includesOfflineTime | bool | Jeśli zadanie powinno uwzględniać czas spędzony, gdy gracz nie jest aktywnie w grze. |
Skonfiguruj kategorie
Kategorie nie muszą być wyraźnie definiowane, aby mogły być używane, ponieważ kategoria dla misji ma domyślne wartości, które będą używane. Możesz jednak skonfigurować te wartości w ReplicatedStorage.Missions.Configs.Categories, aby dodać dodatkowe efekty do kategorii. Kategorie są identyfikowane przez unikalne CategoryIds, te same, które są odniesione w konfiguracji misji.
| Nazwa | Typ | Opis |
|---|---|---|
| repeatDelaySeconds | number | (Opcjonalne) Jeśli ustawione, wszystkie misje w kategorii są resetowane za każdym razem, gdy upłynie określona ilość czasu, i mogą być odblokowywane, ukończane, a ich nagrody ponownie odbierane. To jest oddzielne od misji powtarzalnych, które są powtarzalne w danej kategorii powtórzeń. |
Zintegruj logikę serwera
Zobacz ReplicatedStorage.Missions.Server.Examples.MissionsExample, który pokazuje, jak Twój serwer będzie współdziałał z pakietem funkcji Misje.
Musisz głównie podłączyć cztery rzeczy po przeciągnięciu pakietu funkcji Misje do swojej gry:
Zdefiniuj misje w swojej konfiguracji misji.
Dodaj logikę do swojej gry, aby zaktualizować postęp zadań lub liczniki, do których postęp jest powiązany.
README-- Zwiększa postęp w misji Skakanie z zadaniem SkokiMissions.addProgressToTask(player, "Skakanie", "Skoki", 1)-- Rozpoczyna zegar w misji CzasWalka z zadaniem CzasWBitwieMissions.startTimedTask(player, "CzasWalka", "CzasWBitwie")-- Zatrzymuje zegar w misji CzasWalka z zadaniem CzasWBitwieMissions.stopTimedTask(player, "CzasWalka", "CzasWBitwie")-- Zwiększa postęp we wszystkich zadaniach powiązanych z licznikiem SkokiCounterSystem.addCounter(player, "Skoki", 1)-- Rozpoczyna zegar we wszystkich zadaniach czasowych powiązanych z licznikiem CzasWBitwieCounterSystem.startTimer(player, "CzasWBitwie")-- Zatrzymuje zegar we wszystkich zadaniach czasowych powiązanych z licznikiem CzasWBitwieCounterSystem.stopTimer(player, "CzasWBitwie")Ustaw obsługiwacze ukończenia misji, a opcjonalnie obsługiwacze odblokowania lub niepowodzenia. Użyj obsługiwacza ukończenia, aby nagrodzić nagrody z misji w swojej grze.
READMElocal function completeHandler(player: Player, missionId: Types.MissionId)print(`{player} ukończył misję {missionId}`)-- Nagradzaj gracza jego nagrodami.endMissions.setCompletionHandler(missionId, completeHandler)Odblokuj misje, które nie są odblokowywane automatycznie. Logika pakietu funkcji Misje zapewnia, że wszystkie wymagania misji są spełnione przed ukończeniem misji, a jej nagrody są do odebrania.
READMEMissions.unlockMission(player, "Ręczne")
Skonfiguruj stałe
Stałe dla pakietu funkcji Core znajdują się w dwóch miejscach:
Wspólne stałe znajdują się w ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants.
Stałe specyficzne dla pakietu, w tym przypadku pakietu funkcji Misje, znajdują się w ReplicatedStorage.Missions.Configs.Constants.
Dodatkowo możesz znaleźć ciągi do tłumaczenia rozdzielone w jednym miejscu: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.
Dostosuj komponenty UI
Poprzez modyfikację obiektów pakietu, takich jak kolory, czcionka i przezroczystość, możesz dostosować wizualną prezentację interfejsu użytkownika misji. Na przykład w ReplicatedStorage.Missions.Configs.Constants możesz włączyć SingleTaskMode, aby wyświetlić pasek postępu dla zadania bezpośrednio na misji dla misji, które mają tylko jedno zadanie.
Dodatkowo, jeśli Twoja gra już ma istniejący interfejs użytkownika, który chciałbyś zintegrować z pakietem funkcji Misje, klient ModuleScript MissionsClient zawiera wszystkie funkcje niezbędne do przesyłania informacji o misjach gracza z serwera.