1
วิธีการได้รับประโยชน์จาก cpu แคชในเอ็นจิ้นเกมเอนทิตีคอมโพเนนต์ระบบ?
ฉันมักจะอ่านในเอกสารประกอบเครื่องมือเกมของ ECS ซึ่งเป็นสถาปัตยกรรมที่ดีสำหรับการใช้แคช cpu อย่างชาญฉลาด แต่ฉันไม่สามารถคิดได้ว่าเราจะได้ประโยชน์จาก cpu cache ได้อย่างไร หากส่วนประกอบถูกบันทึกในอาร์เรย์ (หรือพูล) ในหน่วยความจำต่อเนื่องเป็นวิธีที่ดีในการใช้ cpu cache แต่ถ้าเราอ่านส่วนประกอบตามลำดับ เมื่อเราใช้ระบบพวกเขาต้องการรายการเอนทิตีซึ่งเป็นรายการเอนทิตีที่มีส่วนประกอบที่มีประเภทเฉพาะ แต่รายการเหล่านี้ให้ส่วนประกอบในวิธีการสุ่มไม่ใช่ตามลำดับ ดังนั้นวิธีการออกแบบ ECS เพื่อเพิ่มการเข้าชมแคชสูงสุด? แก้ไข: ตัวอย่างเช่นระบบ Physic ต้องการรายการเอนทิตีสำหรับเอนทิตีที่มีส่วนประกอบ RigidBody และ Transform (มีพูลสำหรับ RigidBody และพูลสำหรับคอมโพเนนต์การแปลง) ดังนั้นลูปสำหรับการอัพเดตเอนทิตีจะเป็นดังนี้: for (Entity eid in entitiesList) { // Get rigid body component RigidBody *rigidBody = entityManager.getComponentFromEntity<RigidBody>(eid); // Get transform component …