Eine, unvollendete, Facharbeitskonzept über das Spiel WII Tanks
Ein Projekt, welches ich gerne wieder anfangen will, aber gut darstellt, wie man Daten darstellen kann.
Die Main Klasse beinhaltet einen selbstgeschriebenen Algorithmus,
welcher versucht eine Richtung auszumachen, um von Punkt A zu Punkt B ungehindert zu kommen.
Der Algorithmus beruht auf folgender, rauer, Grafik:
Jede dieser Farben beschreibt ein anderes Prinzip, die Richtung zum Punkt zu bestimmen.
Grundsätzlich wende ich einen Raycasting algorithmus an, der versucht innerhalb eines bestimmten Umfelds zu kommen.
Dies ist wohl der einfachste Fall:
Er nimmt die Richtung zum Punkt und überprüft, ob dieser gehindert ist. Ist kein Hinderniss im Weg, kann diese Richtung sofort genutzt werden.
Man erstellt zwischen Punkt A und Punkt B eine Gerade, welche zu den Punkten senkrecht liegt. Diese Gerade sucht einen Schnittpunkt mit einer Wand/reflektierendem Objekt,
in der Abbildung ist dieser Punkt closestWallHit
genannt.
Nun überprüft man, ob man von Punkt A und Punkt B, den closestWallHit
ungehindert treffen kann, falls dies der Fall ist, nutze die Richtung zu diesem Punkt.
Ich habe einige Versuche mit diesen Algorithmen angestellt und erhielt folgende Resultate:
Man sieht sofort, dass es eine erhebliche Verbesserung gibt, wenn der Instant-Hit Algorithmus eingesetzt wird. Dies ist auch sinnvoll, da der
Parallelity-Check ein seltener und unzuverlässiger Fall ist.
Und die kleine Verbesserung im Falle aller Algorithmen könnte auch ein Zufall sein, bzw. wird in einer echten Anwendung wohl keinen Einfluss haben.
Diese Grafik stellt dar, wie wahrscheinlich es ist, dass keine valide Richtung gefunden wird.
Wichtig ist anzumerken, dass erneut der Instant-Hit Algorithmus eine erhebliche Verbesserung bietet. Die Fälle, in denen keine valide Richtung
gefunden wird sinkt stark. Der Parallelity-Check Algorithmus hat nur einen moderaten Einfluss auf die Wahrscheinlichkeit.
Dennoch ist das Anwenden aller Algorithmen von Vorteil, wenn man sich die, falsch beschriftete, Zeitaxe anschaut. Denn dann bemerkt man, dass das anwenden aller
Algorithmen dazu führt, dass invalide Möglichkeiten schneller ignoriert werden.
Was mich aber überrascht hat, ist das keine "No Improvements" einen so rapiden Anstieg hat. Intuitiv wäre, dass es einen eher geradlinigen Anstieg hätte, da es
gleichmäßig in alle Richtungen einen Ray projiziert.