Deskripsi arsitektur
Saya membuat (mendesain) sistem entitas dan saya mengalami banyak masalah. Saya berusaha menjaganya agar tetap Berorientasi Data dan seefisien mungkin. Komponen saya adalah struktur POD (array byte yang tepat) yang dialokasikan dalam kumpulan yang homogen. Setiap kumpulan memiliki ComponentDescriptor - hanya berisi nama komponen, tipe bidang dan nama bidang.
Entity hanyalah pointer ke array komponen (di mana alamat bertindak seperti ID entitas). EntityPrototype berisi nama entitas dan array nama komponen. Akhirnya Subsistem (Sistem atau Prosesor) yang berfungsi pada kumpulan komponen.
Masalah aktual
Masalahnya adalah bahwa beberapa komponen bergantung pada orang lain (Model, Sprite, PhysicalBody, Animation tergantung pada Transform komponen) yang membuat banyak masalah ketika datang untuk memprosesnya.
For example, lets define some entities using [S]prite, [P]hysicalBody and [H]ealth:
Tank: Transform, Sprite, PhysicalBody
BgTree: Transform, Sprite
House: Transform, Sprite, Health
and create 4 Tanks, 5 BgTrees and 2 Houses and my pools will look like:
TTTTTTTTTTT // Transform pool
SSSSSSSSSSS // Sprite pool
PPPP // PhysicalBody pool
HH // Health component
Tidak ada cara untuk memprosesnya menggunakan indeks. Saya menghabiskan 3 hari mengerjakannya dan saya masih belum punya ide. Dalam desain sebelumnya TransformComponent terikat dengan entitas - tetapi itu bukan ide yang baik. Bisakah Anda memberi saya beberapa saran bagaimana memprosesnya? Atau mungkin saya harus mengubah desain keseluruhan? Mungkin saya harus membuat kumpulan entites (kumpulan komponen pool) - tapi saya kira itu akan menjadi mimpi buruk bagi cache CPU.
Terima kasih