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 usia, dan latensi.

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

AtributTipeDeskripsi
Perkiraan Latensi PemainNumerikPerkiraan latensi seorang pemain di server.
Memiliki TemanKategorikalApakah server memiliki teman atau pemain lain dengan alamat IP yang sama dengan pemain yang bergabung.
Apakah Obrolan Suara DiaktifkanKategorikalApakah pemain memiliki obrolan suara yang diaktifkan.
Usia PemainNumerikUsia pemain.
Tipe Perangkat PemainKategorikalTipe perangkat pemain. Bisa berupa perangkat mobile, komputer, tablet, konsol, atau perangkat VR.
Bahasa PemainKategorikalBahasa pemain.
Riwayat Permainan PemainNumerikJumlah log-10 menit yang telah dimainkan pemain dalam suatu universe dalam 28 hari terakhir.
Kepadatan ServerNumerikJumlah pemain di server.
Grup Obrolan Teks PemainKategorikalGrup obrolan teks pemain di mana mereka dapat obrolan teks bersama.

Sinyal yang ada

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

SinyalDeskripsi
UsiaSelisih antara usia rata-rata pemain di server dan usia pemain yang bergabung, dengan selisih maksimum yang relevan sebesar 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 ada.
LatensiDelta ping pemain yang bergabung untuk server, yang merupakan perkiraan ping di atas ping terendah yang dapat dicapai pemain di pusat data terbaik yang dapat dijangkau, dengan nilai maksimum yang relevan sebesar 100.
BahasaRasio pemain di server dengan bahasa yang sama dengan pemain yang bergabung.
KepadatanRasio pemain di server dibandingkan dengan kapasitas server.
Riwayat PermainanSelisih antara riwayat permainan rata-rata di server dan riwayat permainan pemain yang bergabung, dengan selisih maksimum yang relevan sebesar 4.6.
Obrolan SuaraRasio pemain di server dengan obrolan suara yang diaktifkan.
Obrolan TeksRasio pemain di server yang dapat obrolan teks dengan pemain yang bergabung bersama.

Usia

Sinyal numerik yang membandingkan usia rata-rata pemain di server dengan usia pemain yang bergabung. Sinyal ini memiliki selisih maksimum yang relevan sebesar 25. Skor sinyal berhubungan terbalik dengan selisih usia, yang berarti selisih 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 termasuk: 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 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 yang relevan sebesar 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 delta ping pemain yang bergabung dalam milidetik jika mereka bermain di server, yang merupakan perkiraan ping di atas ping terendah yang dapat dicapai pemain di pusat data terbaik yang dapat dijangkau. Sinyal ini memiliki nilai maksimum yang relevan sebesar 100 milidetik. Skor sinyal berhubungan terbalik dengan delta ping, yang berarti nilai delta ping yang lebih rendah memiliki skor yang lebih tinggi.

latencySignalScore=1min(100,deltaPingMs)/100\text{latencySignalScore} = 1 - \min(100, \text{deltaPingMs}) / 100

Kepadatan

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

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

Riwayat Permainan

Nilai atribut Riwayat Permainan adalah jumlah log-10 menit yang telah dimainkan pemain dalam suatu universe dalam 28 hari terakhir. Sinyal numerik ini membandingkan nilai riwayat permainan log-10 rata-rata pemain di server dengan nilai Riwayat Permainan pemain yang bergabung. Sinyal ini memiliki selisih maksimum yang relevan sebesar 4.6. Skor sinyal berhubungan terbalik dengan selisih riwayat permainan, yang berarti selisih riwayat permainan 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 memiliki obrolan suara yang diaktifkan atau dinonaktifkan. Sinyal Obrolan Suara adalah sinyal kategorikal yang mengukur rasio pemain dengan pengaturan obrolan suara yang sama dengan pemain yang bergabung terhadap jumlah pemain di server.

Jika suatu tempat memiliki obrolan suara 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 obrolan teks dengan pemain yang bergabung bersama.

textChatSignalScore=# pemain dapat obrolan teks dengan pemain yang bergabung bersama /# pemain di server\text{textChatSignalScore} = \text{\# pemain dapat obrolan teks dengan pemain yang bergabung bersama } / \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 bertahan di penyimpanan data, seperti level atau skor pemain di dalam permainan

Dikelola menggunakan API DataStore
ServerTidak persisten dan hanya bertahan 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 = "Lanjutan",
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 Lanjutan
local success, errorMessage = MatchmakingService:SetServerAttribute("Level", "Lanjutan")
if not success then
warn("Gagal memperbarui atribut server [Level] menjadi [Lanjutan] karena kesalahan: " .. errorMessage)
else
print("Berhasil mengatur [Level] ke [Lanjutan]")
end

Sinyal Kustom

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

  • Sinyal numerik adalah angka. Mereka membandingkan selisih antara atribut pemain yang bergabung dan nilai agregat server, dengan selisih yang lebih besar menurunkan atau meningkatkan skor. Misalnya, semakin dekat tingkat keterampilan seorang pemain dengan tingkat keterampilan rata-rata server, semakin tinggi skor sinyal numerik. 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 lain di server. Misalnya, jika persentase tinggi pemain di dalam server memiliki bahasa 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 selisih antara atribut pemain rata-rata server dan atribut pemain yang bergabung. Selisih di luar 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 konstan

Meminimalkan selisih antara atribut pemain rata-rata server dan nilai konstan 500. Selisih di luar 1000 mengembalikan skor sinyal 0.

Rumus nilai konstan 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 konstan 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

Pengelompokan

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

Rumus pengelompokan untuk sinyal kategorikal pemain
local score = num_players_same_{attribute_name} / occupancy
return score
Contoh pengelompokan untuk sinyal kategorikal pemain
local num_players_same_Guild = 15
local occupancy = 19
local score = num_players_same_Guild / occupancy
return score
Diversifikasi

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

Rumus diversifikasi untuk sinyal kategorikal pemain
local score = num_players_same_{attribute_name} / occupancy
return 1 - score
Contoh diversifikasi 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 selisih antara atribut server dan atribut pemain yang bergabung. Selisih di luar 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 konstan

Meminimalkan selisih antara nilai atribut server dan nilai konstan. Selisih di luar nilai konstan ini mengembalikan skor sinyal 0.

Rumus nilai konstan 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 konstan 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 Diutamakan). Jika tidak, skor sinyal 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 konstan

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

Rumus nilai konstan untuk sinyal kategorikal server
if server_{attribute_name} == constant_value then
return 1
else
return 0
end
Contoh nilai konstan 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.