Mevcut özellikler
Varsayılan Roblox eşleştirme yapılandırması, oyuncu konumu, yaş grubu ve gecikme gibi mevcut özelliklere dayanan sinyalleri kullanır.
Roblox'un varsayılan yapılandırmasında otomatik olarak dahil etmediği verileri eşleştirme için kullanmak istiyorsanız, özel özellikler ve özel sinyaller oluşturmanız gerekir.
| Özellik | Tür | Açıklama |
|---|---|---|
| Tahmini Oyuncu Gecikmesi | Sayısal | Bir oyuncunun bir sunucudaki tahmini gecikmesi. |
| Arkadaşları 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ünde 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 dayanan Roblox tanımlı sinyallerdir:
| Sinyal | Açıklama |
|---|---|
| Yaş | Sunucudaki oyuncuların ortalama yaşı ile katılan oyuncunun yaşı arasındaki fark, maksimum ilgili fark 25'tir. |
| Cihaz Türü | Sunucudaki katılan oyuncuyla aynı cihaz türüne sahip oyuncuların 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 | Katılan oyuncunun bir sunucu için delta ping'i, bu, oyuncunun en iyi erişilebilir veri merkezinde ulaşabileceği en düşük ping'in üzerindeki tahmini ping'dir, maksimum ilgili değer 100'dür. |
| Dil | Sunucudaki katılan oyuncuyla aynı dile sahip oyuncuların 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, maksimum ilgili fark 4.6'dır. |
| Sesli Sohbet | Sunucudaki sesli sohbet etkin olan oyuncuların oranı. |
| Metin Sohbeti | Sunucudaki katılan oyuncuyla birlikte metin sohbeti yapabilen oyuncuların oranı. |
Yaş
Bir sunucudaki oyuncuların ortalama yaşlarını katılan oyuncunun yaşıyla karşılaştıran sayısal bir sinyal. Bu sinyalin maksimum ilgili farkı 25'tir. Sinyal puanı, yaş farkıyla ters orantılıdır; yani daha düşük yaş farkları daha yüksek puanlara 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: Bilgisayar, mobil cihaz, tablet, konsol ve VR cihazıdı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 ayrıca maksimum ilgili değeri 1 olan sayısal bir sinyal olarak da düşünülebilir.
Dil
Katılan oyuncuyla aynı dil ayarına sahip sunucudaki oyuncuların oranını ölçen kategorik bir sinyal.
Gecikme
Katılan oyuncunun bir sunucuda oynarsa milisaniye cinsinden delta ping'ini ölçen sayısal bir sinyal, bu, oyuncunun en iyi erişilebilir veri merkezinde ulaşabileceği en düşük ping'in üzerindeki tahmini ping'dir. Bu sinyalin maksimum ilgili değeri 100 milisaniyedir. Sinyal puanı, delta ping ile ters orantılıdır; yani daha düşük delta ping değerleri daha yüksek puanlara sahiptir.
Dolu Olma Oranı
Sunucudaki oyuncuların oranını sunucunun kapasitesine ölçen sayısal bir sinyal.
Oyun Geçmişi
Oyun Geçmişi özellik değeri, bir oyuncunun son 28 günde 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ğerini katılan oyuncunun Oyun Geçmişi değeriyle karşılaştırır. Bu sinyalin maksimum ilgili farkı 4.6'dır. Sinyal puanı, oyun geçmişi farkıyla ters orantılıdır; yani daha düşük oyun geçmişi farkları daha yüksek puanlara sahiptir.
, burada
Sesli Sohbet
Bir oyuncunun sesli sohbeti etkin veya devre dışı olabilir. 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.
Bir yer sesli sohbeti devre dışıysa, Sesli Sohbet sinyalinin ağırlığı 0'dır.
Metin Sohbeti
Katılan oyuncuyla birlikte metin sohbeti yapabilen sunucudaki 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 bakın. Mevcut Roblox özellikleri hakkında daha fazla bilgi için Mevcut özellikler sayfasına bakın.
| Özellik | Özellikler |
|---|---|
| Oyuncu | Kalıcı Bir oyuncunun oyundaki 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 sürer Sunucuya özgü veriler, sunucu seviyesi veya oyun modu gibi 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ı ayarlar
MatchmakingService:InitializeServerAttributesForStudio({
Level = "İleri Düzey",
Elo = 123.456,
TrainingMode = true
})
end
-- Seviye özelliğini alır
local currentLevel, errorMessage = MatchmakingService:GetServerAttribute("Level")
if errorMessage then
warn(errorMessage)
else
print("Mevcut seviye: " .. currentLevel)
end
-- Seviye özelliği değerini İleri Düzey olarak günceller
local success, errorMessage = MatchmakingService:SetServerAttribute("Level", "İleri Düzey")
if not success then
warn("Sunucu özelliği [Level] değerini [İleri Düzey] olarak güncellemeyi başaramadı: " .. errorMessage)
else
print("Başarıyla [Level] değerini [İleri Düzey] olarak ayarlandı")
endÖzel sinyaller
Özel sinyaller, sizin tarafınızdan oluşturulur ve tanımlanır ve 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 farklar puanı düşürür veya artırır. Örneğin, bir oyuncunun yetenek seviyesi sunucudaki ortalama yetenek seviyesine ne kadar yakınsa, sayısal sinyalin puanı o kadar yüksektir. Bu puan daha sonra sinyalin ağırlığı ile çarpılır.
- Kategorik sinyaller, dizeler veya boole'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 da 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 bakın. Mevcut Roblox sinyalleri hakkında daha fazla bilgi için Mevcut sinyaller sayfasına bakın.
Oyuncu sayısal
Katılan oyuncu
Sunucunun ortalama oyuncu özelliği ile katılan oyuncunun özelliği arasındaki farkı en aza indirir. 1000'in üzerindeki farklar 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 server_average_Elo = 2000
local joining_player_Elo = 1000
local max_relevant_difference = 1500
local diff = math.abs(server_average_Elo - joining_player_Elo)
local score = 1 - math.min(diff / max_relevant_difference, 1)
return scoreSabit değer
Sunucunun ortalama oyuncu özelliği ile 500 sabit değeri arasındaki farkı en aza indirir. 1000'in üzerindeki farklar 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 server_sum_PowerLevel = 4500
local joining_player_PowerLevel = 9901
local max_relevant_difference = 1500
local constant_value = 5000
local diff = math.abs(server_sum_PowerLevel + joining_player_PowerLevel - constant_value)
local score = 1 - math.min(diff / max_relevant_difference, 1)Oyuncu kategorik
Kümeleme
Katılan oyuncunun özelliğiyle aynı özelliğe sahip sunucudaki oyuncuların oranını 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şitlendirme
Katılan oyuncunun özelliğinden farklı bir özelliğe sahip sunucudaki oyuncuların oranını 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ı en aza indirir. 1000'in üzerindeki farklar 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 server_Level = 4500
local joining_player_Level = 9000
local max_relevant_difference = 1500
local diff = math.abs(server_Level - joining_player_Level)
local score = 1 - math.min(diff / max_relevant_difference, 1)Sabit değer
Sunucunun özellik değeri ile bir sabit değer arasındaki farkı en aza indirir. Bu sabit değerin üzerindeki farklar 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 server_GameTime = 500
local max_relevant_difference = 1000
local constant_value = 1000
local diff = math.abs(server_GameTime - constant_value)
local score = math.min(diff / max_relevant_difference, 1)Sunucu kategorik
Katılan oyuncuyla karşılaştırma
Sunucunun özellik değeri (örneğin, Oyun Modu) katılan oyuncunun özellik değeri (örneğin, Tercih Edilen Oyun Modu) ile eşit olduğunda 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 server_GameMode = "Hayatta Kalma"
local joining_player_GameMode = "Hayatta Kalma"
if server_GameMode == joining_player_GameMode then
return 1
else
return 0
endSabit değerle karşılaştırma
Sunucunun özellik değeri, sabit bir değer olan true ile eşit olduğunda puan 1'dir. Aksi takdirde, sinyal puanı 0'dır.
if server_{attribute_name} == constant_value then
return 1
else
return 0
endlocal server_GameNotStarted = true
if server_GameNotStarted == true then
return 1
else
return 0
end