Казалось бы, если нам нужно чуть больше производительности, то стоит выбирать Entities? Можно было бы ответить положительно, но обратите внимание на то, как ведет себя Entities на Android. И это не случайно. Все дело в том, что версия 1.0 сломана и работает крайне нестабильно. В ходе тестов приложение могло закрыться с ошибкой, графика отрисовываться неправильно или вовсе не отрисовываться, а также текущая версия ecs отказывается работать с IL2CPP без дополнительных манипуляций, информацию о которых очень сложно найти.
Честно говоря, я не понял для кого эта статья, много воды без конкретики - как выглядит алгоритм Boids хотя бы кратко псевдокодом, как это реализовывались на MB, с чем работала JobsSystem - тоже с кучей монобехов или 1 монобех через джобы манипулировал геймобжектами? Какие системы использовались при реализации через Entities? Вы пишете, что считаете ECS от юнити антипаттерном - почему? Для статьи для обывателя - слишком много воды, для статьи для программистов слишком мало конкретики. Простите, если моя обратная связь неуместна
Ну можно либо поверить, либо проверить. Достаточно залезть в их ДОТС на пару часов, чтобы понять что это дерьмо не для людей, а для извращенцев и пользоваться им будут нормальные люди только в том случае, когда, очень прижмет.
Статья хорошая, спасибо, но с последней таблицей не согласен совершенно, потому что к объективным данным примешались субъективные
Спасибо. Статья писалась практически год назад и только добралась до публикации без каких-либо переделок. Сейчас я смело могу сказать, что Entities стал куда удобней, а Jobs с учетом всех неудобств спокойно займет первое место в таблице.
Когда сам ковырял, остались те же ощущения. Про джобы не помню толком, вроде не очень удобно, но с большего, просто расширение обычного подхода. А вот их ECS - это учить новый язык программирования. Причем во многих местах реализация вышла сложнее чем что-то похожее на плюсах. Что полностью убивает ту часть пользователей дивжка, которые "Я художник, но готов пописать немного говоноскрипта, чтобы выпустить игру своей мечты.".
ECS для извращенцев) А Jobs для велосипедистов)
Для довольно узкой задачи подойдёт, но в большинстве случаев оно не надо. Тесты как всегда... Как часто один пустой объект выполняет то же самое хотя бы 100 раз? Как часто в сцене бывает хотя бы тысяча объектов с нестандартным кодом(скриптов)? Я видел такое крайне редко даже на больших сценах.
А джобы - аналог тасков, но с кучей ограничений. Забавно было, как-то видел как они по производительности проигрывали чистым C# Task на одинаковой задаче и при, по сути, одинаковом коде. Конечно, сейчас могли и допилить, но это всё равно велосипед с ограниченным функционалом.
В обоих случаях надо много бойлерплейта, забить на кодстайл и хорошие практики, писать не для лучшей читаемости, а для того, чтобы данные скормить было удобно. Вот и страдает отладка, что через нехорошее место сделано. А с учётом того, что написать то обычно не проблема как угодно, что угодно, а вот баги править сложно и долго, то выходит как-то невесело.
PS: Сам ECS то норм... к реализации всегда вопросы. Даже к стандартным монобехам то вопросов не мало.