[моё] Unity. Как миллионы мух сделали миллионы мух, и какие есть альтернативы
Я в очередной раз сгорел после того, как очередной выкидыш рукосуйский на протяжении пятнадцати минут пытался показать мне главное меню игры, выжрал при этом всю видеопамять + всю оперативу + все возможные кэши и кэшеобразные ресурсы и умер от натуги.
Вместе с системой.
Каждый чёртов раз очередное поделие на Unity зачем-то пытается всосать в видеопамять все графические ресурсы игры, в оперативную - все неграфические.
Причём, даже если непожатый проект занимает 2 (два) гигабайта - 5 GB RAM + 2 GB VRAM ему БУДЕТ МАЛО.
И это для того, чтобы отрендерить статическую сцену в фоне с десятком кнопок.
И держать наготове пару простеньких менюшек.
Игрок ещё даже не успел толком войти в игру - а его компьютер полыхает от перегруза.
Причину этого заведомо неадекватного поведения фактически воткрытую сдали... разработчики Deep Rock Galactic: Survivor :
Перефразируя коротко по-русски, Unity по умолчанию НЕ ПООЩРЯЕТ ХОРОШИЙ КОД.
Совсем.
Даже наоборот.
Что, действительно, выливается в поведение по умолчанию вида "накидывай мышкой в окошко, мы всё загрузим, плевать на пользователей".
Всё настолько плохо, что у этого подхода даже нет штатного способа выгрузить из памяти те ресурсы, которые нам точно больше не понадобятся.
И, судя по высокоуровневому описанию альтернатив и нытью разработчиков DRG:S, способа с разумными трудозатратами переключиться на более рациональные методы работы с ресурсами игры попросту нет.
Код фактически приходится переписывать с нуля.
И это притом, что проект DRG:S ведут не какие-то случайные идиоты на самообеспечении донатами с онлифанс бусти, а вполне компетентные разработчики при издателе, с которым не забалуешь.
Просто выбор движка в очередной раз оказался неудачным, ну что поделать.
У движка Unity в этом году, как оказалось, двадцатилетный юбилей.
Всё, чего добились его создатели за эти годы, - нормализация невменяемых системных требований у проектов и изобилие говнокодеров.
Ускорение наступления тотального дефицита оперативной памяти и прочих компонентов.
(и 1 (один) http://unity3d.com/10-year-anniversary">официальный комикс на десятилетие проекта сделали)
Как Это Сделано У Нормальных Людей
(И Почему Их Проекты Перформят)
В случае с GoDot, загрузка ресурсов только в случае востребованности (и выгрузка при первой же возможности) настолько зашита в парадигму разработки, что для кое-каких типовых случаев приходится писать официальные костыли.
Да, где-то придётся грязно выругаться. И держать в памяти кое-какие нюансы работы с глобальными ресурсами.
Зато в результате проект будет работать даже на ноутбуке из нижнего ценового сегмента 2011 года.
Если сильно не наглеть, конечно.
Пока Construct 2 был жив, они держались говнокодерского подхода "загрузим всё сразу" а-ля Unity.
Но не бывает жопы без просвета!
При переходе на 100% "облачный" браузерный Construct 3 разработчикам пришлось научить движок грузить только то, что востребовано прямо сейчас.
Иначе browser-first проекты работать не смогут.
RPG Maker... кхм...
Этим по-моему достаточно, чтобы компьютер пользователя хотя бы существовал.
До сих пор.
Unreal Engine 5?
Да, много шагов не туда сделали его разработчики за 25 с хреном лет развития движка.
Но поведение по умолчанию при работе с ресурсами - всё ещё "система разберётся, что когда надо загрузить, но если Вы настаиваете..."
Истины ради и справедливости для, это работает как часы.
Даже если IQ разработчика проекта как у молодого окуня - полностью автоматизированная работа с ресурсами плюс возможность кое-какие переменные движка подрихтовать через файл конфига снимают большинство проблем с производительностью.
Есть ещё какие-то намного менее знаменитые движки.
У которых по этой части тоже полный порядок.
Но мы почему-то живём в мире, в котором говнокодеры на протяжении двадцати лет плодят таких же говнокодеров.
Ну как так то.
Отношение пожительных и отрицательных голосов: 1/0