Эффективное обнаружение столкновений с несколькими объектами одновременно

Я разрабатываю 2D-игру с очень большими уровнями, в которых две команды (около 200 объектов на команду) сражаются друг с другом на самолетах, танках, турелях и т. д. Ожидается, что каждый объект, стреляющий пулями в своего врага, будет иметь большое количество объектов в один момент. Какой алгоритм обнаружения столкновений я мог бы использовать для поддержки столкновений для огромного количества сущностей? Объекты представляют собой простые фигуры (прямоугольники и круги). Будет ли достаточно грубой силы или разбить уровень на сетку?


person lambda    schedule 05.06.2013    source источник
comment
Вы можете использовать пул для пуль, чтобы не выделять память каждый раз, когда вы стреляете, а также для коллизии вы можете использовать и API для этого, или вы хотите сделать это вручную?   -  person DGomez    schedule 05.06.2013
comment
почему бы не использовать физический движок, например box2d?   -  person Bryan Chen    schedule 05.06.2013


Ответы (1)


Не используйте метод грубой силы. У вас очень скоро возникнут проблемы с производительностью. На эту тему есть много работ и статей.

Но если вы действительно не хотите реализовывать свое собственное решение, выберите существующий движок коллизии/физики, который может решить эту проблему за вас. Вы делаете 2D-игру, тогда очевидным выбором будет Box2D, который портирован на многие платформы и используется во многих играх. движки и игры (например, Angry Birds и ее клоны). Также этот вопрос, вероятно, лучше подходит для сайта разработки игр, поскольку на самом деле вы не решаете какую-либо конкретную проблему программирования.

person MartinTeeVarga    schedule 05.06.2013