Das Missions-Feature-Paket bietet sofort einsatzbereite Funktionen zur Erstellung von Missionen, die Spieler abschließen können, um Belohnungen zu erhalten und im Spiel voranzukommen. Alle Missionen müssen eine ID, eine Kategorie und eine Liste von Aufgaben haben, die die Spieler abschließen müssen, um die Mission zu beenden. Die Aufgabenliste kann jedoch leer sein, sodass die Belohnungen der Mission sofort beansprucht werden können.
Mit den Anpassungsoptionen des Pakets können Sie alle Missionen personalisieren, um Ihre einzigartigen Gameplay-Anforderungen zu erfüllen, wie zum Beispiel:
- Erstellen von Missionen, die neue Spieler in Ihr Spiel einführen und die D1-Retention verbessern.
- Zielgerichtete D7- und D30-Retention durch Hinzufügen von mittelfristigen bis langfristigen Zielen und einem Gefühl der Progression.
- Steigerung des Engagements, indem die verschiedenen Systeme in Ihrem Spiel hervorgehoben und die Spieler für deren Interaktion belohnt werden.

Paket erhalten
Der Creator Store ist ein Tab des Toolbox, den Sie verwenden können, um alle Assets zu finden, die von Roblox und der Roblox-Community für die Verwendung in Ihren Projekten erstellt wurden, einschließlich Modell-, Bild-, Mesh-, Audio-, Plugin-, Video- und Schriftarten-Assets. Sie können den Creator Store verwenden, um ein oder mehrere Assets direkt in ein offenes Spiel hinzuzufügen, einschließlich Feature-Paketen!
Jedes Feature-Paket benötigt das Core-Feature-Paket, um ordnungsgemäß zu funktionieren. Sobald die Core- und Missions-Feature-Paket-Assets in Ihrem Inventar sind, können Sie sie in jedem Projekt auf der Plattform wiederverwenden.
Um die Pakete von Ihrem Inventar in Ihr Spiel zu bekommen:
Fügen Sie die Core- und Missions-Pakete zu Ihrem Inventar innerhalb von Studio hinzu, indem Sie auf den Link In Inventar hinzufügen in der folgenden Komponentengruppe klicken.
Öffnen Sie im Fenster-Menü oder in der Start-Tab-Toolbar die Toolbox.
Klicken Sie im Toolbox-Fenster auf den Tab Inventar. Die Sortierung Meine Modelle wird angezeigt.

Klicken Sie auf die Kachel Feature-Paket Core und dann auf die Kachel Missions-Feature-Paket. Beide Paketordner werden im Explorer-Fenster angezeigt.
Ziehen Sie die Paketordner in ReplicatedStorage.
Missionen definieren
Jede abschließbare Mission umfasst eine Reihe von Aufgaben, die abgeschlossen werden müssen, um die Mission zu beenden, Konfigurationsoptionen und optionale Anzeige-Metadaten, die alle innerhalb von ReplicatedStorage.Missions.Configs.Missions definiert werden können, mit Typen, die aus dem Types-Skript im selben Ordner exportiert werden.
Erforderliche Felder
Die folgenden Felder sind für jede Mission erforderlich.
| Name | Typ | Beschreibung |
|---|---|---|
| missionId | string | Der Hauptschlüssel der Missions-Tabelle. Alle Missionen werden durch ihre eigene eindeutige Zeichenfolge identifiziert. |
| categoryId | string | Missionen müssen zu einer Kategorie gehören und werden in der Benutzeroberfläche nach Kategorie gruppiert. |
| tasks | table | Eine Liste von Aufgaben, die der Spieler abschließen muss, um die Mission zu beenden. |
Freischaltbedingungen
Standardmäßig werden Missionen automatisch für Spieler freigeschaltet und können genau einmal abgeschlossen werden. Sie können jedoch die folgenden optional Konfigurationsoptionen verwenden, um dieses Verhalten zu ändern.
| Name | Typ | Beschreibung |
|---|---|---|
| prerequisites | table | Eine Liste von anderen missionIds, die abgeschlossen sein müssen, bevor die Mission freigeschaltet werden kann. |
| manualOnly | bool | Deaktiviert das automatische Freischalten der Mission. Stattdessen muss eine Funktion aufgerufen werden, um die Mission freizuschalten. Alle anderen Freischaltbedingungen müssen ebenfalls erfüllt sein. |
| availableAfterUtc | bool | Die Mission kann nicht vor der angegebenen Zeit in UTC freigeschaltet werden. |
| availableBeforeUtc | bool | Die Mission kann nicht nach der angegebenen Zeit in UTC freigeschaltet werden. Wenn sie freigeschaltet, aber nicht vor dieser Zeit abgeschlossen wird, wird die Mission als fehlgeschlagen betrachtet. |
| repeatable | bool | Die Mission wird erneut freigeschaltet, nachdem sie abgeschlossen wurde. |
| repeatLimit | number | Wenn die Mission wiederholbar ist, kann sie nicht mehr als diese Anzahl von Malen wiederholt werden. |
| repeatCooldownSeconds | number | Wenn die Mission wiederholbar ist, gibt es eine Verzögerung, bevor sie erneut freigeschaltet wird. |
| expireSeconds | number | Wenn die Mission freigeschaltet ist und nicht innerhalb der angegebenen Anzahl von Sekunden abgeschlossen wird, wird sie stattdessen fehlschlagen. |
| expireCountOffline | bool | Wenn die Mission expireSeconds hat und expireCountOffline auf true gesetzt ist, zählt die Zeit, während der der Spieler nicht aktiv im Spiel ist, zur Ablaufzeit der Mission. |
Metadaten
Missionen haben Metadaten, die angeben, wie sie in der Benutzeroberfläche der Missionen angezeigt werden. Sie können die folgenden optional Felder verwenden, um deren Metadaten anzupassen.
| Name | Typ | Beschreibung |
|---|---|---|
| displayName | string | Ein Name, der für die Mission in der Benutzeroberfläche anstelle der missionId angezeigt wird. |
| description | string | Ein längerer Textblock, der zusätzliche Informationen oder Kontext zur Mission bereitstellt. |
| visibleAfterComplete | bool | Wenn auf true gesetzt, wird die Mission auch nach Abschluss in der Liste der Missionen angezeigt, jedoch als abgeschlossen markiert. |
| visibleAfterFailed | bool | Wenn auf true gesetzt, wird die Mission auch nach dem Scheitern in der Liste der Missionen angezeigt, jedoch als fehlgeschlagen markiert. |
| visibleBeforeUnlocked | bool | Wenn auf true gesetzt, wird die Mission sichtbar, aber in der Liste der Missionen gesperrt, bevor sie für den Abschluss verfügbar ist. |
| invisibleWhileActive | bool | Wenn auf true gesetzt, wird die Mission selbst während des aktiven Fortschritts unsichtbar sein. |
| rewards | table | Eine Liste von Belohnungsanzeigeinformationen.
|
Aufgaben definieren
Jede Mission kann null oder mehr Aufgaben haben. Wenn eine Mission null Aufgaben hat, kann sie sofort nach der Freischaltung beansprucht werden; wenn eine Mission eine oder mehrere Aufgaben hat, kann der Spieler, sobald die Aufgaben abgeschlossen sind, alle mit der Mission verbundenen Belohnungen sammeln. Jede Aufgabe hat eine taskId, die der Schlüssel ist, der mit der Aufgabe für eine bestimmte Mission verknüpft ist.
Aufgaben kommen in zwei Typen:
- Zeitgesteuerte Aufgaben - Ermöglicht es Ihnen, die Aufgabe zu verschiedenen Zeitpunkten zu starten und zu stoppen. Eine bestimmte Zeitspanne muss vergehen, während der Timer der Aufgabe läuft, dann ist die Aufgabe abgeschlossen.
- Zählaufgaben - Ermöglicht es Ihnen, den Fortschritt der Aufgabe zu erhöhen oder festzulegen. Wenn der Fortschritt einen festgelegten Wert erreicht, ist die Aufgabe abgeschlossen.
Beide Aufgabentypen teilen sich die folgenden Felder:
| Name | Typ | Beschreibung |
|---|---|---|
| taskType | string | Gibt an, ob der Aufgabentyp Zähl- oder Zeitgesteuert ist. |
| counter | object | (Optional) Der Zähler, den diese Aufgabe verfolgt. Zähler sind spielerspezifische persistente Speicher für eine Zahl oder einen Timer. Mehrere Aufgaben können einen einzelnen Zähler verfolgen; zum Beispiel, wenn mehr als eine Aufgabe verfolgt, wie viele Münzen ein Spieler gesammelt hat, können sie alle denselben „Münzen“-Zähler teilen. Diese Aufgaben können unabhängig neue gesammelte Münzen verfolgen, beginnend bei null, oder vom Zählerwert (alle bereits gesammelten Münzen) weiter zählen.
|
| metadata | object | (Optional) Informationen darüber, wie die Aufgabe in der Benutzeroberfläche angezeigt wird.
|
| callToAction | object | (Optional) Eine Schaltfläche, die eine Callback-Funktion auslöst.
|
Felder für Zählaufgaben
Zählaufgaben haben einen erforderlichen Wert. Wenn der Fortschritt der Aufgabe diesen Betrag erreicht, ist die Aufgabe abgeschlossen.
| Name | Typ | Beschreibung |
|---|---|---|
| goalCount | number | (Optional) Der Fortschritt, der erforderlich ist, um die Aufgabe abzuschließen. |
Felder für Zeitaufgaben
Zeitaufgaben haben eine Zielzeit, die verbracht werden muss, und werden gestartet und gestoppt. Wenn die Zielzeit erreicht ist, ist die Aufgabe abgeschlossen.
| Name | Typ | Beschreibung |
|---|---|---|
| goalSeconds | number | Die Anzahl der Sekunden, die vergehen müssen, um die Aufgabe abzuschließen. |
| startImmediately | bool | Ob die Aufgabe die Zeit sofort zählen soll, sobald sie freigeschaltet wird, anstatt nur, nachdem sie gestartet wurde. |
| includesOfflineTime | bool | Ob die Aufgabe die Zeit einbeziehen soll, die der Spieler nicht aktiv im Spiel ist. |
Kategorien konfigurieren
Kategorien müssen nicht ausdrücklich definiert werden, um verwendet zu werden, da die Kategorie für eine Mission Standardwerte hat, die verwendet werden. Sie können jedoch diese Werte in ReplicatedStorage.Missions.Configs.Categories konfigurieren, um zusätzliche Effekte zur Kategorie hinzuzufügen. Kategorien werden durch eindeutige CategoryIds identifiziert, die dieselben sind, die in der Missionskonfiguration referenziert werden.
| Name | Typ | Beschreibung |
|---|---|---|
| repeatDelaySeconds | number | (Optional) Wenn gesetzt, werden alle Missionen in der Kategorie jedes Mal zurückgesetzt, wenn die angegebene Zeitspanne vergeht, und können erneut freigeschaltet, abgeschlossen und ihre Belohnungen erneut beansprucht werden. Dies ist unabhängig von wiederholbaren Missionen, die innerhalb einer bestimmten Kategorie wiederholt werden können. |
Serverlogik integrieren
Werfen Sie einen Blick auf ReplicatedStorage.Missions.Server.Examples.MissionsExample, das zeigt, wie Ihr Server mit dem Missions-Feature-Paket interagiert.
Sie müssen hauptsächlich vier Dinge anschließen, nachdem Sie das Missions-Feature-Paket in Ihr Spiel gezogen haben:
Definieren Sie Missionen in Ihrer Missionskonfiguration.
Fügen Sie Logik zu Ihrem Spiel hinzu, um den Fortschritt der Aufgaben oder die Zähler, an die der Fortschritt gebunden ist, zu aktualisieren.
README-- Erhöht den Fortschritt einer Mission Jumping mit einer Jumps-AufgabeMissions.addProgressToTask(player, "Jumping", "Jumps", 1)-- Startet den Timer für eine Mission BattlingTime mit einer TimeInBattle-AufgabeMissions.startTimedTask(player, "BattlingTime", "TimeInBattle")-- Stoppt den Timer für eine Mission BattlingTime mit einer TimeInBattle-AufgabeMissions.stopTimedTask(player, "BattlingTime", "TimeInBattle")-- Erhöht den Fortschritt aller Aufgaben, die an den Jumps-Zähler gebunden sindCounterSystem.addCounter(player, "Jumps", 1)-- Startet den Timer für alle zeitgesteuerten Aufgaben, die an den TimeInBattle-Timer-Zähler gebunden sindCounterSystem.startTimer(player, "TimeInBattle")-- Stoppt den Timer für alle zeitgesteuerten Aufgaben, die an den TimeInBattle-Timer-Zähler gebunden sindCounterSystem.stopTimer(player, "TimeInBattle")Setzen Sie Handler für den Abschluss von Missionen und optional Handler für das Freischalten oder Scheitern. Verwenden Sie den Abschluss-Handler, um die Belohnungen aus der Mission in Ihrem Spiel zu vergeben.
READMElocal function completeHandler(player: Player, missionId: Types.MissionId)print(`{player} hat die Mission {missionId} abgeschlossen`)-- Belohnen Sie den Spieler mit seinen Belohnungen.endMissions.setCompletionHandler(missionId, completeHandler)Schalten Sie Missionen frei, die nicht automatisch freigeschaltet werden. Die Logik des Missions-Feature-Pakets stellt sicher, dass alle Anforderungen der Mission erfüllt sind, bevor die Mission abgeschlossen ist und ihre Belohnungen gesammelt werden können.
READMEMissions.unlockMission(player, "Manual")
Konstanten konfigurieren
Konstanten für das Core-Feature-Paket befinden sich an zwei Stellen:
Gemeinsame Konstanten befinden sich in ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants.
Paket-spezifische Konstanten, in diesem Fall das Missions-Feature-Paket, befinden sich in ReplicatedStorage.Missions.Configs.Constants.
Zusätzlich finden Sie Strings für die Übersetzung an einem Ort aufgeteilt: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.
UI-Komponenten anpassen
Durch die Modifizierung der Paketobjekte, wie Farben, Schriftarten und Transparenz, können Sie die visuelle Präsentation Ihrer Missionsbenutzeroberfläche anpassen. Zum Beispiel können Sie in ReplicatedStorage.Missions.Configs.Constants SingleTaskMode aktivieren, um eine Fortschrittsanzeige für eine Aufgabe direkt auf der Mission selbst anzuzeigen, für Missionen, die nur eine einzige Aufgabe haben.
Darüber hinaus, wenn Ihr Spiel bereits eine vorhandene Benutzeroberfläche hat, die Sie mit dem Missions-Feature-Paket integrieren möchten, enthält das Client ModuleScript MissionsClient alle Funktionen, die erforderlich sind, um die Informationen über die Missionen eines Spielers vom Server zu erhalten.