Deneyim yapılandırmaları, sunucuları yeniden başlatmadan oyun içi değerleri gerçek zamanlı olarak güncellemenizi sağlar:
- Yeni bir başlangıç zindanı açma veya kapama gibi özellikleri açıp kapatın.
- Patron sağlığı, deneyim kazanımı veya eşya fiyatları gibi oyun içi değerleri ayarlayın.
- Gece yarısı başlayan bir Cadılar Bayramı etkinliği gibi zaman sınırlı içerikler başlatın.
- Yeni oyunculara ekstra zırh vermek gibi farklı oyunculara farklı değerler verin.
Yapılandırmalar, anahtarlar ve değerler biçiminde gelir. Kodunuzda sabit kodlanmış sabitler kullanmak yerine, bir değeri (dize, sayı, boolean veya JSON nesnesi) almak için anahtarı kullanabilir ve bu değeri istediğiniz zaman güncelleyebilirsiniz; böylece deneyiminizin yeni bir sürümünü yayınlamanıza gerek kalmaz. Gerekli kod değişiklikleri minimum düzeydedir:
local ConfigService = game:GetService("ConfigService")
local configSnapshot = ConfigService:GetConfigAsync()
local myValue = configSnapshot:GetValue("my_key_name")Herhangi bir anda 1.000'e kadar aktif yapılandırmaya sahip olabilirsiniz ve bunları Creator Hub veya Roblox Studio'da yönetebilirsiniz.

Yapılandırmaları oluşturma ve düzenleme
Deneyiminiz için Creator Hub Yapılandırmalar sayfasında Yapılandırma oluştur butonuna tıklayın.
Bir anahtar, bir tür, bir değer ve isteğe bağlı olarak, yapılandırmanın amacını daha sonra tanımlamanıza yardımcı olacak bir açıklama belirtin. Desteklenen türler dize, sayı, boolean ve JSON nesnesidir. İleri butonuna tıklayın.
(İsteğe bağlı) Hedefleme koşulları ve değerleri ekleyin. Koşullar, belirli kriterleri karşılayan (veya karşılamayan) kullanıcılara yapılandırma değerlerini uygulamanızı sağlar; örneğin, oyununuzu hiç oynamamış kullanıcılar veya Portekizce konuşanlar. Daha fazla bilgi için Yapılandırmaları belirli oyunculara hedefleme bölümüne bakın.
Oluşturulan kod parçasını deneyiminizdeki bir sunucu betiğine kopyalayın, muhtemelen ServerScriptService içinde. Oyuncuya göre farklılık göstermeyen "küresel" yapılandırmalar için kod şu şekilde görünebilir:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local MY_KEY = "my_key" -- isteğe bağlı, yapılandırma anahtarını bir sabit olarak saklayınlocal myValue = configSnapshot:GetValue(MY_KEY)Koşullu yapılandırmalar ve deneyler için kod biraz farklıdır:
local ConfigService = game:GetService("ConfigService")local Players = game:GetService("Players")local MY_KEY = "my_key" -- isteğe bağlı, yapılandırma anahtarını bir sabit olarak saklayınlocal function onPlayerAdded(player)local playerConfigSnapshot = ConfigService:GetConfigForPlayerAsync(player)local myValue = playerConfigSnapshot:GetValue(MY_KEY)endPlayers.PlayerAdded:Connect(onPlayerAdded)Değeri, diğer değişkenler gibi kullanın. Yapılandırmalar, kodunuz içinde kullanılmadıkça hiçbir şey yapmaz.
Betiklerinizde yapılandırmalarla çalışmak hakkında daha fazla bilgi için Kodunuza yapılandırmalar ekleyin bölümüne bakın.
Bir yapılandırmayı düzenlemek, birini oluşturmakla aynı şekilde yapılır. Düzenle butonuna tıklayın ve değeri ve açıklamayı istediğiniz gibi güncelleyin.
Sınırlamalar
Yapılandırma değerlerinin türüne göre aşağıdaki sınırlamaları vardır.
| Tür | Maksimum boyut |
|---|---|
| Dize | 100.000 karakter |
| Sayı | ±1.7976931348623157e+308, ±2^53 kesin tam sayı temsilleri için |
| Boolean | N/A |
| JSON | 100.000 karakter |
Yapılandırmaları yayınlama
Bir yapılandırma oluşturduktan sonra, kamuya açık hale gelmeden önce test edebilmeniz için aşamalı bir duruma geçer. Aşamalı değişiklikler, Studio oyun oturumlarınızda size ve ekibinize açıktır, ancak canlı deneyimlerdeki oyunculara kapalıdır. Creator Hub'daki Yapılandırmalar sayfası, tüm aktif ve aşamalı değişiklikleri gösterir.

- Aşamalı değişikliklerinizi test ettikten sonra, tüm oyunculara neredeyse anında yayınlamak için Şimdi Yayınla butonuna tıklayın (yaklaşık 15 saniye ile 1 dakika arasında). Daha uzun, daha kademeli bir dağıtım süresi tercih ediyorsanız 15 dakikada yayınla seçeneğini de seçebilirsiniz. Bazı durumlarda, istemcilerin yayınlamadan sonra değişiklikleri yansıtması birkaç dakika sürebilir.
- (Tavsiye edilir) Güncellediğiniz şeyi belirten açıklayıcı bir yayın mesajı ekleyin. Bu mesaj, Geçmiş sayfasında görünür ve daha sonra değişikliğin amacını tanımlamanıza yardımcı olabilir.
Yapılandırmaları belirli oyunculara hedefleme
Varsayılan olarak, bir yapılandırma herkes için aynı değeri sunar. Koşullu yapılandırmalar, oyuncu özelliklerine (ülke, süre, dil, ödeme durumu vb.) dayalı olarak farklı oyunculara farklı değerler sunmanıza olanak tanır.
Koşullu yapılandırmalar, bir oyuncunun hangi değeri alacağını belirleyen üç parçadan oluşur:
- Koşullu kurallar, kimin eşleştiğini tanımlar. Her kural, oyuncu özelliklerini değerlendiren "ilk 30 gün içinde aktif ödeyiciler" gibi mantıksal bir ifadedir.
- Kural sıralaması, bir oyuncunun birden fazla kuralı eşleştirdiğinde hangisinin seçileceğini tanımlar. Roblox, kuralları yukarıdan aşağıya değerlendirir ve ilk eşleşen dalı uygular. Kurallar, bireysel bir anahtara koşullu değerler eklediğiniz sıradan bağımsız olarak küresel olarak sıralanır.
- Koşullu değerler, eşleşen bir oyuncunun ne alacağını tanımlar. Her koşul için bir değer eklenir. Eğer bir oyuncu o koşul içindeki bir kuralı eşleştirirse, ilişkili değeri alır; aksi takdirde, yapılandırmanın varsayılan değerini alır.
Desteklenen özellikler
Koşullu yapılandırmalar aşağıdaki özellikleri destekler. Bu özellikler, analitik panolarındaki karşılık gelen filtreler ve dağılımlar ile aynı tanımlara sahiptir.
| Özellik | Açıklama |
|---|---|
| Ülke | Oyuncunun coğrafi konumu. |
| Dil | Oyuncunun dil ayarı. |
| Yeni mi yoksa geri dönen mi | Oyuncunun deneyiminizi ilk kez oynayıp oynamadığı veya daha önce oynayıp oynamadığı. |
| Kaynak | Oyuncunun deneyiminizi nasıl bulduğu, örneğin ana sayfa önerisi, arama veya sponsorlu reklam. |
| Kullanıcının ilk oynadığı zaman | Oyuncunun deneyiminizi ilk kez ne kadar süre önce oynadığı, örneğin 0-30 gün önce veya 31-90 gün önce. Günlük olarak hesaplanır. |
| Deneyim içindeki aktif ödeme durumu | Oyuncunun deneyiminiz içindeki ödeme etkinliği, bu da farklı ödeme yapan kullanıcı segmentlerini hedeflemenizi sağlar. Günlük olarak hesaplanır. |
| Deneyim içindeki etkinlik durumu | Oyuncunun deneyiminizi en son ne zaman oynadığı, bu da yeni, aktif, ara vermiş ve yeniden etkinleştirilen oyuncuları farklı şekilde ele almanızı sağlar. Günlük olarak hesaplanır. |
| Kullanıcı etkileşimi | Oyuncunun her hafta deneyiminizi ne kadar oynadığı, bu da en çok etkileşimde bulunan oyuncularınızı daha sıradan olanlardan ayırmanızı sağlar. Günlük olarak hesaplanır. |
| Platform harcama durumu | Oyuncunun Roblox platformu genelinde aktif bir harcayıcı olup olmadığı. Günlük olarak hesaplanır. |
| Platform etkinlik durumu | Oyuncunun Roblox'ta, yalnızca deneyiminizde değil, en son ne zaman oynadığı. Günlük olarak hesaplanır. |
Koşullu değerler oluşturma
Koşulları, bir yapılandırma oluştururken veya düzenlerken ekleyebilirsiniz. Hedefleme ekle adımında, bir koşul ekleyin:
- Mevcut bir koşulu seçin veya Yeni bir tane oluştur butonuna tıklayın.
- Bir veya daha fazla kural ekleyin.
- Eşleşen oyuncuların alacağı değeri ayarlayın.
Örneğin, son 30 gün içinde oynamaya başlayan en iyi aktif ödeyicilere daha zor bir deneyim vermek için dynamicBossHealth değerlerini artırabilirsiniz.

Hedeflenen değerlere kodda erişim
Hedeflenen değerleri almak için ConfigService:GetConfigForPlayerAsync() kullanın; bu, bireysel bir oyuncu için kuralları ve sıralamayı değerlendirir. ConfigService:GetConfigAsync() hedefleme uygulamaz çünkü bu, tek bir oyuncuya özgü değildir. Daha fazla bilgi için Kodunuza yapılandırmalar ekleyin bölümüne bakın.
En iyi uygulamalar ve sınırlamalar
- Her koşullu değer, yapılandırmanın varsayılan değerinin veri türüyle (boolean, dize, sayı veya JSON) eşleşmelidir.
- Her oyun için en fazla 100 koşul olabilir.
- Her yapılandırma anahtarı en fazla 20 koşul destekler.
- Yayınlamadan önce kural sıralamasını doğrulayın. Kurallar küresel olarak sıralandığı için, değerlendirme sıralamanızın doğru önceliklendirilmiş olduğundan emin olun. Sıralamayı gözden geçirmek için Koşullar sekmesine tıklayın.
Studio'da yapılandırmaları oluşturma ve düzenleme
İsterseniz, Roblox Studio'da yapılandırmaları oluşturabilir, düzenleyebilir, aşamalı hale getirebilir ve yayınlayabilirsiniz. Dosya > Yapılandırmaları Aç seçeneğine tıklayarak widget'ı açın. Studio arayüzü, yeni değerleri aşamalı hale getirmek ve test etmek için özellikle uygundur.

Yapılandırmaları başka bir deneyime yayınlama
Studio'da, yapılandırmalarınızı başka bir deneyime yayınlayabilirsiniz; bu, o deneyim için yapılandırmaları tamamen geçersiz kılar. Bu, aşamalı veya geliştirme deneyimlerinden canlı deneyime yapılandırmaları senkronize etmek için özellikle yararlı olabilir.
Roblox Studio'da, üst menüye gidin ve Dosya > Yapılandırmaları Aç seçeneğini seçin.
Yapılandırmalar widget'ının Yayınlanan sekmesinde, ⋮ simgesine tıklayın ve Yayınla Olarak seçeneğini seçin.

Görünen diyalogda, düzenleme izinlerinizin bulunduğu gruplar listesinden hedef deneyimi bulun ve seçin.

Geçmişi görüntüleme ve yapılandırmaları geri yükleme
Yapılandırmalar sayfasında, geçmiş güncellemeleri görmek için Geçmiş butonuna tıklayın. Her güncelleme, değişikliğin zamanı ve tarihi, değişikliği yapan kişi ve yayın mesajını içerir.

- Her satırı genişleterek anahtarı, değişiklikten önceki değeri ve sonraki değeri görebilirsiniz.
- Anahtarları aramak için Anahtar Ara kutusunu kullanın; açıklamaları veya değerleri değil, yalnızca anahtarları arayın.
Geçmiş sayfası ayrıca yapılandırmaları önceki bir duruma geri yüklemenizi sağlar:
- "önceki" değeri aşamalı hale getirmek için değişikliğin yanındaki Geri Yükle butonuna tıklayın. Bir yapılandırmayı geri yüklemenin mevcut aşamalı değişiklikleri geçersiz kıldığını unutmayın.
- Yapılandırmalar sayfasına geri dönün ve yapılandırmayı yayınlayın.
Kodunuza yapılandırmalar ekleyin
Yapılandırmalarla çalışmak için ana sınıf ConfigService'dir; bu, deneyiminiz için en son anahtarları ve değerleri alır. ConfigService yalnızca sunucu betiklerinde kullanılabilir. İstemci betiklerinden yöntemlerini çağırmaya çalışmak bir hata ile sonuçlanır.
Yapılandırmalarla çalışmanın ilk adımı, ConfigSnapshot'ı almak, mevcut noktada tüm yapılandırmalar için en son değerlerdir. Bir anlık görüntü almak için iki yöntem vardır:
ConfigService:GetConfigAsync(), deneyimdeki tüm oyunculara uygulamak istediğiniz küresel yapılandırmalar içindir:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local bossHealth = configSnapshot:GetValue("bossHealth")ConfigService:GetConfigForPlayerAsync(), farklı oyuncuların farklı değerler alabilmesi için oyuncuya özgü yapılandırmaları alır. Bunu koşullu yapılandırmalar ve deneyler için kullanın.
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)
Her iki durumda da, anahtar mevcut değilse, ConfigSnapshot:GetValue() nil döner.
Otomatik Tamamlama
Yapılandırmalar, Betik Düzenleyicisi'nin otomatik tamamlama özelliği ile entegre edilmiştir. ConfigSnapshot:GetValue() çağırdığınızda, düzenleyici yapılandırma anahtar adlarınızı önerir ve değişken adının üzerine geldiğinizde her yapılandırmanın türünü gösterir.
Betikleriniz --!strict modunu kullanıyorsa, linter türü sizin için kontrol edebilir.
Otomatik tamamlama, karmaşık iç içe geçmiş JSON türlerini kullanan yapılandırmalarla da çalışır.
Anlık Görüntüleri Yenileme
ConfigSnapshots, anlık görüntüyü talep ettiğinizde yapılandırmanın durumunu temsil eder. Oyun deneyimini bozmayı önlemek için, bir yapılandırmadaki güncellemeler anlık görüntülere otomatik olarak yayılmaz. Örneğin, rekabetçi bir nişancı oyununda, silah özelliklerinin maç ortasında dalgalanmasını önlemek için yeni yapılandırma değerlerini yalnızca turlar arasında almak isteyebilirsiniz.
En son değerleri manuel olarak almak için ConfigSnapshot:Refresh() yöntemini kullanın. İsteğe bağlı olarak, otomatik yenilemek için ConfigSnapshot.UpdateAvailable olayına bir işlev bağlayabilirsiniz:
configSnapshot.UpdateAvailable:Connect(function()
configSnapshot:Refresh()
end)Bir anlık görüntüyü yeniledikten sonra, deneyiminizin kodunu güncellemek için ConfigSnapshot:GetValueChangedSignal() kullanarak belirli bir anahtar için değişiklikleri dinleyebilirsiniz:
configSnapshot:GetValueChangedSignal("bossHealth"):Connect(function(newHealthValue)
spawnNewBoss(newHealthValue)
end)Hata Yönetimi
Nadir durumlarda, yapılandırma yüklenmezse ve daha önce hiç yüklenmemişse, ConfigService:GetConfigAsync() bir hata fırlatır.
Eğer ConfigService, daha önce yüklendikten sonra Roblox sunucularıyla bağlantısını kaybederse, ConfigService:GetConfigAsync() en son mevcut değerlerle bir anlık görüntü döner. Bu anlık görüntüler, yeniden bağlandıklarında yeni güncellemeleri yüklemeye çalışır ve UpdateAvailable olayını tetikler.
Bu nadir durumları nasıl yöneteceğiniz size kalmıştır. Çağrıyı pcall() içinde sarmalayabilir ve kodunuzda yedek değerler bulundurabilir, oyuncuya bir hata gösterebilir ve anlık görüntünün yeniden bağlanmasını bekleyebilirsiniz veya başka bir çözüm bulabilirsiniz.
Yapılandırmaları Test Etme
ConfigService, hem Studio'da hem de canlı sunucularda yapılandırma değişikliklerini geçici olarak test etmek için yerleşik yöntemlere sahiptir; bu, tüm deneyimi etkilemeden yapılır.
Yerel bir test değeri ayarlamak için, bir sunucu betiğinden veya Geliştirici Konsolu aracılığıyla ConfigService:SetTestingValue() çağrısını yapın. Test değerlerindeki değişiklikler, yapılandırma güncellemesi ve ConfigSnapshot.UpdateAvailable sinyalini tetikler. Üretim güncellemesi gibi, mevcut anlık görüntüleri yenilemeniz gerekir:
local ConfigService = game:GetService("ConfigService")
ConfigService:SetTestingValue("bossHealth", 200)
local configSnapshot = ConfigService:GetConfigAsync()
local bossHealth = configSnapshot:GetValue("bossHealth") -- Artık 200!Test değişiklikleri, mevcut sunucunun ömrü boyunca geçerlidir ve diğer sunuculara yayılmaz. Studio'da, mevcut oyun oturumuna uygulanır ve canlı sunucuları etkilemez. Test değişikliklerini manuel olarak ConfigService:ClearTestingValue() ile temizleyebilirsiniz.