Mô tả kiến trúc
Tôi đang tạo (thiết kế) một hệ thống thực thể và tôi gặp phải nhiều vấn đề. Tôi đang cố gắng giữ cho nó hướng đến dữ liệu và hiệu quả nhất có thể. Các thành phần của tôi là các cấu trúc POD (chính xác là các byte) được phân bổ trong các nhóm đồng nhất. Mỗi nhóm có một ElementDescriptor - nó chỉ chứa tên thành phần, loại trường và tên trường.
Thực thể chỉ là một con trỏ tới mảng các thành phần (trong đó địa chỉ hoạt động như một ID thực thể). EntityPrototype chứa tên thực thể và mảng các tên thành phần. Cuối cùng là Hệ thống con (Hệ thống hoặc Bộ xử lý) hoạt động trên nhóm thành phần.
Vấn đề thực tế
Vấn đề là một số thành phần phụ thuộc vào các thành phần khác (Model, Sprite, PhysBody, Animation phụ thuộc vào thành phần Transform), điều này gây ra nhiều vấn đề khi xử lý chúng.
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
Không có cách nào để xử lý chúng bằng cách sử dụng các chỉ số. Tôi dành 3 ngày để làm việc với nó và tôi vẫn không có ý tưởng nào. Trong các thiết kế trước đây TransformComponent bị ràng buộc với thực thể - nhưng đó không phải là một ý tưởng tốt. Bạn có thể cho tôi một số lời khuyên làm thế nào để xử lý chúng? Hoặc có lẽ tôi nên thay đổi thiết kế tổng thể? Có lẽ tôi nên tạo các nhóm quyền (nhóm nhóm thành phần) - nhưng tôi đoán nó sẽ là cơn ác mộng đối với bộ nhớ CPU.
Cảm ơn