エクスペリエンス設定

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

エクスペリエンス設定を使用すると、サーバーを再起動することなく、リアルタイムでゲーム内の値を更新できます:

  • 新しいオンボーディングダンジョンを有効または無効にするなど、機能をオンまたはオフにします。
  • ボスの健康、経験値の獲得、アイテムの価格など、ゲーム内の値を調整します。
  • 真夜中に開始するハロウィンイベントなど、時間制限のあるコンテンツを開始します。

設定はキーと値の形を取ります。コード内にハードコーディングされた定数を使用する代わりに、キーを使用して値(文字列、数値、ブール、または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. 生成されたコードスニペットをエクスペリエンス内のサーバースクリプト(おそらくServerScriptService内)にコピーします。コードは以下のようになります:

    local ConfigService = game:GetService("ConfigService")
    local configSnapshot = ConfigService:GetConfigAsync()
    local MY_KEY = "my_key" -- オプション、設定キーを定数として保存
    local myValue = configSnapshot:GetValue(MY_KEY)
  4. 値を他の変数のように使用します。設定は何もしません。コード内で使用する必要があります。

スクリプト内での設定の使用方法については、コードに設定を追加するを参照してください。

設定の編集は、作成と変わりません。編集ボタンをクリックして、値と説明を必要に応じて更新します。

制限

設定値には、タイプごとに以下の制限があります。

タイプ最大サイズ
文字列100,000文字
数値±1.7976931348623157e+308、±2^53(整数の正確な表現)
ブール該当なし
JSON100,000文字

設定を公開する

設定を作成した後、それはステージング状態に移行し、公開前にテストできます。ステージングされた変更は、あなたとあなたのチームがStudioでのプレイセッション中に利用できますが、ライブエクスペリエンスのプレイヤーには表示されません。クリエイターハブの設定ページには、すべてのアクティブおよびステージングされた変更が表示されます。

未公開の変更を表示する設定ページ
  1. ステージングされた変更をテストした後、今すぐ公開をクリックしてすべてのプレイヤーに対して5分以内に公開します。より長い展開期間を希望する場合は、15分間で公開を選ぶこともできます。
  2. (推奨)何を更新したかを示す説明的な公開メッセージを追加します。このメッセージは履歴ページに表示され、後で変更の目的を識別するのに役立ちます。

Studioでの設定の作成と編集

お好みで、Roblox Studioで設定を作成、編集、ステージング、公開できます。ファイル > 設定を開くをクリックしてウィジェットを開きます。スタジオのインターフェースは、新しい値のステージングとテストに特に便利です。

設定作業のためのStudioウィンドウ

別のエクスペリエンスに設定を公開する

Studioのみで、別のエクスペリエンスにあなたの設定を公開することができ、そのエクスペリエンスの設定を完全に上書きします。これは、ステージングまたは開発エクスペリエンスからライブエクスペリエンスに設定を同期するのに特に便利です。スタジオウィジェットの公開タブに移動し、として公開をクリックします。

設定作業のためのStudioウィンドウ

履歴を表示して設定を復元する

設定ページで履歴をクリックして、過去の更新を確認します。各更新には、変更の時刻と日付、変更を行った人、公開メッセージが含まれます。

設定値の差分が展開された履歴ページ

  • 各行を展開して、キー、変更前の値、変更後の値を表示します。
  • 検索キーボックスを使用してキーを検索します—説明や値ではなく、キーのみを検索します。

履歴ページでは、設定を以前の状態に復元することもできます:

  1. 変更の隣の復元をクリックして「前」の値をステージングします。設定を復元すると、既存のステージングされた変更はすべて破棄されることに注意してください。
  2. 設定ページに戻り、設定を公開するを行います。

コードに設定を追加する

設定を扱うための主なクラスは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")
    end
    Players.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には、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は、米国並びにその他の国における登録商標および非登録商標です。