Страница 4 из 5
Re: Падение ФПС из-за скрипта турели)=
Добавлено:
29 июл 2012, 21:52
Jakobs
BlackMamba писал(а):все не читал, но хочу сказать, что у вас есть массив врагов, даже если их 1000, перебрать всех простейшими методами не должно сильно грузить комп, может быть проблема не в этом скрипте?
одному такой массив не сложно перебрать...
допустим у меня 1000 объектов перебирают 1000 врагов в результате получаем 1 000 000 запросов одновременно, что уже напряжно обрабатывать =(
Re: Падение ФПС из-за скрипта турели)=
Добавлено:
30 июл 2012, 07:47
Multirezonator
Интересная задачка, с виду тривиальная, должно быть куча решений, попробую на досуге поэкспериментировать..
Re: Падение ФПС из-за скрипта турели)=
Добавлено:
30 июл 2012, 08:31
jetyb
Совсем необязательно просчитывать ближайшего врага для 1000 целей каждый кадр.
Можно взять цикл по 10 и каждый раз вычислять врага для очередной сотни целей. Стреляют ведь пушки не непрерывно? - так вообще вычислять врага можно с частотой стрельбы.
А лучше вообще захватить одного врага и вести до его убийства\исчезновения. Даже реалистичней поведение получится.
Проблемы возникнут с визуализацией взрывов и пуль от кучи объектов.
Re: Падение ФПС из-за скрипта турели)=
Добавлено:
30 июл 2012, 08:54
Guyver
делить пространство на сектора,
при перемещении объектов ... они сами следят в каком секторе они находятся ...
делать грубую прикидку для секторов ... видит не видит ... если 2 сектора видят друг друга ... то уже обрабатывать объекты внутри секторов .. иначе - забить
размазать всё между кадров .. по очереди .. в 1 кадр 2, 4, 8 секторов .. кол-во секторов подбирать имперически.
Re: Падение ФПС из-за скрипта турели)=
Добавлено:
30 июл 2012, 13:55
Multirezonator
Нарисовал я простенький проект, ищет цели с помощью Physics.OverlapSphere. 1000 врагов и 1000 турелей, которые пытаются стрелять по ближайшей цели.
Посмотреть можно тут
http://dl.dropbox.com/u/26561247/WebPlayer.html
скачать отсюда
http://dl.dropbox.com/u/26561247/TurrelTest.unitypackage
Re: Падение ФПС из-за скрипта турели)=
Добавлено:
30 июл 2012, 23:31
Jakobs
Отличный пример, сделал 4000 vs 4000 и фпс 30+ если не смотреть в сторону всего этого действа =)
Re: Падение ФПС из-за скрипта турели)=
Добавлено:
31 июл 2012, 07:05
Syberex
Интересный пример, но чем он показателен? Тем, что PhysX движок хорошо оптимизирован?
Или это все же Юнити?
Re: Падение ФПС из-за скрипта турели)=
Добавлено:
31 июл 2012, 07:34
seaman
Тем, что PhysX движок хорошо оптимизирован?
Или это все же Юнити?
А что PhysX - не часть Юнити?
Re: Падение ФПС из-за скрипта турели)=
Добавлено:
31 июл 2012, 07:38
Multirezonator
Тем что пример соо
Syberex писал(а):Интересный пример, но чем он показателен? Тем, что PhysX движок хорошо оптимизирован?
Или это все же Юнити?
Тем что пример соответствует теме топика, и что все таки FPS достаточно высокий при одновременном поиске целей для 1000 турелей стандартными методами unity3D.
Re: Падение ФПС из-за скрипта турели)=
Добавлено:
31 июл 2012, 09:33
Syberex
Кстати да, а то все время физ-движки тестят на обработку коллизий (падающие бочки ...), а тут вот не менее важный параметр ...
А еще хотелось бы увидеть кусок кода из примера, где используется OverlapSpere
Re: Падение ФПС из-за скрипта турели)=
Добавлено:
31 июл 2012, 19:04
Multirezonator
Там же есть ссылка на скачку всего проекта:
В проекте всего 4ре скрипта: Turrel , Unit, CameraRotator и Spawner всего в сцене. OverlapSphere, кажется, в скрипте Turrel используется.
Re: Падение ФПС из-за скрипта турели)=
Добавлено:
01 авг 2012, 09:04
liver9711
Свой Update ты зделать можешь (и даже очень примитивным способом):
Используется javascript
//Вне всяких функций
InvokeRepeating(0,0.1,"СвойUpdate");//Повторение начинается с нуля, повторяется каждые 0.1 сек и вызывается функция СвойUpdate
function СвойUpdate () {
//Код
}
Re: Падение ФПС из-за скрипта турели)=
Добавлено:
06 ноя 2012, 13:23
BANNERTM
Multirezonator писал(а):Там же есть ссылка на скачку всего проекта:
В проекте всего 4ре скрипта: Turrel , Unit, CameraRotator и Spawner всего в сцене. OverlapSphere, кажется, в скрипте Turrel используется.
Извините за нубство, но я не понял когда вызывается функция поиска цели SelectTarget()! Почему когда все объекты уничтожены, а я спавню новый, пушки на него не реагируют?
Re: Падение ФПС из-за скрипта турели)=
Добавлено:
08 ноя 2012, 13:21
Ashvar
Ну у меня, кстати, тоже были проблемы с этим. В принципе это можно как-то так оптимизировать:
1.) Сделать список объектов в зоне досягаемости и обновлять раз в секунду (обновление проводить с вызовом OverlapSpere).
2.) Для турели проверять в каждом цикле дистанцию до цели, факт существования цели и возможность в неё попасть. Если цели нет, то выбрать новую цель из списка.
Из вариантов оптимизации добавлю, что можно сделать несколько сфер для OverlapSpere. Наибольшая сфера обновляется с помощью OverlapSpere раз в 10 секунд (к примеру), а потом проверяем все объекты из большой сферы на их вхождение в малую (раз в секунду).
В итоге перебор всех объектов происходит раз в 10 секунд, а не 60 раз в секунду.
Кстати, есть вопрос! А есть аналог OverlapSpere с другими примитивами? в частности с капсулами. И как вообще работает OverlapSpere? не всё же он перебирает, как он оптимизирован?
Re: Падение ФПС из-за скрипта турели)=
Добавлено:
08 ноя 2012, 14:00
seaman
Полного аналога нет
Physics.CheckCapsule
Несколько не то. Только касание, если полностью внутри капсулы, не вернет.
Как устроена внутри? Использует физику PhysX Nvidia. Как устроена там? А фиг его знает.
Пересечение двух сфер проверить элементарно. В Юнити проверяется пересечение не со сферой (и не с коллайдером), а с баундинг боксом. Это посложнее. Ну а алгоритмы можно найти в инете:
http://www.google.ru/#q=box+sphere+inte ... _pw.&cad=b