Ich schreibe eine isometrische Engine in C ++. Ich entschied mich für einen realistischeren Ansatz und ließ Wände zwischen zwei Kacheln Platz nehmen, nicht zwischen einer einzigen ganzen Kachel, wie im Bild unten gezeigt (genau wie in Die Sims).
Mein Problem ist, dass ich keine Ahnung habe, wie ich die Kachelkarten-bezogenen Daten in etwas speichern soll, das kein Raster ist. In dieser Situation muss ich es wohl A * -freundlich machen, damit es Knoten und Kanten zwischen Kacheln gibt, die nicht durch Wände getrennt sind. Hier ist ein weiteres Bild, das zeigt, was ich erreichen möchte:
Also hier ist die Frage (n):
Wie soll ich:
- Speichern Sie die gesamte Karte, sowohl Kacheln als auch Wände
- Optimieren Sie es für das Rendern
- Verwenden Sie es für A * und andere Algorithmen, die in einem einfachen Raster recht einfach zu implementieren sind. Verwenden Sie jetzt Wände (Kanten), um Sichtbarkeit, Kollision usw. zu bestimmen.