7.6 KiB
📘 ShiroginSDK Remote Config (v1.0.0)
Firebase Remote Config Integration • ServiceLocator Architecture • Local Fallback System
Bu doküman, ShiroginSDK v1.0.0 sürümünde güncellenen Remote Config sistemini açıklar.
Sistem, Firebase Remote Config verilerini dinamik olarak çeker, RemoteConfigData ile birleştirir ve local cache sayesinde offline durumda dahi çalışmaya devam eder.
🚀 1. Firebase Remote Config Kurulumu
🔹 Adım 1 — Firebase Projesini Aç
- https://console.firebase.google.com adresine gidin.
- Projenizi seçin ve sol menüden Remote Config sekmesini açın.
🔹 Adım 2 — Yeni Parametre veya Grup Oluştur
Firebase Remote Config ekranında, SDK’daki RemoteConfigData değişkenlerini temsil edecek parametreleri oluşturun.
🖼️ Yeni Parametre Ekleme:
🖼️ Yeni Grup Oluşturma:
Parametrelerinizi mantıksal gruplar hâlinde düzenlemek, ShiroginSDK’nin selectedRemoteGroup seçeneğiyle eşleşmesini kolaylaştırır.
🔹 Adım 3 — JSON Formatı ile Firebase’e Aktarma
RemoteConfigDefinition ScriptableObject üzerinden Import from RemoteConfigData butonu ile tüm değişkenleri otomatik olarak senkronize edebilirsiniz.
Daha sonra Copy JSON to Clipboard diyerek aşağıdaki formatta Firebase’e yapıştırın:

{
"shiroginsdk_remote_config": {
"hp_scale": 100,
"target_fps": 60,
"rewarded_after_interstitial_time": 50
}
}
⚙️ 2. Sistem Mimarisi
| Bileşen | Tür | Açıklama |
|---|---|---|
| RemoteConfigService | ServiceBase |
Firebase’den verileri çeker, cache’ler ve event yayınlar. |
| RemoteConfigData | BaseData |
Çekilen verilerin local kopyasını ve erişim API’sini tutar. |
| FirebaseService | ServiceBase |
Firebase bağlantı yönetimini sağlar. |
| IEventService | Interface |
Güncelleme event’lerini tetikler (RemoteConfigUpdatedEvent). |
🧠 3. Başlatma ve Yaşam Döngüsü
Tüm servisler ShiroginServiceRegistry tarafından yönetilir:
ShiroginServiceRegistry.InitializeAll();
Bu çağrı ile:
FirebaseServiceDataServiceRemoteConfigServiceEventServiceotomatik olarak başlatılır veServiceLocator’a kaydedilir.
🔄 4. Çalışma Akışı
Firebase Remote Config
↓
RemoteConfigService (Fetch + Cache)
↓
RemoteConfigData (Merge)
↓
EventService → RemoteConfigUpdatedEvent
↓
SDK Modülleri (Economy, Ads, Gameplay)
🧩 5. Kullanım
🔹 Verilere Erişim
Artık ServiceLocator tabanlı erişim kullanılır:
var dataService = ServiceLocator.Get<IDataService>();
var config = dataService.Get<RemoteConfigData>();
int hpScale = config.GetInt("hp_scale", 100);
float fps = config.GetFloat("target_fps", 60f);
string storeJson = config.GetString("store_data");
🔹 Firebase’den Manuel Veri Yenileme
var remoteConfig = ServiceLocator.Get<IRemoteConfigService>();
remoteConfig.ForceRefresh();
Bu işlem, Firebase’den en son JSON’u çeker, cache’i günceller ve
otomatik olarak RemoteConfigUpdatedEvent yayınlar.
🔹 Event Dinleme
Güncellenmiş Remote Config verisini yakalamak için:
var eventService = ServiceLocator.Get<IEventService>();
eventService.Subscribe<ShiroginEvents.RemoteConfigUpdatedEvent>(e =>
{
Debug.Log($"RemoteConfig updated: {e.RawJson}");
});
🪙 6. Local Fallback (Offline Çalışma)
- Remote fetch başarısız olursa,
RemoteConfigServicelocal cache’i (RemoteConfigData) kullanır. - Cache 24 saatten daha yeni ise remote fetch atlanır.
- Veriler
Application.persistentDataPath || PlayerPrefsaltında JSON olarak saklanır.
var data = ServiceLocator.Get<IDataService>().Get<RemoteConfigData>();
Debug.Log($"Cached HP Scale: {data.GetInt("hp_scale")}");
🧾 7. Firebase JSON Yapısı
Örnek:
{
"ShiroginSDK": {
"hp_scale": 120,
"target_fps": 60,
"remove_ads_popup_active": true,
"enemy_hp_multiplier": "1,1.5,2,2.5,3",
"store_data": "{\"shopItems\":[{\"id\":1,\"name\":\"Starter Pack\",\"price\":100}]}"
}
}
Bu JSON, SDKConfig.selectedRemoteGroup alanında belirtilen grup adıyla eşleşir (örnek: "ShiroginSDK").
🧩 8. RemoteConfigService API’si
| Fonksiyon | Açıklama |
|---|---|
ForceRefresh() |
Firebase’den manuel veri çekimi yapar. |
GetInt(string key, int defaultValue) |
Sayısal değer döner. |
GetFloat(string key, float defaultValue) |
Ondalık değer döner. |
GetBool(string key, bool defaultValue) |
Mantıksal değer döner. |
GetString(string key, string defaultValue) |
Metin döner. |
🧰 9. RemoteConfigDefinition (Editor Tool)
Konum
Assets/ShiroginSDK/Editor/RemoteConfig/RemoteConfigDefinitionEditor.cs
Bu araç, Firebase Remote Config parametrelerini düzenlemek, senkronize etmek ve JSON oluşturmak için görsel arayüz sağlar.
| Buton | İşlev |
|---|---|
| ✅ Validate Keys | Boş veya tekrarlanan anahtarları kontrol eder. |
| 🔤 Sort by Key | Anahtarları alfabetik sıraya dizer. |
| 📋 Copy JSON to Clipboard | Firebase’e yapıştırılabilir JSON oluşturur. |
| ⬆️ Import from RemoteConfigData | SDK tarafındaki alanları otomatik ekler. |
🌍 10. Offline & Event Akışı
Senaryo 1 – Online:
- Firebase bağlantısı kurulur
- JSON çekilir
- Cache güncellenir
RemoteConfigUpdatedEventtetiklenir- SDK modülleri (Ads, Economy vb.) yeni ayarları uygular
Senaryo 2 – Offline:
- Remote fetch başarısız olur
- Local cache kullanılır
- Oyun eski verilerle devam eder
📹 11. Kurulum Videosu
🧱 12. Özet
| Konsept | Açıklama |
|---|---|
| Mimari | ServiceLocator tabanlı bağımsız servis yapısı |
| Firebase Bağlantısı | FirebaseService event’leriyle senkronize |
| Cache Yönetimi | 24 saatlik otomatik yenileme kontrolü |
| Event Forwarding | RemoteConfigUpdatedEvent ile global bildirim |
| Offline Desteği | Local cache fallback mekanizması |
| Tip Güvenli Erişim | GetInt, GetString, GetBool yardımcı metotları |
Prepared by: Emir Han MAMAK
Version: 1.1.0 (2025.12)
Module: ShiroginSDK.Runtime.Services.Implementations.RemoteConfig

