คู่มือเกมแลค › ปัญหาที่เกิดกับบางคนเท่านั้น
ทิ้งข้อความแจ้งการปรากฏตัวที่มาถึงระหว่างโหลด Spawn messages dropped before the client is ready
ID สาเหตุ pt-loading-drop · ผู้รับผิดชอบหลัก พัฒนาไคลเอนต์ (ทีมพัฒนาเกม) · ร่วมกับ พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม)
เปิดการ์ดในฉบับหลักที่มีภาพและการทดลอง →
ทันทีที่เข้าโซน เซิร์ฟเวอร์ส่งข้อความแจ้งการปรากฏตัวของ NPC รอบตัวมา แต่ไคลเอนต์ยังโหลดแมพอยู่จึงทิ้งข้อความนั้น
ทำไม เซิร์ฟเวอร์ส่งข้อความแจ้งการปรากฏตัวของเอนทิตีรอบตัวทันทีหลังประมวลผลการเข้าโซน → ผลคือ ไคลเอนต์กำลังโหลดและยังไม่มี message handler จึงทิ้งข้อความ → บนหน้าจอ เซิร์ฟเวอร์ถือว่าส่งไปแล้วจึงไม่ส่งซ้ำ มองไม่เห็น NPC จนกว่าจะออกจากระยะมองเห็นแล้วกลับมา
- อาการ
- มองไม่เห็น/ตัวผี
- ปัจจัย
- แพ็กเก็ตหาย
- ใครเจอ
- ไคลเอนต์เดียวในเครื่องที่เปิดหลายจอ, เราคนเดียว
- เกิดเมื่อไร
- หลังล็อกอิน/หลังปิดปรับปรุง, ระหว่างเดินทาง/ย้ายแมพ
- ผู้รับผิดชอบ
- ผู้รับผิดชอบหลัก พัฒนาไคลเอนต์ (ทีมพัฒนาเกม) · ร่วมกับ พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม)
- งานฝั่งทีมพัฒนาเกม
- ไคลเอนต์: ส่ง “พร้อม” เมื่อโหลดเสร็จ หรือเก็บแพ็กเก็ตที่ได้ระหว่างโหลดไว้ประมวลผลทีหลัง เซิร์ฟเวอร์: ส่งข้อมูลรอบตัวหลังได้รับ “พร้อม”
- ตัวเลขที่ควรรู้
- ถ้าสองไคลเอนต์ในเครื่องเดียวกันโหลดพร้อมกัน หรือฝั่งที่โหลดเป็นหน้าต่างที่อยู่เบื้องหลัง จะต้องแบ่ง CPU และดิสก์กัน และถูกจำกัดการประมวลผลด้วย ฝั่งนั้นจึงอาจโหลดนานขึ้นหลายเท่า บั๊กเดียวกันนี้ยังโผล่ขึ้นมาได้เมื่อเซิร์ฟเวอร์ประมวลผลการเข้าโซนเร็วขึ้น
- บนกราฟ
- สูงเฉพาะบางกลุ่ม · เวลาโหลดแยกตามไคลเอนต์, จำนวนข้อความที่ทิ้งระหว่างโหลด
- จุดที่ต้องดู
- เทียบจำนวนและชนิดของข้อความที่ไคลเอนต์ได้รับแล้วทิ้งระหว่างโหลด และเวลาที่โหลดเสร็จ กับเวลาที่เซิร์ฟเวอร์ส่งข้อความแจ้งการปรากฏตัว จำลองอาการได้ง่ายโดยให้สองไคลเอนต์ในเครื่องเดียวกันโหลดพร้อมกัน หรือให้ฝั่งที่โหลดเป็นหน้าต่างที่อยู่เบื้องหลัง
- สัญญาณว่าใช่
- เซิร์ฟเวอร์ส่งข้อความแจ้งการปรากฏตัวของ NPC ที่มองไม่เห็นแล้ว และมาถึงก่อนโหลดเสร็จ ช่วงนั้นจำนวนข้อความที่ถูกทิ้งเพิ่มขึ้น เกิดเฉพาะกับไคลเอนต์ฝั่งที่โหลดนาน
- สัญญาณว่าไม่ใช่
- ข้อความแจ้งการปรากฏตัวมาถึงหลังโหลดเสร็จแล้วแต่ยังมองไม่เห็น: น่าจะเป็น “สแนปช็อตตั้งต้น (baseline) หาย” หรือ “สับสนจากการนำ entity ID กลับมาใช้ซ้ำ” ถ้าเซิร์ฟเวอร์ไม่ได้ส่งข้อความของ NPC นั้นเลย น่าจะเป็น “ลำดับการลงทะเบียนระยะมองเห็นพันกัน” หรือ “แชนแนล/อินสแตนซ์/phasing ต่างกัน”
- วิธีตรวจ
- ต้องมี log หรือเมตริกจากเซิร์ฟเวอร์/ไคลเอนต์เกม
แหล่งอ้างอิง
- NetworkConfig class (Netcode for GameObjects 2.5) Unity
SpawnTimeout: เก็บข้อความของเอนทิตีที่ยังไม่ถูกสร้างไว้ก่อน ถ้าไม่ถูกสร้างภายในเวลาที่กำหนดจะทิ้ง - Actor Relevancy in Unreal Engine Epic Games
actor ที่ไม่เกี่ยวข้องแล้วจะถูกลบออกจากไคลเอนต์ และเมื่อกลับมาเกี่ยวข้องอีกจะถูก replicate ใหม่
สาเหตุที่ควรดูประกอบ
ชั้นเดียวกัน: ปัญหาที่เกิดกับบางคนเท่านั้น
สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (มองไม่เห็น/ตัวผี)
ดูการ์ดในฉบับหลักที่มีภาพและการทดลอง