Структура сущностей (GameObjects), основанная на компонентах, дает много преимуществ: подталкивает пользователей отдавать предпочтение композиции, а не наследованию, сохраняет классы небольшими, чистыми и сосредоточенными на одной ответственности, а также способствует модульности. Но это в идеальном мире.
В его основе лежит паттерн ECS (Entity-Component-System), который лучше подходит для архитектуры игр.
Я бы не сказал, что "лучше" – он другой, иначе строится логика, данные, компоненты, он другой.
У каждого из них есть свои плюсы и минусы, вопрос что тебе нужно в текущем проекте?
Этот подход значительно удобнее для разработки и обеспечивает значительное увеличение производительности в режиме выполнения.
Не готов сказать, что само использование ECS/DOTS, дает какой-то буст в скорости разработке (тут скорее минус разработки, если ты не знаешь как там все работает)
И про "значительное увеличение" – не уверен, что можно так бросаться высказываниями, это как минимум нужно подтверждать тестами, как по мне, ECS/DOTS берут не из-за перфоманса.
Могу заверить, что переход в нашей игре с GameObjects на Ecs дал огромный буст в производительности, а использование Burst компилятора увеличила разрыв ещё больше. Это все будет расписано в следующей статье. Как было написано, одним из главных плюсов Ecs подхода является дружелюбность к кэшу, а это для игры очень критично. Ecs действительно намного удобнее для разработки чем ООП, все неудобства добавляет его кривая реализация в Unity.
значительное это значит прям значительное и я бы даже сказал кратное. А по какой причине, на ваш взгляд, выбирают ECS?
Именно DOTS берут из-за перфоманса.
Про производительность, по крайней мере пару лет назад, правда. Но с одним нюансом: тогда всё работало на велосипедах и костылях.
Есть демка где десятки тысяч челиков сражаются.