Mevcut özellikler
Varsayılan Roblox eşleştirme yapılandırması, oyuncu konumu, yaş grubu ve gecikme gibi mevcut özelliklere dayalı sinyalleri kullanır.
Roblox'un varsayılan yapılandırmasında otomatik olarak dahil etmediği verileri eşleştirmek için, özel özellikler ve özel sinyaller oluşturmanız gerekir.
| Özellik | Tür | Açıklama |
|---|---|---|
| Tahmini Oyuncu Gecikmesi | Sayısal | Bir sunucudaki bir oyuncunun tahmini gecikmesi. |
| Arkadaş Var mı | Kategorik | Bir sunucuda katılan oyuncuyla aynı IP adresine sahip bir arkadaş veya başka bir oyuncunun olup olmadığı. |
| Sesli Sohbet Etkin | Kategorik | Bir oyuncunun sesli sohbetinin etkin olup olmadığı. |
| Oyuncu Yaşı | Sayısal | Oyuncunun yaşı. |
| Oyuncu Cihaz Türü | Kategorik | Oyuncunun cihaz türü. Mobil cihaz, bilgisayar, tablet, konsol veya VR cihazı olabilir. |
| Oyuncu Dili | Kategorik | Oyuncunun dili. |
| Oyuncu Oyun Geçmişi | Sayısal | Bir oyuncunun son 28 gün içinde bir evrende oynadığı dakika sayısının log-10'u. |
| Sunucu Dolu Olma Oranı | Sayısal | Bir sunucudaki oyuncu sayısı. |
| Oyuncu Metin Sohbet Grubu | Kategorik | Oyuncunun birlikte metin sohbeti yapabileceği metin sohbet grubu. |
Mevcut sinyaller
Aşağıdakiler, Roblox özelliklerine dayalı olarak tanımlanan sinyallerdir:
| Sinyal | Açıklama |
|---|---|
| Yaş | Sunucudaki oyuncuların ortalama yaşı ile katılan oyuncunun yaşı arasındaki fark, en fazla 25 ile ilgili farklılık. |
| Cihaz Türü | Sunucudaki oyuncuların katılan oyuncuyla aynı cihaz türüne sahip olma oranı. |
| Arkadaşlar | Sunucudaki katılan oyuncuyla arkadaş olan veya katılan oyuncuyla aynı IP adresini paylaşan kişi sayısı. Tercih edilen bir oyuncu varsa 1, aksi takdirde 0. |
| Gecikme | Bir sunucudaki tahmini oyuncu gecikmesi, en fazla 250 ile ilgili değer. |
| Dil | Sunucudaki oyuncuların katılan oyuncuyla aynı dile sahip olma oranı. |
| Dolu Olma Oranı | Sunucudaki oyuncu sayısının sunucunun kapasitesine oranı. |
| Oyun Geçmişi | Sunucudaki ortalama oyun geçmişi ile katılan oyuncunun oyun geçmişi arasındaki fark, en fazla 4.6 ile ilgili farklılık. |
| Sesli Sohbet | Sunucudaki sesli sohbetin etkin olduğu oyuncuların oranı. |
| Metin Sohbeti | Sunucudaki katılan oyuncuyla birlikte metin sohbeti yapabilen oyuncuların oranı. |
Yaş
Katılan oyuncunun yaşı ile sunucudaki oyuncuların ortalama yaşı arasındaki farkı karşılaştıran sayısal bir sinyal. Bu sinyalin en fazla 25 ile ilgili farkı vardır. Sinyal puanı, yaş farkıyla ters orantılıdır; yani daha düşük yaş farklılıkları daha yüksek puana sahiptir.
burada
Cihaz Türü
Katılan oyuncuyla aynı cihaz türüne sahip sunucudaki oyuncuların oranını ölçen kategorik bir sinyal. Cihaz türleri arasında: Bilgisayar, mobil cihaz, tablet, konsol ve VR cihazı bulunmaktadır.
Arkadaşlar
Tercih edilen bir oyuncu, katılan oyuncuyla arkadaş olan veya katılan oyuncuyla aynı IP adresini paylaşan bir oyuncudur. Arkadaşlar sinyali, sunucuda bir tercih edilen oyuncu olduğunda 1 puan, sunucuda tercih edilen oyuncu olmadığında 0 puan alan kategorik bir sinyaldir.
Arkadaşlar sinyali aynı zamanda maksimum ilgili değeri 1 olan sayısal bir sinyal olarak da kabul edilebilir.
Dil
Katılan oyuncuyla aynı dil ayarına sahip sunucudaki oyuncuların oranını ölçen kategorik bir sinyal.
Gecikme
Eğer katılan oyuncu bir sunucuda oynarsaydı, katılan oyuncunun gecikme süresinin tahmini ping süresini milisaniye cinsinden ölçen sayısal bir sinyal. Bu sinyalin maksimum ilgili değeri 250 milisaniyedir. Sinyal puanı ping ile ters orantılıdır; yani daha düşük ping değerleri daha yüksek puanlar alır.
Dolu Olma Oranı
Bir sunucudaki oyuncu sayısının sunucunun kapasitesine oranını ölçen sayısal bir sinyal.
Oyun Geçmişi
Oyun Geçmişi özellik değeri, bir oyuncunun son 28 gün içinde bir evrende oynadığı dakika sayısının log-10'udur. Bu sayısal sinyal, sunucudaki oyuncuların ortalama log-10 Oyun Geçmişi değeri ile katılan oyuncunun Oyun Geçmişi değerini karşılaştırır. Bu sinyalin en fazla 4.6 ile ilgili farkı vardır. Sinyal puanı, oyun geçmişi farkıyla ters orantılıdır; yani daha düşük oyun geçmişi farklılıkları daha yüksek puanlar alır.
, burada
Sesli Sohbet
Bir oyuncunun sesli sohbetinin etkin veya devre dışı olması mümkündür. Sesli Sohbet sinyali, katılan oyuncuyla aynı sesli sohbet ayarına sahip oyuncuların oranını sunucudaki oyuncu sayısına ölçen kategorik bir sinyaldir.
Eğer bir yer sesli sohbet devre dışıysa, Sesli Sohbet sinyalinin ağırlığı 0'dır.
Metin Sohbeti
Katılan oyuncuyla birlikte metin sohbeti yapabilen oyuncuların oranını ölçen kategorik bir sinyal.
Özel özellikler
Özel özellikler, özel sinyallere oyuncu ve sunucu verilerine erişim sağlar. Kendi özel özelliklerinizi oluşturma hakkında daha fazla bilgi için Özel bir özellik oluşturun sayfasına göz atın. Mevcut Roblox özellikleri hakkında daha fazla bilgi için Mevcut özellikler sayfasına göz atın.
| Özellik | Özellikler |
|---|---|
| Oyuncu | Kalıcı Oyun içindeki bir oyuncunun seviyesi veya puanı gibi veri depolarında kalıcı olan özel oyuncu verisi DataStore API'leri kullanılarak yönetilir |
| Sunucu | Kalıcı değildir ve yalnızca sunucu aktif olduğu sürece devam eder Sunucu düzeyi veya oyun modu gibi sunucuya özel veriler MatchmakingService API'si kullanılarak yönetilir |
local DataStoreService = game:GetService("DataStoreService")
local eloStore = DataStoreService:GetDataStore("PlayerElo")
function onMatchEnded(players: {Player}, winners: {Player}, losers: {Player})
for _, player in players do
local updatedElo = CalculateUpdatedElo(player, winners, losers)
local success, errorMessage = pcall(function()
eloStore:SetAsync(player.UserId, updatedElo)
end)
end
endlocal MatchmakingService = game:GetService("MatchmakingService")
local RunService = game:GetService("RunService")
if RunService:IsStudio() then
-- Test için başlangıç özelliklerini ve şemasını ayarlayıp
MatchmakingService:InitializeServerAttributesForStudio({
Level = "İleri Seviye",
Elo = 123.456,
TrainingMode = true
})
end
-- Level özelliğini alır
local currentLevel, errorMessage = MatchmakingService:GetServerAttribute("Level")
if errorMessage then
warn(errorMessage)
else
print("Mevcut seviye: " .. currentLevel)
end
-- Level özellik değerini İleri Seviye olarak günceller
local success, errorMessage = MatchmakingService:SetServerAttribute("Level", "İleri Seviye")
if not success then
warn("Sunucu özelliğini [Level] [İleri Seviye] olarak güncelleme başarısız oldu: " .. errorMessage)
else
print("Başarıyla [Level] [İleri Seviye] olarak ayarlandı.")
endÖzel sinyaller
Özel sinyalleri siz oluşturup tanımlayabilirsiniz ve bu sinyaller sayısal veya kategorik olabilir:
- Sayısal sinyaller sayılardır. Katılan oyuncunun özelliği ile sunucunun toplanmış değeri arasındaki farkı karşılaştırır; daha büyük farklılıklar puanı düşürür veya artırır. Örneğin, bir oyuncunun beceri düzeyi sunucunun ortalama beceri düzeyine ne kadar yakınsa, sayısal sinyalin puanı o kadar yüksek olur. Bu puan daha sonra sinyalin ağırlığı ile çarpılır.
- Kategorik sinyaller ise dizeler veya boolean'lardır. Katılan oyuncunun özelliğinin sunucudaki diğer oyuncularla karşılaştırıldığında ne kadar yaygın olduğuna dayanır. Örneğin, sunucudaki oyuncuların yüksek bir yüzdesi katılan oyuncuyla aynı tercih edilen dile sahipse, puan artar. Bu puan daha sonra ayrıca sinyalin ağırlığı ile çarpılır.
Kendi özel sinyallerinizi oluşturma hakkında daha fazla bilgi için Özel bir sinyal oluşturun sayfasına göz atın. Mevcut Roblox sinyalleri hakkında daha fazla bilgi için Mevcut sinyaller sayfasına göz atın.
Oyuncu sayısal
Katılan oyuncu
Sunucunun ortalama oyuncu özelliği ile katılan oyuncunun özelliği arasındaki farkı minimize eder. 1000'in üzerindeki farklılıklar 0 sinyal puanı döndürür.
local diff = math.abs(server_{aggregation_function}_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return scorelocal sunucu_ortalama_Elo = 2000
local katılan_oyuncu_Elo = 1000
local max_ilişkili_fark = 1500
local diff = math.abs(sunucu_ortalama_Elo - katılan_oyuncu_Elo)
local score = 1 - math.min(diff / max_ilişkili_fark, 1)
return scoreSürekli değer
Sunucunun ortalama oyuncu özelliği ile 500'lik bir sabit değer arasındaki farkı minimize eder. 1000'in üzerindeki farklılıklar 0 sinyal puanı döndürür.
local diff = math.abs(server_sum_{attribute_name} + joining_player_{attribute_name} - constant_value)
local score = 1 - math.min(diff / max_relevant_difference, 1)
return scorelocal sunucu_toplam_PowerLevel = 4500
local katılan_oyuncu_PowerLevel = 9901
local max_ilişkili_fark = 1500
local constant_value = 5000
local diff = math.abs(sunucu_toplam_PowerLevel + katılan_oyuncu_PowerLevel - constant_value)
local score = 1 - math.min(diff / max_ilişkili_fark, 1)Oyuncu kategorik
Kümeleme
Sunucudaki oyuncuların katılan oyuncunun özelliğiyle aynı özelliğe sahip olanlar arasındaki oranı maksimize eder.
local score = num_players_same_{attribute_name} / occupancy
return scorelocal num_players_same_Guild = 15
local occupancy = 19
local score = num_players_same_Guild / occupancy
return scoreÇeşitlilik
Sunucudaki oyuncuların katılan oyuncunun özelliğinden farklı bir özelliğe sahip olanlar arasındaki oranı maksimize eder.
local score = num_players_same_{attribute_name} / occupancy
return 1 - scorelocal num_players_same_RpgClass = 15
local occupancy = 19
local score = num_players_same_RpgClass / occupancy
return scoreSunucu sayısal
Katılan oyuncu
Sunucunun özelliği ile katılan oyuncunun özelliği arasındaki farkı minimize eder. 1000'in üzerindeki farklılıklar 0 sinyal puanı döndürür.
local diff = math.abs(server_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return scorelocal sunucu_Level = 4500
local katılan_oyuncu_Level = 9000
local max_ilişkili_fark = 1500
local diff = math.abs(sunucu_Level - katılan_oyuncu_Level)
local score = 1 - math.min(diff / max_ilişkili_fark, 1)Sürekli değer
Sunucunun özellik değeri ile bir sabit değer arasındaki farkı minimize eder. Bu sabit değerin üzerindeki farklılıklar 0 sinyal puanı döndürür.
local diff = math.abs(server_{attribute_name} - constant_value)
local score = math.min(diff / max_relevant_difference, 1)
return scorelocal sunucu_OyunZamani = 500
local max_ilişkili_fark = 1000
local constant_value = 1000
local diff = math.abs(sunucu_OyunZamani - constant_value)
local score = math.min(diff / max_ilişkili_fark, 1)Sunucu kategorik
Katılan oyuncu ile karşılaştırma
Eğer sunucunun özellik değeri (örneğin, Oyun Modu) katılan oyuncunun özellik değeri (örneğin, Tercih Edilen Oyun Modu) ile eşitse, puan 1'dir. Aksi takdirde, sinyal puanı 0'dır.
if server_{attribute_name} == joining_player_{attribute_name} then
return 1
else
return 0
endlocal sunucu_OyunModu = "Hayatta Kalma"
local katılan_oyuncu_OyunModu = "Hayatta Kalma"
if sunucu_OyunModu == katılan_oyuncu_OyunModu then
return 1
else
return 0
endSabit bir değerle karşılaştırma
Eğer sunucunun özellik değeri bir sabit değer olan doğruya eşitse, puan 1'dir. Aksi takdirde, sinyal puanı 0'dır.
if server_{attribute_name} == constant_value then
return 1
else
return 0
endlocal sunucu_OyunBaşlamadı = true
if sunucu_OyunBaşlamadı == true then
return 1
else
return 0
end