Deneyim ayarları, oyun içi değerleri gerçek zamanlı olarak sunucuları yeniden başlatmadan güncellemenizi sağlar:
- Yeni bir başlangıç zindanı etkinleştirmek veya devre dışı bırakmak gibi, özellikleri açıp kapatın.
- Patron sağlık, 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.
Ayarlar, anahtarlar ve değerler şeklinde gelir. Kodunuzda sabit kodlanmış sabitler yerine, bir değeri (dize, sayı, boolean veya JSON nesnesi) almak için anahtarı kullanabilir ve o değeri istediğiniz zaman güncelleyebilirsiniz; deneyiminizin yeni bir sürümünü yayınlamanıza gerek kalmaz. Gerekli kod değişiklikleri minimumdur:
local ConfigService = game:GetService("ConfigService")
local configSnapshot = ConfigService:GetConfigAsync()
local myValue = configSnapshot:GetValue("my_key_name")Herhangi bir zamanda en fazla 1.000 aktif ayarınız olabilir ve bunları Creator Hub veya Roblox Studio'da yönetebilirsiniz.

Ayarları oluşturma ve düzenleme
Deneyiminiz için Creator Hub Ayarlar sayfasında, Ayar oluştur butonuna tıklayın.
Bir anahtar, bir tür, bir değer belirleyin ve isteğe bağlı olarak, bu ayarın amacını daha sonra sizin veya ekibinizin tanıyabilmesi için bir açıklama ekleyin. Desteklenen türler dize, sayı, boolean ve JSON nesnesidir.
Oluşturulan kod parçasını deneyiminizde, muhtemelen ServerScriptService içinde bir sunucu betiğine kopyalayın. Kod şu şekilde görünmelidir:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local MY_KEY = "my_key" -- isteğe bağlı, ayar anahtarını bir sabit olarak saklayınlocal myValue = configSnapshot:GetValue(MY_KEY)Değeri, diğer değişkenler gibi kullanın. Ayarlar, kodunuz içinde kullanılmadığı sürece hiçbir şey yapmaz.
Betiklerinizde ayarlarla ilgili daha fazla bilgi için, Kodunuza ayar ekleyin kısmına bakın.
Bir ayarı düzenlemek, bir ayar oluşturmaktan farksızdır. Düzenle düğmesine tıklayın ve değeri ve açıklamayı istediğiniz şekilde güncelleyin.
Sınırlamalar
Ayar 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 tamsayı temsilleri için |
| Boolean | Yok |
| JSON | 100.000 karakter |
Ayarları yayınlama
Bir ayar oluşturduktan sonra, kamuya açık hale gelmeden önce test edebilmeniz için aşamalı bir duruma geçer. Aşamalı değişiklikler, sizin ve ekibinizin Studio oynama oturumlarında kullanılabilir, ancak canlı deneyimlerde oyunculara sunulmaz. Creator Hub'daki Ayarlar sayfası, tüm aktif ve aşamalı değişiklikleri gösterir.

- Aşamalı değişikliklerinizi test ettikten sonra, Şimdi Yayınla butonuna tıklayarak tüm oyunculara beş dakika içinde yayınlayın. Eğer daha uzun bir yayım süresini tercih ediyorsanız 15 dakikada Yayınla seçeneğini de tercih edebilirsiniz.
- (Tavsiyeli) Ne güncellediğinizi belirtmek için bir tanımlayıcı yayın mesajı ekleyin. Bu mesaj, Geçmiş sayfasında görünecek ve sizin ve ekibinizin değişikliğin amacını daha sonra tanımasına yardımcı olabilir.
Studio'da ayarları oluşturma ve düzenleme
İsterseniz, Roblox Studio'da ayarları oluşturabilir, düzenleyebilir, aşamalı hale getirebilir ve yayınlayabilirsiniz. Aracı açmak için Dosya > Ayarları Aç'a tıklayın. Studio arayüzü, yeni değerleri aşamalı hale getirmek ve test etmek için özellikle kullanışlıdır.

Başka bir deneyime ayar yayınlama
Yalnızca Studio'da, ayarları başka bir deneyime yayınlayabilirsiniz; bu, o deneyimin ayarlarını tamamen yok eder. Bu, bir aşama veya geliştirme deneyiminden canlı deneyime ayarları senkronize etmek için özellikle faydalı olabilir. Studio aracında Yayınlanmış sekmesine gidin ve Olarak Yayınla seçeneğine tıklayın.

Geçmişi görüntüleme ve ayarları geri yükleme
Ayarlar sayfasında, geçmiş güncellemeleri görmek için Geçmiş butonuna tıklayın. Her güncellemenin değişiklik zamanı ve tarihi, değişikliği yapan kişi ve yayın mesajı vardır.

- Her satırı genişleterek anahtarı, değişiklik öncesi değeri ve sonraki değeri görebilirsiniz.
- Anahtarları aramak için Anahtar Ara kutusunu kullanın - açıklamalar veya değerler değil, yalnızca anahtarlar için.
Geçmiş sayfası ayrıca ayarları önceki bir duruma geri yüklemenizi de sağlar:
- "önceki" değeri aşamalı hale getirmek için değişikliğin yanındaki Geri Yükle butonuna tıklayın. Lütfen bir ayarı geri yüklemenin mevcut aşamalı değişiklikleri yok edeceğini unutmayın.
- Ayarlar sayfasına geri dönün ve ayarları yayınlayın.
Koduza ayar ekleyin
Ayarlarla ç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. Müşteri betiklerinden yöntemlerini çağırmaya çalışmak bir hata oluşturur.
Ayarlarla çalışmanın ilk adımı, mevcut zaman noktasındaki tüm ayarların en son değerlerini almak için bir ConfigSnapshot elde etmektir. Bir anlık görüntü elde etmek için iki yöntem vardır:
ConfigService:GetConfigAsync(), deneyimde tüm oyunculara uygulanmasını istediğiniz global ayarlar içindir:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local bossHealth = configSnapshot:GetValue("bossHealth")ConfigService:GetConfigForPlayerAsync() ise deneyler içindir. Bu, farklı oyuncuların farklı değerler alabilmesi için oyuncuya özel ayarları getirir.
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.
Anlık görüntüleri yenileme
ConfigSnapshots, anlık görüntüyü talep ettiğinizdeki yapılandırmanın durumunu temsil eder. Oyun deneyimini bozmayı önlemek için, bir ayardaki 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 dalgalanmaması için yalnızca turlar arasında yeni ayar değerlerini 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, belirli bir anahtarın değişikliklerini dinlemek için ConfigSnapshot:GetValueChangedSignal() yöntemini kullanabilirsiniz, böylece oyun deneyiminizin kodunu güncelleyebilirsiniz:
configSnapshot:GetValueChangedSignal("bossHealth"):Connect(function(newHealthValue)
spawnNewBoss(newHealthValue)
end)Hata yönetimi
Nadir durumlarda yapılandırma yüklenemediğinde ve daha önce hiç yüklenmediğinde, ConfigService:GetConfigAsync() bir hata fırlatır.
Eğer ConfigService, daha önce yüklendiği Robloks 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, yeni güncellemeleri yüklediklerinde yeniden bağlanmaya çalışır ve UpdateAvailable olayını tetikler.
Bu alışılmadık durumları nasıl yöneteceğiniz size kalmıştır. Çağrıyı pcall() içinde sarmalayabilir ve kodunuzda yedek değerler kullanabilir, oyuncuya bir hata gösterebilir ve anlık görüntünün yeniden bağlanmasını bekleyebilir veya başka bir çözüm uygulayabilirsiniz.
Ayarları test etme
ConfigService, hem Studio'da hem de canlı sunucularda tüm deneyimi etkilemeden geçici olarak ayar değişikliklerini test etmek için yerleşik yöntemlere sahiptir.
Yerel bir test değeri ayarlamak için ConfigService:SetTestingValue() çağrısını bir sunucu betiğinden veya Geliştirici Konsolu aracılığıyla yapın. Test değerlerindeki değişiklikler, ConfigSnapshot.UpdateAvailable sinyalinin yanı sıra bir ayar güncellemesini tetikler. Üretim güncellemesi gibi, test değerini almak için mevcut anlık görüntüleri yenilemelisiniz:
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, geçerli oyun oturumuna uygulanır ve canlı sunucuları etkilemez. Test değişikliklerini manuel olarak temizlemek için ConfigService:ClearTestingValue() kullanabilirsiniz.