Inkonsistente Bewegung / Sichtlinie um Hindernisse auf einem sechseckigen Gitter

7

In einem schurkenhaften Spiel, an dem ich gearbeitet habe, bestand eines meiner Hauptziele darin, dem Spieler zu ermöglichen, "das Spiel zu spielen, nicht das Gitter".

Im Wesentlichen möchte ich, dass die Positionierung des Spielers aufgrund von Elementen in der Spielwelt taktisch ist, nicht nur, weil einige Gitterplättchen in Bezug auf Feinde vorteilhafter sind als andere. Mir geht es gut, wenn die Weltgeometrie nicht realistisch ist, aber sie muss konsistent sein.

In diesem Prozess bin ich auf die meisten häufigen Probleme gestoßen (quadratische Kacheln? Diagonale Bewegung, LOS, Eckfälle usw.) und bin zu einem sechseckigen Kachelgitter übergegangen. Zum größten Teil war das großartig und ich hatte nicht zu viele Inkonsistenzen.

In letzter Zeit bin ich jedoch von Folgendem überrascht worden:

Die Punkte A und B sind beide Abstand 4 vom Spieler, die Sichtlinie zu beiden ist durch die Wände Abstand 2 vom Spieler blockiert.  Aufgrund des sechseckigen Gitters kann A in 4 Zügen erreicht werden, wobei die Wand umgangen wird, während B 5 Züge erfordert, da die Wand den Weg in diese Richtung effektiver blockiert.

Die Punkte A und B sind beide Abstand 4 vom Spieler (rote Linien). Die Sichtlinien zu beiden sind durch Wände (schwarze Fliesen) blockiert. Aufgrund des hexagonalen Gitters kann A jedoch in 4 Zügen erreicht werden, während B 5 Züge benötigt (blaue Linien).

Auf einem Hex-Gitter scheint "kürzester Weg" vom "direkten Weg" getrennt zu sein; Es kann mehrere kürzeste Pfade zu einem beliebigen Punkt geben, aber es gibt nur einen direkten Pfad (oder in einigen Situationen zwei). Das ist in Ordnung; Geometrie muss nicht realistisch sein.

Dies scheint jedoch auch inkonsistent zu sein: Ähnliche Hindernisse sind in einigen Positionen wirksamer als in anderen. Ein Spieler, der vor einem Feind davonläuft, sollte in jede Richtung laufen können, um den Abstand zwischen den beiden Akteuren zu vergrößern. Wenn Sie jedoch Hindernisse oder Fallen zwischen sich und den Feinden platzieren, wird der Spieler am besten bedient, indem er in eine der sechs Richtungen läuft, in denen es nicht mehrere kürzeste Wege gibt.

Gibt es eine Möglichkeit, dies zu rationalisieren? Vermisse ich etwas, das dieses Verhalten konsistent macht? Oder gibt es eine Möglichkeit, dieses Verhalten konsistent zu machen? Ich denke mit Sicherheit darüber nach, aber da dies eines meiner Ziele ist, sollte ich es mit gebührender Sorgfalt tun.

Darq
quelle
Ich verstehe nicht, "wenn der Spieler Hindernisse oder Fallen zwischen sich und den Feinden platziert, ist es am besten, wenn er in eine der sechs Richtungen läuft, in denen es nicht mehrere kürzeste Wege gibt." . Könnten Sie bitte ein Beispiel hinzufügen?
Heckel
Gilt das nicht auch für quadratische Gitter? Ich denke, dies ist sowohl ein Vor- als auch ein Nachteil der Verwendung von Gittern.
Amitp
2
@Heckel, wenn ich das Bild in der Frage als Beispiel verwenden darf. Hindernisse zwischen mir und dem Feind, die direkt von einem Feind in der mit "A" gekennzeichneten Kachel (oben im Bild) weglaufen, haben nur geringe Auswirkungen, da es mehrere kürzeste Wege um das Hindernis gibt (dargestellt durch die blaue Linie). Wenn Sie von "B" (unten links im Bild) weglaufen, gibt es nur einen kürzesten Weg, und wenn Sie das Hindernis umgehen, wird ein längerer Weg erzwungen (wieder blau dargestellt).
Darq

Antworten:

7

Solange Ihr Bewegungsraum nicht euklidisch ist und Dinge einen gesamten Gitterraum blockieren können, haben Sie dieses Problem.

Wenn Sie möchten, dass die Leute nicht "das Raster spielen", müssen Sie wahrscheinlich kein Raster verwenden.

Eben
quelle
3
Leider ist dies, soweit ich sehen kann, die richtige Antwort. Jedes "Aufteilen" des Raums, unabhängig davon, wie die Entfernung berechnet wird (Euklidisch, Manhattan oder Chebyshev), wird zu dieser Art von Problem führen. Danke für deine Antwort!
Darq
6

(Ich habe nicht genug Ruf, um einen Kommentar abzugeben.) Die Antwort hier ist, dass die Entfernungen falsch sind. A ist näher als B. Um sich selbst zu überzeugen, vergleichen Sie A und das Spiegelbild von B mit dem Spieler. Ich glaube also nicht, dass es hier ein Problem gibt.

Hex-Gitter sind in vielerlei Hinsicht schwierig.

Alexis Andre
quelle
1
Danke für deine Antwort. In der Tat sind die Entfernungen unterschiedlich, wenn wir die euklidische Entfernung betrachten. Ich habe meine Entfernungen jedoch anhand der Entfernung zwischen Manhattan und Chebyshev berechnet, wobei jeder "Ring" von Sechsecken eine Einheit weiter entfernt ist. Der Vorteil ist, dass die Entfernung für einen Spieler einfach zu berechnen ist, indem nur die Felder gezählt werden. Ich würde diese einfachere Entfernung gerne weiter verwenden, wenn dies überhaupt möglich ist, aber Ihre Antwort weist darauf hin, dass ich die euklidische Entfernung möglicherweise erneut untersuchen muss. Danke noch einmal!
Darq
Ich erinnere mich, dass ich diese Problemumgehung in einer Pfadfindung gefunden habe, die ich für die KI in meiner eigenen Version von Steve Jacksons Ogre durchgeführt habe. Sie können eine Pfadfindungssortierung anpassen, um sowohl die Hex-Entfernung als auch die euklidische Entfernung zu berücksichtigen, wenn dies wirklich wichtig ist.
Fuhrmanator
1
Wenn Sie in Zukunft Kommentare zu einer Stack Exchange-Site abgeben müssen, tragen Sie einfach zur Community bei oder tragen Sie genug zu einer Site bei, um den Assoziationsbonus zu erhalten. Es ist kein Fehler, es ist eine Funktion , die Sie nicht vor einem bestimmten Schwellenwert kommentieren können . Dies ist jedoch kein Kommentar, dies ist eine Antwort, ich war über den Beitrag das gleiche.
Am