Суббота, 20 Апреля 2024, 17:01

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Оптимизация инстантиэйт
Оптимизация инстантиэйт
zaicev9797Дата: Среда, 17 Июля 2013, 06:58 | Сообщение # 1
AbRaKaDaBrA
Сейчас нет на сайте
У меня возникла проблема. Делаю игру про космос. Сделал имитацию боя для теста производительности. Пока нажата кнопка у меня 32 обьекта которые по 4 шт. Находятся в связи с 8-ю родителями инстансят с разной скоростью каждый(от 0.2 до 0.7 сек) по 1 обьекта. Таким образом одновременно может инстанситься от 8и до 32, а за секунду до 200 обьектов. Когда начинаю стрелять игра начинает жутко лагать, причем лагают не пули( когда я отпускаю кнопку, все созданные пули еще летят, но игра разлагивается). Использую ф-ю инстантиэйт и ломаную 34-ю

проект Mysterious Space. The losted moment
NEBRДата: Среда, 17 Июля 2013, 08:58 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
zaicev9797, не представляю зачем нужно создавать 200 объектов в секунду, но если это так необходимо, то тебе нужно научится делать пулинг объектов. Погугли.

King Size #Gamiron12
zaicev9797Дата: Среда, 17 Июля 2013, 09:28 | Сообщение # 3
AbRaKaDaBrA
Сейчас нет на сайте
Ну там может и не 200 но 100 это точно. А гуглить с мобилы весьма затруднительно, может есть еще какиенибудь варианты

проект Mysterious Space. The losted moment
robertonoДата: Среда, 17 Июля 2013, 11:36 | Сообщение # 4
Чокнутый Кот
Сейчас нет на сайте
Сделай спрайты или 2D текстуру. Зачем модель..
NEBRДата: Среда, 17 Июля 2013, 14:42 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
zaicev9797, гуглить с мобилы нормально. Всяко лучше чем сидеть на форуме и ждать пока за тебя все скрипты напишут. Благо что тебе подсказали в каком направлении копать - пулинг объектов

King Size #Gamiron12

Сообщение отредактировал NEBR - Среда, 17 Июля 2013, 14:44
sinoptisДата: Среда, 17 Июля 2013, 16:54 | Сообщение # 6
почетный гость
Сейчас нет на сайте
dry Искать ничего и не нужно.
zaicev9797Дата: Четверг, 18 Июля 2013, 15:27 | Сообщение # 7
AbRaKaDaBrA
Сейчас нет на сайте
Всем большое спс

Добавлено (18.07.2013, 14:42)
---------------------------------------------
Так, вобщем я скрипт пиксая переписал, вроде все работает, при начале игры пул с неактивными пулями создается, а при начале стрельбы постепенно сокращается(пули у меня в него обратно не возвращаются),НО лагает еще больше, также пока нажата кнопка стрельбы, причем, когда пул заканчивается, лагать начинает меньше. Лог никаких ошибок не выдаёт, сам скрипт проверл, вроде все правильно??? В чем дело?

Добавлено (18.07.2013, 15:27)
---------------------------------------------
Еще заметл чем меньше размер пула, тем меньше лаги


проект Mysterious Space. The losted moment
sinoptisДата: Пятница, 19 Июля 2013, 09:28 | Сообщение # 8
почетный гость
Сейчас нет на сайте
По идее пули нужно возвращать обратно в пул. Пул объектов служит для того, чтобы заранее создать на сцене определенное количество пуль(например) , выделить для них память и использовать по кругу эти пули. Это помогает избежать утечки памяти при многократном инстансе и удалении объектов. То что вы сделали, по сути, не имеет смысла, вы просто заранее создали пули, а потом их уничтожили. Вам необходимо при коллизии пули возвращать ее обратно в пул. Насчет лагания, вы видимо пул сделали огроменный, что он столько памяти занял, либо у вас пули такие тяжелые wink . И соответственно чем меньше пул тем меньше он занимает памяти. happy
pixeyeДата: Пятница, 19 Июля 2013, 09:43 | Сообщение # 9
Red Winter Software
Сейчас нет на сайте
Когда пул пустой, то он использует Instantiate чтобы создать объект ( либо в начале когда ты создаешь сразу готовый пул, либо в процессе ).
Если невозращать объект в пул, то он будет бесконечно увеличиваться.

Для решения этой беды можно сделать что-то вроде этого. ( Если например точно знаешь через какое время загонять объект в пул )

Код
public class poolHandler : MonoBehaviour {

public float timer = 0.0f;

public void OnEnable ()
{

StartCoroutine (coUpdate ());
}

IEnumerator coUpdate ()
{

yield return new WaitForSeconds(timer);
_твойПУЛ.Unspawn (gameObject);

}

}


ACTORS - мой фреймворк на Unity
Until We Die - игра над которой работаю

zaicev9797Дата: Пятница, 19 Июля 2013, 18:10 | Сообщение # 10
AbRaKaDaBrA
Сейчас нет на сайте
Ну я вобщемто частично эту проблему решил. Я просто пули собирал прямо в юне из 5-и плейнов и удочерял каждую к пустому обьекту, таким образом каждая пуля состаяла аж из 6-и обьектов. А теперь пули я в блендере собрал, но уже из 5-и трианглов. Теперь вместо 6-и кораблей у меня с такимиже примерно лагами в эдиторе(6-8 фпс) 64 корабля пуляют, а ексешник и вовсе не лагает(самое маленькое фпс 15) производительность аж больше чем в 10 раз увеличилась. А пул так и не улучшает работоспособность. Но мне и этого вполне хватает. 30 кораблей одновременно стреляющих на поле боя значит всего корблей в 4-5 раз больше, а этого предостаточно для полномасштабного космического сражения. Гы smile

проект Mysterious Space. The losted moment
pixeyeДата: Пятница, 19 Июля 2013, 20:11 | Сообщение # 11
Red Winter Software
Сейчас нет на сайте
Цитата (zaicev9797)
Ну я вобщемто частично эту проблему решил. Я просто пули собирал прямо в юне из 5-и плейнов и удочерял каждую к пустому обьекту, таким образом каждая пуля состаяла аж из 6-и обьектов. А теперь пули я в блендере собрал, но уже из 5-и трианглов. Теперь вместо 6-и кораблей у меня с такимиже примерно лагами в эдиторе(6-8 фпс) 64 корабля пуляют, а ексешник и вовсе не лагает(самое маленькое фпс 15) производительность аж больше чем в 10 раз увеличилась. А пул так и не улучшает работоспособность. Но мне и этого вполне хватает. 30 кораблей одновременно стреляющих на поле боя значит всего корблей в 4-5 раз больше, а этого предостаточно для полномасштабного космического сражения. Гы


я так понимаю речь идет о космических кораблях:) Я бы посоветовал тебе пули делать партикалами. Это дешевле и оптимизированнее

СЛедует заметить что ПУЛ сам по себе НЕ улучшает производительность, наоборот он берет на себя ресурс:) Однако благодаря нему можно снизить частоту появления сборщика мусора ( а вот это иногда приводит к лагам )


ACTORS - мой фреймворк на Unity
Until We Die - игра над которой работаю

zaicev9797Дата: Суббота, 31 Августа 2013, 18:27 | Сообщение # 12
AbRaKaDaBrA
Сейчас нет на сайте
Странно. Почемуж тогда при вопросе "Как опти- ть инстантиэт", всегда отправляют на гуглинг пула? и ещё вопрос: этот скрипт нормально с прочими жс взаимодействует?

проект Mysterious Space. The losted moment
seamanДата: Суббота, 31 Августа 2013, 19:17 | Сообщение # 13
старожил
Сейчас нет на сайте
Не путайте "Улучшение производительности" и "оптимизацию Instantiate". Хотя, конечно, они зависят друг от друга. Если вы нормально используете пул - Instantiate вызывается только при старте приложения. Следовательно в дальнейшем ее вообще нет! И как она может влиять на производительность? Перемещение объекта из пула в нужное место и обратно - совершенно не затратные операции. Следовательно затраты могут быть только на само обслуживание пула (типа поиска нужного объекта в списке). Ну а эти затраты напрямую зависят от реализации и прямоты рук.
Да, Вы это читали?- ГСУП


Сообщение отредактировал seaman - Суббота, 31 Августа 2013, 19:30
zaicev9797Дата: Суббота, 31 Августа 2013, 20:17 | Сообщение # 14
AbRaKaDaBrA
Сейчас нет на сайте
Я кокрас именно этот пул и использовал

Добавлено (31.08.2013, 20:17)
---------------------------------------------
И лаги всёравно именно при инстансе


проект Mysterious Space. The losted moment
UndeadДата: Воскресенье, 01 Сентября 2013, 00:56 | Сообщение # 15
NeoAxis User
Сейчас нет на сайте
Ты, "кокрас", жутко тупишь. При использований пула объектов не должны инстаньситься объекты, они берутся из пула, а при уничтожении туда возвращаются.

Вcем зла.
zaicev9797Дата: Воскресенье, 01 Сентября 2013, 07:35 | Сообщение # 16
AbRaKaDaBrA
Сейчас нет на сайте
У меня они в начале и не инстансятся- пока пул не закончится(в это время и лаги самые сильные), но постепенно, по мере того как сокращается пул, лаги уменьшаются. И ещё, как мне в жабе этот "Пулс" импортировать, ( скрип то я переписывал отсюда, а он на шарпе), название в своём скрипте я точно правильно написал а он не импортируется

проект Mysterious Space. The losted moment
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Оптимизация инстантиэйт
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг