คุณสมบัติที่มีอยู่
การกำหนดค่าจับคู่เริ่มต้นของ Roblox ใช้สัญญาณที่ขึ้นอยู่กับคุณลักษณะที่มีอยู่เช่นตำแหน่งผู้เล่น กลุ่มอายุ และความล่าช้า
เพื่อใช้ข้อมูลสำหรับการจับคู่ที่ Roblox ไม่รวมโดยอัตโนมัติในการกำหนดค่าเริ่มต้น คุณต้องสร้าง คุณสมบัติที่กําหนดเอง และ สัญญาณกำหนดเอง
คุณสมบัติ | ประเภท | คําอธิบาย |
---|---|---|
ความแลคของผู้เล่นที่คาดการณ์ | ตัวเลข | ความล่าช้าที่ประมาณการของผู้เล่นในเซิร์ฟเวอร์ |
มีเพื่อน | หมวดหมู่ | ว่าเซิร์ฟเวอร์มีเพื่อนหรือผู้เล่นคนอื่นที่มี IP เดียวกับผู้เล่นที่เข้าร่วมหรือไม่ |
การแชทด้วยเสียงถูกเปิดใช้งานหรือไม่ | หมวดหมู่ | ว่าผู้เล่นมีการแชทด้วยเสียงเปิดใช้งานหรือไม่ |
อายุผู้เล่น | ตัวเลข | อายุของผู้เล่น |
ประเภทอุปกรณ์ผู้เล่น | หมวดหมู่ | พิมพ์สามารถเป็นอุปกรณ์เคลื่อนที่ คอมพิวเตอร์ แท็บเล็ต คอนโซล หรืออุปกรณ์ VR |
ภาษาผู้เล่น | หมวดหมู่ | ภาษาของผู้เล่น |
ประวัติการเล่นผู้เล่น | ตัวเลข | จํานวนนาทีบันทึก-10 ที่ผู้เล่นได้เล่นในจักรวาลในช่วง 28 วันที่ผ่านมา |
อัตราการใช้งานเซิร์ฟเวอร์ | ตัวเลข | จํานวนผู้เล่นในเซิร์ฟเวอร์ |
สัญญาณที่มีอยู่
สัญญาณต่อไปนี้คือสัญญาณที่กำหนดโดย Roblox ที่ได้รับจากคุณสมบัติของ Roblox:
สัญญาณ | คําอธิบาย |
---|---|
อายุ | ความแตกต่างระหว่างอายุเฉลี่ยของผู้เล่นในเซิร์ฟเวอร์และอายุของผู้เล่นที่เข้าร่วมด้วยความแตกต่างสูงสุดที่เกี่ยวข้อง 25 |
ประเภทอุปกรณ์ | อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีประเภทอุปกรณ์เดียวกับผู้เล่นที่เข้าร่วม |
เพื่อน | จํานวนคนในเซิร์ฟเวอร์ที่เป็นเพื่อนกับผู้เล่นที่เข้าร่วมหรือแชร์ที่อยู่ IP กับผู้เล่นที่เข้าร่วม1 หากมีผู้เล่นที่ชื่นชอบ 0 มิฉะนั้น |
ความแลค | ความล่าช้าของผู้เล่นที่ประมาณการสำหรับเซิร์ฟเวอร์พร้อมค่าที่เกี่ยวข้องสูงสุด 250 |
ภาษา | อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีภาษาเดียวกับผู้เล่นที่เข้าร่วม |
การใช้งาน | อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์เมื่อเทียบกับความสามารถของเซิร์ฟเวอร์ |
ประวัติการเล่น | ความแตกต่างระหว่างประวัติการเล่นเฉลี่ยในเซิร์ฟเวอร์และประวัติการเล่นของผู้เล่นที่เข้าร่วมที่มีความแตกต่างสูงสุดที่เกี่ยวข้อง 4.6 |
แชทเสียง | อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีการเปิดใช้งานการแชทด้วยเสียง |
อายุ
สัญญาณตัวเลขที่เปรียบเทียบอายุเฉลี่ยของผู้เล่นบนเซิร์ฟเวอร์กับอายุของผู้เล่นที่เข้าร่วมสัญญาณนี้มีความแตกต่างสูงสุดที่เกี่ยวข้องสูงสุด 25คะแนนสัญญาณมีความเกี่ยวข้องกับความแตกต่างอายุในทางกลับกัน ซึ่งหมายความว่าความแตกต่างอายุที่ต่ำกว่ามีคะแนนสูงกว่า
ageDifferenceSignalScore = 1 - min(25, ageDifference) / 25, whereageDifference = 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), whereplayHistoryDifference = 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 thenprint(error)elseprint("Current level: " .. currentLevel)end-- อัปเดตค่าคุณสมบัติระดับเป็นขั้นสูงlocal 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
สัญญาณที่กำหนดเอง
สัญญาณที่กําหนดเองถูกสร้างและกําหนดโดยคุณและสามารถเป็นเลขหรือหมวดหมู่ได้:
- สัญญาณทางเลขเป็นตัวเลขพวกเขาเปรียบเทียบความแตกต่างระหว่างค่าตัวละครของผู้เล่นที่เข้าร่วมและมูลค่ารวมของเซิร์ฟเวอร์กับความแตกต่างที่ใหญ่กว่าที่ลดหรือเพิ่มคะแนนตัวอย่างเช่น ยิ่งระดับทักษะของผู้เล่นใกล้เคียงกับระดับทักษะเฉลี่ยของเซิร์ฟเวอร์มากเท่าใด คะแนนของสัญญาณทางเลขก็จะยิ่งสูงขึ้นเท่านั้นคะแนนนี้จะถูกคูณด้วยน้ำหนักของสัญญาณ
- สัญญาณเชิงประเภทคือสตริงหรือบูลีเอนพวกเขาขึ้นอยู่กับวิธีที่คุณสมบัติของผู้เล่นที่เข้าร่วมมีความธรรมดาเมื่อเทียบกับผู้เล่นอื่นๆ ในเซิร์ฟเวอร์ตัวอย่างเช่น หากส่วนใหญ่ของผู้เล่นภายในเซิร์ฟเวอร์มีภาษาที่ต้องการเดียวกับผู้เล่นที่เข้าร่วม คะแนนจะเพิ่มขึ้นคะแนนนี้จะถูกคูณด้วยน้ำหนักของสัญญาณเช่นกัน
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างสัญญาณกำหนดเองของคุณเองดูที่ สร้างสัญญาณกำหนดเองสำหรับข้อมูลเพิ่มเติมเกี่ยวกับสัญญาณ 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 = 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
ค่าคงที่
ลดความแตกต่างระหว่างค่าผู้เล่นเฉลี่ยของเซิร์ฟเวอร์และค่าคงที่ 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 = 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)
หมวดหมู่ผู้เล่น
การจัดกลุ่ม
เพิ่มสัดส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีคุณสมบัติเดียวกับคุณสมบัติของผู้เล่นที่เข้าร่วม
สูตรการจัดกลุ่มสำหรับสัญญาณประเภทผู้เล่น
local score = num_players_same_{attribute_name} / occupancyreturn score
ตัวอย่างการจัดกลุ่มสำหรับสัญญาณประเภทผู้เล่น
local num_players_same_Guild = 15local occupancy = 19local score = num_players_same_Guild / occupancyreturn score
การแยกกัน
เพิ่มสัดส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีคุณสมบัติที่แตกต่างจากคุณสมบัติของผู้เล่นที่เข้าร่วม
สูตรการแยกประเภทสัญญาณสำหรับผู้เล่น
local score = num_players_same_{attribute_name} / occupancyreturn 1 - score
ตัวอย่างการแยกประเภทสัญญาณสำหรับผู้เล่น
local num_players_same_RpgClass = 15local occupancy = 19local score = num_players_same_RpgClass / occupancyreturn 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 = 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)
ค่าคงที่
ลดความแตกต่างระหว่างมูลค่าคุณสมบัติของเซิร์ฟเวอร์และค่าคงที่ ความแตกต่างเกินค่าคงที่นี้จะส่งผลให้คะแนนสัญญาณเป็น 0
สูตรค่าคงที่สำหรับสัญญาณตัวเลขของเซิร์ฟเวอร์
local diff = math.abs(server_{attribute_name} - constant_value)local score = math.min(diff / max_relevant_difference, 1)return score
ตัวอย่างค่าคงที่สำหรับสัญญาณตัวเลขของเซิร์ฟเวอร์
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)
หมวดหมู่เซิร์ฟเวอร์
เปรียบเทียบกับการเข้าร่วมกับผู้เล่น
คะแนนคือ 1 เมื่อค่าโครงสร้างของเซิร์ฟเวอร์ (เช่น โหมดเกม) เท่ากับค่าโครงสร้างของผู้เล่น (เช่น โหมดเกมที่ชื่นชอบ)มิฉะนั้นคะแนนสัญญาณคือ 0
เข้าร่วมสูตรผู้เล่นสำหรับสัญญาณประเภทเซิร์ฟเวอร์
if server_{attribute_name} = joining_player_{attribute_name} thenreturn 1elsereturn 0end
เข้าร่วมตัวอย่างผู้เล่นสําหรับสัญญาณประเภทเซิร์ฟเวอร์
local server_GameMode = "Survival"local joining_player_GameMode = "Survival"if server_GameMode = joining_player_GameMode thenreturn 1elsereturn 0end
เปรียบเทียบกับค่าคงที่
คะแนนคือ 1 เมื่อค่าโครงสร้างของเซิร์ฟเวอร์เท่ากับค่าคงที่ของจริง มิฉะนั้นคะแนนสัญญาณจะเป็น 0
สูตรค่าคงที่สำหรับสัญญาณประเภทเซิร์ฟเวอร์
if server_{attribute_name} = constant_value thenreturn 1elsereturn 0end
ตัวอย่างค่าคงที่สำหรับสัญญาณประเภทเซิร์ฟเวอร์
local server_GameNotStarted = trueif server_GameNotStarted = true thenreturn 1elsereturn 0end