Kann ich in einem Kachelnetz, in dem Bewegungen in 8 Richtungen genau die gleiche Anzahl von Umdrehungen erfordern (Schachbrettregeln), verhindern, dass bei diagonalen Bewegungen mehr neue Kacheln als bei orthogonalen Bewegungen angezeigt werden?
Zum Beispiel: Sie sind das rote Kästchen im Bild unten. Die grünen Zellen sind derzeit für Sie sichtbar (quadratisches Sichtfeld). Sie können eine Strecke von einem Plättchen in eine der acht Richtungen zurücklegen.
Wenn Sie nach Nordosten ziehen , werden Sie 13 neue Kacheln (blau dargestellt) erkunden. Wenn Sie sich stattdessen nach Süden bewegen , werden Sie nur 7 neue Kacheln (violett dargestellt) erkunden.
Wie kann ich das Reisen in jede Richtung für die Erkundung gleich günstig gestalten?
movement
grid
line-of-sight
Herr smith
quelle
quelle
Antworten:
Dungeons and Dragons 3.5 (Pen-and-Paper-RPG) bietet eine Lösung, die sowohl für Bewegungsberechnungen als auch für gitterbasierte Radiusberechnungen verwendet wird: Die diagonale Bewegung kostet 1,5, die orthogonalen Kosten. Da die Diagonale eines Einheitsquadrats ungefähr 1,414 beträgt, ist 1,5 ziemlich nahe.
Da D & D 3.5 nur ganzzahlige Bewegungen unterstützt, wird dies tatsächlich so berechnet, dass orthogonale Bewegungen "ein Quadrat" kosten. Deine erste Diagonale kostet ebenfalls nur "ein Quadrat", aber die zweite Diagonale kostet "zwei Quadrate". Sie wechseln ein und zwei Felder für jede diagonale Bewegung. Das Implementieren dieser Bewegungsregel in Ihrem Spiel wird verschiedene Probleme mit diagonalen Bewegungen lösen.
Wie dieses Diagramm zeigt, erstellt diese Bewegungsregel eine sinnvolle Annäherung an Kreise und ist im Vergleich zur tatsächlichen Entfernung (innerhalb von 15 Einheiten vor dem Start) auch nicht um mehr als 1 versetzt.
Wenn Ihr Sicht- / Erkundungsradius ebenfalls auf diese Weise berechnet wird, sind diagonale Bewegungen und diagonale Entdeckungen in etwa so nah oder so weit wie orthogonale.
quelle
Sie müssen die Form des Sichtfelds ändern.
Wenn Sie sich also in eine beliebige Richtung bewegen, wird die gleiche Anzahl neuer Quadrate sichtbar.
Hier ist eine Möglichkeit:
quelle
Damit diagonale und orthogonale Bewegungen ungefähr den gleichen Bereich anzeigen, benötigen Sie zwei Dinge (von denen jede für sich bereits in einer anderen Antwort oder einem anderen Kommentar vorgeschlagen wurde):
Ungefähr kreisförmige Sichtweite :
Für sich allein ergibt dies nicht genau den gleichen sichtbaren Bereich für beide Bewegungsarten. In der obigen Abbildung werden bei einer orthogonalen Bewegung 9 Quadrate und bei einer diagonalen Bewegung 13 Quadrate angezeigt. Es ist jedoch immer noch besser als das Verhältnis 13/7 für den quadratischen Ansichtsbereich in Ihrem Beispiel.
Tatsächlich tendiert das Verhältnis der offenbarten Flächen pro diagonaler / orthogonaler Stufe mit zunehmendem Sichtradius zu √2 1.414 für eine kreisförmige Fläche, während das gleiche Verhältnis für eine quadratische Sichtfläche zu 2 tendiert.
Langsamere diagonale Bewegung :
Im wirklichen Leben dauert es länger, diagonal über ein quadratisches Feld zu gehen, als über eine der Seiten. Tatsächlich dauert es ungefähr √2 ≈ 1.414 mal länger. Wenn Sie möchten, dass sich Bewegungen in Ihrem Spiel realistisch anfühlen, sollten Sie dies auch in Ihrem Spiel tun.
In der Praxis ist 3/2 = 1,5 eine ziemlich gute Näherung von √2. Auf diese Weise kann jeder orthogonale Schritt nur zwei Zeiteinheiten und jeder diagonale Schritt drei Zeiteinheiten umfassen. Im obigen Beispielansichtsbereich ergibt dies 9/2 = 4,5 offenbarte Quadrate pro Zeiteinheit für orthogonale Bewegung und 13/3 = 4,33 offenbarte Quadrate pro Zeiteinheit für diagonale Bewegung. Ziemlich nah, was?
Wenn Sie sich für orthogonale Bewegungen an "1 Schritt = 1 Zeiteinheit" halten möchten, können Sie auch das vorgeschlagene D & D-System Dane verwenden und für jeden zweiten diagonalen Schritt eine zusätzliche Umdrehung ausführen . (In diesem Fall müssen Sie jedoch jeder Einheit einen expliziten Zähler für die Anzahl der diagonalen Schritte zuweisen. Andernfalls können Exploits wie E, NE, E, NE usw. auftreten.) . Bewegungsablauf es einem Spieler erlaubt zu erkunden schneller als gedacht.)
quelle
Da Sie ein Raster verwenden und wissen, in welche Richtung der Benutzer gerade fährt, müssen Sie die vorherige Antwort nicht anpassen und je nach Richtung ein anderes Sichtfeld verwenden.
Zum Beispiel könnten Sie das Feld so erweitern, dass es die Ecken enthält, wenn Sie in Himmelsrichtung fahren, und es an jedem Ende in Ihren diagonalen Fällen um zwei Quadrate verkleinern, sodass jeweils 9 Quadrate freigelegt werden.
Eine andere Alternative, die davon abhängt, wie Ihre Beleuchtung funktioniert, ist die Verwendung einer besseren Kreisannäherung mit Antialiasing, um einige der Quadrate teilweise freizulegen.
quelle
Wie wäre es, wenn der Sichtbereich des Spielers nicht von einem festen Sichtbereich abhängt, sondern von der Richtung, in die der Spieler in den letzten Runden gewandt war (ein Spieler, der sich nach Norden bewegte, könnte dies tun)? sofort einen Schritt nach Süden machen, aber möglicherweise ein paar Umdrehungen machen, um den maximalen Betrachtungsabstand in diese Richtung zu erzielen). Ein Spieler, der aus einem engen Korridor nach Norden in einen großen Raum geht und weiter nach Norden reist, hat eine eingeschränkte Sicht nach Osten und Westen und sollte dies wahrscheinlich tun. Wenn sich der Spieler nicht mehr bewegt, könnte das System automatisch unsichtbare Bereiche "erkunden", die sich innerhalb des aktuellen Sichtradius des Spielers befinden. Während sich der Spieler aktiv bewegt, sollte das Sichtfeld jedoch eingeschränkter sein.
quelle
Als Alternative zu einem komplexeren Sichtfeld (das, wie oben erläutert, aufgrund der Einschränkungen eines gitterbasierten Layouts seine eigenen Probleme hinzufügt) könnten Sie versuchen, den Bewegungseffekt in einem Spiel zu emulieren, das nicht auf Diskretion basiert Gitter. Wo eine freie Bewegung möglich ist, wäre eine diagonale Bewegung einer Einheit genau das, nicht die mit einem quadratischen Gitter gesehenen ~ 1,41 Bewegungseinheiten.
Sie können die Bewegung einzelner Einheiten nicht erzwingen, ohne Ihr dezentes Raster zu verlieren (was Ihr Spieldesign erheblich verändern würde). Vielleicht können Sie die zusätzliche Bewegung verfolgen und die Bewegungen später fallen lassen: Verfolgen Sie die zusätzlichen 0,41s, und wenn sie sich dann summieren 1,00 lassen diese Einheit einen Zug überspringen. Oder umgekehrt: Betrachten Sie die Diagonale als normal, addieren Sie die 0,41s für jede horizontale oder vertikale Bewegung und geben Sie eine zusätzliche Zuggutschrift, die größer als 1 ist (oder 1,41 für eine diagonale Bewegung).
Sie müssen vorsichtig sein, wie Sie dies Ihren Spielern so präsentieren, dass es glatt und fair aussieht. In einem Multi-Human-Player-Szenario können solche Änderungen von den Spielern strategisch ausgenutzt werden - dies kann ein Problem sein oder es gibt eine natürliche Möglichkeit, dies mit der Spielmechanik zu mischen (den Spielern möglicherweise zu erlauben, eine kleine Menge zu speichern) Menge an "nicht verwendetem Umzugsguthaben", die sie verwenden können, um zu einem späteren Zeitpunkt schnell zu reagieren und die zusätzlichen 0,41s an Umzugsfeed in diesen Pool (oder aus diesem heraus) zu ziehen.
Dies funktioniert am besten, wenn sich Spielerkontrollobjekte in jeder Runde um mehr als eine Einheit bewegen. Beispielsweise können drei Bewegungspunkte als drei horizontale Bewegungen verwendet werden oder zwei diagonale, wobei 0,16 für später im Pool verbleiben. Sobald diese 1,00 erreicht, erhält der Spieler eine "freie" Hor / Very-Bewegung und bei 1,41 eine freie Diagonale. Sie können das Extra auf 1,5 begrenzen, damit es an diesem Punkt zwangsweise verwendet wird oder verloren geht, um zu verhindern, dass der Spieler diese gespeicherte Energie für Ewigkeiten behält oder sie aufbauen kann.
Dies ist natürlich eine Komplikation Ihrer Spielregeln, die möglicherweise völlig unerwünscht ist und für ein nicht computerisiertes Spiel unpraktisch ist. Wenn Sie jedoch dafür sorgen könnten, dass es innerhalb der bestehenden Spielregeln funktioniert, würde dies den Erkundungsunterschied zwischen den Bewegungsrichtungen begrenzen, ohne dass dies erforderlich ist das Rasterformat aufzugeben.
quelle
Sie können den Spieler dazu bringen, zwei Felder nach oben, unten, links oder rechts und nur ein Feld diagonal zu bewegen. Es würde es nicht vollständig ausgleichen, aber es würde viel näher sein.
quelle