Deneyim yapılandırmaları

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

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.

Creator Hub'daki Yapılandırmalar sayfasının genel görünümü

Yapılandırmaları oluşturma ve düzenleme

  1. Deneyiminiz için Creator Hub Yapılandırmalar sayfasında Yapılandırma oluştur butonuna tıklayın.

  2. 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.

  3. (İ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.

  4. 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ın
    local 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ın
    local function onPlayerAdded(player)
    local playerConfigSnapshot = ConfigService:GetConfigForPlayerAsync(player)
    local myValue = playerConfigSnapshot:GetValue(MY_KEY)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  5. 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ürMaksimum boyut
Dize100.000 karakter
Sayı±1.7976931348623157e+308, ±2^53 kesin tam sayı temsilleri için
BooleanN/A
JSON100.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.

Yayınlanmamış değişiklikleri gösteren Yapılandırmalar sayfası
  1. 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.
  2. (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.

ÖzellikAçıklama
ÜlkeOyuncunun coğrafi konumu.
DilOyuncunun dil ayarı.
Yeni mi yoksa geri dönen miOyuncunun deneyiminizi ilk kez oynayıp oynamadığı veya daha önce oynayıp oynamadığı.
KaynakOyuncunun deneyiminizi nasıl bulduğu, örneğin ana sayfa önerisi, arama veya sponsorlu reklam.
Kullanıcının ilk oynadığı zamanOyuncunun 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 durumuOyuncunun 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 durumuOyuncunun 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şimiOyuncunun 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 durumuOyuncunun Roblox platformu genelinde aktif bir harcayıcı olup olmadığı. Günlük olarak hesaplanır.
Platform etkinlik durumuOyuncunun 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:

  1. Mevcut bir koşulu seçin veya Yeni bir tane oluştur butonuna tıklayın.
  2. Bir veya daha fazla kural ekleyin.
  3. 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.

Yapılandırma için koşullu kuralları gösteren Hedefleme ekle adımı

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ırmalarla çalışmak için Studio penceresi

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.

  1. Roblox Studio'da, üst menüye gidin ve Dosya > Yapılandırmaları Aç seçeneğini seçin.

  2. Yapılandırmalar widget'ının Yayınlanan sekmesinde, ⋮ simgesine tıklayın ve Yayınla Olarak seçeneğini seçin.

    Yapılandırmaları deneyimlere yayınlama
  3. Görünen diyalogda, düzenleme izinlerinizin bulunduğu gruplar listesinden hedef deneyimi bulun ve seçin.

    Yapılandırmaları deneyimlere yayınlama

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.

Bir yapılandırma değeri için genişletilmiş fark ile geçmiş sayfası

  • 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:

  1. "ö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.
  2. 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")
    end
    Players.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.

©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.