คุณลักษณะที่มีอยู่
การกำหนดค่าการจับคู่ของ Roblox เริ่มต้นใช้สัญญาณที่อิงจากคุณลักษณะที่มีอยู่ เช่น ตำแหน่งของผู้เล่น กลุ่มอายุ และความหน่วงเวลา
ในการใช้ข้อมูลสำหรับการจับคู่ที่ Roblox ไม่ได้รวมไว้ในค่าคอนฟิกเริ่มต้น คุณจำเป็นต้องสร้าง คุณลักษณะเฉพาะ และ สัญญาณเฉพาะ
| คุณลักษณะ | ประเภท | คำอธิบาย |
|---|---|---|
| ความหน่วงเวลาของผู้เล่นที่คาดการณ์ | ตัวเลข | ความหน่วงเวลาที่คาดการณ์ของผู้เล่นในเซิร์ฟเวอร์ |
| มีเพื่อน | หมวดหมู่ | เซิร์ฟเวอร์มีเพื่อนหรือผู้เล่นคนอื่นที่อยู่ในที่อยู่ IP เดียวกับผู้เล่นที่เข้าร่วมหรือไม่ |
| เปิดใช้การแชทด้วยเสียง | หมวดหมู่ | ผู้เล่นเปิดใช้การแชทด้วยเสียงหรือไม่ |
| อายุผู้เล่น | ตัวเลข | อายุของผู้เล่น |
| ประเภทอุปกรณ์ผู้เล่น | หมวดหมู่ | ประเภทอุปกรณ์ของผู้เล่น สามารถเป็นอุปกรณ์มือถือ คอมพิวเตอร์ แท็บเล็ต คอนโซล หรืออุปกรณ์ VR |
| ภาษาผู้เล่น | หมวดหมู่ | ภาษาของผู้เล่น |
| ประวัติการเล่นของผู้เล่น | ตัวเลข | จำนวน log-10 ของนาทีที่ผู้เล่นได้เล่นในจักรวาลในช่วง 28 วันที่ผ่านมา |
| การเข้าคิวของเซิร์ฟเวอร์ | ตัวเลข | จำนวนผู้เล่นในเซิร์ฟเวอร์ |
| กลุ่มแชทข้อความของผู้เล่น | หมวดหมู่ | กลุ่มแชทข้อความของผู้เล่นที่พวกเขาสามารถแชทข้อความด้วยกันได้ |
สัญญาณที่มีอยู่
ต่อไปนี้คือสัญญาณที่กำหนดโดย Roblox ซึ่งได้แก่ตามคุณลักษณะของ Roblox:
| สัญญาณ | คำอธิบาย |
|---|---|
| อายุ | ความแตกต่างระหว่างอายุเฉลี่ยของผู้เล่นในเซิร์ฟเวอร์กับอายุของผู้เล่นที่เข้าร่วม โดยมีความแตกต่างที่มีความสำคัญสูงสุดคือ 25 |
| ประเภทอุปกรณ์ | อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีประเภทอุปกรณ์เดียวกันกับผู้เล่นที่เข้าร่วม |
| เพื่อน | จำนวนคนในเซิร์ฟเวอร์ที่เป็นเพื่อนกับผู้เล่นที่เข้าร่วมหรือที่มีที่อยู่ IP ร่วมกันกับผู้เล่นที่เข้าร่วม 1 หากมีผู้เล่นที่พึงประสงค์ 0 ถ้าไม่มี |
| ความหน่วงเวลา | ความหน่วงเวลาโดยประมาณของผู้เล่นสำหรับเซิร์ฟเวอร์ โดยมีค่าที่เกี่ยวข้องสูงสุดเท่ากับ 250 |
| ภาษา | อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีภาษาที่เหมือนกันกับผู้เล่นที่เข้าร่วม |
| การเข้าคิว | อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์เมื่อเปรียบเทียบกับขีดความสามารถของเซิร์ฟเวอร์ |
| ประวัติการเล่น | ความแตกต่างระหว่างประวัติการเล่นเฉลี่ยในเซิร์ฟเวอร์กับประวัติการเล่นของผู้เล่นที่เข้าร่วม โดยมีความแตกต่างที่มีความสำคัญสูงสุดคือ 4.6 |
| แชทด้วยเสียง | อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่เปิดใช้การแชทด้วยเสียง |
| แชทข้อความ | อัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่สามารถแชทข้อความกับผู้เล่นที่เข้าร่วมได้ |
อายุ
สัญญาณตัวเลขที่เปรียบเทียบอายุเฉลี่ยของผู้เล่นในเซิร์ฟเวอร์กับอายุของผู้เล่นที่เข้าร่วม โดยมีความแตกต่างที่สัมพันธ์สูงสุดคือ 25 คะแนนสัญญาณนี้มีความสัมพันธ์ในทางกลับกันกับความแตกต่างของอายุ โดยความแตกต่างที่น้อยกว่าจะมีคะแนนที่สูงกว่า
โดยที่
ประเภทอุปกรณ์
สัญญาณหมวดหมู่ที่วัดอัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีประเภทอุปกรณ์เดียวกันกับผู้เล่นที่เข้าร่วม ประเภทอุปกรณ์รวมถึง: คอมพิวเตอร์ อุปกรณ์มือถือ แท็บเล็ต คอนโซล และอุปกรณ์ VR
เพื่อน
ผู้เล่นที่พึงประสงค์คือผู้เล่นที่เป็นเพื่อนกับผู้เล่นที่เข้าร่วมหรือมีที่อยู่ IP ร่วมกันกับผู้เล่นที่เข้าร่วม สัญญาณเพื่อนเป็นสัญญาณหมวดหมู่ที่มีคะแนน 1 เมื่อมีผู้เล่นที่พึงประสงค์ในเซิร์ฟเวอร์และคะแนน 0 เมื่อไม่มีผู้เล่นที่พึงประสงค์ในเซิร์ฟเวอร์
สัญญาณเพื่อนยังสามารถพิจารณาเป็นสัญญาณตัวเลขที่มีค่าที่เกี่ยวข้องสูงสุดเท่ากับ 1
ภาษา
สัญญาณหมวดหมู่ที่วัดอัตราส่วนของผู้เล่นในเซิร์ฟเวอร์ที่มีการตั้งค่าภาษาเดียวกันกับผู้เล่นที่เข้าร่วม
ความหน่วงเวลา
สัญญาณตัวเลขที่วัดเวลาหน่วงด้วยการประมาณในมิลลิวินาทีของผู้เล่นที่เข้าร่วมหากพวกเขาเล่นในเซิร์ฟเวอร์ สัญญาณนี้มีค่าที่เกี่ยวข้องสูงสุดเท่ากับ 250 มิลลิวินาที คะแนนสัญญาณนี้มีความสัมพันธ์ในทางกลับกันกับ ping หมายถึงค่า ping ที่ต่ำกว่าจะมีคะแนนที่สูงกว่า
การเข้าคิว
สัญญาณตัวเลขที่วัดอัตราส่วนของผู้เล่นในเซิร์ฟเวอร์เมื่อเปรียบเทียบกับขีดความสามารถของเซิร์ฟเวอร์
ประวัติการเล่น
ค่าอัตราค่าใช้จ่ายการเล่นคือจำนวน log-10 ของนาทีที่ผู้เล่นได้เล่นในจักรวาลในช่วง 28 วันที่ผ่านมา สัญญาณตัวเลขนี้เปรียบเทียบค่าใช้จ่ายการเล่นเฉลี่ย log-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
end
ตัวอย่างคุณลักษณะของเซิร์ฟเวอร์local MatchmakingService = game:GetService("MatchmakingService")local RunService = game:GetService("RunService")if RunService:IsStudio() then-- ตั้งค่าอัตราส่วนเริ่มต้นและโครงสร้างสำหรับการทดสอบMatchmakingService:InitializeServerAttributesForStudio({Level = "ขั้นสูง",Elo = 123.456,TrainingMode = true})end-- ดึงค่าคุณลักษณะระดับlocal currentLevel, errorMessage = MatchmakingService:GetServerAttribute("Level")if errorMessage thenwarn(errorMessage)elseprint("ระดับปัจจุบัน: " .. currentLevel)end-- ปรับค่าอัตราส่วนระดับเป็นขั้นสูงlocal success, errorMessage = MatchmakingService:SetServerAttribute("Level", "ขั้นสูง")if not success thenwarn("ไม่สามารถปรับอัตราส่วนของเซิร์ฟเวอร์ [Level] เป็น [ขั้นสูง] ได้เนื่องจากข้อผิดพลาด: " .. errorMessage)elseprint("ตั้งค่า [Level] เป็น [ขั้นสูง] สำเร็จ")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 = "เอาชีวิตรอด"local joining_player_GameMode = "เอาชีวิตรอด"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