Atribut dan sinyal

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Atribut yang ada

Konfigurasi pencocokan default Roblox menggunakan sinyal berdasarkan atribut yang ada seperti lokasi pemain, kelompok umur, dan latensi.

Untuk menggunakan data untuk pencocokan yang tidak secara otomatis disertakan dalam konfigurasi default Roblox, Anda perlu membuat atribut kustom dan sinyal kustom.

AtributTipeDeskripsi
Perkiraan Latensi PemainNumerikLatensi yang diperkirakan dari seorang pemain di dalam server.
Memiliki TemanKategorikalApakah server memiliki teman atau pemain lain dengan alamat IP yang sama dengan pemain yang bergabung.
Apakah Suara Chat DiaktifkanKategorikalApakah seorang pemain telah mengaktifkan obrolan suara.
Usia PemainNumerikUsia pemain.
Tipe Perangkat PemainKategorikalTipe perangkat pemain. Bisa berupa perangkat mobile, komputer, tablet, konsol, atau perangkat VR.
Bahasa PemainKategorikalBahasa yang digunakan oleh pemain.
Riwayat Bermain PemainNumerikLog-10 jumlah menit seorang pemain telah bermain di suatu universe dalam 28 hari terakhir.
Kepadatan ServerNumerikJumlah pemain di dalam server.
Grup Obrolan Teks PemainKategorikalGrup obrolan teks pemain di mana mereka dapat berkomunikasi satu sama lain.

Sinyal yang ada

Berikut adalah sinyal yang didefinisikan oleh Roblox yang diperoleh berdasarkan atribut Roblox:

SinyalDeskripsi
UsiaPerbedaan antara rata-rata usia pemain di server dan usia pemain yang bergabung, dengan perbedaan maksimum relevan 25.
Tipe PerangkatRasio pemain di server dengan tipe perangkat yang sama dengan pemain yang bergabung.
TemanJumlah orang di server yang merupakan teman pemain yang bergabung atau yang berbagi alamat IP dengan pemain yang bergabung. 1 jika ada pemain yang diutamakan, 0 jika tidak.
LatensiLatensi pemain yang diperkirakan untuk sebuah server, dengan nilai maksimum relevan 250.
BahasaRasio pemain di server dengan bahasa yang sama dengan pemain yang bergabung
KepadatanRasio pemain di server dibandingkan dengan kapasitas server.
Riwayat BermainPerbedaan antara rata-rata nilai Riwayat Bermain di server dan nilai Riwayat Bermain pemain yang bergabung, dengan perbedaan maksimum relevan 4.6.
Obrolan SuaraRasio pemain di server dengan obrolan suara yang diaktifkan.
Obrolan TeksRasio pemain di server yang dapat berkomunikasi melalui obrolan teks dengan pemain yang bergabung.

Usia

Sinyal numerik yang membandingkan rata-rata usia pemain di server dengan usia pemain yang bergabung. Sinyal ini memiliki perbedaan relevan maksimum 25. Skor sinyal berkorelasi terbalik dengan perbedaan usia, yang berarti perbedaan usia yang lebih rendah memiliki skor yang lebih tinggi.

ageDifferenceSignalScore=1min(25,ageDifference)/25\text{ageDifferenceSignalScore} = 1 - \min(25, \text{ageDifference}) / 25

di mana

ageDifference=avgServerAgejoiningPlayerAge\text{ageDifference} = |\text{avgServerAge} - \text{joiningPlayerAge}|

Tipe Perangkat

Sinyal kategorikal yang mengukur rasio pemain di server dengan tipe perangkat yang sama dengan pemain yang bergabung. Tipe perangkat mencakup: Komputer, perangkat mobile, tablet, konsol, dan perangkat VR.

deviceTypeSignalScore=# pemain dengan perangkat yang sama seperti pemain yang bergabung/# pemain di server\text{deviceTypeSignalScore} = \text{\# pemain dengan perangkat yang sama seperti pemain yang bergabung} / \text{\# pemain di server}

Teman

Pemain yang diutamakan adalah pemain yang merupakan teman dengan pemain yang bergabung atau yang berbagi alamat IP yang sama dengan pemain yang bergabung. Sinyal Teman adalah sinyal kategorikal dengan skor 1 ketika ada pemain yang diutamakan di server dan skor 0 ketika tidak ada pemain yang diutamakan di server.

friendsSignalScore=hasFriends ? 1:0\text{friendsSignalScore} = \text{hasFriends} \ {?} \ 1 : 0

Sinyal Teman juga dapat dianggap sebagai sinyal numerik dengan nilai maksimum relevan 1.

friendsSignalScore=min(# pemain yang diutamakan di server,1)/1\text{friendsSignalScore} = \min(\text{\# pemain yang diutamakan di server}, 1) / 1

Bahasa

Sinyal kategorikal yang mengukur rasio pemain di server yang memiliki pengaturan bahasa yang sama dengan pemain yang bergabung.

languageSignalScore=# pemain dengan pengaturan bahasa yang sama seperti pemain yang bergabung/# pemain di server\text{languageSignalScore} = \text{\# pemain dengan pengaturan bahasa yang sama seperti pemain yang bergabung} / \text{\# pemain di server}

Latensi

Sinyal numerik yang mengukur waktu pings yang diperkirakan dalam milidetik dari pemain yang bergabung jika mereka bermain di server. Sinyal ini memiliki nilai maksimum relevan 250 milidetik. Skor sinyal berkorelasi terbalik dengan ping, yang berarti nilai ping yang lebih rendah memiliki skor yang lebih tinggi.

latencySignalScore=1min(250,estimatedPingMs)/250\text{latencySignalScore} = 1 - \min(250, \text{estimatedPingMs}) / 250

Kepadatan

Sinyal numerik yang mengukur rasio pemain di server terhadap kapasitas server.

occupancySignalScore=# pemain di server/kapasitasServer\text{occupancySignalScore} = \text{\# pemain di server} / \text{kapasitasServer}

Riwayat Bermain

Nilai atribut Riwayat Bermain adalah log-10 jumlah menit seorang pemain telah bermain di suatu universe dalam 28 hari terakhir. Sinyal numerik ini membandingkan nilai rata-rata log-10 Riwayat Bermain pemain di server dengan nilai Riwayat Bermain pemain yang bergabung. Sinyal ini memiliki perbedaan relevan maksimum 4.6. Skor sinyal berkorelasi terbalik dengan perbedaan riwayat bermain, yang berarti perbedaan riwayat bermain yang lebih rendah memiliki skor yang lebih tinggi.

playHistorySignalScore=1min(4.6,playHistoryDifference/4.6)\text{playHistorySignalScore} = 1 - \min(4.6, \text{playHistoryDifference} / 4.6), di mana

playHistoryDifference=avgServerPlayHistoryjoiningPlayerPlayHistory\text{playHistoryDifference} = |\text{avgServerPlayHistory} - \text{joiningPlayerPlayHistory}|

Obrolan Suara

Seorang pemain dapat mengaktifkan atau menonaktifkan obrolan suara. Sinyal Obrolan Suara adalah sinyal kategorikal yang mengukur rasio pemain dengan pengaturan obrolan suara yang sama seperti pemain yang bergabung terhadap jumlah pemain di server.

Jika suatu tempat memiliki obrolan suara yang dinonaktifkan, bobot Sinyal Obrolan Suara adalah 0.

voiceChatSignalScore=# pemain dengan pengaturan obrolan suara yang sama seperti pemain yang bergabung/# pemain di server\text{voiceChatSignalScore} = \text{\# pemain dengan pengaturan obrolan suara yang sama seperti pemain yang bergabung} / \text{\# pemain di server}

Obrolan Teks

Sinyal kategorikal yang mengukur rasio pemain di server yang dapat berkomunikasi melalui obrolan teks dengan pemain yang bergabung secara bersamaan.

textChatSignalScore=# pemain dapat berkomunikasi dengan pemain yang bergabung secara bersamaan /# pemain di server\text{textChatSignalScore} = \text{\# pemain dapat berkomunikasi dengan pemain yang bergabung secara bersamaan } / \text{\# pemain di server}

Atribut kustom

Atribut kustom memberikan akses sinyal kustom ke data pemain dan server. Untuk informasi lebih lanjut tentang cara membuat atribut kustom Anda sendiri, lihat Buat atribut kustom. Untuk informasi lebih lanjut tentang atribut Roblox yang ada, lihat Atribut yang ada.

AtributKarakteristik
PemainPersisten

Data pemain kustom yang persisten di data store, seperti level atau skor pemain di dalam permainan

Dikelola menggunakan API DataStore
ServerTidak persisten dan hanya berlangsung selama server aktif

Data spesifik server seperti level server atau mode permainan

Dikelola menggunakan API MatchmakingService
Contoh atribut pemain

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
end
Contoh atribut server

local MatchmakingService = game:GetService("MatchmakingService")
local RunService = game:GetService("RunService")
if RunService:IsStudio() then
-- Menyiapkan atribut awal dan skema untuk pengujian
MatchmakingService:InitializeServerAttributesForStudio({
Level = "Maju",
Elo = 123.456,
TrainingMode = true
})
end
-- Mengambil atribut Level
local currentLevel, errorMessage = MatchmakingService:GetServerAttribute("Level")
if errorMessage then
warn(errorMessage)
else
print("Level saat ini: " .. currentLevel)
end
-- Memperbarui nilai atribut Level menjadi Maju
local success, errorMessage = MatchmakingService:SetServerAttribute("Level", "Maju")
if not success then
warn("Gagal memperbarui atribut server [Level] menjadi [Maju] karena kesalahan: " .. errorMessage)
else
print("Berhasil mengatur [Level] ke [Maju]")
end

Sinyal kustom

Sinyal kustom dibuat dan didefinisikan oleh Anda dan dapat bersifat numerik atau kategorikal:

  • Sinyal numerik adalah angka. Mereka membandingkan perbedaan antara atribut pemain yang bergabung dan nilai agregat server, dengan perbedaan yang lebih besar mengurangi atau meningkatkan skor. Misalnya, semakin dekat tingkat keterampilan seorang pemain dengan tingkat keterampilan rata-rata server, semakin tinggi skor sinyal numerik tersebut. Skor ini kemudian dikalikan dengan bobot sinyal.
  • Sinyal kategorikal adalah string atau boolean. Mereka didasarkan pada seberapa umum atribut pemain yang bergabung dibandingkan dengan pemain lainnya di server. Misalnya, jika persentase tinggi pemain di dalam server memiliki bahasa yang disukai yang sama dengan pemain yang bergabung, skor meningkat. Skor ini kemudian juga dikalikan dengan bobot sinyal.

Untuk informasi lebih lanjut tentang cara membuat sinyal kustom Anda sendiri, lihat Buat sinyal kustom. Untuk informasi lebih lanjut tentang sinyal Roblox yang ada, lihat Sinyal yang ada.

Pemain numerik

Pemain yang bergabung

Meminimalkan perbedaan antara atribut pemain rata-rata server dan atribut pemain yang bergabung. Perbedaan lebih dari 1000 mengembalikan skor sinyal 0.

Rumus pemain yang bergabung untuk sinyal numerik pemain

local diff = math.abs(server_{aggregation_function}_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return score
Contoh pemain yang bergabung untuk sinyal numerik pemain

local 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 score
Nilai tetap

Meminimalkan perbedaan antara atribut pemain rata-rata server dan nilai tetap 500. Perbedaan lebih dari 1000 mengembalikan skor sinyal 0.

Rumus nilai tetap untuk sinyal numerik pemain

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 score
Contoh nilai tetap untuk sinyal numerik pemain

local 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)

Pemain kategorikal

Klusterisasi

Maksimalkan rasio pemain di server yang memiliki atribut yang sama dengan atribut pemain yang bergabung.

Rumus klusterisasi untuk sinyal kategorikal pemain

local score = num_players_same_{attribute_name} / occupancy
return score
Contoh klusterisasi untuk sinyal kategorikal pemain

local num_players_same_Guild = 15
local occupancy = 19
local score = num_players_same_Guild / occupancy
return score
Divestasi

Maksimalkan rasio pemain di server yang memiliki atribut yang berbeda dari atribut pemain yang bergabung.

Rumus divestasi untuk sinyal kategorikal pemain

local score = num_players_same_{attribute_name} / occupancy
return 1 - score
Contoh divestasi untuk sinyal kategorikal pemain

local num_players_same_RpgClass = 15
local occupancy = 19
local score = num_players_same_RpgClass / occupancy
return score

Server numerik

Pemain yang bergabung

Meminimalkan perbedaan antara atribut server dan atribut pemain yang bergabung. Perbedaan lebih dari 1000 mengembalikan skor sinyal 0.

Rumus pemain yang bergabung untuk sinyal numerik server

local diff = math.abs(server_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return score
Contoh pemain yang bergabung untuk sinyal numerik server

local 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)
Nilai tetap

Meminimalkan perbedaan antara nilai atribut server dan nilai tetap. Perbedaan lebih dari nilai tetap ini mengembalikan skor sinyal 0.

Rumus nilai tetap untuk sinyal numerik server

local diff = math.abs(server_{attribute_name} - constant_value)
local score = math.min(diff / max_relevant_difference, 1)
return score
Contoh nilai tetap untuk sinyal numerik server

local 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)

Server kategorikal

Bandingkan dengan pemain yang bergabung

Skor adalah 1 ketika nilai atribut server (misalnya, Mode Permainan) sama dengan nilai atribut pemain (misalnya, Mode Permainan yang Disukai). Jika tidak, skor sinyalnya adalah 0.

Rumus pemain yang bergabung untuk sinyal kategorikal server

if server_{attribute_name} == joining_player_{attribute_name} then
return 1
else
return 0
end
Contoh pemain yang bergabung untuk sinyal kategorikal server

local server_GameMode = "Survival"
local joining_player_GameMode = "Survival"
if server_GameMode == joining_player_GameMode then
return 1
else
return 0
end
Bandingkan dengan nilai tetap

Skor adalah 1 ketika nilai atribut server sama dengan nilai tetap true. Jika tidak, skor sinyalnya adalah 0.

Rumus nilai tetap untuk sinyal kategorikal server

if server_{attribute_name} == constant_value then
return 1
else
return 0
end
Contoh nilai tetap untuk sinyal kategorikal server

local server_GameNotStarted = true
if server_GameNotStarted == true then
return 1
else
return 0
end
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.