คู่มือเกมแลค › การออกแบบการซิงก์
รอทิกซ้อนสองชั้น Double tick quantization
ID สาเหตุ sy-double-tick · ผู้รับผิดชอบหลัก พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม)
เปิดการ์ดในฉบับหลักที่มีภาพและการทดลอง →
ถ้าเก็บคำขอรอจนถึงทิกถัดไปแล้วจึงประมวลผล และส่งผลลัพธ์ในทิกถัดจากนั้นอีก ช่วงห่างระหว่างทิกจะถูกบวกเพิ่มสองครั้ง
ทำไม คำขอที่ได้รับจะประมวลผลในทิกถัดไป → ผลคือ ผลการประมวลผลก็เก็บรวมไว้ส่งในทิกส่งถัดไป → บนหน้าจอ ปิงของเน็ตต่ำ แต่การตอบสนองช้าคงที่ประมาณ 1.5 เท่าของช่วงห่างระหว่างทิก ถ้าเซิร์ฟเวอร์ 10 ทิก จะเฉลี่ย 0.15 วินาที แย่สุด 0.2 วินาที
- อาการ
- อินพุตดีเลย์
- ปัจจัย
- ความหน่วง
- ใครเจอ
- ทั้งเซิร์ฟเวอร์
- เกิดเมื่อไร
- ตลอดเวลา
- ผู้รับผิดชอบ
- ผู้รับผิดชอบหลัก พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม)
- งานฝั่งทีมพัฒนาเกม
- ส่งคำตอบทันทีในทิกที่ประมวลผล, เพิ่มทิกเรต, คำตอบที่สำคัญให้ส่งทันที
- ตัวเลขที่ควรรู้
- เซิร์ฟเวอร์ 10 ทิกมีหนึ่งทิกเท่ากับ 100 ms การรอทิกอย่างเดียวจึงเพิ่มเฉลี่ย 150 ms แย่สุด 200 ms ถ้ารอครั้งเดียว เฉลี่ยจะเป็น 50 ms
- บนกราฟ
- สูงตลอดตั้งแต่แรก · เวลาตั้งแต่คำขอมาถึงจนส่งคำตอบ
- จุดที่ต้องดู
- ใน packet capture ฝั่งเซิร์ฟเวอร์ วัดช่วงห่างระหว่างเวลาที่แพ็กเก็ตคำขอมาถึงกับเวลาที่แพ็กเก็ตคำตอบออกไป ขณะที่บัญชีทดสอบทำแอ็กชันเดิมซ้ำหลายครั้ง (เช่น ใช้ไอเทม) ถ้ามี log ของเซิร์ฟเวอร์ ให้ดูเวลาที่คำขอมาถึง, หมายเลขทิกที่ประมวลผล และเวลาที่ส่งคำตอบ
- สัญญาณว่าใช่
- เวลาที่ใช้ภายในเซิร์ฟเวอร์เฉลี่ยประมาณ 1.5 เท่า สูงสุดประมาณ 2 เท่าของช่วงห่างระหว่างทิก และคงที่โดยไม่ขึ้นกับ RTT
- สัญญาณว่าไม่ใช่
- เวลาภายในเซิร์ฟเวอร์อยู่ราวครึ่งหนึ่งของช่วงห่างระหว่างทิก: รอทิกแค่ครั้งเดียว ถ้านานกว่าช่วงห่างระหว่างทิกแบบไม่สม่ำเสมอ ให้ดูทิกเกินงบเวลา
- วิธีตรวจ
- ใช้เครื่องมือฝั่งอินฟรา (ไม่ต้องใช้โค้ดเกม)
แหล่งอ้างอิง
- Peeking into VALORANT's Netcode Riot Games
อินพุตที่มาถึงต้องรอจนถึงขอบทิกนานสุดหนึ่งทิก และใช้อีกหนึ่งเฟรมในการนำไปใช้และส่ง ยิ่งทิกเรตสูงยิ่งลดลง - VALORANT's 128-Tick Servers Riot Games
ดีเลย์ส่วนหนึ่งมาจากเครือข่าย อีกส่วนหนึ่งมาจากทิกเรตของเซิร์ฟเวอร์ - NetworkTime and ticks (Netcode for GameObjects 2.5) Unity
การเปลี่ยนแปลงของ NetworkVariable จะรอส่งรวมกันทุก network tick
สาเหตุที่ควรดูประกอบ
ชั้นเดียวกัน: การออกแบบการซิงก์
สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (อินพุตดีเลย์)
ดูการ์ดในฉบับหลักที่มีภาพและการทดลอง