Broad-Phase Libs for fast 2D Collision Detection — Gideros Forum

#### Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

# Broad-Phase Libs for fast 2D Collision Detection

Member
edited October 2012
Hi all,

Collision detection] is a fundamental topic, featured in a wide range of applications, such as computer games, physically-based simulations, etc. Although simple with a few number of entities, it can turn into a bottleneck, especially when dealing with growing numbers of moving objects, and cause some framerate drops.

Suppose that we are rendering 100 objects, and we need to check (each frame) if they are colliding (i.e overlapping) or not. The first common (and naive) approach would be testing each object against others.
 for i = 1,100 do for j = 1,100 do if i~=j then collisionTest(object[i], object[j]) end end end
This will result in 9900 collision tests.

A second approach (a bit more clever one) would take advantage of the commutative nature of collisions (i.e A-collides-B equals B-collides-A).

Therefore, the test above should become:
 for i = 1,99 do for j = i,100 do collisionTest(object[i], object[j]) end end
What will result in 4950 collision tests.

This is better, but we can still narrow down a lot more the number of required checks using broad-phase collision detection algorithms.
This process identifies groups of objects that are so close enough that they may potentially collide.

Thus, we can perform an effective collision check on those objects to achieve the same result.

Find here some of these algorithms implemented in Lua, with documentation and examples of use.
Hope it helps for your games!