Показать сообщение отдельно
Старый 16.09.2007, 17:04   #27
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Увеличиваем производительность игры или как убить лишние коллизии. Советы новичкам.

простая сегментная разбивка (впрочем, ты наверное и сам знаеш).
разбиваеш ограниченное пространство на n^3 кубов.
создаеш n^3 списков (aka list из <list>)

игровой цикл:
отчищаеш все спсики
первым прогоном 2000 операций, заносиш сферу в список. к которому она принадлежит (по координатам), если к нескольким (большая сфера), то заносиш во все списки к которым она принадлежит.
далее, прогоняеш все сферы
2000 проходов.
далее проеверяеш на коллизии тока сферы из тогоде списка (или кщк соседних), если сфера большая.

аналогичная система юзается в вартич (тога 2д , n^2), она помогла офигенно поднять производительность при большом кол-ве юнитов (хотя немного ее снизила при малом кол-ве).
исходники либы утеряны, в связи с потерей винта, и на данный момент усильно пишутся заново. Могу потом скинуть, прада ето будет 2д сегментная сетка.
(Offline)
 
Ответить с цитированием