ECS. Когда использовать компонент, а когда отдельную сущность с компонентом?
Изучаю шаблон Entity-Component-System. Есть в игре сущность "город". Город - компонент, который висит на сущности. Далее у каждого города есть набор бонусов (временных бафов), которые представляют собой структуру
BonusItem {
int id; //bonus type
DateTime dateEnd
}
Так вот не могу определиться, как это сделать. В виде компонента TownBonusesComponent, в котором есть List всех BonusItem. Или второй вариант. Каждый бонус представить в виде отдельной сущности, на которой будет висеть компонент BonusItem? Когда в подобных случаях использовать отдельные сущности? Или если что-то представлено в виде списка, то это явный повод вынести в отдельные сущности?
Ответы (1 шт):
Ну тут сложновато что-то судить, поскольку тут уже идут приколы с архитектурой, которую мы как бы не видим))
Лично я бы всякие типы бонусов (И другие типы) делал бы через enum.
НО, но, но. Сначала грамотно продумайте и дайте ответы себе на вопросы:
- Сможет ли каждый город иметь несколько бонусов?
- Один бонус даёт только один бафф? (Пример из игр, когда какой-то бонус задёт бафф к НЕСКОЛЬКИМ характеристикам)
- Будет ли этот спик/enum иметь ДЭбаффы?
- Будет ли список бонусов дополнять? Насколько сложный будет механизм додавания бонусов?
- И самое главное: имеет ли сам бонус какой-то ПОВЕДЕНИЕ (Если да, значит это уже будет объект класса)? Будет ли сам бонус влиять на что-то, или другие игровые механики будут смотреть наличие бонуса и его дэ/баффы?
После этого подумайте, как лучше будет вам сделать бонус:
- Перечисление (enum)
- Объект класса
- Список (Возможно List<> типов предыдущего пункта)