Как я уже рассказывал в своей предыдущей статье, одной из проблем GameObjects, как и любого объекта, является то, что он плохо использует способность процессора кэшировать информацию из ОЗУ. Так как объекты полны ссылок, процессор должен постоянно переходить по ним и доставать данные из памяти, а это намного медленнее, чем обращаться к кэшу (источник). Напротив, расположение компонентов в памяти в ECS устроено так, что они находятся в массивах последовательно. Следовательно, после загрузки данных в кэш, велика вероятность, что нужная информация для следующей операции уже будет там, так как компоненты находятся в массивах и обрабатываются системами последовательно. Чем меньше обращений к ОЗУ тем лучше. Разница во времени доступа к памяти огромна, особенно, если мы имеем в сцене большое количество объектов. Посмотрите на картинку ниже и обратите внимание на разницу во времени между доступом к кэшу (SRAM) и ОЗУ (DRAM). Поэтому я могу с уверенностью сказать, что здесь ECS работает с процессором лучше, чем GamoObjetcs.
В "Сложности в разработке" одно и то же (буквально) написано дважды.
Я подумал что у меня шиза и читаю по два раза
Спасибо, поправил
Какой-то тотальный ПСИОП происходит. Но скажу так, возможно конечно моё мнение менее объективное, чем у автора. Но вот пописав свой проектик на дотс. Я понял, что это пиздец. Тебе столько кода лишнего нужно писать, столько ограничений странных.
К примеру у юнити нет из коробки поддержки рендеринга 2д спрайтов для дотс и скорее всего придется если не хватает навыков и понимания как работает рендер писать свой костыльный гибридный рендер через геймобджекты. И это только одна важная, но не единственная проблема.
Короче если вы индиразраб и вам нужна многопоточная обработка каких-то данных, по типу множественного поиска путей на огромной карте . Лучше всего, именно частично, выносить сложные вычисления в дотс, иначе сойдете с ума....
Нет, тут наши мнения сходятся. Я описал, что Entities отстают фичам и разрабатывать игры сложнее, в некоторых местах. Если для вашего проекта отсутствуют критически важные компоненты и нет времени писать свои, то нужно возвращаться на GO.
Забил в поисковик и нашел https://github.com/Antoshidza/NSprites. Как я уже и говорил, многое нужно искать или писать самому, Entities еще сыроваты.
Комментарий недоступен