Configuración remota

Cambia el balance, los precios y las feature flags sin publicar una actualización. Cada respuesta está firmada, se verifica en el dispositivo y se guarda en caché para jugar sin conexión.

Los comentarios del código y los nombres de la API se mantienen en inglés para que coincidan con los SDK.

En esta página

Tipos de valor#

Crea claves en la página Configuración remota. Los valores se guardan como texto con un tipo que indica al SDK cómo leerlos:

TipoEjemploLímite
stringWelcome back!Hasta 10.000 caracteres
number25Cualquier número finito
booleanfalsetrue o false
json{"sale": 0.2}Hasta 50.000 bytes

Leer valores#

Los getters nunca fallan: devuelven tu valor de respaldo cuando falta una clave o no se puede convertir.

C#
int damage = Majacloud.RemoteConfig.GetInt("enemy_damage", 25);
float speed = Majacloud.RemoteConfig.GetFloat("player_speed", 4.5f);
bool maintenance = Majacloud.RemoteConfig.GetBool("maintenance_mode", false);
string welcome = Majacloud.RemoteConfig.GetString("welcome_message", "Hi!");
ShopConfig shop = Majacloud.RemoteConfig.GetJson<ShopConfig>("shop");

Obtención y actualizaciones#

Unity y Godot obtienen la configuración al iniciar el juego; en la web, llama tú a fetch(). Las siguientes peticiones envían el ETag, así que una configuración sin cambios solo cuesta una pequeña respuesta 304.

C#
Majacloud.RemoteConfig.ConfigUpdated += config => ApplyBalance();

var fetch = await Majacloud.RemoteConfig.FetchAsync(); // 304 when nothing changed
if (fetch.Ok) Debug.Log("Config v" + fetch.Value.Version + (fetch.Value.Changed ? " (new)" : ""));

Sin conexión y caché#

La última configuración verificada se guarda en caché en el dispositivo y se carga al iniciar, así que los getters funcionan sin conexión y antes de que termine la primera obtención. Si una obtención falla por la red, se conserva la copia en caché; una configuración más antigua que la de la caché se rechaza.

Verificación de firma#

data es la carga útil en base64url, checksum su SHA-256 y signature una firma RSA-SHA256 sobre data, hecha con la clave privada de storage/keys/. Los SDK comprueban los tres, además del ID de proyecto y la versión, antes de usar una configuración.

SDKDe dónde sale la clave pública
UnityTools ▸ Majacloud ▸ Setup ▸ Test connection
GodotProject ▸ Tools ▸ Majacloud: Test connection
WebLa opción configPublicKey (el PEM de la página Claves de API)
RESTGET /v1/project → config_public_key_pem
Sin una clave fijada, los SDK la obtienen en el primer uso. Fíjala en las builds de producción y guarda storage/keys/ en tus copias de seguridad: los juegos fijan su clave pública.

Puedes verificar una respuesta por tu cuenta con OpenSSL:

bash
# Verify a config response yourself (what every SDK does before using it)
curl -s https://majacloud.majanite.com/v1/project -H "X-Project-ID: $PROJECT_ID" -H "X-Client-Key: $CLIENT_KEY" | jq -r .project.config_public_key_pem > public.pem
curl -s https://majacloud.majanite.com/v1/config -H "X-Project-ID: $PROJECT_ID" -H "X-Client-Key: $CLIENT_KEY" > response.json

jq -j .data response.json > data.txt
jq -r .signature response.json | base64 --decode > signature.bin
openssl dgst -sha256 -verify public.pem -signature signature.bin data.txt   # Verified OK
jq -r .data response.json | tr '_-' '/+' | base64 --decode 2>/dev/null | jq .     # the payload

Historial y restauración#

Cada cambio queda versionado. El panel conserva el historial entre 7 y 365 días según el plan y restaura cualquier valor anterior con un clic.

Busca en títulos, encabezados y texto de las páginas.

↑↓ para navegar ↵ para abrir Esc para cerrar