Thuộc tính và tín hiệu

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Thuộc tính hiện có

Cài đặt mặc định của Roblox matchmaking sử dụng các tín hiệu dựa trên các thuộc tính hiện có như vị trí người chơi, nhóm tuổi và độ trễ.

Để sử dụng dữ liệu cho phù hợp mà Roblox không tự động bao gồm trong cấu hình mặc định của nó, bạn cần tạo thuộc tính tùy chỉnhtín hiệu tùy chỉnh .

Thuộc tính Loại Mô tả
Dự đoán thời gian trễ của người chơi Số lượngThời gian trễ ước tính của một người chơi trong một máy chủ.
Có bạn bè Thể loạiLiệu một máy chủ có bạn bè hoặc người chơi khác cùng địa chỉ IP với người chơi tham gia không.
Có Voice Chat được bật không Thể loạiXem có người chơi có bật chat giọng nói không.
Tuổi của người chơi Số lượngTuổi của người chơi.
Loại thiết bị người chơi Thể loạiđánh máythiết bị của người chơi. Có thể là một thiết bị di động, một máy tính, một máy tính bảng, một console hoặc một thiết bị VR.
Ngôn ngữ của người chơi Thể loạiNgôn ngữ của người chơi.
Lịch sử chơi của người chơi Số lượngSố phút ghi lại-10 mà một người chơi đã chơi trong một vũ trụ trong 28 ngày qua.
Tỷ lệ chiếm máy chủ Số lượngSố người chơi trong một máy chủ.

Các tín hiệu hiện có

Các tín hiệu được định nghĩa sau đây được xác định dựa trên các thuộc tính của Roblox:

Tín hiệu Mô tả
Tuổi Sự khác biệt giữa tuổi trung bình của người chơi trong máy chủ và tuổi của người chơi tham gia, với sự khác biệt tối đa có liên quan 25.
Loại thiết bị Tỷ lệ người chơi trong máy chủ với loại thiết bị tương tự như người chơi tham gia.
Bạn bè Số người trong máy chủ là bạn của người chơi tham gia hoặc chia sẻ một địa chỉ IP với người chơi tham gia.1 nếu có một người chơi ưa thích, 0 nếu không.
Thời gian trễ Thời gian trễ ước tính cho một máy chủ, với giá trị liên quan tối đa là 250.
Ngôn ngữ Tỷ lệ người chơi trong máy chủ có cùng ngôn ngữ với người chơi tham gia
Chiếm cứ Tỷ lệ người chơi trong máy chủ so với công suất của máy chủ.
Lịch sử chơi Sự khác biệt giữa lịch sử chơi trung bình trên máy chủ và lịch sử chơi của người chơi tham gia, với sự khác biệt tối đa có liên quan 4.6.
Trò chuyện giọng nói Tỷ lệ người chơi trong máy chủ với chat giọng được bật.

Tuổi

Một tín hiệu số so sánh tuổi trung bình của người chơi trên máy chủ với tuổi của người chơi tham gia.Tín hiệu này có sự khác biệt tối đa liên quan 25.Điểm số tín hiệu đảo ngược với sự khác biệt tuổi, có nghĩa là sự khác biệt tuổi thấp hơn có điểm số cao hơn.


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

Loại thiết bị

Một tín hiệu theo nhóm đo tỷ lệ người chơi trên máy chủ với loại thiết bị tương tự như người chơi tham gia.Các loại thiết bị bao gồm: Máy tính, thiết bị di động, máy tính bảng, bảng điều khiển và thiết bị VR.


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

Bạn bè

Một người chơi ưa thích là người chơi có bạn bè với người chơi tham gia hoặc chia sẻ cùng một địa chỉ IP với người chơi tham gia.Tín hiệu Bạn bè là một tín hiệu theo thể loại với điểm số 1 khi có một người chơi ưa thích trong máy chủ và điểm số 0 khi không có người chơi ưa thích trong máy chủ.


friendsSignalScore = hasFriends ? 1 : 0

Tín hiệu Bạn bè cũng có thể được xem là một tín hiệu số với giá trị tối đa có liên quan là 1.


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

Ngôn ngữ

Một tín hiệu theo nhóm đo tỷ lệ của người chơi trên máy chủ có cùng cài đặt ngôn ngữ như người chơi tham gia.


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

Thời gian trễ

Một tín hiệu số đo thời gian ping ước tính trong mili giây của người chơi tham gia nếu họ chơi trên một máy chủ.Tín hiệu này có giá trị tối đa liên quan 250 mili giây.Điểm số tín hiệu đảo ngược với ping, có nghĩa là các giá trị ping thấp hơn có điểm số cao hơn.


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

Tỷ lệ chiếm

Một tín hiệu số đo tỷ lệ người chơi trên máy chủ đến công suất của máy chủ.


occupancySignalScore = (# players in server) / serverCapacity

Lịch sử chơi

Giá trị thuộc tính Lịch sử chơi là số phút mà một người chơi đã chơi trong một vũ trụ trong 28 ngày qua.Tín hiệu số này so sánh giá trị trung bình của lịch sử chơi 10 của người chơi trong máy chủ với giá trị lịch sử chơi của người chơi tham gia.Tín hiệu này có sự khác biệt tối đa liên quan 4.6.Điểm số tín hiệu đảo ngược với sự khác biệt lịch sử chơi, có nghĩa là sự khác biệt lịch sử chơi thấp hơn có điểm số cao hơn.


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

Trò chuyện giọng nói

Một người chơi có thể có cuộc trò chuyện giọng nói được bật hoặc tắt.Tín hiệu trò chuyện giọng nói là một tín hiệu categorical đo tỷ lệ của người chơi có cùng cài đặt trò chuyện giọng nói như người chơi tham gia với số người chơi trong máy chủ.

Nếu một nơi có voice chat bị vô hiệu hóa, trọng lượng của tín hiệu Voice Chat là 0.


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

Thuộc tính tùy chỉnh

Các thuộc tính tùy chỉnh cho phép truy cập các tín hiệu của người chơi và dữ liệu máy chủ.Để biết thêm thông tin về việc tạo các thuộc tính tùy chỉnh riêng của bạn, xem Tạo một thuộc tính tùy chỉnh.Để biết thêm thông tin về các thuộc tính Roblox hiện có, xem Các thuộc tính hiện có.

Thuộc tính Tính chất
Người chơi Dữ liệu người chơi bền vững Dữ liệu người chơi bền vững trong các kho dữ liệu, giống như cấp độ hoặc điểm số của người chơi bên trong trải nghiệm Quản lý bằng cách sử dụng các API DataStore
Máy chủ Không bền và chỉ tồn tại trong khi máy chủ vẫn hoạt động Dữ liệu cụ thể với máy chủ như cấp độ máy chủ hoặc chế độ trò chơi Quản lý bằng cách sử dụng API MatchmakingService
Ví dụ thuộc tính người chơi

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
Ví dụ thuộc tính máy chủ

local MatchmakingService = game::GetService("MatchmakingService")
local RunService = game:GetService("RunService")
if RunService:IsStudio() then
-- Thiết lập các thuộc tính và cấu trúc ban đầu để kiểm tra
MatchmakingService:InitializeServerAttributesForStudio(
{
Level = "Advanced",
Elo = 123.456,
TrainingMode = true
})
end
-- Lấy thuộc tính Cấp
local currentLevel, error = MatchmakingService:GetServerAttribute("Level")
if error then
print(error)
else
print("Current level: " .. currentLevel)
end
-- Cập nhật giá trị thuộc tính Cấp độ lên Cao cấp
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

Tín hiệu tùy chỉnh

Các tín hiệu tùy chỉnh được tạo và định nghĩa bởi bạn và có thể là số hoặc hạng:

  • Tín hiệu số là số.Họ so sánh sự khác biệt giữa thuộc tính của người chơi tham gia và giá trị tổng hợp của máy chủ, với những khác biệt lớn hơn làm giảm hoặc tăng điểm số.Ví dụ, càng gần mức độ kỹ năng của một người chơi với mức độ kỹ năng trung bình của máy chủ, điểm số của tín hiệu số lớn hơn.Điểm số này sau đó được nhân với trọng lượng của tín hiệu.
  • Tín hiệu categorical là chuỗi hoặc boolean.Chúng dựa trên mức độ phổ biến của thuộc tính kết nối của người chơi khi so sánh với các người chơi khác trong máy chủ.Ví dụ, nếu một phần trăm lớn người chơi bên trong máy chủ có cùng ngôn ngữ yêu thích như người chơi tham gia, điểm số tăng lên.Điểm số này sau đó cũng được nhân với trọng lượng của tín hiệu.

Để biết thêm thông tin về việc tạo các tín hiệu tùy chỉnh riêng của bạn, hãy xem Tạo một tín hiệu tùy chỉnh.Để biết thêm thông tin về các tín hiệu Roblox hiện có, xem Các tín hiệu hiện có.

Người chơi số lượng

Tham gia người chơi

Giảm sự khác biệt giữa thuộc tính trung bình của máy chủ và thuộc tính của người chơi tham gia.Sự khác biệt vượt quá 1000 trả về điểm tín hiệu 0.

Tham gia công thức người chơi cho tín hiệu số người chơi

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
Tham gia ví dụ người chơi cho tín hiệu số người chơi

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
Giá trị cố định

Giảm sự khác biệt giữa thuộc tính người chơi trung bình của máy chủ và giá trị cố định là 500.Sự khác biệt vượt quá 1000 trả về điểm tín hiệu 0.

Công thức giá trị thường xuyên cho tín hiệu số người chơi

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
Ví dụ giá trị thường xuyên cho tín hiệu số người chơi

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)

Người chơi theo danh mục

Tổ chức

Tối đa hóa tỷ lệ của người chơi trong máy chủ có cùng thuộc tính với thuộc tính của người chơi tham gia.

Công thức cụm hóa cho tín hiệu người chơi theo danh mục

local score = num_players_same_{attribute_name} / occupancy
return score
Ví dụ cụm hóa cho tín hiệu người chơi theo danh mục

local num_players_same_Guild = 15
local occupancy = 19
local score = num_players_same_Guild / occupancy
return score
Phân loại

Tối đa hóa tỷ lệ của người chơi trong máy chủ có thuộc tính khác với thuộc tính của người chơi tham gia.

Phương trình phân loại cho tín hiệu người chơi

local score = num_players_same_{attribute_name} / occupancy
return 1 - score
Ví dụ phân loại cho tín hiệu người chơi

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

Số máy chủ

Tham gia người chơi

Giảm thiểu sự khác biệt giữa thuộc tính của máy chủ và thuộc tính của người chơi tham gia. Sự khác biệt vượt quá 1000 trả về điểm tín hiệu 0.

Tham gia công thức người chơi cho tín hiệu số của máy chủ

local diff = math.abs(server_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return score
Tham gia ví dụ người chơi cho tín hiệu số người chơi

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)
Giá trị cố định

Giảm tối đa sự khác biệt giữa giá trị thuộc tính của máy chủ và một giá trị cố định. Sự khác biệt vượt quá giá trị cố định này trả về điểm tín hiệu 0.

Công thức giá trị thường xuyên cho tín hiệu số của máy chủ

local diff = math.abs(server_{attribute_name} - constant_value)
local score = math.min(diff / max_relevant_difference, 1)
return score
Ví dụ giá trị thường xuyên cho tín hiệu số của máy chủ

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)

Máy chủ theo danh mục

So sánh với tham gia người chơi

Điểm số là 1 khi giá trị thuộc tính của máy chủ (ví dụ, Chế độ trò chơi) bằng giá trị thuộc tính của người chơi (ví dụ, Chế độ trò chơi ưa thích).Nếu không, điểm tín hiệu là 0.

Tham gia công thức người chơi cho tín hiệu phân loại máy chủ

if server_{attribute_name} = joining_player_{attribute_name} then
return 1
else
return 0
end
Tham gia ví dụ người chơi cho tín hiệu phân loại máy chủ

local server_GameMode = "Survival"
local joining_player_GameMode = "Survival"
if server_GameMode = joining_player_GameMode then
return 1
else
return 0
end
So sánh với giá trị cố định

Điểm số là 1 khi giá trị thuộc tính của máy chủ bằng với giá trị cố định của true. Nếu không, điểm số tín hiệu là 0.

Công thức giá trị thường xuyên cho tín hiệu phân loại máy chủ

if server_{attribute_name} = constant_value then
return 1
else
return 0
end
Ví dụ giá trị thường xuyên cho tín hiệu phân loại máy chủ

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