Оптимизация большого кол-ва войск (до 1000 единиц)

Программирование на Юнити.

Оптимизация большого кол-ва войск (до 1000 единиц)

Сообщение playsetler 18 авг 2018, 19:37

Здравствуйте, уважаемые форумчане!
Как так писал целый текст нажал предпросмотр и форум попросил войти!!! писал текст темы, влаживался, старался и все нахрен удалилось!!! ~x(
Как это и можно было предполагать мое ненаглядное большое войско нуждается в оптимизации)
Буду краток. Войско размером примерно 1000 солдат. Использовал occlussion не большой прирост фпс, экспериментально удалось узнать что при выключении у солдат, которые не видны камере, аниматора и риджитбоди есть прирост фпс.
Юзал стандартные события UNity OnBecameInvisible(), но там такая хрень что вешаешь скрипт с этим событием на солдата он исчезает, но не появляется! вот такая западня.

До чего додумался я.
Занести в глобальный список всех солдатов с их координатами и с помощью нашего всеми любимого рэйкаста получать текущие координаты камеры т.е. получить проекцию обзора камеры на террейн, сравнивать их с координатами в списке и соответственно включать аниматор, риджитбоди у тех кто попадает в обзор и выключать при пропадании с обзора камеры. Только понятия не имею как это реализовать, как подступиться, с чего начать. Создал сам себе проблему 8-} Бывалые, опытные помогите :|

Вот визуализация моей идеи
Изображение
playsetler
UNец
 
Сообщения: 22
Зарегистрирован: 18 авг 2015, 19:54

Re: Оптимизация большого кол-ва войск (до 1000 единиц)

Сообщение lawson 18 авг 2018, 19:59

повесьте на камер box коллайдер, если юнит вошел в коллайдер - включаете аниматор и все остальное, если юнит вышел соответственно отключаете.
lawson
UNIверсал
 
Сообщения: 481
Зарегистрирован: 14 сен 2012, 21:20

Re: Оптимизация большого кол-ва войск (до 1000 единиц)

Сообщение 1max1 18 авг 2018, 20:10

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

п.с. Еще больше оптимизации, это осуществлять проверку только во время движения камеры, к примеру...
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Оптимизация большого кол-ва войск (до 1000 единиц)

Сообщение Cr0c 19 авг 2018, 14:49

По профайлеру фпс что просаживает?
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Оптимизация большого кол-ва войск (до 1000 единиц)

Сообщение playsetler 19 авг 2018, 17:47

lawson писал(а):повесьте на камер box коллайдер, если юнит вошел в коллайдер - включаете аниматор и все остальное, если юнит вышел соответственно отключаете.


Была такая идея, но я думаю это ресурсоёмко, будут скачки производительности потому что в игре войска расположены боком и построены линиями, в каждой линии по 15 солдат и, получается что при быстрой прокрутки камеры в один момент будет туча пересечений триггеров, а где-то я читал что следует избегать использование большого кол-ва триггеров. Спасибо за совет, я решил свою проблемку неожиданным способом) ниже напишу
Последний раз редактировалось playsetler 19 авг 2018, 19:09, всего редактировалось 1 раз.
playsetler
UNец
 
Сообщения: 22
Зарегистрирован: 18 авг 2015, 19:54

Re: Оптимизация большого кол-ва войск (до 1000 единиц)

Сообщение playsetler 19 авг 2018, 17:55

1max1 писал(а):Солдата можно кинуть под пустышку, а на пустышку кинуть скрипт, который будет чекать позицию камеры и солдата, и можно в принципе целого солдата отключать, а не отдельные компоненты.

п.с. Еще больше оптимизации, это осуществлять проверку только во время движения камеры, к примеру...


Спасибо за совет. Хотел сделать так, отключать полностью солдата, но вспомнил, что на отключенном солдате нужно оставить navmeshagent чтобы войско шло к указанной ей цели, плюс за кадром будут и другие вещи, взрывы, перестрелки и т.д. и нужно это все симулировать. Вообщем сделал так (смотрите ниже)
playsetler
UNец
 
Сообщения: 22
Зарегистрирован: 18 авг 2015, 19:54

Re: Оптимизация большого кол-ва войск (до 1000 единиц)

Сообщение playsetler 19 авг 2018, 18:58

Всю ночь не спал и вдруг меня осенило.
Скрытие рендера оставить occlussion, а все остальное отключать в событиях OnBecameInvisible() и включать в OnBecameVisible(). Решение из коробки)) Все работает на ура! \:D/
размешал до 1200 солдатов на карту фпс упал лишь на несколько штук, но это при условии что одновременно в обзоре камеры не более 50-100 солдат. Тестил на смартфоне престиджио грэй р7.
playsetler
UNец
 
Сообщения: 22
Зарегистрирован: 18 авг 2015, 19:54

Re: Оптимизация большого кол-ва войск (до 1000 единиц)

Сообщение Xtir 19 авг 2018, 20:31

Рендеринг 1000 юнитов это ещё не самое страшное. Вот когда они все начнут куда-то идти, вот тогда и начнётся капец...
Xtir
UNIверсал
 
Сообщения: 498
Зарегистрирован: 21 окт 2016, 00:37

Re: Оптимизация большого кол-ва войск (до 1000 единиц)

Сообщение playsetler 21 авг 2018, 16:27

Xtir писал(а):Рендеринг 1000 юнитов это ещё не самое страшное. Вот когда они все начнут куда-то идти, вот тогда и начнётся капец...


Мдаа... Вот и боюсь я включать navmesh)) пока отложил это дело, но думаю наперед что буду придумывать что-нибудь по-проще, чем navmesh
playsetler
UNец
 
Сообщения: 22
Зарегистрирован: 18 авг 2015, 19:54

Re: Оптимизация большого кол-ва войск (до 1000 единиц)

Сообщение formurik 22 авг 2018, 14:50

Мдаа... Вот и боюсь я включать navmesh)) пока отложил это дело, но думаю наперед что буду придумывать что-нибудь по-проще, чем navmesh

ECS и джобсы вам в помощь. Юнитеки корячились прикручивали, а вы их игнорите )))
Аватара пользователя
formurik
UNIт
 
Сообщения: 73
Зарегистрирован: 31 мар 2011, 14:35

Re: Оптимизация большого кол-ва войск (до 1000 единиц)

Сообщение lawson 22 авг 2018, 18:20

formurik писал(а):
Мдаа... Вот и боюсь я включать navmesh)) пока отложил это дело, но думаю наперед что буду придумывать что-нибудь по-проще, чем navmesh

ECS и джобсы вам в помощь. Юнитеки корячились прикручивали, а вы их игнорите )))

Если человек отключает объекты через OnBecameVesible, то я думаю эти системы ему вообще ниочем не говорят.

Да и вообще он пытается в первую очередь оптимизировать графику, а не написать эффективный код работающий на многопоточных вычислениях.
lawson
UNIверсал
 
Сообщения: 481
Зарегистрирован: 14 сен 2012, 21:20

Re: Оптимизация большого кол-ва войск (до 1000 единиц)

Сообщение playsetler 24 авг 2018, 15:53

formurik писал(а):
Мдаа... Вот и боюсь я включать navmesh)) пока отложил это дело, но думаю наперед что буду придумывать что-нибудь по-проще, чем navmesh

ECS и джобсы вам в помощь. Юнитеки корячились прикручивали, а вы их игнорите )))


Простите за отсталость)) я читал новости про эти системы, но кажется что они так сложны в освоении, что даже не осваивал их :(
playsetler
UNец
 
Сообщения: 22
Зарегистрирован: 18 авг 2015, 19:54

Re: Оптимизация большого кол-ва войск (до 1000 единиц)

Сообщение playsetler 24 авг 2018, 16:03

lawson писал(а):
formurik писал(а):
Мдаа... Вот и боюсь я включать navmesh)) пока отложил это дело, но думаю наперед что буду придумывать что-нибудь по-проще, чем navmesh

ECS и джобсы вам в помощь. Юнитеки корячились прикручивали, а вы их игнорите )))

Если человек отключает объекты через OnBecameVesible, то я думаю эти системы ему вообще ниочем не говорят.

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


Да, я не программист, если честно, сколько пытался программировать, но все безрезультатно, не моё. Зато, как мне кажется, хорошо вижу конечный продукт, который может понравиться игроку. Денег на реализацию идей с помощью других людей нет, вот и пытаюсь вечерами после работы по-крупицам создать свое детище)
playsetler
UNец
 
Сообщения: 22
Зарегистрирован: 18 авг 2015, 19:54

Re: Оптимизация большого кол-ва войск (до 1000 единиц)

Сообщение 1max1 24 авг 2018, 17:48

Простите за отсталость)) я читал новости про эти системы, но кажется что они так сложны в освоении, что даже не осваивал их

Изи, сам вот только позавчера перешел на LeoECS, очень крутая и простая штука, примеры есть на гите, пару дней поковыряться поразбираться и всё... Производительность фпс (ОСОБЕННО ЕСЛИ ДОФИГА ОБЪЕКТОВ НА СЦЕНЕ) выросла в моем случае на 50% + ко всему очень удобно рефакторить код, в общем крутая штука, только очень уж необычная по сравнению с обычными монобехами, но просто привыкнуть надо) (popcorn1)
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Оптимизация большого кол-ва войск (до 1000 единиц)

Сообщение playsetler 26 авг 2018, 15:33

1max1 писал(а):
Простите за отсталость)) я читал новости про эти системы, но кажется что они так сложны в освоении, что даже не осваивал их

Изи, сам вот только позавчера перешел на LeoECS, очень крутая и простая штука, примеры есть на гите, пару дней поковыряться поразбираться и всё... Производительность фпс (ОСОБЕННО ЕСЛИ ДОФИГА ОБЪЕКТОВ НА СЦЕНЕ) выросла в моем случае на 50% + ко всему очень удобно рефакторить код, в общем крутая штука, только очень уж необычная по сравнению с обычными монобехами, но просто привыкнуть надо) (popcorn1)


50%????! Все... ECS, я иду к вам))) а что скажете про юнитиевскую ECS? может сразу ее начать изучать? мне, например. На днях думаю почитаю что за зверь такой
playsetler
UNец
 
Сообщения: 22
Зарегистрирован: 18 авг 2015, 19:54

След.

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 9