Say I have a 2D grid of particles, and I wanted to find out if any of them were colliding. In my head I have come up with a system where you check every possible location for each particle in that 'tick' and see if there is a collision. But, I have found a problem with this system. If I check each particle against every other particle, (or in a smaller grid, that's radius is the particle's velocity) then how would I check if 3 or more particles have collided? The issue is that the system will see two particles collide, then set their velocities accordingly, but what if there was another particle which was going to collide, but wasn't checked in time, so the system doesn't see any collision, and lets it 'tunnel'.