25 600 движущихся спрайтов

Раздел, посвящённый самому важному - скорости.

25 600 движущихся спрайтов

Сообщение lolostyle 26 окт 2019, 13:26

Добрый день.

Постановка задачи:
Нам нужно создать сетку из спрайтов 160х160. Каждый спрайт движется в рандомном направлении и с рандомной скоростью. При столкновении друг с другом спрайт исчезает и появляется через секунду, где то за экраном. Нужно что бы это все работало при 30-60 фпс.

Мое решение:
В скрипте Spawner у меня 3 листа со скоростью, направлением и риджидбоди2д. В старте я создаю спрайты ставлю их по сетку в двойном цикле, тут же рандомлю скорость и направление и вместе с риджидбоди2д добавляю их в списки. В методе FixedUpdate я прохожу циклом по всем элементам списка риджидбоди2д и даю каждому его направление и скорость. На спрайте висит скрипт, который отслеживает столкновение через OnTriggerEnter2D и вызывает из Spawner метод, в котором этот спрайт выключается, перемещается за экран и там снова активируется и продолжает движение. Я смог добиться 20 фпс при 120х120 спрайтах.

Вопрос: Какие методы оптимизаций еще можно применить?
Ps: Я читал про ECS & Job System помогут ли они мне в этом случае ведь я использую передвижение через риджидбоди, а не трансформ. Если да то не могли бы вы показать на легком примере, как это должно выглядеть.

Спасибо.
lolostyle
UNец
 
Сообщения: 2
Зарегистрирован: 31 май 2019, 14:36

Re: 25 600 движущихся спрайтов

Сообщение Xtir 26 окт 2019, 15:18

Я так понял направление объектов рандомно меняется каждый fixed update?
Xtir
UNIверсал
 
Сообщения: 498
Зарегистрирован: 21 окт 2016, 00:37

Re: 25 600 движущихся спрайтов

Сообщение 1max1 26 окт 2019, 16:05

Направление и скорость можно задавать только при старте (с 0 гравити) и при включении, зачем это делать каждый физ. тик? Вообще зачем тебе столько спрайтов на сцене)) Кстати от типа коллайдера тоже зависит нагрузка, самый просто естественно circle. Job System возможно поможет за счет многопоточности, но я хз как ей пользоваться)
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: 25 600 движущихся спрайтов

Сообщение jetyb 29 окт 2019, 08:45

Человеческое сознание способно отследить максимум 8 объектов, а вы предлагаете 25600?
У вас там жестокое похмелье после недельной гулянки, и вы хотите, чтобы и другим было так же хреново?

Сделать столько (и более) объектов вполне можно, только через GPU и шейдеры. Через коллайдеры все это будет дико тормозить.

Только зачем 25000 объектов? Реально на экране будет значима максимум сотня (иначе - эпилептический приступ). Вот и обращайтесь с сотней объектов в пределах видимости.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: 25 600 движущихся спрайтов

Сообщение seaman 29 окт 2019, 09:03

Без столкновений думаю довольно легко было бы.
Если Pixi может, почему бы Юнити не могла бы?



seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: 25 600 движущихся спрайтов

Сообщение Golandez 07 ноя 2019, 09:26

Посмотрите в сторону job system и ECS.
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital


Вернуться в Оптимизация

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2