image.png3 Мб, 1920x1080
Акак делать этот ваш ворлд стриминг 898478 В конец треда | Веб
Меня всегда интересовала тема создания опен ворлдов, но никогда не было ясно КАК НАХУЙ, каким образом можно иметь миллиарды объектов, целые поля и города на игровой сцене. И тут я узнаю о ворлд стриминге, после этого мне хотелось узнать как можно его реализовать, мне было известно, что принцип примерно таков: Объекты никогда не находятся на сцене до тех пор, пока их не понадобится подгрузить или же наоборот когда они не нужны, то их нужно отгрузить. Мне удалось разобраться с Addressables на юнити, мне казалось "вот оно, теперь я могу делать игровые миры любых размеров", но меня ждал один подводный камень. Во время подгрузки объектов могут происходить фрейм дропы, и так как у меня всё это дело происходило не на ССД это было мягко говоря сильно заметно. Профайлер сообщает о спайках которые происходят из-за Loading.ReadObject в основном потоке, то есть как я предполагаю, основной поток приостанавливается ожидая чтобы подгружаемый объект прочитался с жесткого диска, и так как это происходит опять же медленно, происходят заметные фреймдропы и микростаттеры. И КАК ЭТО БЛЯТЬ ИСПРАВИТЬ?77? Мои догадки падают на то, что тут лишь дело в том, что юнити обрабатывает геймобжекты всегда через основной поток и единственным решеним будет изучать дотс если так, то где можно найти инфы о ворлд стриминге на дотсе с ентити? У меня нихуя не получалось найти по этому поводу.
В этом треде я открываю обсуждение реализации ворлд стриминга в юнити с использованием Addressables, DOTS или иным способом. Если что, уточняю, меня интересует стриминг конкретно моделей, а не тиррейнов
2 898481
>>898478 (OP)
Юнити не подходит для опенворлдов
/тхреад
3 898482
>>898481
Я думаю именно поэтому юнетики и решили выкатить дотс, но по нему нет инфы нихуя, он только недавно вышел из превью.
4 898507
Бамп
5 898518
Бамп
6 898526
>>898481
Хуйню несешь. В геншине жесткий опен ворлд и он отлично работает даже на мобилках. В юнтти нету ничего что мешает сделать опен ворлд

>>898478 (OP)

> то есть как я предполагаю, основной поток приостанавливается ожидая чтобы подгружаемый объект прочитался с жесткого диска,


У тебя ассеты должны асинхронно подгружаться. Можешь целые сцены асинхронно грузить
7 898632
>>898526

>В юнтти нету ничего что мешает сделать опен ворлд



это у них пока недоработочка. надо за каждую попытку open какой нибудь world брать хотя бы цент
8 898693
>>898478 (OP)
А ты заказывай загрузку заранее и спавнь только когда моделька приехали с диска, через несколько кадров. Все так делают.
9 898747
Бамп
10 898838
>>898632
А это идея, брать цент за каждый метр карты.
Мимо ричитела
11 898893
>>898693
Хочешь сказать, в корутине поставить кулдаун между тем как моделька закончила подгружаться и между тем как моделька должна инстансироваться на сцене.
12 898906
>>898893
Вроде того. Ты запрашивашь модельку, она приезжает через несколько кадров - и тогда спавнишь. Там конечно есть хорошая пачка подводных камней, но стриминг работает именно так. Кулдаун подразумевает взятую с потолка задержку, тут же ожидание. Моделька приехать может и в том же кадре если уже была загружена.
13 898916
>>898906
Есть еще варианты с плейсхолдерами, например показывать белый (серый) объект и загружать текстуры позже. Можно и меш, наверное, показывать абстрактный - среднего манекена или домик вместо конкретного персонажа или здания.
14 898940
>>898893
Какие нах корутины сынок, учи базу
15 898942
>>898940
Ты в апдейте собрался это делать нахуй?
16 898947
>>898942
Через асинк авейт
17 898950
>>898947
Так это это тоже корутина, но асинхронная...
18 898952
>>898950
Ну лично я делаю такое
async Task StreamAsync()
{
while (true)
{

}
}
19 898954
>>898952
Это если что метод для чека когда стримить объекты, сами методы для подгруза объектов уже без цикла у меня
20 898964
>>898952
А смысл цикла, если можно сделать асинк функцию для загрузки конкретного ресурса без всяких циклов. И когда оно будет загружено - заинстансить модельку куда надо.
21 898969
>>898964

> А смысл цикла


У меня цикл постоянно чекает как далеко находится камера по отношению к каждому записаному трансформ позишену моеделек в скриптейбл обжекте и когда камера находится в пределах дальности прорисовки уже вызывает асинк таск в котором происходит инстансиет асинк подгрузка модельки и применение к ней сохраненной в скриптейбл обжекте трансформ позишена по её названию.
22 898995
Бамп
23 898999
>>898969
Ебать ты поехавший.
24 899056
>>898999
Какие подводные?
25 899094
Бамп
26 899155
>>898999
Все правильно он делает
27 899192
>>899056
Производительность в пизде.
28 899198
>>899192
Ну хз, делая это асинхронно опять же авейтами вроде даже норм
29 899213
С чего стоит скатываться дотс, особенно по теме ворлд стриминга?
30 899215
>>899213

> Вкатываться в дотс


фикс
31 899344
Бамп
32 899346
>>899213
Эти штуки как бы друг с другом мало связаны.
33 899348
>>899346
Я читаю просто, что ентити могут в параллелизацию, в отличие от дефолтных геймобжектов меня это и заинтересовало. Если делать много заскриптованных объектов тех же неписей, объектов для взаимодействия то это вообще как-бы необходимая штука
34 959435
>>899346
В юнитивском мегасити тупо сделано методом подгрузки сабсцен асинхронным
Обновить тред
« /gd/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее