Re: Увеличиваем производительность игры или как убить лишние коллизии. Советы новичкам.
простая сегментная разбивка (впрочем, ты наверное и сам знаеш).
разбиваеш ограниченное пространство на n^3 кубов.
создаеш n^3 списков (aka list из <list>)
игровой цикл:
отчищаеш все спсики
первым прогоном 2000 операций, заносиш сферу в список. к которому она принадлежит (по координатам), если к нескольким (большая сфера), то заносиш во все списки к которым она принадлежит.
далее, прогоняеш все сферы
2000 проходов.
далее проеверяеш на коллизии тока сферы из тогоде списка (или кщк соседних), если сфера большая.
аналогичная система юзается в вартич (тога 2д , n^2), она помогла офигенно поднять производительность при большом кол-ве юнитов (хотя немного ее снизила при малом кол-ве).
исходники либы утеряны, в связи с потерей винта, и на данный момент усильно пишутся заново. Могу потом скинуть, прада ето будет 2д сегментная сетка.
|