Я намагаюсь обернутись дизайном сукупності на основі компонентів.
Першим моїм кроком було створення різних компонентів, які можна було б додати до об'єкта. Для кожного типу компонентів у мене був менеджер, який би викликав функцію оновлення кожного компонента, передаючи такі речі, як стан клавіатури і т.д.
Наступне, що я зробив - це видалити об'єкт і просто мати кожен компонент з ідентифікатором. Отже, об'єкт визначається компонентами, що мають однакові Ідентифікатори.
Тепер я думаю, що мені не потрібен менеджер для всіх моїх компонентів, наприклад, у мене є SizeComponent, який просто має Sizeвластивість). В результаті у SizeComponentнього немає методу оновлення, а метод оновлення менеджера нічого не робить.
Моя перша думка полягала в тому, щоб створити ObjectPropertyклас, до якого компоненти могли б запитувати, а не мати їх як властивості компонентів. Так об'єкт мав би кількість ObjectPropertyі ObjectComponent. Компоненти матимуть логіку оновлення, яка запитує об’єкт щодо властивостей. Менеджер керує викликом методу оновлення компонента.
Це здається мені надмірною інженерією, але я не думаю, що я можу позбутися компонентів, тому що мені потрібен спосіб, щоб менеджери могли знати, для яких об’єктів потрібна логіка компонента для запуску (інакше я просто видалю компонент повністю і натисніть її логіку оновлення в менеджер).
- Є чи це (маючи
ObjectProperty,ObjectComponentіComponentManagerкласи) більш-інженерії? - Яка б була хороша альтернатива?
RenderingComponentі a PhysicsComponent. Чи я надмірно замислююся над рішенням, де розмістити майно? Чи повинен я просто вставити його в будь-який, а потім інший запит об'єкта для компонента, який має необхідну властивість?
PhysicalStateInstance(один на предмет) поряд із GravityPhysicsShared(один на гру); однак я маю на думці сказати, що це впадає у сфери ейфорії архітекторів, не зодчіть себе в норі (саме те, що я зробив зі своєю першою складовою системою). KISS.

SizeComponentє надмірним - можна припустити, що більшість об'єктів мають розмір - це такі речі, як візуалізація, AI та фізика, де використовується компонентна модель; Розмір завжди буде поводитися однаково - тому ви можете поділитися цим кодом.