Conorsmine / WII-Tanks-Facharbeit

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WII-Tanks-Facharbeit

Eine, unvollendete, Facharbeitskonzept über das Spiel WII Tanks
Ein Projekt, welches ich gerne wieder anfangen will, aber gut darstellt, wie man Daten darstellen kann.

Trajectory Algorithmus

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: image Jede dieser Farben beschreibt ein anderes Prinzip, die Richtung zum Punkt zu bestimmen.

Standard (Blau)

Grundsätzlich wende ich einen Raycasting algorithmus an, der versucht innerhalb eines bestimmten Umfelds zu kommen.

Instant-Hit (Rot)

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.

Parallelity-Check (Grün)

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.

Testresultate

Ich habe einige Versuche mit diesen Algorithmen angestellt und erhielt folgende Resultate:

Timecomplexity

image
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.

Failure over Time

image
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.

About


Languages

Language:Java 100.0%