การแสดงระดับ / โครงสร้างข้อมูลที่เหมาะสมสำหรับเกมแพลต 2D จากเกม?


9

ฉันกำลังจะเขียนโปรแกรม Mario ใน Java ฉันกำลังคิดเกี่ยวกับการเป็นตัวแทน 2 ครั้ง / โครงสร้างข้อมูลสำหรับระดับ แต่ฉันไม่แน่ใจว่าควรเลือกแบบใด:

  • อาร์เรย์จำนวนเต็ม 2D
  • ควอดทรีเพื่อแบ่งระดับเป็นชิ้น ๆ

อะไรคือข้อดีและข้อเสีย?

คำตอบ:


9

จุดของควอดทรีคือการกำจัดชิ้นข้อมูลขนาดใหญ่อย่างมีประสิทธิภาพเพื่อให้คุณใช้เวลากับข้อมูลในบริเวณใกล้เคียงเท่านั้น อย่างไรก็ตามอาร์เรย์ 2D ให้การเข้าถึงแบบสุ่มเฉพาะตำแหน่งของคุณอยู่แล้วดังนั้นสำหรับเกม 2D ที่อาจทำให้เกิดควอดทรีซ้ำซ้อน ในเกม 3D คุณไม่สามารถใช้อาเรย์เพื่อค้นหาทุกสิ่งและนั่นคือจุดที่ควอดทรี

ตอนนี้ฉันกำลังพูดถึงที่นี่เกี่ยวกับการแสดงข้อมูลพื้นฐานสำหรับระดับ ขึ้นอยู่กับการตั้งค่าสถาปัตยกรรมกราฟิกของคุณ (เช่นการทำกราฟิก 2D กับเครื่องบินในเอนจิ้น 3 มิติ) คุณอาจต้องการใช้ควอดทรีในกราฟซีนเพื่อคัดเนื้อหากราฟิกที่มีประสิทธิภาพ

และอย่าลืมศัตรูและวัตถุโต้ตอบอื่น ๆ ในระดับของคุณ บางทีคุณอาจใช้อาร์เรย์ 2 มิติในการจัดการไทล์ของระดับ แต่ใช้ quadtrees เพื่อจัดระเบียบองค์ประกอบแบบโต้ตอบทั้งหมด (เช่นสำหรับเครื่องยนต์ฟิสิกส์)


ลองใช้วิธีนี้: เลือกจุดโดยการสุ่มในระดับของคุณแล้วลองคิดดูว่าจะต้องใช้ความพยายามมากแค่ไหนในการคำนวณทุกสิ่งภายในรัศมี 1,000 พิกเซลของจุดนั้น หากคุณสามารถทำได้อย่างรวดเร็วเพราะทุกอย่างจัดตามสถานที่ในอาเรย์แบบสองมิติคุณไม่จำเป็นต้องใช้ควอดทรี อย่างไรก็ตามหากคุณต้องวนซ้ำทุกอย่างและตรวจสอบระยะห่างของวัตถุแต่ละชิ้นคุณสามารถทำให้การค้นหามีประสิทธิภาพมากขึ้นโดยใช้ควอดทรี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.