คุณสมบัติและสัญญาณ

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

คุณสมบัติที่มีอยู่

การกำหนดค่าจับคู่เริ่มต้นของ Roblox ใช้สัญญาณที่ขึ้นอยู่กับคุณลักษณะที่มีอยู่เช่นตำแหน่งผู้เล่น กลุ่มอายุ และความล่าช้า

เพื่อใช้ข้อมูลสำหรับการจับคู่ที่ Roblox ไม่รวมโดยอัตโนมัติในการกำหนดค่าเริ่มต้น คุณต้องสร้าง คุณสมบัติที่กําหนดเอง และ สัญญาณกำหนดเอง

คุณสมบัติ ประเภท คําอธิบาย
ความแลคของผู้เล่นที่คาดการณ์ ตัวเลขความล่าช้าที่ประมาณการของผู้เล่นในเซิร์ฟเวอร์
มีเพื่อน หมวดหมู่ว่าเซิร์ฟเวอร์มีเพื่อนหรือผู้เล่นคนอื่นที่มี IP เดียวกับผู้เล่นที่เข้าร่วมหรือไม่
การแชทด้วยเสียงถูกเปิดใช้งานหรือไม่ หมวดหมู่ว่าผู้เล่นมีการแชทด้วยเสียงเปิดใช้งานหรือไม่
อายุผู้เล่น ตัวเลขอายุของผู้เล่น
ประเภทอุปกรณ์ผู้เล่น หมวดหมู่พิมพ์สามารถเป็นอุปกรณ์เคลื่อนที่ คอมพิวเตอร์ แท็บเล็ต คอนโซล หรืออุปกรณ์ VR
ภาษาผู้เล่น หมวดหมู่ภาษาของผู้เล่น
ประวัติการเล่นผู้เล่น ตัวเลขจํานวนนาทีบันทึก-10 ที่ผู้เล่นได้เล่นในจักรวาลในช่วง 28 วันที่ผ่านมา
อัตราการใช้งานเซิร์ฟเวอร์ ตัวเลขจํานวนผู้เล่นในเซิร์ฟเวอร์

สัญญาณที่มีอยู่

สัญญาณต่อไปนี้คือสัญญาณที่กำหนดโดย Roblox ที่ได้รับจากคุณสมบัติของ Roblox:

สัญญาณ คําอธิบาย
อายุ ความแตกต่างระหว่างอายุเฉลี่ยของผู้เล่นในเซิร์ฟเวอร์และอายุของผู้เล่นที่เข้าร่วมด้วยความแตกต่างสูงสุดที่เกี่ยวข้อง 25
ประเภทอุปกรณ์ อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีประเภทอุปกรณ์เดียวกับผู้เล่นที่เข้าร่วม
เพื่อน จํานวนคนในเซิร์ฟเวอร์ที่เป็นเพื่อนกับผู้เล่นที่เข้าร่วมหรือแชร์ที่อยู่ IP กับผู้เล่นที่เข้าร่วม1 หากมีผู้เล่นที่ชื่นชอบ 0 มิฉะนั้น
ความแลค ความล่าช้าของผู้เล่นที่ประมาณการสำหรับเซิร์ฟเวอร์พร้อมค่าที่เกี่ยวข้องสูงสุด 250
ภาษา อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีภาษาเดียวกับผู้เล่นที่เข้าร่วม
การใช้งาน อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์เมื่อเทียบกับความสามารถของเซิร์ฟเวอร์
ประวัติการเล่น ความแตกต่างระหว่างประวัติการเล่นเฉลี่ยในเซิร์ฟเวอร์และประวัติการเล่นของผู้เล่นที่เข้าร่วมที่มีความแตกต่างสูงสุดที่เกี่ยวข้อง 4.6
แชทเสียง อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีการเปิดใช้งานการแชทด้วยเสียง

อายุ

สัญญาณตัวเลขที่เปรียบเทียบอายุเฉลี่ยของผู้เล่นบนเซิร์ฟเวอร์กับอายุของผู้เล่นที่เข้าร่วมสัญญาณนี้มีความแตกต่างสูงสุดที่เกี่ยวข้องสูงสุด 25คะแนนสัญญาณมีความเกี่ยวข้องกับความแตกต่างอายุในทางกลับกัน ซึ่งหมายความว่าความแตกต่างอายุที่ต่ำกว่ามีคะแนนสูงกว่า


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

ประเภทอุปกรณ์

สัญญาณประเภทที่วัดอัตราส่วนของผู้เล่นบนเซิร์ฟเวอร์ที่มีประเภทอุปกรณ์เดียวกับผู้เล่นที่เข้าร่วมประเภทอุปกรณ์รวมถึง: คอมพิวเตอร์ อุปกรณ์มือถือ แท็บเล็ต คอนโซล และอุปกรณ์ VR


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

เพื่อน

ผู้เล่นที่ชื่นชอบคือผู้เล่นที่เป็นเพื่อนกับผู้เล่นที่เข้าร่วมหรือมีที่อยู่ IP เดียวกับผู้เล่นที่เข้าร่วมสัญญาณเพื่อนเป็นสัญญาณที่มีหมายเลข 1 เมื่อมีผู้เล่นที่ชื่นชอบในเซิร์ฟเวอร์และหมายเลข 0 เมื่อไม่มีผู้เล่นที่ชื่นชอบในเซิร์ฟเวอร์


friendsSignalScore = hasFriends ? 1 : 0

สัญญาณเพื่อนยังสามารถพิจารณาเป็นสัญญาณเชิงตัวเลขที่มีค่าที่เกี่ยวข้องสูงสุด 1


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

ภาษา

สัญญาณประเภทที่วัดอัตราส่วนของผู้เล่นบนเซิร์ฟเวอร์ที่มีการตั้งค่าภาษาเดียวกับผู้เล่นที่เข้าร่วม


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

ความล่าช้า

สัญญาณเชิงตัวเลขที่วัดเวลาปิงโดยประมาณในมิลลิวินาทีของผู้เล่นที่เข้าร่วมหากพวกเขาเล่นบนเซิร์ฟเวอร์สัญญาณนี้มีค่าที่เกี่ยวข้องสูงสุด 250 มิลลิวินาทีคะแนนสัญญาณมีความเกี่ยวข้องกับคะแนนปิงในทางกลับกัน ซึ่งหมายความว่าค่า ping ที่ต่ำกว่ามีคะแนนสูงกว่า


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

การใช้งาน

สัญญาณตัวเลขที่วัดอัตราส่วนของผู้เล่นบนเซิร์ฟเวอร์ต่อความสามารถของเซิร์ฟเวอร์


occupancySignalScore = (# players in server) / serverCapacity

ประวัติการเล่น

ค่าคุณสมบัติประวัติการเล่นคือจํานวนนาทีที่ผู้เล่นเล่นในจักรวาลในช่วง 28 วันที่ผ่านมาสัญญาณตัวเลขนี้เปรียบเทียบค่าประวัติการเล่นเฉลี่ยของล็อก-10 ของผู้เล่นในเซิร์ฟเวอร์กับค่าประวัติการเล่นของผู้เล่นที่เข้าร่วมสัญญาณนี้มีความแตกต่างสูงสุดที่เกี่ยวข้องสูงสุด 4.6คะแนนสัญญาณมีความเกี่ยวข้องกับความแตกต่างของประวัติการเล่นในทางกลับกัน ซึ่งหมายความว่าความแตกต่างของประวัติการเล่นที่ต่ำกว่ามีคะแนนสูงกว่า


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

แชทด้วยเสียง

ผู้เล่นสามารถมีการแชทด้วยเสียงเปิดหรือปิดได้สัญญาณการแชทเสียงเป็นสัญญาณที่เป็นหมวดหมู่ที่วัดอัตราส่วนของผู้เล่นที่มีการตั้งค่าการแชทเสียงเดียวกับผู้เล่นที่เข้าร่วมกับจํานวนผู้เล่นในเซิร์ฟเวอร์

หากสถานที่มีการปิดใช้งานการแชทด้วยเสียงแล้ว น้ำหนักของสัญญาณการแชทด้วยเสียงจะเป็น 0


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

คุณสมบัติที่กําหนดเอง

คุณสมบัติที่กําหนดเองให้การเข้าถึงสัญญาณที่กําหนดเองไปยังข้อมูลผู้เล่นและเซิร์ฟเวอร์สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างคุณสมบัติที่กําหนดเองของคุณเองดูที่ สร้างคุณสมบัติที่กําหนดเองสำหรับข้อมูลเพิ่มเติมเกี่ยวกับคุณสมบัติ Roblox ที่มีอยู่แล้วดูที่ คุณสมบัติที่มีอยู่

คุณสมบัติ ลักษณะ
ผู้เล่น ข้อมูลผู้เล่นถาวรที่ยังคงอยู่ในร้านข้อมูล เช่น ระดับหรือคะแนนของผู้เล่นภายในประสบการณ์ จัดการโดยใช้ API DataStore
เซิร์ฟเวอร์ ไม่ถาวรและเป็นเวลาเพียงจนกว่าเซิร์ฟเวอร์จะใช้งานได้ ข้อมูลเฉพาะเซิร์ฟเวอร์เช่นระดับเซิร์ฟเวอร์หรือโหมดเกม จัดการโดยใช้ API MatchmakingService
ตัวอย่างคุณสมบัติผู้เล่น

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
ตัวอย่างคุณสมบัติเซิร์ฟเวอร์

local MatchmakingService = game::GetService("MatchmakingService")
local RunService = game:GetService("RunService")
if RunService:IsStudio() then
-- ตั้งค่าคุณสมบัติและสคริปต์เบื้องต้นสำหรับการทดสอบ
MatchmakingService:InitializeServerAttributesForStudio(
{
Level = "Advanced",
Elo = 123.456,
TrainingMode = true
})
end
-- ดึงคุณสมบัติระดับ
local currentLevel, error = MatchmakingService:GetServerAttribute("Level")
if error then
print(error)
else
print("Current level: " .. currentLevel)
end
-- อัปเดตค่าคุณสมบัติระดับเป็นขั้นสูง
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

สัญญาณที่กำหนดเอง

สัญญาณที่กําหนดเองถูกสร้างและกําหนดโดยคุณและสามารถเป็นเลขหรือหมวดหมู่ได้:

  • สัญญาณทางเลขเป็นตัวเลขพวกเขาเปรียบเทียบความแตกต่างระหว่างค่าตัวละครของผู้เล่นที่เข้าร่วมและมูลค่ารวมของเซิร์ฟเวอร์กับความแตกต่างที่ใหญ่กว่าที่ลดหรือเพิ่มคะแนนตัวอย่างเช่น ยิ่งระดับทักษะของผู้เล่นใกล้เคียงกับระดับทักษะเฉลี่ยของเซิร์ฟเวอร์มากเท่าใด คะแนนของสัญญาณทางเลขก็จะยิ่งสูงขึ้นเท่านั้นคะแนนนี้จะถูกคูณด้วยน้ำหนักของสัญญาณ
  • สัญญาณเชิงประเภทคือสตริงหรือบูลีเอนพวกเขาขึ้นอยู่กับวิธีที่คุณสมบัติของผู้เล่นที่เข้าร่วมมีความธรรมดาเมื่อเทียบกับผู้เล่นอื่นๆ ในเซิร์ฟเวอร์ตัวอย่างเช่น หากส่วนใหญ่ของผู้เล่นภายในเซิร์ฟเวอร์มีภาษาที่ต้องการเดียวกับผู้เล่นที่เข้าร่วม คะแนนจะเพิ่มขึ้นคะแนนนี้จะถูกคูณด้วยน้ำหนักของสัญญาณเช่นกัน

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างสัญญาณกำหนดเองของคุณเองดูที่ สร้างสัญญาณกำหนดเองสำหรับข้อมูลเพิ่มเติมเกี่ยวกับสัญญาณ Roblox ที่มีอยู่แล้ว ดู สัญญาณที่มีอยู่แล้ว

ตัวเลขผู้เล่น

เข้าร่วมกับผู้เล่น

ลดความแตกต่างระหว่างค่าตัวผู้เล่นเฉลี่ยของเซิร์ฟเวอร์และค่าตัวผู้เล่นที่เข้าร่วมความแตกต่างเกิน 1000 ส่งคะแนนสัญญาณ 0

เข้าร่วมสูตรผู้เล่นสำหรับสัญญาณตัวเลขผู้เล่น

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
เข้าร่วมตัวอย่างผู้เล่นสำหรับสัญญาณตัวเลขผู้เล่น

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
ค่าคงที่

ลดความแตกต่างระหว่างค่าผู้เล่นเฉลี่ยของเซิร์ฟเวอร์และค่าคงที่ 500ความแตกต่างเกิน 1000 ส่งคะแนนสัญญาณ 0

สูตรค่าคงที่สำหรับสัญญาณตัวเลขผู้เล่น

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
ตัวอย่างค่าคงที่สำหรับสัญญาณตัวเลขผู้เล่น

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)

หมวดหมู่ผู้เล่น

การจัดกลุ่ม

เพิ่มสัดส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีคุณสมบัติเดียวกับคุณสมบัติของผู้เล่นที่เข้าร่วม

สูตรการจัดกลุ่มสำหรับสัญญาณประเภทผู้เล่น

local score = num_players_same_{attribute_name} / occupancy
return score
ตัวอย่างการจัดกลุ่มสำหรับสัญญาณประเภทผู้เล่น

local num_players_same_Guild = 15
local occupancy = 19
local score = num_players_same_Guild / occupancy
return score
การแยกกัน

เพิ่มสัดส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีคุณสมบัติที่แตกต่างจากคุณสมบัติของผู้เล่นที่เข้าร่วม

สูตรการแยกประเภทสัญญาณสำหรับผู้เล่น

local score = num_players_same_{attribute_name} / occupancy
return 1 - score
ตัวอย่างการแยกประเภทสัญญาณสำหรับผู้เล่น

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

ตัวเลขเซิร์ฟเวอร์

เข้าร่วมกับผู้เล่น

ลดความแตกต่างระหว่างคุณสมบัติของเซิร์ฟเวอร์และคุณสมบัติของผู้เล่นที่เข้าร่วม ความแตกต่างเกิน 1000 จะส่งคะแนนสัญญาณ 0

เข้าร่วมสูตรผู้เล่นสำหรับสัญญาณตัวเลขของเซิร์ฟเวอร์

local diff = math.abs(server_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return score
เข้าร่วมตัวอย่างผู้เล่นสำหรับสัญญาณตัวเลขผู้เล่น

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)
ค่าคงที่

ลดความแตกต่างระหว่างมูลค่าคุณสมบัติของเซิร์ฟเวอร์และค่าคงที่ ความแตกต่างเกินค่าคงที่นี้จะส่งผลให้คะแนนสัญญาณเป็น 0

สูตรค่าคงที่สำหรับสัญญาณตัวเลขของเซิร์ฟเวอร์

local diff = math.abs(server_{attribute_name} - constant_value)
local score = math.min(diff / max_relevant_difference, 1)
return score
ตัวอย่างค่าคงที่สำหรับสัญญาณตัวเลขของเซิร์ฟเวอร์

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)

หมวดหมู่เซิร์ฟเวอร์

เปรียบเทียบกับการเข้าร่วมกับผู้เล่น

คะแนนคือ 1 เมื่อค่าโครงสร้างของเซิร์ฟเวอร์ (เช่น โหมดเกม) เท่ากับค่าโครงสร้างของผู้เล่น (เช่น โหมดเกมที่ชื่นชอบ)มิฉะนั้นคะแนนสัญญาณคือ 0

เข้าร่วมสูตรผู้เล่นสำหรับสัญญาณประเภทเซิร์ฟเวอร์

if server_{attribute_name} = joining_player_{attribute_name} then
return 1
else
return 0
end
เข้าร่วมตัวอย่างผู้เล่นสําหรับสัญญาณประเภทเซิร์ฟเวอร์

local server_GameMode = "Survival"
local joining_player_GameMode = "Survival"
if server_GameMode = joining_player_GameMode then
return 1
else
return 0
end
เปรียบเทียบกับค่าคงที่

คะแนนคือ 1 เมื่อค่าโครงสร้างของเซิร์ฟเวอร์เท่ากับค่าคงที่ของจริง มิฉะนั้นคะแนนสัญญาณจะเป็น 0

สูตรค่าคงที่สำหรับสัญญาณประเภทเซิร์ฟเวอร์

if server_{attribute_name} = constant_value then
return 1
else
return 0
end
ตัวอย่างค่าคงที่สำหรับสัญญาณประเภทเซิร์ฟเวอร์

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