Hallo,
folgendes Problem:
Ich möchte eine Spielfigur so bewegen, dass sie einem Pfad aus A* folgt.
Zuerst dachte ich das wäre einfach, doch das ist nicht wirklich trivial.
Mittlerweile bin ich bei der Idee angelangt mit mehreren Threads (2) zu arbeiten, um die Spielfigur zu bewegen.
Meine Map besteht aus 32x32 großen Tiles. Wenn ich den Pfad via A* mit dieser Größe berechnen lasse ist der Algorithmus zur Laufzeit wesentlich schneller als mit 1x1 großen Knoten.
Außerdem ergibt sich mit 32x32 eine einfachere Kollisionsverarbeitung.
So, nun hab ich mir überlegt einen Thread im 2 Sekunden Takt jeweils den folgenden Knoten des Pfades berechnen zu lassen und einen zweiten Thread dafür zu nutzen den Spieler mit der üblichen Vorgehensweise solange zu nachzuziegen bis der Spieler in 2 Sekunden den vorübergehenden Zielknoten erreicht hat. Dieser zweite Thread läuft daher auf z.B. 60 frames, um eine flüssige Bewegung zu erzielen. Das ist zwar Hardcoding aber mir fällt nicht wirklich etwas anderes. effektiveres ein.
Meine Frage ist zuerst mal: Ist dieser Ansatz grundsätzlich machbar, oder kann ich diese Idee total in die Tonne treten, denn ich befürchte starke Performanceprobleme zur Laufzeit.
Ein anderer Ansatz, den ich verfolge ist mit zwei einfachen Timern zu arbeiten.
Was ist besser, oder ist das Geschmackssache?
Gruß Eichelhaer
folgendes Problem:
Ich möchte eine Spielfigur so bewegen, dass sie einem Pfad aus A* folgt.
Zuerst dachte ich das wäre einfach, doch das ist nicht wirklich trivial.
Mittlerweile bin ich bei der Idee angelangt mit mehreren Threads (2) zu arbeiten, um die Spielfigur zu bewegen.
Meine Map besteht aus 32x32 großen Tiles. Wenn ich den Pfad via A* mit dieser Größe berechnen lasse ist der Algorithmus zur Laufzeit wesentlich schneller als mit 1x1 großen Knoten.
Außerdem ergibt sich mit 32x32 eine einfachere Kollisionsverarbeitung.
So, nun hab ich mir überlegt einen Thread im 2 Sekunden Takt jeweils den folgenden Knoten des Pfades berechnen zu lassen und einen zweiten Thread dafür zu nutzen den Spieler mit der üblichen Vorgehensweise solange zu nachzuziegen bis der Spieler in 2 Sekunden den vorübergehenden Zielknoten erreicht hat. Dieser zweite Thread läuft daher auf z.B. 60 frames, um eine flüssige Bewegung zu erzielen. Das ist zwar Hardcoding aber mir fällt nicht wirklich etwas anderes. effektiveres ein.
Meine Frage ist zuerst mal: Ist dieser Ansatz grundsätzlich machbar, oder kann ich diese Idee total in die Tonne treten, denn ich befürchte starke Performanceprobleme zur Laufzeit.
Ein anderer Ansatz, den ich verfolge ist mit zwei einfachen Timern zu arbeiten.
Was ist besser, oder ist das Geschmackssache?
Gruß Eichelhaer