경험 구성

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

경험 구성을 사용하면 서버를 다시 시작하지 않고도 게임 내 값을 실시간으로 업데이트할 수 있습니다:

  • 새로운 온보딩 던전을 활성화하거나 비활성화하는 것과 같은 기능을 켜고 끌 수 있습니다.
  • 보스 체력, 경험치 획득 또는 아이템 가격과 같은 게임 내 값을 조정할 수 있습니다.
  • 자정에 시작되는 할로윈 이벤트와 같은 시간에 따른 콘텐츠를 출시할 수 있습니다.

구성 요소는 키와 값의 형태로 구성됩니다. 코드에 하드코딩된 상수를 사용하는 대신, 키를 사용하여 값(문자열, 숫자, 부울 또는 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의 구성 페이지 개요

구성 생성 및 편집

  1. 경험에 대한 Creator Hub 구성 페이지에서 구성 생성을 클릭합니다.

  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 플레이 세션에서 사용할 수 있지만, 실시간 경험에서는 플레이어가 사용할 수 없습니다. Creator Hub의 구성 페이지는 모든 활성 및 대기 중인 변경 사항을 보여줍니다.

게시되지 않은 변경을 보여주는 구성 페이지
  1. 대기 중인 변경 사항을 테스트한 후, 지금 게시를 클릭하여 5분 이내에 모든 플레이어에게 게시합니다. 더 긴 출시 기간을 선호하는 경우 15분에 걸쳐 게시를 선택할 수도 있습니다.
  2. (권장) 업데이트한 내용을 나타내는 설명적인 게시 메시지를 추가합니다. 이 메시지는 이력 페이지에 나타나며, 나중에 변경의 목적을 식별하는 데 도움이 됩니다.

Studio에서 구성 생성 및 편집

원하는 경우 Roblox Studio에서 구성을 생성, 편집, 대기 및 게시할 수 있습니다. 파일 > 구성 열기를 클릭합니다. Studio 인터페이스는 새 값을 대기 및 테스트하는 데 특히 편리합니다.

구성과 작업하는 Studio 창

이력 보기 및 구성 복원

구성 페이지에서 이력을 클릭하여 과거 업데이트를 확인합니다. 각 업데이트에는 변경된 시간과 날짜, 변경을 수행한 사람, 게시 메시지가 포함되어 있습니다.

구성 값에 대한 차이가 확장된 이력 페이지

  • 각 행을 확장하여 키, 변경 이전의 값 및 이후의 값을 확인합니다.
  • 키 검색 상자를 사용하여 키를 검색합니다 - 설명이나 값이 아닌 키만 검색합니다.

이력 페이지는 구성 요소를 이전 상태로 복원할 수 있게 해줍니다:

  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을 반환합니다.

스냅샷 새로 고침

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'은 미국 및 기타 국가 내 당사의 등록 및 미등록 상표입니다.