體驗配置

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

體驗配置 讓您在不重新啟動伺服器的情況下即時更新遊戲內的值:

  • 開啟或關閉功能,例如啟用或禁用新的入門地牢。
  • 調整遊戲內的值,如首領生命值、經驗獲得或物品價格。
  • 發佈定時內容,例如在午夜開始的萬聖節活動。
  • 給不同的玩家不同的值,例如給新玩家額外的盔甲。

配置的形式是鍵和值。您可以使用鍵來獲取值(字符串、數字、布林值或 JSON 對象),而不是在代碼中使用硬編碼的常量,然後在不發佈新版本的情況下隨時更新該值。所需的代碼更改非常少:

local ConfigService = game:GetService("ConfigService")
local configSnapshot = ConfigService:GetConfigAsync()
local myValue = configSnapshot:GetValue("my_key_name")

您可以在任何時候擁有最多 1,000 個活動配置,並可以在創作者中心或 Roblox Studio 中管理它們。

創作者中心配置頁面的概覽

創建和編輯配置

  1. 在您的體驗的 創作者中心 配置 頁面上,點擊 創建配置

  2. 指定一個鍵、一種類型、一個值,並可選擇性地添加描述,以幫助您或您的團隊稍後識別配置的目的。支持的類型有字符串、數字、布林值和 JSON 對象。點擊 下一步

  3. (可選)添加目標條件和值。條件讓您可以將配置值應用於符合(或不符合)某些標準的用戶,例如從未玩過您的遊戲的用戶或講葡萄牙語的用戶。要了解更多,請參見 將配置目標設置為特定玩家

  4. 將生成的代碼片段複製到您的體驗中的伺服器腳本中,可能在 ServerScriptService 中。對於不因玩家而異的“全局”配置,代碼可能看起來像這樣:

    local ConfigService = game:GetService("ConfigService")
    local configSnapshot = ConfigService:GetConfigAsync()
    local MY_KEY = "my_key" -- 可選,將配置鍵存儲為常量
    local myValue = configSnapshot:GetValue(MY_KEY)

    對於 條件配置實驗,代碼略有不同:

    local ConfigService = game:GetService("ConfigService")
    local Players = game:GetService("Players")
    local MY_KEY = "my_key" -- 可選,將配置鍵存儲為常量
    local function onPlayerAdded(player)
    local playerConfigSnapshot = ConfigService:GetConfigForPlayerAsync(player)
    local myValue = playerConfigSnapshot:GetValue(MY_KEY)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  5. 像使用其他變量一樣使用該值。配置 不會做任何事情,除非您在代碼中使用它們。

有關在腳本中使用配置的更多信息,請參見 將配置添加到您的代碼中

編輯配置與創建配置沒有區別。點擊 編輯 按鈕並根據需要更新值和描述。

限制

配置值按類型具有以下限制。

類型最大大小
字符串100,000 字符
數字±1.7976931348623157e+308, ±2^53 用於精確整數表示
布林值不適用
JSON100,000 字符

發佈配置

創建配置後,它會移至 待定 狀態,以便您可以在其公開可用之前進行測試。待定更改在 Studio 遊玩會話中對您和您的團隊可用,而不對在線體驗中的玩家可用。創作者中心的 配置 頁面顯示所有活動和待定的更改。

顯示未發佈更改的配置頁面
  1. 測試完待定更改後,點擊 立即發佈 以幾乎瞬間發佈給所有玩家(大約在 15 秒到 1 分鐘之間)。如果您更喜歡更長、更逐步的推出期,您也可以選擇 在 15 分鐘內發佈。在某些情況下,客戶端可能需要幾分鐘才能在發佈後反映更改。
  2. (建議)添加描述性發佈消息,指示您更新了什麼。此消息會顯示在 歷史 頁面上,並可以幫助您和您的團隊稍後識別更改的目的。

將配置目標設置為特定玩家

默認情況下,配置向每個人提供相同的值。條件配置 讓您根據玩家屬性(國家、任期、語言、付款狀態等)向不同的玩家提供不同的值。

條件配置有三個部分決定玩家獲得什麼值:

  • 條件規則 定義誰符合。每條規則都是一個邏輯表達式,例如“在前 30 天內的活躍付款者”,用於評估玩家屬性。
  • 規則排序 定義當玩家符合多條規則時如何選擇。Roblox 從上到下評估規則並應用第一個匹配的分支。規則是全局排序的,無論您將條件值添加到單個鍵的順序如何。
  • 條件值 定義符合條件的玩家獲得什麼。對於每個條件,您附加一個值。如果玩家符合該條件內的規則,他們將獲得相關的值;否則,他們將獲得配置的默認值。

支持的屬性

條件配置支持以下屬性。這些屬性與分析儀表板中等效的 過濾器細分 具有相同的定義。

屬性描述
國家玩家所在的地理位置。
語言玩家語言設置。
新玩家與回歸玩家玩家是第一次玩您的體驗還是之前玩過。
來源玩家如何找到您的體驗,例如首頁推薦、搜索或贊助廣告。
玩家首次遊玩時間玩家首次遊玩您的體驗的時間,例如 0-30 天前或 31-90 天前。每日計算。
遊戲內活躍付款者狀態玩家在您的體驗中的付款活動,讓您可以針對不同的付費用戶群體。每日計算。
遊戲內活動狀態玩家最近玩過您的體驗的時間,讓您可以對新玩家、活躍玩家、休眠玩家和重新激活的玩家進行不同的處理。每日計算。
用戶參與度玩家每週玩您的體驗的時間,讓您可以將最活躍的玩家與更休閒的玩家區分開來。每日計算。
平台消費者狀態玩家是否為 Roblox 平台的活躍消費者。每日計算。
平台活動狀態玩家最近在 Roblox 上的遊玩時間,而不僅僅是在您的體驗中。每日計算。

創建條件值

您在創建或編輯配置時添加條件。在 添加目標 步驟中,添加一個條件:

  1. 選擇一個現有條件或點擊 創建一個新的
  2. 添加一個或多個規則。
  3. 設置符合條件的玩家將獲得的值。

例如,為了給在過去 30 天內開始玩的頂級活躍付款者提供更困難的體驗,您可能會增加他們的 dynamicBossHealth 值。

顯示配置條件規則的添加目標步驟

在代碼中訪問目標值

要檢索目標值,使用 ConfigService:GetConfigForPlayerAsync(),它會評估個別玩家的規則和排序。ConfigService:GetConfigAsync() 應用目標,因為它不針對單個玩家。要了解更多,請參見 將配置添加到您的代碼中

最佳實踐和限制

  • 每個條件值必須與配置的默認值的數據類型(布林值、字符串、數字或 JSON)匹配。
  • 每個遊戲最多可以有 100 個條件
  • 每個配置鍵支持最多 20 個條件
  • 在發佈之前驗證規則排序。由於規則是全局排序的,請確認您的評估順序是否正確優先。要查看順序,請點擊 條件 標籤。

在 Studio 中創建和編輯配置

如果您願意,您可以在 Roblox Studio 中創建、編輯、待定和發佈配置。點擊 文件 > 打開配置 以打開小部件。Studio 界面特別方便用於待定和測試新值。

用於處理配置的 Studio 窗口

將配置發佈到另一個體驗

在 Studio 中,您可以將配置發佈到另一個體驗,這將完全覆蓋該體驗的配置。這對於將配置從待定或開發體驗同步到在線體驗特別有用。

  1. 在 Roblox Studio 中,轉到頂部菜單並選擇 文件 > 打開配置

  2. 在配置小部件的 已發佈 標籤中,點擊 ⋮ 圖標並選擇 發佈為

    用於處理配置的 Studio 窗口
  3. 在出現的對話框中,從您擁有編輯權限的組列表中找到並選擇目標體驗。

    將配置發佈到體驗

查看歷史並恢復配置

配置 頁面上,點擊 歷史 以查看過去的更新。每次更新都有更改的時間和日期、誰進行了更改以及發佈消息。

顯示配置值差異的歷史頁面

  • 展開每一行以查看鍵、更改前的值和更改後的值。
  • 使用 搜索鍵 框搜索鍵——僅限鍵,不包括描述或值。

歷史 頁面還允許您將配置恢復到先前的狀態:

  1. 點擊更改旁邊的 恢復 以待定“之前”的值。請注意,恢復配置會丟棄任何現有的待定更改。
  2. 返回 配置 頁面並 發佈配置

將配置添加到您的代碼中

處理配置的主要類是 ConfigService,它獲取您體驗的最新鍵和值。ConfigService 僅對伺服器腳本可用。嘗試從客戶端腳本調用其方法會導致錯誤。

處理配置的第一步是檢索 ConfigSnapshot,即當前時刻所有配置的最新值。有兩種方法可以獲取快照:

  • ConfigService:GetConfigAsync() 用於您希望應用於體驗中所有玩家的全局配置:

    local ConfigService = game:GetService("ConfigService")
    local configSnapshot = ConfigService:GetConfigAsync()
    local bossHealth = configSnapshot:GetValue("bossHealth")
  • ConfigService:GetConfigForPlayerAsync() 獲取特定玩家的配置,以便不同的玩家可以獲得不同的值。將其用於 條件配置實驗

    local ConfigService = game:GetService("ConfigService")
    local Players = game:GetService("Players")
    local function onPlayerAdded(player)
    local playerConfigSnapshot = ConfigService:GetConfigForPlayerAsync(player)
    local bossHealth = playerConfigSnapshot:GetValue("bossHealth")
    end
    Players.PlayerAdded:Connect(onPlayerAdded)

在任何情況下,如果鍵不存在,ConfigSnapshot:GetValue() 將返回 nil。

自動完成

配置集成到腳本編輯器的自動完成中。當您調用 ConfigSnapshot:GetValue() 時,編輯器會建議您的配置鍵名稱,並在您懸停在變量名稱上時顯示每個配置的類型。

如果您的腳本使用 --!strict 模式,則 linter 可以為您檢查並驗證類型。

自動完成也適用於使用複雜嵌套 JSON 類型的配置。

刷新快照

ConfigSnapshots 代表一個時間點,即您請求快照時配置的狀態。為了避免干擾遊戲玩法,對配置的更新 會自動傳播到快照中。例如,在競技射擊遊戲中,您可能只希望在回合之間獲得新的配置值,以便武器屬性不會在比賽中波動。

要手動獲取最新值,使用 ConfigSnapshot:Refresh() 方法。可選地,將函數連接到 ConfigSnapshot.UpdateAvailable 事件以自動刷新:

configSnapshot.UpdateAvailable:Connect(function()
configSnapshot:Refresh()
end)

在您刷新快照後,可以使用 ConfigSnapshot:GetValueChangedSignal() 來監聽特定鍵的更改,以便您可以更新體驗的代碼:

configSnapshot:GetValueChangedSignal("bossHealth"):Connect(function(newHealthValue)
spawnNewBoss(newHealthValue)
end)

錯誤處理

在極少數情況下,當配置無法加載且之前從未加載過時,ConfigService:GetConfigAsync() 會引發錯誤。

如果 ConfigService 在之前加載後失去與 Roblox 伺服器的連接,則 ConfigService:GetConfigAsync() 會返回一個快照,其中包含最新的可用值。這些快照會嘗試重新連接,並在成功加載新更新時觸發 UpdateAvailable 事件。

您如何處理這些不常見的情況取決於您。您可以將調用包裝在 pcall() 中,並在代碼中擁有後備值,顯示玩家錯誤並等待快照重新連接,或其他解決方案。

測試配置

ConfigService 具有內置方法,可在 Studio 和在線伺服器中暫時測試配置更改,而不影響整個體驗。

要設置本地測試值,請從伺服器腳本或通過 開發者控制台 調用 ConfigService:SetTestingValue()。對測試值的更改會觸發配置更新以及 ConfigSnapshot.UpdateAvailable 信號。就像生產更新一樣,您必須刷新現有快照以獲取測試值:

local ConfigService = game:GetService("ConfigService")
ConfigService:SetTestingValue("bossHealth", 200)
local configSnapshot = ConfigService:GetConfigAsync()
local bossHealth = configSnapshot:GetValue("bossHealth") -- 現在是 200!

測試更改適用於當前伺服器的生命週期,並不會傳播到其他伺服器。在 Studio 中,它們適用於當前的遊玩會話,並不會影響在線伺服器。您可以使用 ConfigService:ClearTestingValue() 手動清除測試更改。

©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。