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