エクスペリエンス設定を使用すると、サーバーを再起動せずにリアルタイムでゲーム内の値を更新できます:
- 新しいオンボーディングダンジョンの有効化や無効化など、機能をオンまたはオフにします。
- ボスの健康、経験値の獲得、アイテムの価格など、ゲーム内の値を調整します。
- 真夜中に始まるハロウィンイベントなど、時間制限のあるコンテンツを開始します。
設定はキーと値の形式を取ります。コード内でハードコーディングされた定数を使用する代わりに、キーを使用して値(文字列、数値、ブール値、または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文字 |
設定の公開
設定を作成すると、それはステージング状態に移行し、公開前にテストできます。ステージングされた変更は、スタジオのプレイセッションであなたとあなたのチームに利用可能ですが、ライブエクスペリエンスのプレイヤーには利用できません。Creator Hubの設定ページには、すべてのアクティブおよびステージングされた変更が表示されます。

- ステージングされた変更をテストした後、今すぐ公開をクリックして、ほぼ瞬時にすべてのプレイヤーに公開します(約15秒から1分の間)。より長い、徐々に展開する期間を好む場合は、15分で公開を選択することもできます。場合によっては、クライアントが公開後に変更を反映するまでに数分かかることがあります。
- (推奨)更新した内容を示す説明的な公開メッセージを追加します。このメッセージは履歴ページに表示され、後で変更の目的を特定するのに役立ちます。
Studioでの設定の作成と編集
好みに応じて、Roblox Studioで設定を作成、編集、ステージング、公開できます。ファイル > 設定を開くをクリックしてウィジェットを開きます。Studioインターフェースは、新しい値のステージングとテストに特に便利です。

別のエクスペリエンスに設定を公開
Studioでは、設定を別のエクスペリエンスに公開でき、そのエクスペリエンスの設定を完全に上書きします。これは、ステージングまたは開発エクスペリエンスからライブエクスペリエンスに設定を同期するのに特に便利です。
Roblox 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を返します。
オートコンプリート
設定はスクリプトエディタのオートコンプリートに統合されています。ConfigSnapshot:GetValue()を呼び出すと、エディタは設定キー名を提案し、変数名にカーソルを合わせると各設定のタイプを表示します。
スクリプトが--!strictモードを使用している場合、リンターは型を検出して検証できます。
オートコンプリートは、複雑なネストされた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()を使用します。