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ỉnh và tí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ượng | Thờ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ại | Liệ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ại | Xem 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ượng | Tuổ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ại | Ngôn ngữ của người chơi. |
Lịch sử chơi của người chơi | Số lượng | Số 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ượng | Số 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, whereageDifference = 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), whereplayHistoryDifference = 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 traMatchmakingService:InitializeServerAttributesForStudio({Level = "Advanced",Elo = 123.456,TrainingMode = true})end-- Lấy thuộc tính Cấplocal currentLevel, error = MatchmakingService:GetServerAttribute("Level")if error thenprint(error)elseprint("Current level: " .. currentLevel)end-- Cập nhật giá trị thuộc tính Cấp độ lên Cao cấplocal success, error = MatchmakingService:SetServerAttribute("Level", "Advanced")if not success thenprint("Failed to update server attribute [Level] to [Advanced] due to error: " .. error)elseprint("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 = 2000local joining_player_Elo = 1000local max_relevant_difference = 1500local 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 = 4500local joining_player_PowerLevel = 9901local max_relevant_difference = 1500local constant_value = 5000local 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} / occupancyreturn 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 = 15local occupancy = 19local score = num_players_same_Guild / occupancyreturn 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} / occupancyreturn 1 - score
Ví dụ phân loại cho tín hiệu người chơi
local num_players_same_RpgClass = 15local occupancy = 19local score = num_players_same_RpgClass / occupancyreturn 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 = 4500local joining_player_Level = 9000local max_relevant_difference = 1500local 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 = 500local max_relevant_difference = 1000local constant_value = 1000local 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} thenreturn 1elsereturn 0end
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 thenreturn 1elsereturn 0end
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 thenreturn 1elsereturn 0end
Ví dụ giá trị thường xuyên cho tín hiệu phân loại máy chủ
local server_GameNotStarted = trueif server_GameNotStarted = true thenreturn 1elsereturn 0end