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