Страница 1 из 2

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

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

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

Вот визуализация моей идеи
Изображение

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

СообщениеДобавлено: 18 авг 2018, 19:59
lawson
повесьте на камер box коллайдер, если юнит вошел в коллайдер - включаете аниматор и все остальное, если юнит вышел соответственно отключаете.

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

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

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

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

СообщениеДобавлено: 19 авг 2018, 14:49
Cr0c
По профайлеру фпс что просаживает?

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

СообщениеДобавлено: 19 авг 2018, 17:47
playsetler
lawson писал(а):повесьте на камер box коллайдер, если юнит вошел в коллайдер - включаете аниматор и все остальное, если юнит вышел соответственно отключаете.


Была такая идея, но я думаю это ресурсоёмко, будут скачки производительности потому что в игре войска расположены боком и построены линиями, в каждой линии по 15 солдат и, получается что при быстрой прокрутки камеры в один момент будет туча пересечений триггеров, а где-то я читал что следует избегать использование большого кол-ва триггеров. Спасибо за совет, я решил свою проблемку неожиданным способом) ниже напишу

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

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

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


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

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

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

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

СообщениеДобавлено: 19 авг 2018, 20:31
Xtir
Рендеринг 1000 юнитов это ещё не самое страшное. Вот когда они все начнут куда-то идти, вот тогда и начнётся капец...

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

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


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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

СообщениеДобавлено: 24 авг 2018, 17:48
1max1
Простите за отсталость)) я читал новости про эти системы, но кажется что они так сложны в освоении, что даже не осваивал их

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

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

СообщениеДобавлено: 26 авг 2018, 15:33
playsetler
1max1 писал(а):
Простите за отсталость)) я читал новости про эти системы, но кажется что они так сложны в освоении, что даже не осваивал их

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


50%????! Все... ECS, я иду к вам))) а что скажете про юнитиевскую ECS? может сразу ее начать изучать? мне, например. На днях думаю почитаю что за зверь такой