Configuraciones de experiencia te permiten actualizar valores en el juego en tiempo real sin reiniciar servidores:
- Activar y desactivar funciones, como habilitar o deshabilitar una nueva mazmorras de incorporación.
- Ajustar valores en el juego como la salud de los jefes, la ganancia de experiencia o los precios de los objetos.
- Lanzar contenido por tiempo limitado, como un evento de Halloween que comienza a la medianoche.
Las configuraciones toman la forma de claves y valores. En lugar de usar constantes codificadas en tu código, puedes usar la clave para obtener un valor (cadena, número, booleano o objeto JSON) y luego actualizar ese valor cuando lo desees sin publicar una nueva versión de tu experiencia. Los cambios de código requeridos son mínimos:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local myValue = configSnapshot:GetValue("my_key_name")
Puedes tener hasta 1,000 configuraciones activas en cualquier momento y gestionarlas en Creator Hub o en Roblox Studio.

Crear y editar configuraciones
En la página de Creator Hub Configuraciones para tu experiencia, haz clic en Crear configuración.
Especifica una clave, un tipo, un valor y opcionalmente, una descripción para ayudarte a ti o a tu equipo a identificar más tarde el propósito de la configuración. Los tipos admitidos son cadena, número, booleano y objeto JSON.
Copia el fragmento de código generado en un script del servidor en tu experiencia, probablemente en ServerScriptService. El código debería verse algo así:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local MY_KEY = "my_key" -- opcional, guardar la clave de configuración como una constantelocal myValue = configSnapshot:GetValue(MY_KEY)Usa el valor como usarías cualquier otra variable. Las configuraciones no hacen nada a menos que las utilices dentro de tu código.
Para obtener más información sobre cómo trabajar con configuraciones en tus scripts, consulta Agregar configuraciones a tu código.
Editar una configuración no es diferente de crear una. Haz clic en el botón Editar y actualiza el valor y la descripción como desees.
Límites
Los valores de configuración tienen los siguientes límites por tipo.
| Tipo | Tamaño máximo |
|---|---|
| Cadena | 100,000 caracteres |
| Número | ±1.7976931348623157e+308, ±2^53 para representaciones de enteros exactos |
| Booleano | N/A |
| JSON | 100,000 caracteres |
Publicar configuraciones
Después de crear una configuración, se mueve a un estado en espera para que puedas probarla antes de que esté disponible públicamente. Los cambios en espera están disponibles para ti y tu equipo en sesiones de juego en Studio, no para los jugadores en experiencias en vivo. La página de Configuraciones en Creator Hub muestra todos los cambios activos y en espera.

- Después de probar tus cambios en espera, haz clic en Publicar ahora para publicar para todos los jugadores en cinco minutos. También puedes elegir Publicar en 15 minutos si prefieres un período de lanzamiento más largo.
- (Recomendado) Agrega un mensaje descriptivo de publicación que indique qué actualizaste. Este mensaje aparece en la página de Historial y puede ayudarte y a tu equipo a identificar más tarde el propósito del cambio.
Crear y editar configuraciones en Studio
Si lo prefieres, puedes crear, editar, poner en espera y publicar configuraciones en Roblox Studio. Haz clic en Archivo > Abrir configuraciones. La interfaz de Studio es particularmente conveniente para poner en espera y probar nuevos valores.

Ver historial y restaurar configuraciones
En la página de Configuraciones, haz clic en Historial para ver actualizaciones pasadas. Cada actualización tiene la fecha y hora del cambio, quién hizo el cambio y el mensaje de publicación.

- Expande cada fila para ver la clave, el valor antes del cambio y el valor después de este.
- Usa el cuadro de Buscar clave para buscar claves, no descripciones o valores, solo claves.
La página de Historial también te permite restaurar configuraciones a un estado anterior:
- Haz clic en Restaurar junto al cambio para poner en espera el valor "anterior". Ten en cuenta que restaurar una configuración descarta cualquier cambio en espera existente.
- Regresa a la página de Configuraciones y publica la configuración.
Agregar configuraciones a tu código
La clase principal para trabajar con configuraciones es ConfigService, que recupera las últimas claves y valores para tu experiencia. ConfigService solo está disponible para scripts del servidor. Intentar llamar a sus métodos desde un script del cliente resulta en un error.
El primer paso para trabajar con configuraciones es recuperar un ConfigSnapshot, los últimos valores para todas las configuraciones en el momento actual. Hay dos métodos para obtener una instantánea:
ConfigService:GetConfigAsync() es para configuraciones globales que deseas aplicar a todos los jugadores en la experiencia:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local bossHealth = configSnapshot:GetValue("bossHealth")ConfigService:GetConfigForPlayerAsync() es para experimentos. Recupera configuraciones específicas del jugador para que diferentes jugadores puedan obtener diferentes valores.
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)
En cualquier caso, si la clave no existe, ConfigSnapshot:GetValue() devuelve nil.
Actualizar instantáneas
ConfigSnapshots representan un punto en el tiempo, el estado de la configuración cuando pediste la instantánea. Para evitar interrumpir el juego, las actualizaciones a una configuración no se propagan automáticamente a las instantáneas. En un juego de disparos competitivo, por ejemplo, solo deseas nuevos valores de configuración entre rondas para que los atributos del arma no fluctúen en medio de la partida.
Para obtener los últimos valores manualmente, usa el método ConfigSnapshot:Refresh(). Opcionalmente, conecta una función al evento ConfigSnapshot.UpdateAvailable para actualizar automáticamente:
configSnapshot.UpdateAvailable:Connect(function()
configSnapshot:Refresh()
end)
Después de que actualices una instantánea, puedes usar ConfigSnapshot:GetValueChangedSignal() para escuchar cambios en una clave específica para que puedas actualizar el código de tu experiencia:
configSnapshot:GetValueChangedSignal("bossHealth"):Connect(function(newHealthValue)
spawnNewBoss(newHealthValue)
end)
Manejo de errores
En raras ocasiones, cuando la configuración no se carga y nunca se ha cargado antes, ConfigService:GetConfigAsync() lanza un error.
Si ConfigService pierde la conexión con los servidores de Roblox después de que se cargó anteriormente, ConfigService:GetConfigAsync() devuelve una instantánea con los últimos valores disponibles. Estas instantáneas intentan reconectarse y disparar el evento UpdateAvailable cuando cargan nuevas actualizaciones con éxito.
Cómo manejes estas situaciones poco comunes depende de ti. Puedes envolver la llamada en un pcall() y tener valores de respaldo en tu código, mostrar al jugador un error y esperar a que la instantánea se reconecte, o alguna otra solución.
Probar configuraciones
ConfigService tiene métodos incorporados para probar temporalmente cambios en las configuraciones tanto en Studio como en servidores en vivo sin afectar toda la experiencia.
Para establecer un valor de prueba local, llama a ConfigService:SetTestingValue() desde un script del servidor o a través de la Consola del Desarrollador. Los cambios en los valores de prueba desencadenan una actualización de la configuración junto con la señal ConfigSnapshot.UpdateAvailable. Al igual que una actualización de producción, debes actualizar las instantáneas existentes para obtener el valor de prueba:
local ConfigService = game:GetService("ConfigService")ConfigService:SetTestingValue("bossHealth", 200)local configSnapshot = ConfigService:GetConfigAsync()local bossHealth = configSnapshot:GetValue("bossHealth") -- ¡Ahora 200!
Los cambios de prueba se aplican durante la duración del servidor actual y no se propagan a otros servidores. En Studio, se aplican a la sesión de juego actual y no afectan a los servidores en vivo. Puedes borrar manualmente los cambios de prueba con ConfigService:ClearTestingValue().