Các thuộc tính hiện có
Cấu hình ghép nối mặc định của Roblox 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 việc ghép nối 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 các thuộc tính tùy chỉnh và các tín hiệu tùy chỉnh.
| Thuộc tính | Loại | Mô tả |
|---|---|---|
| Độ trễ dự đoán của người chơi | Số | Độ trễ ước lượng của một người chơi trên một máy chủ. |
| Có bạn bè | Phân loại | Liệu một máy chủ có bạn bè hoặc một người chơi khác cùng địa chỉ IP với người chơi tham gia. |
| Chế độ trò chuyện bằng giọng nói đã được kích hoạt | Phân loại | Liệu một người chơi có kích hoạt trò chuyện bằng giọng nói hay không. |
| Tuổi của người chơi | Số | Tuổi của người chơi. |
| Loại thiết bị của người chơi | Phân loại | Loại thiết bị của người chơi. Có thể là thiết bị di động, máy tính, máy tính bảng, bảng điều khiển hoặc thiết bị VR. |
| Ngôn ngữ của người chơi | Phân loại | Ngôn ngữ của người chơi. |
| Lịch sử chơi của người chơi | Số | Số phút log-10 mà một người chơi đã chơi trong một vũ trụ trong 28 ngày qua. |
| Sự lấp đầy của máy chủ | Số | Số người chơi trong một máy chủ. |
| Nhóm trò chuyện văn bản của người chơi | Phân loại | Nhóm trò chuyện văn bản của người chơi mà họ có thể trò chuyện cùng nhau. |
Các tín hiệu hiện có
Dưới đây là các tín hiệu được định nghĩa bởi Roblox 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 là 25. |
| Loại thiết bị | Tỷ lệ người chơi trong máy chủ có cùng loại thiết bị với người chơi tham gia. |
| Bạn bè | Số người trong máy chủ là bạn bè 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. |
| Độ trễ | Độ trễ ước lượng của người chơi trên một máy chủ, với giá trị 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. |
| Sự lấp đầy | 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 trong 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 là 4.6. |
| Trò chuyện bằng giọng nói | Tỷ lệ người chơi trong máy chủ có kích hoạt trò chuyện bằng giọng nói. |
| Trò chuyện văn bản | Tỷ lệ người chơi trong máy chủ có thể trò chuyện văn bản với người chơi tham gia cùng nhau. |
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ột 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 là 25. Điểm tín hiệu có mối quan hệ nghịch đảo với sự khác biệt về tuổi, có nghĩa là sự khác biệt tuổi thấp hơn có điểm cao hơn.
nơi
Loại thiết bị
Một tín hiệu phân loại đo tỷ lệ người chơi trên máy chủ có cùng loại thiết bị với 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.
Bạn bè
Một người chơi ưa thích là một người chơi είτε là bạn bè với người chơi tham gia hoặc chia sẻ cùng đị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 phân loại có điểm 1 khi có một người chơi ưa thích trong máy chủ và điểm 0 khi không có người chơi ưa thích nào trong máy chủ.
Tín hiệu Bạn bè cũng có thể được coi là một tín hiệu số với giá trị tối đa là 1.
Ngôn ngữ
Một tín hiệu phân loại đo tỷ lệ người chơi trong máy chủ có cùng ngôn ngữ với người chơi tham gia.
Độ trễ
Một tín hiệu số đo thời gian ping ước lượng 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 là 250 mili giây. Điểm tín hiệu có mối quan hệ nghịch đảo với thời gian ping, có nghĩa là các giá trị ping thấp hơn có điểm cao hơn.
Sự lấp đầy
Một tín hiệu số đo tỷ lệ người chơi trên máy chủ so với công suất của máy chủ.
Lịch sử chơi
Giá trị thuộc tính Lịch sử chơi là số phút log-10 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ị Lịch sử chơi log-10 trung bình 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 là 4.6. Điểm tín hiệu có mối quan hệ nghịch đảo với sự khác biệt về lịch sử chơi, có nghĩa là các sự khác biệt về lịch sử chơi thấp hơn có điểm cao hơn.
, nơi
Trò chuyện bằng giọng nói
Một người chơi có thể kích hoạt hoặc vô hiệu hóa trò chuyện bằng giọng nói. Tín hiệu Trò chuyện bằng giọng nói là một tín hiệu phân loại đo tỷ lệ người chơi có cùng cài đặt trò chuyện bằng giọng nói với người chơi tham gia so với số người chơi trong máy chủ.
Nếu một nơi có trò chuyện bằng giọng nói bị vô hiệu hóa, trọng số của tín hiệu Trò chuyện bằng giọng nói là 0.
Trò chuyện văn bản
Một tín hiệu phân loại đo tỷ lệ người chơi trong máy chủ có thể trò chuyện văn bản với người chơi tham gia cùng nhau.
Các thuộc tính tùy chỉnh
Các thuộc tính tùy chỉnh cho phép các tín hiệu tùy chỉnh truy cập dữ liệu người chơi và máy chủ. Để biết thêm thông tin về cách tạo các thuộc tính tùy chỉnh của riêng bạn, hãy 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 hiện có của Roblox, hãy xem Các thuộc tính hiện có.
| Thuộc tính | Đặc điểm |
|---|---|
| Người chơi | Bền vững Dữ liệu người chơi tùy chỉnh tồn tại trong các kho dữ liệu, như cấp độ hoặc điểm số của một người chơi trong trò chơi Quản lý bằng cách sử dụng API DataStore |
| Máy chủ | Không bền vững và chỉ kéo dài khi máy chủ còn hoạt động Dữ liệu cụ thể của 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 ban đầu và sơ đồ để kiểm traMatchmakingService:InitializeServerAttributesForStudio({Level = "Nâng cao",Elo = 123.456,TrainingMode = true})end-- Nhận thuộc tính Cấp độlocal currentLevel, errorMessage = MatchmakingService:GetServerAttribute("Level")if errorMessage thenwarn(errorMessage)elseprint("Cấp độ hiện tại: " .. currentLevel)end-- Cập nhật giá trị thuộc tính Cấp độ thành Nâng caolocal success, errorMessage = MatchmakingService:SetServerAttribute("Level", "Nâng cao")if not success thenwarn("Cập nhật thuộc tính máy chủ [Cấp độ] thành [Nâng cao] không thành công do lỗi: " .. errorMessage)elseprint("Đã thiết lập thành công [Cấp độ] thành [Nâng cao]")end
Các 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 phân loại:
- Các tín hiệu số là các số. Chúng 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 sự khác biệt lớn hơn làm giảm hoặc tăng điểm số. Ví dụ, điều càng gần với trình độ kỹ năng trung bình của máy chủ thì điểm số của tín hiệu số càng cao. Điểm số này sau đó được nhân với trọng số của tín hiệu.
- Các tín hiệu phân loại là chuỗi hoặc boolean. Chúng dựa trên mức độ phổ biến của thuộc tính của người chơi tham gia khi so sánh với các người chơi khác trong máy chủ. Ví dụ, nếu một tỷ lệ cao người chơi trong một máy chủ có cùng ngôn ngữ ưa thích với người chơi tham gia, điểm số sẽ tăng. Điểm số này cũng sẽ được nhân với trọng số của tín hiệu.
Để biết thêm thông tin về cách tạo các tín hiệu tùy chỉnh của riêng 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 hiện có của Roblox, hãy xem Các tín hiệu hiện có.
Người chơi số
Người chơi tham gia
Giảm thiểu sự khác biệt giữa thuộc tính trung bình của người chơi trên máy chủ và thuộc tính của người chơi tham gia. Các sự khác biệt vượt quá 1000 trả về điểm tín hiệu là 0.
Công thức người chơi tham gia cho tín hiệu số người chơilocal diff = math.abs(server_{aggregation_function}_{attribute_name} - joining_player_{attribute_name})local score = 1 - math.min(diff / max_relevant_difference, 1)return score
Ví dụ người chơi tham gia cho tín hiệu số người chơilocal 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ị hằng số
Giảm thiểu sự khác biệt giữa thuộc tính trung bình của người chơi trên máy chủ và một giá trị hằng số là 500. Các sự khác biệt vượt quá 1000 trả về điểm tín hiệu là 0.
Công thức giá trị hằng số cho tín hiệu số người chơilocal 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ị hằng số cho tín hiệu số người chơilocal 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 phân loại
Tập hợp
Tối đa hóa tỷ lệ 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 tập hợp cho tín hiệu phân loại người chơilocal score = num_players_same_{attribute_name} / occupancyreturn score
Ví dụ tập hợp cho tín hiệu phân loại người chơilocal num_players_same_Guild = 15local occupancy = 19local score = num_players_same_Guild / occupancyreturn score
Đa dạng hóa
Tối đa hóa tỷ lệ 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.
Công thức đa dạng hóa cho tín hiệu phân loại người chơilocal score = num_players_same_{attribute_name} / occupancyreturn 1 - score
Ví dụ đa dạng hóa cho tín hiệu phân loại người chơilocal num_players_same_RpgClass = 15local occupancy = 19local score = num_players_same_RpgClass / occupancyreturn score
Máy chủ số
Người chơi tham gia
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. Các sự khác biệt vượt quá 1000 trả về điểm tín hiệu là 0.
Công thức người chơi tham gia cho tín hiệu số 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
Ví dụ người chơi tham gia cho tín hiệu số máy chủ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ị hằng số
Giảm thiểu sự khác biệt giữa giá trị thuộc tính của máy chủ và một giá trị hằng số. Các sự khác biệt vượt quá giá trị hằng số này trả về điểm tín hiệu là 0.
Công thức giá trị hằng số cho tín hiệu số 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ị hằng số cho tín hiệu số 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ủ phân loại
So sánh với người chơi tham gia
Đ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). Ngược lại, điểm tín hiệu là 0.
Công thức người chơi tham gia cho tín hiệu phân loại máy chủif server_{attribute_name} == joining_player_{attribute_name} thenreturn 1elsereturn 0end
Ví dụ người chơi tham gia 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ị hằng số
Điểm số là 1 khi giá trị thuộc tính của máy chủ bằng một giá trị hằng số là đúng. Ngược lại, điểm tín hiệu là 0.
Công thức giá trị hằng số 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ị hằng số cho tín hiệu phân loại máy chủlocal server_GameNotStarted = trueif server_GameNotStarted == true thenreturn 1elsereturn 0end