3 Мб, 1920x1080
Меня всегда интересовала тема создания опен ворлдов, но никогда не было ясно КАК НАХУЙ, каким образом можно иметь миллиарды объектов, целые поля и города на игровой сцене. И тут я узнаю о ворлд стриминге, после этого мне хотелось узнать как можно его реализовать, мне было известно, что принцип примерно таков: Объекты никогда не находятся на сцене до тех пор, пока их не понадобится подгрузить или же наоборот когда они не нужны, то их нужно отгрузить. Мне удалось разобраться с Addressables на юнити, мне казалось "вот оно, теперь я могу делать игровые миры любых размеров", но меня ждал один подводный камень. Во время подгрузки объектов могут происходить фрейм дропы, и так как у меня всё это дело происходило не на ССД это было мягко говоря сильно заметно. Профайлер сообщает о спайках которые происходят из-за Loading.ReadObject в основном потоке, то есть как я предполагаю, основной поток приостанавливается ожидая чтобы подгружаемый объект прочитался с жесткого диска, и так как это происходит опять же медленно, происходят заметные фреймдропы и микростаттеры. И КАК ЭТО БЛЯТЬ ИСПРАВИТЬ?77? Мои догадки падают на то, что тут лишь дело в том, что юнити обрабатывает геймобжекты всегда через основной поток и единственным решеним будет изучать дотс если так, то где можно найти инфы о ворлд стриминге на дотсе с ентити? У меня нихуя не получалось найти по этому поводу.
В этом треде я открываю обсуждение реализации ворлд стриминга в юнити с использованием Addressables, DOTS или иным способом. Если что, уточняю, меня интересует стриминг конкретно моделей, а не тиррейнов
В этом треде я открываю обсуждение реализации ворлд стриминга в юнити с использованием Addressables, DOTS или иным способом. Если что, уточняю, меня интересует стриминг конкретно моделей, а не тиррейнов
>>898481
Я думаю именно поэтому юнетики и решили выкатить дотс, но по нему нет инфы нихуя, он только недавно вышел из превью.
Я думаю именно поэтому юнетики и решили выкатить дотс, но по нему нет инфы нихуя, он только недавно вышел из превью.
Бамп
Бамп
>>898481
Хуйню несешь. В геншине жесткий опен ворлд и он отлично работает даже на мобилках. В юнтти нету ничего что мешает сделать опен ворлд
>>898478 (OP)
У тебя ассеты должны асинхронно подгружаться. Можешь целые сцены асинхронно грузить
Хуйню несешь. В геншине жесткий опен ворлд и он отлично работает даже на мобилках. В юнтти нету ничего что мешает сделать опен ворлд
>>898478 (OP)
> то есть как я предполагаю, основной поток приостанавливается ожидая чтобы подгружаемый объект прочитался с жесткого диска,
У тебя ассеты должны асинхронно подгружаться. Можешь целые сцены асинхронно грузить
>>898526
это у них пока недоработочка. надо за каждую попытку open какой нибудь world брать хотя бы цент
>В юнтти нету ничего что мешает сделать опен ворлд
это у них пока недоработочка. надо за каждую попытку open какой нибудь world брать хотя бы цент
>>898478 (OP)
А ты заказывай загрузку заранее и спавнь только когда моделька приехали с диска, через несколько кадров. Все так делают.
А ты заказывай загрузку заранее и спавнь только когда моделька приехали с диска, через несколько кадров. Все так делают.
Бамп
>>898693
Хочешь сказать, в корутине поставить кулдаун между тем как моделька закончила подгружаться и между тем как моделька должна инстансироваться на сцене.
Хочешь сказать, в корутине поставить кулдаун между тем как моделька закончила подгружаться и между тем как моделька должна инстансироваться на сцене.
>>898893
Вроде того. Ты запрашивашь модельку, она приезжает через несколько кадров - и тогда спавнишь. Там конечно есть хорошая пачка подводных камней, но стриминг работает именно так. Кулдаун подразумевает взятую с потолка задержку, тут же ожидание. Моделька приехать может и в том же кадре если уже была загружена.
Вроде того. Ты запрашивашь модельку, она приезжает через несколько кадров - и тогда спавнишь. Там конечно есть хорошая пачка подводных камней, но стриминг работает именно так. Кулдаун подразумевает взятую с потолка задержку, тут же ожидание. Моделька приехать может и в том же кадре если уже была загружена.
>>898906
Есть еще варианты с плейсхолдерами, например показывать белый (серый) объект и загружать текстуры позже. Можно и меш, наверное, показывать абстрактный - среднего манекена или домик вместо конкретного персонажа или здания.
Есть еще варианты с плейсхолдерами, например показывать белый (серый) объект и загружать текстуры позже. Можно и меш, наверное, показывать абстрактный - среднего манекена или домик вместо конкретного персонажа или здания.
>>898952
Это если что метод для чека когда стримить объекты, сами методы для подгруза объектов уже без цикла у меня
Это если что метод для чека когда стримить объекты, сами методы для подгруза объектов уже без цикла у меня
>>898952
А смысл цикла, если можно сделать асинк функцию для загрузки конкретного ресурса без всяких циклов. И когда оно будет загружено - заинстансить модельку куда надо.
А смысл цикла, если можно сделать асинк функцию для загрузки конкретного ресурса без всяких циклов. И когда оно будет загружено - заинстансить модельку куда надо.
>>898964
У меня цикл постоянно чекает как далеко находится камера по отношению к каждому записаному трансформ позишену моеделек в скриптейбл обжекте и когда камера находится в пределах дальности прорисовки уже вызывает асинк таск в котором происходит инстансиет асинк подгрузка модельки и применение к ней сохраненной в скриптейбл обжекте трансформ позишена по её названию.
> А смысл цикла
У меня цикл постоянно чекает как далеко находится камера по отношению к каждому записаному трансформ позишену моеделек в скриптейбл обжекте и когда камера находится в пределах дальности прорисовки уже вызывает асинк таск в котором происходит инстансиет асинк подгрузка модельки и применение к ней сохраненной в скриптейбл обжекте трансформ позишена по её названию.
Бамп
Бамп
>>898999
Все правильно он делает
Все правильно он делает
>>899192
Ну хз, делая это асинхронно опять же авейтами вроде даже норм
Ну хз, делая это асинхронно опять же авейтами вроде даже норм
Бамп
>>899346
Я читаю просто, что ентити могут в параллелизацию, в отличие от дефолтных геймобжектов меня это и заинтересовало. Если делать много заскриптованных объектов тех же неписей, объектов для взаимодействия то это вообще как-бы необходимая штука
Я читаю просто, что ентити могут в параллелизацию, в отличие от дефолтных геймобжектов меня это и заинтересовало. Если делать много заскриптованных объектов тех же неписей, объектов для взаимодействия то это вообще как-бы необходимая штука
Обновить тред