Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Акак делать этот ваш ворлд стриминг

 Аноним 14/09/23 Чтв 00:12:17 #1 №898478 
image.png
Меня всегда интересовала тема создания опен ворлдов, но никогда не было ясно КАК НАХУЙ, каким образом можно иметь миллиарды объектов, целые поля и города на игровой сцене. И тут я узнаю о ворлд стриминге, после этого мне хотелось узнать как можно его реализовать, мне было известно, что принцип примерно таков: Объекты никогда не находятся на сцене до тех пор, пока их не понадобится подгрузить или же наоборот когда они не нужны, то их нужно отгрузить. Мне удалось разобраться с Addressables на юнити, мне казалось "вот оно, теперь я могу делать игровые миры любых размеров", но меня ждал один подводный камень. Во время подгрузки объектов могут происходить фрейм дропы, и так как у меня всё это дело происходило не на ССД это было мягко говоря сильно заметно. Профайлер сообщает о спайках которые происходят из-за Loading.ReadObject в основном потоке, то есть как я предполагаю, основной поток приостанавливается ожидая чтобы подгружаемый объект прочитался с жесткого диска, и так как это происходит опять же медленно, происходят заметные фреймдропы и микростаттеры. И КАК ЭТО БЛЯТЬ ИСПРАВИТЬ?77? Мои догадки падают на то, что тут лишь дело в том, что юнити обрабатывает геймобжекты всегда через основной поток и единственным решеним будет изучать дотс если так, то где можно найти инфы о ворлд стриминге на дотсе с ентити? У меня нихуя не получалось найти по этому поводу.
В этом треде я открываю обсуждение реализации ворлд стриминга в юнити с использованием Addressables, DOTS или иным способом. Если что, уточняю, меня интересует стриминг конкретно моделей, а не тиррейнов
Аноним 14/09/23 Чтв 00:15:32 #2 №898481 
>>898478 (OP)
Юнити не подходит для опенворлдов
/тхреад
Аноним 14/09/23 Чтв 00:17:20 #3 №898482 
>>898481
Я думаю именно поэтому юнетики и решили выкатить дотс, но по нему нет инфы нихуя, он только недавно вышел из превью.
Аноним 14/09/23 Чтв 00:55:33 #4 №898507 
Бамп
Аноним 14/09/23 Чтв 01:34:57 #5 №898518 
Бамп
Аноним 14/09/23 Чтв 02:20:11 #6 №898526 
>>898481
Хуйню несешь. В геншине жесткий опен ворлд и он отлично работает даже на мобилках. В юнтти нету ничего что мешает сделать опен ворлд

>>898478 (OP)
> то есть как я предполагаю, основной поток приостанавливается ожидая чтобы подгружаемый объект прочитался с жесткого диска,
У тебя ассеты должны асинхронно подгружаться. Можешь целые сцены асинхронно грузить
Аноним 14/09/23 Чтв 11:29:01 #7 №898632 
>>898526
>В юнтти нету ничего что мешает сделать опен ворлд

это у них пока недоработочка. надо за каждую попытку open какой нибудь world брать хотя бы цент
Аноним 14/09/23 Чтв 12:40:07 #8 №898693 
>>898478 (OP)
А ты заказывай загрузку заранее и спавнь только когда моделька приехали с диска, через несколько кадров. Все так делают.
Аноним 14/09/23 Чтв 14:00:12 #9 №898747 
Бамп
Аноним 14/09/23 Чтв 16:41:19 #10 №898838 
>>898632
А это идея, брать цент за каждый метр карты.
Мимо ричитела
Аноним 14/09/23 Чтв 17:50:24 #11 №898893 
>>898693
Хочешь сказать, в корутине поставить кулдаун между тем как моделька закончила подгружаться и между тем как моделька должна инстансироваться на сцене.
Аноним 14/09/23 Чтв 18:01:18 #12 №898906 
>>898893
Вроде того. Ты запрашивашь модельку, она приезжает через несколько кадров - и тогда спавнишь. Там конечно есть хорошая пачка подводных камней, но стриминг работает именно так. Кулдаун подразумевает взятую с потолка задержку, тут же ожидание. Моделька приехать может и в том же кадре если уже была загружена.
Аноним 14/09/23 Чтв 18:07:25 #13 №898916 
>>898906
Есть еще варианты с плейсхолдерами, например показывать белый (серый) объект и загружать текстуры позже. Можно и меш, наверное, показывать абстрактный - среднего манекена или домик вместо конкретного персонажа или здания.
Аноним 14/09/23 Чтв 18:30:38 #14 №898940 
>>898893
Какие нах корутины сынок, учи базу
Аноним 14/09/23 Чтв 18:33:09 #15 №898942 
>>898940
Ты в апдейте собрался это делать нахуй?
Аноним 14/09/23 Чтв 18:37:53 #16 №898947 
>>898942
Через асинк авейт
Аноним 14/09/23 Чтв 18:39:05 #17 №898950 
>>898947
Так это это тоже корутина, но асинхронная...
Аноним 14/09/23 Чтв 18:40:48 #18 №898952 
>>898950
Ну лично я делаю такое
async Task StreamAsync()
{
while (true)
{

}
}
Аноним 14/09/23 Чтв 18:42:58 #19 №898954 
>>898952
Это если что метод для чека когда стримить объекты, сами методы для подгруза объектов уже без цикла у меня
Аноним 14/09/23 Чтв 18:53:36 #20 №898964 
>>898952
А смысл цикла, если можно сделать асинк функцию для загрузки конкретного ресурса без всяких циклов. И когда оно будет загружено - заинстансить модельку куда надо.
Аноним 14/09/23 Чтв 19:01:04 #21 №898969 
>>898964
> А смысл цикла
У меня цикл постоянно чекает как далеко находится камера по отношению к каждому записаному трансформ позишену моеделек в скриптейбл обжекте и когда камера находится в пределах дальности прорисовки уже вызывает асинк таск в котором происходит инстансиет асинк подгрузка модельки и применение к ней сохраненной в скриптейбл обжекте трансформ позишена по её названию.
Аноним 14/09/23 Чтв 19:43:08 #22 №898995 
Бамп
Аноним 14/09/23 Чтв 19:48:55 #23 №898999 
>>898969
Ебать ты поехавший.
Аноним 14/09/23 Чтв 21:07:38 #24 №899056 
>>898999
Какие подводные?
Аноним 14/09/23 Чтв 22:43:18 #25 №899094 
Бамп
Аноним 15/09/23 Птн 01:53:52 #26 №899155 
>>898999
Все правильно он делает
Аноним 15/09/23 Птн 04:33:35 #27 №899192 
>>899056
Производительность в пизде.
Аноним 15/09/23 Птн 06:48:55 #28 №899198 
>>899192
Ну хз, делая это асинхронно опять же авейтами вроде даже норм
Аноним 15/09/23 Птн 09:19:10 #29 №899213 
С чего стоит скатываться дотс, особенно по теме ворлд стриминга?
Аноним 15/09/23 Птн 09:20:08 #30 №899215 
>>899213
> Вкатываться в дотс
фикс
Аноним 15/09/23 Птн 13:37:41 #31 №899344 
Бамп
Аноним 15/09/23 Птн 13:52:47 #32 №899346 
>>899213
Эти штуки как бы друг с другом мало связаны.
Аноним 15/09/23 Птн 14:07:15 #33 №899348 
>>899346
Я читаю просто, что ентити могут в параллелизацию, в отличие от дефолтных геймобжектов меня это и заинтересовало. Если делать много заскриптованных объектов тех же неписей, объектов для взаимодействия то это вообще как-бы необходимая штука
Аноним 30/06/24 Вск 20:44:03 #34 №959435 
>>899346
В юнитивском мегасити тупо сделано методом подгрузки сабсцен асинхронным
comments powered by Disqus

Отзывы и предложения