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 matchmaking Roblox default menggunakan sinyal berdasarkan atribut yang ada seperti lokasi pemain, grupusia, dan kelambatan.

Untuk menggunakan data untuk matchmaking yang Roblox tidak secara otomatis termasuk dalam konfigurasi defaultnya, Anda perlu membuat attribut khusus dan sinyal khusus .

Atribut Jenis Deskripsi
Estimasi Latensi Pemain AngkaEstimasi kelambatan pemain di server.
Memiliki Teman KategorialApakah server memiliki teman atau pemain lain dengan alamat IP yang sama dengan pemain yang bergabung.
Apakah Obrolan Suara Diaktifkan KategorialApakah pemain memiliki obrolan suara yang diaktifkan.
Usia Pemain AngkaUsia pemain.
Jenis Perangkat Pemain Kategorialketikperangkat pemain. Bisa menjadi perangkat seluler, komputer, tablet, konsol, atau perangkat VR.
Bahasa Pemain KategorialBahasa pemain.
Histori Permainan Pemain AngkaAngka log-10 menit yang dimainkan pemain di alam semesta dalam 28 hari terakhir.
Penggunaan Server AngkaJumlah pemain di server.

Sinyal yang ada

Berikut adalah sinyal yang didefinisikan oleh Roblox berdasarkan atribut Roblox:

Sinyal Deskripsi
Usia Perbedaan antara usia rata-rata pemain di server dan usia pemain yang bergabung, dengan perbedaan relevan maksimal 25.
Tipe Perangkat Rasio pemain di server dengan jenis perangkat yang sama dengan pemain bergabung.
Teman Jumlah orang di server yang berteman dengan pemain yang bergabung atau yang berbagi alamat IP dengan pemain bergabung.1 jika ada pemain yang disukai, 0 lainnya.
Latensi Estimasi latensi pemain untuk server, dengan nilai relevan maksimum 250.
Bahasa Rasio pemain di server dengan bahasa yang sama dengan pemain yang bergabung
Pemenuhan Rasio pemain di server dibandingkan dengan kapasitas server.
Histori Permainan Perbedaan antara histori permainan rata-rata di server dan histori permainan pemain yang bergabung, dengan perbedaan relevan maksimum 4.6.
Obrolan Suara Rasio pemain di server dengan obrolan suara aktif.

Usia

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


ageDifferenceSignalScore = 1 - min(25, ageDifference) / 25, where
ageDifference = abs(avgServerAge - joiningPlayerAge)

Jenis Perangkat

Sinyal kategorik yang mengukur rasio pemain di server dengan jenis perangkat yang sama dengan pemain yang bergabung.Jenis perangkat termasuk: Komputer, perangkat seluler, tablet, konsol, dan perangkat VR.


deviceTypeSignalScore = (# players with same device as joining player) / (# players on the server)

Rakan

Pemain yang disukai adalah pemain yang berteman dengan pemain yang bergabung atau yang berbagi alamat IP yang sama dengan pemain yang bergabung.Sinyal Teman adalah sinyal kategorik dengan skor 1 saat ada pemain terfavorit di server dan skor 0 saat tidak ada pemain terfavorit di server.


friendsSignalScore = hasFriends ? 1 : 0

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


friendsSignalScore = min(# preferred players in server, 1) / 1

Bahasa

Sinyal kategorik yang mengukur rasio pemain di server yang membagi pengaturan bahasa yang sama dengan pemain yang bergabung.


languageSignalScore = (# players with same language setting as joining player) / (# players on the server)

Kelambatan

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


latencySignalScore = 1 - min(250, estimatedPingMs) / 250

Pendudukan

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


occupancySignalScore = (# players in server) / serverCapacity

Sejarah Bermain

Nilai atribut Histori Bermain adalah nomor log-10 menit yang dimainkan pemain di alam semesta dalam 28 hari terakhir.Sinyal angka ini membandingkan nilai Histori Permainan rata-rata log-10 pemain di server dengan nilai Histori Permainan pemain yang bergabung.Sinyal ini memiliki perbedaan maksimum yang relevan 4.6.Skor sinyal terbalik terkait dengan perbedaan histori permainan, artinya perbedaan histori permainan yang lebih rendah memiliki skor lebih tinggi.


playHistorySignalScore = 1 - min(4.6, playHistoryDifference / 4.6), where
playHistoryDifference = abs(avgServerPlayHistory - joiningPlayerPlayHistory)

Obrolan chat

Pemain dapat memiliki obrolan suara diaktifkan atau dinonaktifkan.Sinyal Obrolan Suara adalah sinyal kategorik yang mengukur rasio pemain dengan pengaturan obrolan suara yang sama dengan pemain yang bergabung dengan jumlah pemain di server.

Jika suatu tempat memiliki obrolan suara dinonaktifkan, berat sinyal obrolan suara adalah 0.


voiceChatSignalScore = (# players with same voice chat setting as joining player) / (# players on the server)

Atribut khusus

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

Atribut Fituristik
Pemain Data pemain permanen yang bertahan di penyimpanan data, seperti tingkat pemain atau skor di dalam pengalaman Dimanajemen menggunakan API DataStore
Pelayan Tidak bertahan dan hanya berlangsung selama server aktif Data khusus server seperti tingkat server atau mode permainan Diatur 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 = "Advanced",
Elo = 123.456,
TrainingMode = true
})
end
-- Ambil atribut Tingkat
local currentLevel, error = MatchmakingService:GetServerAttribute("Level")
if error then
print(error)
else
print("Current level: " .. currentLevel)
end
-- Memperbarui nilai atribut Tingkat ke Lanjutan
local success, error = MatchmakingService:SetServerAttribute("Level", "Advanced")
if not success then
print("Failed to update server attribute [Level] to [Advanced] due to error: " .. error)
else
print("Successfully set [Level] to [Advanced]")
end

Sinyal khusus

Sinyal khusus dibuat dan didefinisikan oleh Anda dan dapat bersifat numerik atau kategorik:

  • Sinyal numerik adalah angka.Mereka membandingkan perbedaan antara atribut pemain bergabung dan nilai agregat server, dengan perbedaan yang lebih besar menurunkan atau meningkatkan skor.Sebagai contoh, semakin dekat tingkat keterampilan pemain dengan tingkat keterampilan rata-rata server, semakin tinggi skor sinyal numerik.Skor ini kemudian dikalikan dengan berat sinyal.
  • Sinyal kategorik adalah string atau boolean.Mereka didasarkan pada seberapa umum atribut pemain bergabung dibandingkan dengan pemain lain di server.Sebagai contoh, jika persentase tinggi pemain di dalam server memiliki bahasa preferensial yang sama dengan pemain yang bergabung, skor meningkat.Skor ini kemudian juga dikalikan dengan berat sinyal.

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

Pemain numerik

Bergabung dengan pemain

Mengurangi perbedaan antara atribut pemain rata-rata server dan atribut pemain bergabung.Perbedaan di luar 1000 memberikan skor sinyal 0.

Bergabung dengan formula pemain 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
Bergabung dengan contoh pemain 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

Mengurangi perbedaan antara atribut pemain rata-rata server dan nilai konstan 500.Perbedaan di luar 1000 memberikan skor sinyal 0.

Formula 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 kategorik

Klusterisasi

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

Formula klusterisasi untuk sinyal kategoris pemain

local score = num_players_same_{attribute_name} / occupancy
return score
Contoh kluster untuk sinyal kategoris pemain

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

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

Mengdiversifikasi formula untuk sinyal kategoris pemain

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

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

Server angka

Bergabung dengan pemain

Mengurangi perbedaan antara atribut server dan atribut pemain bergabung. Perbedaan di luar 1000 mengembalikan skor sinyal 0.

Bergabung dengan formula pemain 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
Bergabung dengan contoh pemain untuk sinyal numerik pemain

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

Mengurangi perbedaan antara nilai atribut server dan nilai konstan. Perbedaan di luar nilai konstan ini mengembalikan skor sinyal 0.

Formula 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 kategorik

Bandingkan dengan bergabung dengan pemain

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

Bergabung dengan formula pemain untuk sinyal kategoris server

if server_{attribute_name} = joining_player_{attribute_name} then
return 1
else
return 0
end
Bergabung dengan contoh pemain untuk sinyal kategoris 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 dari benar. Jika tidak, skor sinyal adalah 0.

Formula nilai konstan untuk sinyal kategoris server

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

local server_GameNotStarted = true
if server_GameNotStarted = true then
return 1
else
return 0
end