static
, которое разрешает только внутреннее связывание (internal linkage) объекта в рамках текущего модуля трансляции. Глобальные объекты имеют внешнее связывание (external linkage) и могут быть использованы в других модулях трансляции. Возможность связывания - это именно то, что отличает глобальные объекты от динамической памяти. Для динамической памяти связывание недоступно.это уже вкусовщина пошла
Верно. Из этого правила сами собой выводятся множественные облегчения работы систем. Система может быть просто реакционной: надо компонент добавить - добавляю безотносительно сущности и того, сколько уже компонентов добавлено.
Сам компонент означает некоторое свойство, которым сущность может обладать. Например, это может быть свойство мертвого персонажа. Есть компонент - персонаж мертв. Такому компоненту не нужны данные, мертв - это как бы однозначно и без оговорок.
CharacterStateComponent
- это пример очень плохо сформулированного компонента. Я вижу там мультикомпонент - этот компонент можно и нужно разделить на несколько: движение, навыки, привязка к локации, боевка, смерть и умирание. Процесс умирания и смерть - это два разных состояния игрока, это разные компоненты.По данным в компонентах. Не всегда только лишь бинарного состояния компонента будет достаточно для работы системы. Компонент позиции на локации логически обязан иметь координаты в пространстве локации, чтобы система перемещения по локации могла двигать сущность по локации. Отдельно от компонента позиции должен быть компонент способности сущности двигаться. Потому что сущность может находиться на локации, но быть неспособна двигаться по ней. Свойство подвижности должно быть изымаемым относительно позиции на локации, т.е. должно быть отдельным компонентом. Это относится и к свойству атаковать, быть целью атаки, забираться по стенам, падать под действием гравитации и.т.д.
Любая система в любой момент времени может добавить или убрать компоненты сущности. Так, например, система жизни может увидеть что после работы системы урона очков жизни больше нет, значит пора сущности умирать. В этом случае система жизни добавляет компонент умирания и больше ничего не делает.
Далее, система умирания подхватывает сущность с компонентом умирания и удаляет у нее компоненты подвижности, здоровья, атаки, магии, компонент цели атаки или навыков, а так же добавляет компонент лута и компонент смерти. После этого система умирания удаляет и компонент умирания. Все, сущность умирла и не важно что это за сущность: сундук, моб или игрок.