任務包

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

任務功能包提供盒外功能,讓玩家完成任務以在您的體驗中獲得獎勵和進步。所有任務必須擁有ID、類別和玩家必須完成的任務清單,才能完成任務。然而,任務清單可以為空,允許立即領取任務的獎勵。

使用包裝的自訂選項,您可以個人化所有任務,以滿足您獨特的遊戲需求,例如:

  • 創建任務,將 新玩家 帶入您的體驗並改善 D1 保留率
  • 透過新增中期到長期目標和進度感來達到 D7 和 D30 保留率 的目標。
  • 增加參與,透過顯示遊戲中的各種系統,並獎勵玩家與它們互動。

取得包裹

創作者商店是您可以使用的工具箱標籤,包括模型、圖像、網格、音訊頻、外掛程式、視頻和字體資產,是 Roblox 和 Roblox 社群為您的項目所製作的所有資產。您可以使用創作者商店直接將一個或多個資產添加到開放的體驗中,包括功能包!

每個功能包都需要 核心 功能包正常運作。一旦 核心任務 功能包資產進入您的道具欄後,您可以在平台上的任何項目上重複使用它們。

要將庫存的包裹帶入您的體驗:

  1. 在工具欄中,選擇查看標籤。

  2. 點擊 工具箱。工具箱窗口顯示。

    Studio's View tab with the Toolbox tool highlighted.
  3. 工具箱 窗口中,單擊 庫存 標籤。顯示 我的模型 排序。

    Studio's Toolbox window with the Inventory tab highlighted.
  4. 點擊 功能包核心 磚塊,然後點擊 任務功能包 磚塊。兩個包夾都會顯示在 資料檢視器 視窗中。

  5. 將包裹文件夾拖入 ReplicatedStorage

定義任務

每個完成任務包括完成任務、配置選項和可選顯示元數據的一組任務,所有這些都可以在 ReplicatedStorage.Missions.Configs.Missions 內定義,其中類型從 Types 腳本中匯出到同一文件夾中。

必填欄位

每個任務都需要下列欄位。

名稱類型說明
missionIdstring主要任務表鑰鍵。所有任務都由自己獨特的字串標識。
categoryIdstring任務必須屬於類別,並在介面上依類別群組。
taskstable玩家必須完成任務的一個清單。

解鎖條件

預設情況下,任務會自動為玩家解鎖,且只能完成一次。然而,您可以使用以下 可選 配置選項來變更此行為。

名稱類型說明
prerequisitestable一個列表其他必須完成的任務ID才能解鎖任務的列表。
manualOnlybool停用任務的自動解鎖。相反,必須呼叫一個函數來解鎖任務。其他所有解鎖條件也必須遵守。
availableAfterUtcbool任務無法在 UTC 指定時間之前解鎖。
availableBeforeUtcbool任務在指定的 UTC 時間後無法解鎖。如果在此時間前解鎖但未完成,任務將失敗。
repeatablebool任務在完成後再次解鎖。
repeatLimitnumber如果任務可重複,它不能重複超過這麼多次。
repeatCooldownSecondsnumber如果任務可重複,在它被解鎖之前會有一個延遲。
expireSecondsnumber如果任務被解鎖但未在指定的秒數內完成,則會失敗。
expireCountOfflinebool如果任務有 expireSecondsexpireCountOffline 設為真實,玩家實際上不在體驗中時的時間將計入任務到期時間。

元資料

任務具有說明如何在任務使用者介面中顯示的元數據。您可以使用以下 可選 欄位來自訂其 metadata。

名稱類型說明
displayNamestring在使用者介面顯示任務的名稱,而不是 missionId
descriptionstring一個更長的文字塊,提供額外資訊或關於任務的上下文。
visibleAfterCompletebool如果設為真實,任務將在完成但標為已完成後仍出現在任務列表中。
visibleAfterFailedbool如果設為真實,任務在失敗但標為失敗後仍會出現在任務列表中。
visibleBeforeUnlockedbool如果設為真實,任務將會顯示,但在完成前會被列入任務清單。
invisibleWhileActivebool如果設為真實,任務即使在進行中也會隱形。
rewardstable獎勵顯示資訊的列表。
  • assetIDnumber )- 任務獎勵下顯示的圖像ID。如果獎勵存在,這是必需的。
  • displayNamestring)- 在圖示下顯示在任務介面的名稱。

定義任務

每個任務可以有零或更多的任務。如果任務沒有任務,它可以立即解鎖;如果任務有一個或多個任務,完成任務後,玩家可以收集與任務相關的任何獎勵。每個任務都有 taskId ,這是與給定任務相關的任務的關鍵。

任務有兩種類型:

  • 定時任務 - 讓您在不同時間點開始和停止任務。任務的計時器運行時必須經過一定的時間,任務才完成。
  • 計數任務 - 讓您增加或設置任務的進度。當進度達到設定值時,任務完成。

兩種任務類型都共享以下欄位:

名稱類型說明
taskTypestring指定任務類型是否為計數或定時。
counterobject(可選)此任務的計數器。計數器是玩家特定的永久存儲,用於數字或計時器。多個任務可以跟蹤單一計數器;例如,如果多於一個任務跟蹤玩家收集了多少枚硬幣,那麼他們都可以共享相同的「硬幣」計數器。這些任務可獨立地跟蹤收集到的新硬幣,從零開始或繼續從計數器值(所有已收集的硬幣)計數。
  • counterIdstring)- 要跟蹤的計數器ID。使用此ID來獲得或設置計數器的值。
  • continueFromCounter (可選擇 bool)- 如果設為真實,任務進度將直接與計數器的值匹配,而不是增加的數量。
metadataobject(可選) 關於任務在介面上顯示的資訊。
  • displayNamestring)- 任務名稱,用於在介面中顯示時使用。
  • numericType (可選擇 string)—任務中進度數字的顯示方式。
    • 分數,例如5/10 或 5k/50k
    • 百分比,例如50% 或 10%
    • 長分數,例如5/10 或 5000/50000
    • 布林式,例如不完整
    • >
callToActionobject(可選) 一個按鈕,會觸發回稱功能。
  • callbackfunction )- 由 callToAction 按鈕觸發的功能。
  • buttonTextstring)- 按鈕介面顯示的文字。

計數任務欄位

計數任務有一個必須值。當任務進度達到此數量時,任務完成。

名稱類型說明
goalCountnumber(可選) 完成任務所需的進度。

時間任務字段

時間任務有一個預定使用時間,並且開始和停止。當達到預定使用時間時,任務完成。

名稱類型說明
goalSecondsnumber完成任務所需的秒數。
startImmediatelybool如果任務必須在解鎖後立即開始計時,而不是在開始後才開始計時。
includesOfflineTimebool如果任務應包括玩家在體驗中未主動進行時所花費的時間。

配置類別

類別不需要明確定義即可使用,因為任務的類別具有預設值,將被使用。然而,您可以在 ReplicatedStorage.Missions.Configs.Categories 中配置這些值,以將額外效果添加到類別。類別由獨特的CategoryIds識別,與任務配置中引用的相同。

名稱類型說明
repeatDelaySecondsnumber(可選) 如果設定,類別中的所有任務每當通過指定的時間量時都會重置,並可能再次解鎖、完成和領取獎勵。這與可重複的任務不同,可在給定的類別中重複。

整合伺服器邏輯

看看 ReplicatedStorage.Missions.Server.Examples.MissionsExample , 它顯示您的伺服器如何與 任務包 互動。

您主要需要將四個東西連接起來一次將 任務 功能包包裝到您的體驗中:

  1. 在任務配置中定義任務。

  2. 為您的體驗添加邏輯以更新任務進度或與進度相關的計數器。

    閱讀說明

    -- 使用跳躍任務在任務上增加進度跳躍
    Missions.addProgressToTask(player, "Jumping", "Jumps", 1)
    -- 在戰鬥時間任務上啟動計時器,使用 TimeInBattle 任務
    Missions.startTimedTask(player, "BattlingTime", "TimeInBattle")
    -- 停止計時器在戰鬥時間任務上的計時器以執行 TimeInBattle 任務
    Missions.stopTimedTask(player, "BattlingTime", "TimeInBattle")
    -- 提高與跳躍計數器相關的所有任務的進度
    CounterSystem.addCounter(player, "Jumps", 1)
    -- 啟動與戰鬥時間計時器相關的所有定時任務的計時器計數器
    CounterSystem.startTimer(player, "TimeInBattle")
    -- 停止所有定時任務,這些任務與戰鬥時間計數器相關
    CounterSystem.stopTimer(player, "TimeInBattle")
  3. 設定任務完成處理程式,並可選擇解鎖或失敗處理程式。使用完成處理器來從體驗中的任務中授予獎勵。

    閱讀說明

    local function completeHandler(player: Player, missionId: Types.MissionId)
    print(`{player} completed mission {missionId}`)
    -- 授予玩家獎勵。
    end
    Missions.setCompletionHandler(missionId, completeHandler)
  4. 解鎖不自動解鎖的任務。 任務 功能包逻辑確保任務完成前所有任務要求都被滿足,並且任務獎勵是可收集的。

    閱讀說明

    Missions.unlockMission(player, "Manual")

配置常量

核心 功能包的常量在兩個地方生活:

  • 共用常量生活在 ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants

  • 包裝特定常數,在這個例子中, 任務 功能包包住在 ReplicatedStorage.Missions.Configs.Constants

此外,您可以在一個位置找到翻譯的字串:ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings

自訂介面元件

修改包裝對象,例如顏色、字體和透明度,可調整任務介面的視覺呈現。例如,在 ReplicatedStorage.Missions.Configs.Constants 中,您可以啟用 SingleTaskMode 以直接在任務上顯示進度條對於只有一個任務的任務。

此外,如果您的體驗已經有一個現有的用戶介面,您想與 任務 功能包一起整合,客戶端 包含從服務伺服器傳送玩家任務的資訊所需的所有功能。