Hallo,
ich werden (versuche) demnächst ein Spiel zu programmieren, baue gerade ein System mit SFML auf (wo schon das GUI usw. existiert und man Gui-Elemente oder Spiel-Objekte erstellen und einfach hinzufügen kann).
Jetzt überlege ich mir wie man Objekte managen kann. Als Beispiel nehme ich mal ein Strategiespiel wie Age of Empires, Emire Earth oder Star Craft (die müssten ja bekannt sein
). Das Spiel (2D) hat jetzt ganz viele Objekte die man zeichnen oder auf Kollision prüfen kann/soll. Bei einer Spiel-Fläche von einem Screen (Bildschirm) zeichnet man halt alle, aber wenn man eine Größe von 10x10 Screens hat, dann muss man ja alle Objekte mit if() durch gehen und prüfen ob das Objekt sich im Screen befindet, dann zeichnen. Bei ca. 100 Objekte geht das vielleicht noch aber bei 20.000 dauert das schon länger.
Ich hab mir überlegt ein 2D Matrix zu erstellen, so'ne Art Schachbrett, und da alle Objekte positionieren. So kann man mit die Position des Screens über die Matrix auf die Objekte zugreifen (hoffe ist verständlich). Auch bei Kollision fragt das Objekt ab ob in Matrix[45][89] ein Objekt ist oder nicht.
Bei der ersten Variante mit if() und 20.000 Objekten hätte der Rechner ja 20.000^19.000 Berechnungen und bei der zweite Varainte 20.000^(3 - 5).
Ist das der richtige Ansatz oder gibt es eine andere Lösung!?