Ich habe jetzt zugegeben nicht versucht, deinen Algorithmus bis ins letzte Detail zu verstehen. Aber folgendes als Denkanregung:
Du kannst die Anzahl der benötigten Vergleiche reduzieren, indem du eine Achsensortierung vornimmst. Für die Kollisionsprüfung gehst du all deine Objekte also nicht in einer beliebigen Reihenfolge durch, sondern von links nach rechts und von oben nach unten (oder so in der Art). Ehrlich gesagt krieg ich den Algorithmus aus dem Kopf derzeit nicht auf die Reihe und finde ihn auch nicht (er war glaub ich in einem Buch zu finden, aber ich ziehe demnächst um und die Bücher sind in irgendwelchen Kartons
), aber sinngemäß kann man dadurch schnell ableiten, für welche Objekte eine Kollisionsprüfung überhaupt nicht erforderlich ist. Also wenn zum Beispiel auf der X-Achse Objekt 1 und 2 sich nicht überschneiden, kann sich Objekt 3 auch unmöglich mit Objekt 1 überschneiden.
Edit: Dir ging es eventuell weniger um die Kollisionen an sich als mehr um die Konsequenzen von Kollisionen auf spätere Kollisionen, richtig? Eventuell ist es dann möglich, innerhalb eines Frames die Kollisionen zeitlich nacheinander zu betrachten. Ein Frame-Skipping-Algorithmus kann dir helfen, die Granularität der Prüfung genau genug zu machen, damit du innerhalb eines Frames keine zwei aufeinanderfolgenden Kollisionen hast (schnelle Schüsse stellen da ein Problem da, wie von dir bereits erkannt). Ich sitze natürlich gerade auf der Arbeit und habe nicht genug Zeit, mir abschließend dazu genug Gedanken zu machen, aber ich denk bei Gelegenheit nochmal drüber nach
Dein Spiel wird bestimmt cool