経験の構成を使用すると、サーバーを再起動することなくリアルタイムでゲーム内の値を更新できます:
- 新しいオンボーディングダンジョンを有効または無効にするなどの機能のオン/オフを切り替えます。
- ボスの健康、経験値の獲得、アイテムの価格などのゲーム内の値を調整します。
- 真夜中に始まるハロウィンイベントなどのタイムドコンテンツを開始します。
構成はキーと値の形を取ります。コード内でハードコーディングされた定数を使用する代わりに、キーを使用して値(文字列、数値、真偽値、またはJSONオブジェクト)を取得し、その値をいつでも更新できるため、経験の新しいバージョンを公開する必要がありません。必要なコードの変更は最小限です:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local myValue = configSnapshot:GetValue("my_key_name")
現在、最大1,000のアクティブな構成を持つことができ、Creator HubまたはRoblox Studioでそれらを管理できます。

構成の作成と編集
あなたの経験のCreator Hubの構成ページで、構成の作成をクリックします。
キー、タイプ、値を指定し、オプションで構成の目的を後で特定するための説明を追加します。サポートされているタイプは、文字列、数値、真偽値、JSONオブジェクトです。
生成されたコードスニペットをあなたの経験のサーバースクリプトにコピーします。これはおそらくServerScriptServiceにあります。コードは以下のようになります:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local MY_KEY = "my_key" -- オプション、構成キーを定数として保存local myValue = configSnapshot:GetValue(MY_KEY)他の変数と同様に、その値を使用します。構成は、コード内で使用しない限り無効です。
スクリプト内で構成を操作する方法の詳細については、コードに構成を追加するを参照してください。
構成の編集は、作成と何も変わりません。編集ボタンをクリックして、必要に応じて値と説明を更新します。
制限
構成値はタイプ別に以下の制限があります。
| タイプ | 最大サイズ |
|---|---|
| 文字列 | 100,000文字 |
| 数値 | ±1.7976931348623157e+308、±2^53で正確な整数表現 |
| 真偽値 | 該当なし |
| JSON | 100,000文字 |
構成の公開
構成を作成すると、その構成はステージングされた状態に移動し、公開される前にテストできます。ステージングされた変更は、Studioのプレイセッション内であなたとチームが利用でき、ライブ体験のプレイヤーには表示されません。Creator Hubの構成ページには、すべてのアクティブおよびステージングされた変更が表示されます。

- ステージングされた変更をテストした後、今すぐ公開をクリックして、すべてのプレイヤーに5分以内に公開します。長い展開期間を希望する場合は、15分間で公開を選択することもできます。
- (推奨) 更新内容を示す記述的な公開メッセージを追加します。このメッセージは履歴ページに表示され、後で変更の目的を特定するのに役立ちます。
Studioでの構成の作成と編集
お好みであれば、Roblox Studioで構成を作成、編集、ステージング、公開できます。ファイル > 構成を開くをクリックします。Studioのインターフェイスは、新しい値のステージングとテストに特に便利です。

履歴を表示し、構成を復元
構成ページで履歴をクリックすると、過去の更新を確認できます。各更新には、変更の日時、変更を行った人、公開メッセージが含まれています。

- 各行を展開して、キー、変更前の値、変更後の値を確認します。
- キーを検索ボックスを使用して、キーを検索します - 説明や値ではなく、キーのみを検索します。
履歴ページでは、構成を以前の状態に復元することもできます:
- 変更の隣にある復元をクリックして、「以前の」値をステージングします。構成を復元すると、既存のステージングされた変更は破棄されることに注意してください。
- 構成ページに戻り、構成を公開します。
コードに構成を追加
構成を操作するための主なクラスはConfigServiceであり、あなたの経験の最新のキーと値を取得します。ConfigServiceはサーバースクリプト専用です。クライアントスクリプトからそのメソッドを呼び出そうとするとエラーが発生します。
構成を使用する最初のステップは、ConfigSnapshotを取得することです。これは、現在の時点でのすべての構成の最新の値です。スナップショットを取得する方法は2つあります:
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")endPlayers.PlayerAdded:Connect(onPlayerAdded)
いずれの場合でも、キーが存在しない場合、ConfigSnapshot:GetValue()はnilを返します。
スナップショットの更新
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には、スタジオおよびライブサーバーでの構成変更を一時的にテストするための組み込みメソッドがあります。これは、全体の経験に影響を与えることなく行えます。
ローカルテスト値を設定するには、サーバースクリプトまたは開発者コンソールからConfigService:SetTestingValue()を呼び出します。テスト値の変更は構成の更新をトリガーし、ConfigSnapshot.UpdateAvailable信号も発生します。本番環境の更新と同様に、既存のスナップショットを更新するには、リフレッシュを行う必要があります:
local ConfigService = game:GetService("ConfigService")ConfigService:SetTestingValue("bossHealth", 200)local configSnapshot = ConfigService:GetConfigAsync()local bossHealth = configSnapshot:GetValue("bossHealth") -- これは今200です!
テスト変更は現在のサーバーのライフタイムに適用され、他のサーバーには伝播しません。スタジオでは、現在のプレイセッションに適用され、ライブサーバーには影響を与えません。テスト変更を手動でクリアするには、ConfigService:ClearTestingValue()を使用します。