🎮 DOOMSDAY เปิดทดสอบ Open Beta แล้ว — เล่นฟรีบนเว็บ ทั้งคอมและมือถือดูรายละเอียด →
Z-LEVELGAMES
Dev DiaryDOOMSDAYโดย ทีม DOOMSDAY

Dev Diary #3 — ฝูงซอมบี้ไม่ทำให้เครื่องกระตุกอีกต่อไป

จากฝูงซอมบี้ที่ทำให้เครื่องกระตุกและบางครั้งถึงขั้นหลุดจากเซิร์ฟเวอร์ ไปจนถึงวิธีที่ทำให้ร้อยกว่าตัวไล่ล่าได้ลื่นขึ้น — พร้อมตัวเลขก่อน/หลัง และข้อจำกัดของตัวเลขเหล่านั้น

เกมซอมบี้ที่ไม่มีฝูงซอมบี้ก็ไม่ค่อยน่ากลัว แต่ DOOMSDAY เล่นในเบราว์เซอร์ ทั้งบนคอมและมือถือ งานของเราช่วงนี้จึงเป็นการหาว่าเวลาหายไปตรงไหน แล้วตัดงานที่ไม่จำเป็นออก ตอนนี้รวบรวมสิ่งที่ทำไปแล้วไว้ในที่เดียว

ภาพจากเกมจริง (โหมดทดสอบออฟไลน์): ซอมบี้ราว 120 ตัวไล่เข้าหาผู้เล่นคนเดียว

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)

ถ้าเครื่องของคุณกระตุกตอนเจอฝูง บอกรุ่นเครื่องและเบราว์เซอร์มาที่ปุ่ม “แจ้งปัญหา” ในหน้าเกม ข้อมูลแบบนี้ช่วยเราได้มากที่สุด

#DevDiary#Performance
เล่นฟรีตอนนี้
READ MORE

ข่าวที่เกี่ยวข้อง

Dev DiaryDOOMSDAY

Dev Diary #8 — เดินข้ามแมพแบบไร้รอยต่อ อัปเดต 2

ตอนที่แล้วเราเล่าว่าเดินข้ามพื้นที่ได้โดยไม่มีจอโหลด ตอนนี้ขอบระหว่างพื้นที่กลมกลืนกว่าเดิม ยิงซอมบี้อีกฝั่งโดนจริง และซอมบี้ที่โดนยิงจะเดินข้ามมาหาคุณ

Dev DiaryDOOMSDAY

Dev Diary #9 — เครื่องบินตก ถังน้ำมัน และถังน้ำ

เหตุการณ์ใหม่: เครื่องบินรบตกลงในพื้นที่ที่คุณอยู่ ไถลชนบ้านพัง ทิ้งซากที่มีของให้ค้น แต่เสียงดังพอจะเรียกซอมบี้ทั้งย่านมา และถังน้ำมันกับถังน้ำที่ตอนนี้ตอบสนองต่อกระสุนต่างกัน

Dev DiaryDOOMSDAY

Dev Diary #2 — เดินข้ามแมพโดยไม่มีจอโหลด

โลกของ DOOMSDAY กว้าง 256 พื้นที่ ที่ผ่านมาทุกครั้งที่ไปพื้นที่ถัดไปต้องหยุดรอโหลด ตอนนี้เรากำลังทำให้เดินต่อกันได้เลย และเห็นคนกับซอมบี้ที่อยู่อีกฝั่งก่อนจะข้ามไป