Remote-Konfiguration

Balancing, Preise und Feature-Flags ändern, ohne ein Update zu veröffentlichen. Jede Antwort ist signiert, wird auf dem Gerät geprüft und für das Offline-Spiel zwischengespeichert.

Codekommentare und API-Namen bleiben auf Englisch, damit sie zu den SDKs passen.

Auf dieser Seite

Werttypen#

Legen Sie Schlüssel auf der Seite Remote-Konfiguration an. Werte werden als Text mit einem Typ gespeichert, der dem SDK sagt, wie sie zu lesen sind:

TypBeispielLimit
stringWelcome back!Bis zu 10.000 Zeichen
number25Jede endliche Zahl
booleanfalsetrue oder false
json{"sale": 0.2}Bis zu 50.000 Byte

Werte lesen#

Getter schlagen nie fehl: Sie liefern Ihren Fallback-Wert, wenn ein Schlüssel fehlt oder sich nicht umwandeln lässt.

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");

Abruf und Aktualisierungen#

Unity und Godot rufen die Konfiguration beim Spielstart ab; im Web rufen Sie fetch() selbst auf. Spätere Abrufe senden das ETag, sodass eine unveränderte Konfiguration nur eine winzige 304-Antwort kostet.

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)" : ""));

Offline und Caching#

Die zuletzt geprüfte Konfiguration wird auf dem Gerät zwischengespeichert und beim Start geladen, sodass Getter offline und schon vor Abschluss des ersten Abrufs funktionieren. Scheitert ein Abruf am Netzwerk, bleibt die zwischengespeicherte Kopie erhalten; eine Konfiguration, die älter als die zwischengespeicherte ist, wird abgelehnt.

Signaturprüfung#

data ist die base64url-Nutzlast, checksum ihr SHA-256-Hash und signature eine RSA-SHA256-Signatur über data, erstellt mit dem privaten Schlüssel in storage/keys/. Die SDKs prüfen alle drei sowie Projekt-ID und Version, bevor sie eine Konfiguration verwenden.

SDKHerkunft des öffentlichen Schlüssels
UnityTools ▸ Majacloud ▸ Setup ▸ Test connection
GodotProject ▸ Tools ▸ Majacloud: Test connection
WebDie Option configPublicKey (das PEM auf der Seite API-Schlüssel)
RESTGET /v1/project → config_public_key_pem
Ohne fest hinterlegten Schlüssel rufen die SDKs ihn bei der ersten Verwendung ab. Hinterlegen Sie ihn für Produktions-Builds fest und nehmen Sie storage/keys/ in Ihre Backups auf: Spiele haben den zugehörigen öffentlichen Schlüssel fest hinterlegt.

Sie können eine Antwort mit OpenSSL selbst prüfen:

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

Verlauf und Wiederherstellung#

Jede Änderung wird versioniert. Das Dashboard bewahrt den Verlauf je nach Tarif 7 bis 365 Tage auf und stellt jeden früheren Wert mit einem Klick wieder her.

Durchsucht Seitentitel, Überschriften und Text.

↑↓ zum Navigieren ↵ zum Öffnen Esc zum Schließen