Ich versuche, eine flexible, auf Kacheln basierende Spiel-Engine zu erstellen, um alle Arten von Nicht-Echtzeit-Puzzlespielen zu erstellen, genau wie Bejeweled, Civilization, Sokoban und so weiter.
Der erste Ansatz, den ich hatte, bestand darin, ein 2D-Array von Kachelobjekten zu haben und dann Klassen von Kacheln zu erben, die die Spielobjekte repräsentierten. Leider konnte ich auf diese Weise nicht mehr Spielelemente auf demselben Plättchen stapeln, ohne ein 3D-Array zu haben.
Dann habe ich etwas anderes gemacht: Ich hatte immer noch das 2D-Array von Kachelobjekten, aber jedes Kachelobjekt enthielt eine Liste, in die ich sie legte, und verschiedene Objekte. Dies hat gut funktioniert, bis ich vor 20 Minuten feststellte, dass es zu teuer ist, viele Dinge zu tun. Schauen Sie sich dieses Beispiel an:
Ich habe eine Wall-Entität. Bei jedem Update muss ich die 8 benachbarten Kacheln überprüfen, dann alle Entitäten in der Kachelliste überprüfen, prüfen, ob eine dieser Entitäten eine Wand ist, und schließlich das richtige Sprite zeichnen. (Dies geschieht, um Wände zu zeichnen, die nahtlos nebeneinander liegen.)
Die einzige Lösung, die ich jetzt sehe, ist ein 3D-Array mit vielen Ebenen, das für jede Situation geeignet ist. Auf diese Weise kann ich jedoch nicht zwei Objekte stapeln, die dieselbe Ebene auf derselben Kachel haben. Wann immer ich das tun möchte, muss ich eine neue Ebene erstellen.
Gibt es eine bessere Lösung? Was würden Sie tun?