คุณลักษณะที่มีอยู่
การกำหนดค่าการจับคู่ของ Roblox เริ่มต้นใช้สัญญาณที่อิงจากคุณลักษณะที่มีอยู่ เช่น ตำแหน่งของผู้เล่น กลุ่มอายุ และความหน่วง
ในการใช้ข้อมูลสำหรับการจับคู่ที่ Roblox ไม่ได้รวมไว้ในกำหนดค่าดีฟอลต์ คุณต้องสร้าง คุณลักษณะกำหนดเอง และ สัญญาณกำหนดเอง
| คุณลักษณะ | ประเภท | คำอธิบาย |
|---|---|---|
| ความหน่วงของผู้เล่นที่ประมาณการ | เชิงตัวเลข | ความหน่วงที่ประมาณการของผู้เล่นในเซิร์ฟเวอร์ |
| มีเพื่อน | เชิงหมวดหมู่ | เซิร์ฟเวอร์มีเพื่อนหรือผู้เล่นคนอื่นที่มีที่อยู่ IP เดียวกันกับผู้เล่นที่เข้าร่วมหรือไม่ |
| เปิดใช้งานการสนทนาด้วยเสียง | เชิงหมวดหมู่ | ผู้เล่นเปิดใช้งานการสนทนาด้วยเสียงหรือไม่ |
| อายุผู้เล่น | เชิงตัวเลข | อายุของผู้เล่น |
| ประเภทอุปกรณ์ของผู้เล่น | เชิงหมวดหมู่ | ประเภทอุปกรณ์ของผู้เล่น อาจเป็นอุปกรณ์เคลื่อนที่ คอมพิวเตอร์ แท็บเล็ต คอนโซล หรืออุปกรณ์ VR |
| ภาษาของผู้เล่น | เชิงหมวดหมู่ | ภาษาของผู้เล่น |
| ประวัติการเล่นของผู้เล่น | เชิงตัวเลข | จำนวนที่เล่นในจักรวาลในช่วง 28 วันที่ผ่านมาในลอการิธึมฐาน 10 |
| การเข้าพักของเซิร์ฟเวอร์ | เชิงตัวเลข | จำนวนผู้เล่นในเซิร์ฟเวอร์ |
| กลุ่มการสนทนาข้อความของผู้เล่น | เชิงหมวดหมู่ | กลุ่มการสนทนาข้อความของผู้เล่นที่พวกเขาสามารถสนทนาข้อความร่วมกันได้ |
สัญญาณที่มีอยู่
ต่อไปนี้คือสัญญาณที่กำหนดโดย Roblox ที่ได้มาจากคุณลักษณะของ Roblox:
| สัญญาณ | คำอธิบาย |
|---|---|
| อายุ | ความแตกต่างระหว่างอายุเฉลี่ยของผู้เล่นในเซิร์ฟเวอร์กับอายุของผู้เล่นที่เข้าร่วม โดยมีความแตกต่างที่เกี่ยวข้องสูงสุด 25 |
| ประเภทอุปกรณ์ | อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีประเภทอุปกรณ์เดียวกันกับผู้เล่นที่เข้าร่วม |
| เพื่อน | จำนวนคนในเซิร์ฟเวอร์ที่เป็นเพื่อนกับผู้เล่นที่เข้าร่วมหรือที่มีที่อยู่ IP เดียวกันกับผู้เล่นที่เข้าร่วม 1 หากมีผู้เล่นที่ต้องการ 0 หากไม่มี |
| ความหน่วง | ความหน่วงของผู้เล่นที่เข้าร่วมสำหรับเซิร์ฟเวอร์ ซึ่งเป็นความหน่วงที่ประมาณการเหนือความหน่วงต่ำสุดที่ผู้เล่นสามารถทำได้ในศูนย์ข้อมูลที่ดีที่สุดที่เข้าถึงได้ โดยมีค่าที่เกี่ยวข้องสูงสุด 100 |
| ภาษา | อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีภาษาที่เหมือนกับผู้เล่นที่เข้าร่วม |
| การเข้าพัก | อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์เมื่อเปรียบเทียบกับความจุของเซิร์ฟเวอร์ |
| ประวัติการเล่น | ความแตกต่างระหว่างประวัติการเล่นเฉลี่ยในเซิร์ฟเวอร์กับประวัติการเล่นของผู้เล่นที่เข้าร่วม โดยมีความแตกต่างที่เกี่ยวข้องสูงสุด 4.6 |
| การสนทนาด้วยเสียง | อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่เปิดใช้งานการสนทนาด้วยเสียง |
| การสนทนาข้อความ | อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่สามารถสนทนาข้อความกับผู้เล่นที่เข้าร่วมร่วมกันได้ |
อายุ
สัญญาณเชิงตัวเลขที่เปรียบเทียบอายุเฉลี่ยของผู้เล่นในเซิร์ฟเวอร์กับอายุของผู้เล่นที่เข้าร่วม สัญญาณนี้มีความแตกต่างที่เกี่ยวข้องสูงสุด 25 คะแนนสัญญาณจะสัมพันธ์กับความแตกต่างของอายุในทางกลับกัน หมายความว่าความแตกต่างของอายุต่ำกว่าจะมีคะแนนสูงกว่า
โดยที่
ประเภทอุปกรณ์
สัญญาณเชิงหมวดหมู่ที่วัดอัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีประเภทอุปกรณ์เดียวกันกับผู้เล่นที่เข้าร่วม ประเภทอุปกรณ์รวมถึง: คอมพิวเตอร์ อุปกรณ์เคลื่อนที่ แท็บเล็ต คอนโซล และอุปกรณ์ VR
เพื่อน
ผู้เล่นที่ต้องการคือผู้เล่นที่เป็นเพื่อนกับผู้เล่นที่เข้าร่วมหรือที่มีที่อยู่ IP เดียวกันกับผู้เล่นที่เข้าร่วม สัญญาณเพื่อนเป็นสัญญาณเชิงหมวดหมู่ที่มีคะแนน 1 เมื่อมีผู้เล่นที่ต้องการในเซิร์ฟเวอร์และคะแนน 0 เมื่อไม่มีผู้เล่นที่ต้องการในเซิร์ฟเวอร์
สัญญาณเพื่อนยังสามารถพิจารณาเป็นสัญญาณเชิงตัวเลขที่มีค่าที่เกี่ยวข้องสูงสุด 1
ภาษา
สัญญาณเชิงหมวดหมู่ที่วัดอัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีการตั้งค่าภาษาเดียวกันกับผู้เล่นที่เข้าร่วม
ความหน่วง
สัญญาณเชิงตัวเลขที่วัดความหน่วงของผู้เล่นที่เข้าร่วมในมิลลิวินาทีหากพวกเขาเล่นในเซิร์ฟเวอร์ ซึ่งเป็นความหน่วงที่ประมาณการเหนือความหน่วงต่ำสุดที่ผู้เล่นสามารถทำได้ในศูนย์ข้อมูลที่ดีที่สุดที่เข้าถึงได้ สัญญาณนี้มีค่าที่เกี่ยวข้องสูงสุด 100 มิลลิวินาที คะแนนสัญญาณจะสัมพันธ์กับความหน่วงในทางกลับกัน หมายความว่าค่าความหน่วงที่ต่ำกว่าจะมีคะแนนสูงกว่า
การเข้าพัก
สัญญาณเชิงตัวเลขที่วัดอัตราส่วนของผู้เล่นในเซิร์ฟเวอร์เมื่อเปรียบเทียบกับความจุของเซิร์ฟเวอร์
ประวัติการเล่น
ค่าคุณลักษณะประวัติการเล่นคือจำนวนที่เล่นในจักรวาลในช่วง 28 วันที่ผ่านมาในลอการิธึมฐาน 10 สัญญาณเชิงตัวเลขนี้เปรียบเทียบค่าประวัติการเล่นเฉลี่ยในเซิร์ฟเวอร์กับค่าประวัติการเล่นของผู้เล่นที่เข้าร่วม สัญญาณนี้มีความแตกต่างที่เกี่ยวข้องสูงสุด 4.6 คะแนนสัญญาณจะสัมพันธ์กับความแตกต่างของประวัติการเล่นในทางกลับกัน หมายความว่าความแตกต่างของประวัติการเล่นที่ต่ำกว่าจะมีคะแนนสูงกว่า
, โดยที่
การสนทนาด้วยเสียง
ผู้เล่นสามารถเปิดใช้งานหรือปิดใช้งานการสนทนาด้วยเสียง สัญญาณการสนทนาด้วยเสียงเป็นสัญญาณเชิงหมวดหมู่ที่วัดอัตราส่วนของผู้เล่นที่มีการตั้งค่าการสนทนาด้วยเสียงเดียวกันกับผู้เล่นที่เข้าร่วมเมื่อเปรียบเทียบกับจำนวนผู้เล่นในเซิร์ฟเวอร์
หากสถานที่มีการปิดใช้งานการสนทนาด้วยเสียง น้ำหนักของสัญญาณการสนทนาด้วยเสียงจะเป็น 0
การสนทนาข้อความ
สัญญาณเชิงหมวดหมู่ที่วัดอัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่สามารถสนทนาข้อความกับผู้เล่นที่เข้าร่วมร่วมกันได้
คุณลักษณะกำหนดเอง
คุณลักษณะกำหนดเองให้สัญญาณกำหนดเข้าถึงข้อมูลผู้เล่นและเซิร์ฟเวอร์ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างคุณลักษณะกำหนดเองของคุณเอง โปรดดูที่ สร้างคุณลักษณะกำหนดเอง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคุณลักษณะของ 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
endlocal 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, errorMessage = MatchmakingService:GetServerAttribute("Level")
if errorMessage then
warn(errorMessage)
else
print("ระดับปัจจุบัน: " .. currentLevel)
end
-- อัปเดตค่าคุณลักษณะระดับเป็นระดับสูง
local success, errorMessage = MatchmakingService:SetServerAttribute("Level", "Advanced")
if not success then
warn("ไม่สามารถอัปเดตคุณลักษณะเซิร์ฟเวอร์ [Level] เป็น [Advanced] ได้เนื่องจากข้อผิดพลาด: " .. errorMessage)
else
print("ตั้งค่า [Level] เป็น [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 scorelocal 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 scorelocal 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 scorelocal 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 - scorelocal 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 scorelocal 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 scorelocal 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
endlocal 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
endlocal server_GameNotStarted = true
if server_GameNotStarted == true then
return 1
else
return 0
end