경험 구성

*이 콘텐츠는 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 창

다른 경험에 구성 게시

Studio에서만, 다른 경험에 구성을 게시할 수 있으며, 이는 해당 경험에 대한 구성을 완전히 덮어씌웁니다. 이는 스테이징 또는 개발 경험에서 실시간 경험으로 구성을 동기화하는 데 특히 유용할 수 있습니다. Studio 위젯의 게시됨 탭으로 이동하여 다른 이름으로 게시를 클릭하십시오.

구성을 작업하기 위한 Studio 창

히스토리 보기 및 구성 복원

구성 페이지에서 히스토리를 클릭하여 과거 업데이트를 확인합니다. 각 업데이트에는 변경의 시간과 날짜, 변경을 수행한 사람 및 게시 메시지가 포함됩니다.

구성 값의 diff가 확장된 히스토리 페이지

  • 각 행을 확장하여 키, 변경 전 값 및 변경 후 값을 볼 수 있습니다.
  • 검색 키 상자를 사용하여 키를 검색하십시오 - 설명이나 값이 아니라 오직 키만 검색합니다.

히스토리 페이지에서는 구성을 이전 상태로 복원할 수 있습니다:

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