Войти
UnityФорумОбщее

Сборщик мусора в Genshin Impact

Страницы: 1 2 Следующая »
#0
12:58, 19 июля 2022

Как я понимаю, единственная крупная опенворлд игра на юнити, это Genshin.
Игра действительно крупная, огромный и довольно детализованный мир и игра периодически фризит - проверенно и на Ryzen 3700 и на i9 9900k что с радионами, что с гефорс 2080ti. Проблема не в железе а, походу , со сборщиком мусора.
Если китайцы, зарабатывающие сотни лямов не смогли проблему устранить, выходит она вообще не имеет решения?
Именно в контексте игр с открытым миром, где постоянно куча объектов загружаются/выгружаются?

#1
(Правка: 13:13) 13:11, 19 июля 2022

Я не знаю, проблема ли в сборщике мусора конкретно в Genshin, но в Unity используется сборщик мусора, который не умеет сжимать кучу, поэтому при долгих сессиях игра может страдать от фрагментации памяти.

Unity в скором времени добавит в игру сборщик мусора, способный сжимать память, что должно улучшить стабильность игр и их работу с памятью.

Варианты решения - не использовать сборщик мусора, или активно использовать пулы объектов.

Ну и опять же, вполне может быть, что китайцам просто нах не надо решать эту проблему. Денег игра итак приносит. То, что проект большой, и компания богатая, не делает автоматически ее кодовую базу хорошей.

Я знаком с кодовой базой игры одной на Unity, AA класса правда, а не ААА. Там полный мрак в коде, у нас на работе качеству кода казуальных и гиперказуальных игр больше внимания уделяют, чем в этой АА игре.

#2
13:12, 19 июля 2022

Нет, не значит. Если постоянно куча объектов загружаются/выгружаются всегда можно использовать ObjectPooling, чтобы не вызывался garbageCollector, но тогда растут требования к используемой оперативной памяти. И если игра реально большая и либо тормозит от GC либо требует кучу оперативки это одно, если игры поменьше - все отлично и гладко может работать, есть множество примеров других игр поменьше.

#3
13:28, 19 июля 2022

Думаю это не сборщик мусора, а выгрузка текстур. У юнити есть такой косяк чт нормально её выгрузить невозможно, либо уповать на "авто-выгрузку", либу дёргать ресурс менеджер на перероверку всех ресурсов. Вполне взможно чт оони просто раз в пол часа запускают Resources.Unload для надёжности.

#4
13:35, 19 июля 2022

Battle Angel Alita
> У юнити есть такой косяк чт нормально её выгрузить невозможно

Через Addressable разве она не сразу релизится?

#5
15:20, 19 июля 2022

Increaser
> Unity в скором времени
у них версия юнити 2017
Кстати у меня не фризит вроде, хз может быть я не замечаю этого,  но я играю не на максималках.

#6
15:47, 19 июля 2022

имхо, не делают на Unity большие игры - вот такой выход.

#7
(Правка: 15:51) 15:48, 19 июля 2022

MaRC
> Как я понимаю, единственная крупная опенворлд игра на юнити, это Genshin.
что?

MaRC
> Игра действительно крупная, огромный и довольно детализованный мир и игра
> периодически фризит - проверенно и на Ryzen 3700 и на i9 9900k что с радионами,
> что с гефорс 2080ti.
чел ты походу Зельду БОТВ не запускал и Моровинд

Зельда БОТВ под эмулатором работает лучше геншина с лучшей графикой и нормальными ЛОДами
Моровинд с Модами будет выглядеть лучше чем геншин, а если взять Обливион - то так даже по поличеству треугольников они опережают Геншин (играм по 15-20 лет напомню)


MaRC
> Проблема не в железе а, походу , со сборщиком мусора.
Проблема в китайцах-кодерах которые все сделали максимально костыльно.

Начав с ЛОДов - в Геншине НЕТ ЛОДов
НЕТ ЛОДов в Опенворд игре, а почему нет - да потому что они НЕ ОСИЛИЛИ сделать ЛОДЫ в Юнити, а по дефолту в Юнити нет Лодов вот они и накостыляли.
Они накостыляли "тригеры" для каждой зоны/группы мобов/частей города и подгружают ДРУГИЕ МОДЕЛЬКИ с меньшем количеством полигонов(деревья/дома) и/или убирают/добавляют частицы травы... это уровень "автоматизации ЛОДОВ" прямо из Квейка 2, даже в Квейке3 уже были автоматически генерируемые ЛОДы

MaRC
> Если китайцы, зарабатывающие сотни лямов не смогли проблему устранить, выходит
> она вообще не имеет решения?
Китайские кодеры это худшие кодеры в мире, это все что тебе нужно знать.
Деньги тут непричем.

Успех Геншина это на 50% визуальный вид(над визуальным видом работали известные аниматоры) и звуковое оформление, и 50% это хороший геймплей с кучей халявы по началу.

MaRC
> Именно в контексте игр с открытым миром, где постоянно куча объектов
> загружаются/выгружаются?
На Юнити есть масштабные игры которые работают более менее нормально, очевидный пример - Тарков. (но в таркове тоже костыли)

Про техническую составляющую Геншина - клон Геншина можно сделать на Любом GLES2 движке, от любого ВебГЛ до тогоже Годота3. Технически геншин на 20+ лет устарел.

#8
(Правка: 16:24) 16:15, 19 июля 2022

MaRC
> игра периодически фризит - проверенно и на Ryzen 3700 и на i9 9900k что с
> радионами

Все микрофризы в Геншине связаны с подгрузкой ресурсов в ГПУ (тамже все на статических шадоумапах и они грузятся днем и ночью) также всех текстурок по появлению эффектов и компиляуции шейдеров (там никак не улучшено ничего, дефолтная Юнити, но в "нормальных" играх это решается).

Также воможно то что у тебя Радеон (тыж не играешь с жесткого диска да),

У меня лично пока я играл(я пол года играл) не замечал "критических фризов", только фризы которые уже считаются "нормой" в Юнити играх, не замечаешь уже.

MaRC
> Проблема не в железе а, походу , со сборщиком мусора.
Опятьже - всегда вини кодеров игры, в 99% случает Юнити и Моно непричем.

Как пример возьми РискОфРейн2 (не опенворд), через час игры(не закрывая игру и активно играя) у тебя будет ниже 60ФПС на любом железе, даже на 3080 RTX через час-два будет около 30 ФПС, особенно заметно у стримеров. (также появятся дропы ФПС до 10-20 раз в несколько минут)
(я связываю это с кривым менеджером памяти и тем самым сборщиком ресурсов, что сборщик сканирует всю память, и память в нереальной фрагментации из за постоянного создания и удаления объектов в игре и загрузке карт)
Разбирающиеся люди мне сказали что это "проблема в кодерах игры" и этих тормозов можно было избежать.

Хорошая игра на Юнити, где решены множество "стандартных" проблем Юнити я могу сказать - это VR социальные игры:

VRChat (но там по прежнему однопоток для физики и тормоза при компиляции, возможно бояться кривых дров так как игра популярна и многопоточная компиляция шейдеров из за кривых дров обязательно отвалится у какойто части игроков)

Neos VR и ChilloutVR - это "идеальные" игры на Юнити, там многопоток для физики и всех анимаций, загрузка карт в реальном времени "без тормозов" и не выгружая текущий мир, ты продолжаешь бегать в текущем мире пока новая карта грузится и мгновенно подменяется, никаких тормозов, также никаких тормозов при компиляции шейдеров все в многопотоке и загрузка ресурсов на ГПУ и компиляция шейдеров. Это одни из лучших игр на Юнити что я видел.

#9
16:47, 19 июля 2022

melvy
> там никак не улучшено ничего, дефолтная Юнити, но в "нормальных" играх это
> решается
откуда ты знаешь какая там юнити, ты проверял ?
И тогда по каким причинам они используют 2017 версию ? Почему не обновляются ?

#10
17:15, 19 июля 2022

endeavour_pr
> И тогда по каким причинам они используют 2017 версию ? Почему не обновляются ?
Мобилки, кривые драйвера на мобилках которые ломаются на новых более тяжелых шедйерах Юнити, и GLES2 рендер, ответ очевиден.

#11
(Правка: 18:49) 18:44, 19 июля 2022

endeavour_pr
> И тогда по каким причинам они используют 2017 версию ? Почему не обновляются ?
Если все работает по налаженному пайплайну зачем тратить тысячи человекочасов на обновление?
Крупные проекты никогда не обновляют кор, ну только если совсем в крайнем случае.
Даже там где заявлена обратная совместимость как киллерфича платформы(java) переход может занимать недели на просто смену VM. А юнити вообще даже не намекает на обратную совместимость.

#12
(Правка: 19:53) 19:53, 19 июля 2022

endeavour_pr
> Кстати у меня не фризит вроде, хз может быть я не замечаю этого,  но я играю не
> на максималках.
Играл и на средних и на максимуме, на гефорсе 1060, 2080ti и на радеоне 5700.
Игра не жестко фризит, а статтерит раз в пару минут на обоих конфигурациях. Выглядит как работа сборщика, а там кто знает. Что еще в природе есть опенворлдовое, написаное на языке со сборщиком мусора? Мелкие и средние игрушки на юнити нормально работают.
Насичет оптимизации - на радеоне 5700 игра работала в 60 кадров в 4к разрешении на максималках без сглаживания. При этом картинка в игре весьма и весьма.

#13
20:51, 19 июля 2022

MaRC
> Что еще в природе есть опенворлдовое, написаное на языке со сборщиком мусора?
Мвйнкрафт

MaRC
> Мелкие и средние игрушки на юнити нормально работают.
Это обобщил так обобщил....

Прочитай мой пост, выше - я сказал и описал почему Геншин на уровне первых Опенворд игр, Моровинда/Обливиона, и даже Зельда БОТВ сделанная под WiiU из 2008 в сотни раз более технологична чем Геншин.
Геншин это "статика" там тригерами переключают все.

Может ты меня не понимаешь но "сравнивать все опенворд игры друг с другом" и считать что "игры в одной комнате и на одном экране" проще - это совсем полнейшее ламерство.

Жаль чтот игнорятся мои посты где я с все описал, и пиши чтото после этого.
Ты наверно ждал чтоб сюда Кармак ворвался и в двух словах тебе объяснил все... самже читать ничего не хочешь сто длинее двух предложений.

#14
21:24, 19 июля 2022

melvy
> Может ты меня не понимаешь но "сравнивать все опенворд игры друг с другом" и
> считать что "игры в одной комнате и на одном экране" проще - это совсем
> полнейшее ламерство
Опенворлд не про сложность разработки, а про большое количество объектов, которые постоянно подгружаются/выгружаются.
У других опенворлд игр я статтеров не видел, может единичные, а тут каждые несколько минут как по расписанию.
Впринципи майнкрафт подходит - сборщик мусора и постоянная работа с памятью без фризов, что с геншином не так все так же не понятно.

Страницы: 1 2 Следующая »
UnityФорумОбщее