กราฟฉากหรือไม่กราฟฉาก?


10

ฉันดิ้นรนกับการตัดสินใจว่าจะใช้กราฟฉากในเกมของฉันหรือไม่ ฉันมีกรณีการใช้งานบางอย่างที่เรียกใช้เครื่องมือดังกล่าว แต่ฉันไม่สามารถรับรายละเอียดการใช้งานบางอย่างได้

พื้นหลังบางอย่าง: ฉันกำลังเขียนเกมประเภท Shooter อวกาศที่กำหนดเป้าหมายไว้ที่แพลตฟอร์มมือถือ (Android เป็นหลัก) และรหัสของฉันคือ C ++ เกือบทั้งหมด ฉันไม่ได้ใช้มิดเดิลแวร์ใด ๆ เครื่องยนต์เรนเดอร์และฟิสิกส์โดยเฉพาะเป็นการสร้างของฉันเอง เอนจิ้นฟิสิกส์ของฉันอัพเดทตำแหน่งของวัตถุตามแรงและแรงกระตุ้น ฉันยังไม่มีระบบแอนิเมชั่นในขณะนี้ แต่อาจไปที่จุดนี้ (ซึ่งอาจจะหรือไม่มีอะไรเกี่ยวข้องกับการสนทนานี้)

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

เนื่องจากเป็นฉันได้ตัดสินใจลองแก้ไขปัญหาดังกล่าวด้วยข้อ จำกัด ในเครื่องมือฟิสิกส์ของฉันเพื่อให้วัตถุผสมดังกล่าวเข้าด้วยกัน ข้อ จำกัด หนึ่งข้อนั้นให้อิสระ 0 องศาและเป็นเมทริกซ์การแปลง นี่เป็นความพยายามที่จะหลีกเลี่ยงปัญหาที่ในที่สุดก็ปิดฉันออกจากฉากกราฟในสถานที่แรกที่อธิบายไว้ด้านล่าง

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

อย่างไรก็ตามจากกรณีการใช้งานอย่างที่อธิบายไว้ข้างต้นฉันคิดว่าการสามารถ 'ทำงาน' ในพื้นที่ผู้ปกครองจะกลายเป็นเรื่องสำคัญมากและพยายามบังคับให้กลไกฟิสิกส์ของฉันรักษาความสัมพันธ์เหล่านี้ผ่านการใช้ข้อ จำกัด ที่จะเป็นปัญหา

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

คำตอบ:


11

คุณลองกราฟแบบลำดับชั้นและวัดประสิทธิภาพแล้วหรือยัง?

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

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

ในฐานะที่เป็นบันทึกด้านข้างแม้แต่วัตถุที่มีความบริสุทธิ์ก็คือ "กราฟฉาก" เพียงอันเดียวที่ง่ายมาก อย่ากลัวที่จะจัดระเบียบข้อมูลด้วยวิธีการแก้ปัญหาและโดยเฉพาะอย่างยิ่งอย่าตัดสินใจว่าประสิทธิภาพขององค์กรข้อมูลนั้นเป็นปัจจัยโดยไม่ต้องวัดประสิทธิภาพ


ฉันพยายามหลีกเลี่ยงไม่ใช่เพราะประสิทธิภาพ แต่เป็นเพราะเวลา เมื่อคุณเป็นอินดี้การติดอะไรบางอย่างเป็นเวลานานอาจเป็นอันตรายต่อความก้าวหน้าและความคิด ฉันดูเครื่องยนต์ Spring RTS นิดหน่อย แต่ไม่พบสิ่งที่ฉันกำลังมองหา ดังนั้นถ้าฉันให้กราฟในเครื่องยนต์ฟิสิกส์ฉันจะต้องอัปเดตตำแหน่งวัตถุในพื้นที่ท้องถิ่นจากนั้นคำนวณการวางแนวของพื้นที่โลกและไปยังที่นั้นเพื่อใช้กับการตรวจจับการชนกัน คุณพูดถึง "และย้อนกลับ" ว่า - ต้องมีการคำนวณเมทริกซ์ผกผันใช่มั้ย ฉันจะต้องทำเมื่อไหร่
notlesh

ฉันคิดว่าถ้าเวลาเป็นปัญหาแล้วการใช้ห้องสมุดฟิสิกส์จะเร็วขึ้นเพื่อประหยัดเวลาในการดีบั๊ก ถ้าคุณทำแค่ 2 มิติแล้วbox2d.orgอาจจะ? ฉันแนะนำ "และย้อนกลับ" เพราะมันเป็นเพียงสิ่งที่ตรงกันข้ามเช่นคุณเดา ในบางจุดคุณอาจต้องการที่จะนำบางสิ่งบางอย่างในอวกาศของโลกและแนบไปกับรูปแบบอื่นซึ่งจะต้องมี
Patrick Hughes
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.