
Dev Diary #3 — ฝูงซอมบี้ไม่ทำให้เครื่องกระตุกอีกต่อไป
จากฝูงซอมบี้ที่ทำให้เครื่องกระตุกและบางครั้งถึงขั้นหลุดจากเซิร์ฟเวอร์ ไปจนถึงวิธีที่ทำให้ร้อยกว่าตัวไล่ล่าได้ลื่นขึ้น — พร้อมตัวเลขก่อน/หลัง และข้อจำกัดของตัวเลขเหล่านั้น
เกมซอมบี้ที่ไม่มีฝูงซอมบี้ก็ไม่ค่อยน่ากลัว แต่ DOOMSDAY เล่นในเบราว์เซอร์ ทั้งบนคอมและมือถือ งานของเราช่วงนี้จึงเป็นการหาว่าเวลาหายไปตรงไหน แล้วตัดงานที่ไม่จำเป็นออก ตอนนี้รวบรวมสิ่งที่ทำไปแล้วไว้ในที่เดียว
1. เซิร์ฟเวอร์ส่งเฉพาะที่อยู่ใกล้คุณ
เดิมทุกคนในห้องได้ข้อมูลศัตรูทุกตัว ตอนนี้แต่ละคนได้เฉพาะศัตรูในระยะ 26 ช่อง รอบตัว ส่งเป็นอัปเดตแบบย่อ และมีข้อความแจ้งเมื่อศัตรูออกนอกระยะ
การหาเส้นทางก็เปลี่ยน แทนที่ซอมบี้ทุกตัวจะคิดเส้นทางของตัวเอง ฝูงที่ไล่คนคนเดียวกันใช้ แผนที่ทิศทางร่วมกัน (flow field) แล้วแยกกันเข้าล้อมจากหลายทิศเมื่อใกล้ตัว การคิดเส้นทางแบบละเอียดถูกจำกัดไว้ 4 ครั้งต่อรอบ และศัตรูที่อยู่ไกลจากผู้เล่นทุกคนจะคิดทุก 0.5 วินาทีแทนทุกรอบ
ผลจากการทดสอบซอมบี้ 300 ตัวไล่ล่า: เวลาคิดต่อรอบ 5.4 → 1.1 มิลลิวินาที รอบที่ช้าที่สุด 43 → 3–12 มิลลิวินาที และข้อมูลที่ส่งถึงผู้เล่นแต่ละคน 75 → 16 KB ต่อวินาที
2. ใกล้ตัวเป็น 3D ไกลออกไปเป็นภาพ
ซอมบี้ที่อยู่นอกจอไม่ถูกวาด ส่วนที่อยู่บนจอ ตัวที่ใกล้ที่สุดจำนวนหนึ่งวาดเป็นโมเดล 3D เต็ม (จำนวนปรับตาม FPS ของเครื่อง) ที่เหลือใช้ภาพท่าทางที่อบไว้ล่วงหน้า
เราลองวัดว่าถ้าวาด 3D ทุกตัวจะเป็นอย่างไร (ซอมบี้ 120 ตัว 115 ตัวอยู่บนจอ): 3D ทุกตัว 64 มิลลิวินาทีต่อเฟรม · แบบผสมที่ใช้อยู่ 30 · ภาพอบล้วน 17 ถ้าทำ 3D ทุกตัว เครื่องทดสอบจะได้ราว 15 FPS จึงยังใช้แบบผสมต่อไป
3. ข้อความที่ทำให้คนหลุด
ตอนฆ่าซอมบี้พร้อมกันหลายสิบตัว (เช่นระเบิดกลางฝูง) เซิร์ฟเวอร์รุ่นเก่าส่งข้อความแยกทีละเรื่อง ฆ่า 40 ตัวในจังหวะเดียวกลายเป็น 164–212 ข้อความ ซึ่งเกินคิวขาออกของเซิร์ฟเวอร์ที่ตั้งไว้เล็ก และ ผลคือผู้เล่นหลุดจากเกม
โปรโตคอลรุ่น 2 รวมทุกอย่างของหนึ่งรอบเป็นก้อนเดียวต่อผู้เล่น เหตุการณ์เดิมเหลือ 1 ข้อความ ห้องที่มี 40 คนใช้ข้อมูลต่อคนลดจาก 177 เหลือ 10.8 KB ต่อวินาที เรายังขยายคิวขาออกเผื่อไว้ด้วย และเครื่องที่ยังใช้เกมรุ่นเก่าจะได้ข้อมูลแบบเดิมทุกไบต์ ไม่ต้องอัปเดตพร้อมกัน
4. งานเล็ก ๆ ที่รวมกันแล้วเห็นผล
- เซิร์ฟเวอร์: ซอมบี้ทุกตัวเคยวนหาศัตรูต่างฝ่ายจากทุกตัวในห้อง ทั้งที่ห้องมีแต่ซอมบี้ พอตัดออก เวลาคิดของห้องที่มีซอมบี้ 60/120/200 ตัว ลดจาก 4.3/9.6/25.4 เหลือ 2.2/4.2/7.6 มิลลิวินาที
- ไฟล์เสียงรวม 34.7 → 2.7 MB · หน้าเกมหลัก 2.1 MB → 239 KB (บีบอัดแล้ว) · โมเดลปืนไรเฟิล 38.6 MB → 515 KB
- เข้าแผนที่ 443–464 → 113–117 มิลลิวินาที และอาการค้างราว 1 วินาทีตอนเข้าแมพครั้งแรกหายไป
- เจอหน่วยความจำรั่ว 2 จุด ครั้งละ 15–35 MB ทุกครั้งที่เปลี่ยนแมพ แก้แล้ว
- เพิ่มการปรับคุณภาพภาพอัตโนมัติจากเวลาที่เครื่องใช้วาดจริง
ข้อจำกัดของตัวเลขชุดนี้
ตัวเลขทั้งหมดวัดบนเครื่องพัฒนาเครื่องเดียว และตอนวัดมีโปรแกรมอื่นใช้ CPU อยู่ด้วยราว 80% เครื่องของผู้เล่นจะได้ตัวเลขต่างจากนี้ งานถัดไปคือวัดบนโน้ตบุ๊กและมือถือทั่วไป เป้าคือเฟรมที่ช้า 5% ท้ายสุดยังไม่เกิน 16.7 มิลลิวินาที (60 FPS)
ถ้าเครื่องของคุณกระตุกตอนเจอฝูง บอกรุ่นเครื่องและเบราว์เซอร์มาที่ปุ่ม “แจ้งปัญหา” ในหน้าเกม ข้อมูลแบบนี้ช่วยเราได้มากที่สุด



