Не так давно наткнулся на такой подход программирования в играх как ECS (Entity Component System). Далее начал читать статьи и смотреть различные ролики по этой теме. Из названия понятно что это разделение на сущности, компоненты и системы. Но почему он становится более предпочтительным в разработке игр нежели всем…
Тема
23 138
30
bifurcated, ну, на грязножассе нет нормального ООП, посему и сравнивать с ECS некорректно.
16
KaneThaumaturge, используя jass/vJass я из синтаксиса языка максимум массивами пользовался. Статью писать лень, а тут темы появились и решил так кратко пройтись
30
KaneThaumaturge, как я понял, идея в том чтоб убрать автоматику из жтого вашего ООП и вручную более оптимально ложить структурированные данные в память.
20
Разве это не то как реализовано ООП в vJass? Там как раз instance структуры это всего лишь индентификатор к массивам.

Я вот не совсем представляю ECS для использования с БД, получается каждое обращение к компоненту сущности это новый запрос в БД? Ну мб я че-то не понял. Мало инфы как-то, ссылки я видел, но пост будто бы ни о чем. Перенос бы уже информацию сюда и структурировал.
38
nazarpunk, а зачем тебе дерево, прямая линковка это несортированный список. Удаление = перемещение последнего элемента на место удаленного. Сортировки и деревья идут уже с индексами этого списка как пристройки
38
nazarpunk, модуль коллизий хранит массив всех текущих столкновений - это 2 индекса мешей/примитивов, нормалей и глубины проникновения
Из меша узнаем, чей это меш, после чего идем в любой компонент этого объекта
16
nazarpunk, ниже по тексту написал. То что объекты и его иерархия никак не подразумевает хранение плотно в памяти, потому что куча ссылок и наследований других полей. В DOD подходе мы реализуем данные так чтобы они хранились плотно в массивах и обход по ним происходит быстрее, за счёт попадания в кэш процессора и повторного переиспользования без необходимости заново загружать в память процессора, какого блока памяти.
16
nazarpunk, зависит от реализации, например, это на прямую хранить в мапе по id сущности массив его компонентов, компоненты можно добавлять и удалять. Ты наверное не понял, у каждой сущности свой инстанс этих компонентов.
30
позиция и хп это компоненты
Каким образом они слинкованы? Если при получении достаточного урона юнит умер, то его вектор не передастся следующему юниту. Как это делается?