Höhenmodell für sechseckige Spielgitter


16

TL; DR:

Wo soll die Erhebung auf einem sechseckigen Gitter im Zivilstil verankert werden? Mitte, Seite oder Scheitelpunkt? (Oder komplexer?)

Frage richtig:

Betrachten Sie für einen Moment ein klassisches Spiel, das wir alle kennen und lieben (vielleicht?), Sid Meiers Alpha Centauri. Das Kartenmodell führte das brandneue Konzept der sichtbaren Geländehöhe in die klassische Civ-Formel ein. In SMAC hatte jeder Scheitelpunkt des Spielplans eine Höhe, was der Karte wunderschöne sanfte Hügel ermöglichte - eine absolute Notwendigkeit, wenn man bedenkt, dass der Wurm an jeder Ecke kocht.

Würde eine Höhenkarte, die nur Scheitelpunkte enthält, ordentlich in ein hexagonales Gitter übersetzt werden?

Die offensichtlichen Alternativen sind die seitliche Höhenkartierung und die zentrierte Höhenkartierung. sowie Inner Vertex Elevation Mapping (die Gelegenheit für Klippen geben! Yay!)

Die letzte Option ist das Anwenden eines dreieckigen Gitters auf das Spielgitter, das Zentren und Scheitelpunkte umfasst und nur Scheitelpunkte oder eine innere Scheitelpunkthöhe aufweist.

Welche dieser Optionen wird wahrscheinlich gut funktionieren? Welche werden in Eile wahrscheinlich den ganzen Saft aus der CPU und dem RAM saugen?

Antworten:


10

Würde eine Höhenkarte, die nur Scheitelpunkte enthält, ordentlich in ein hexagonales Gitter übersetzt werden?

Es kommt auf die Tessellation des Gitters an. Wenn Sie Ihr Flugzeug so tessellieren, dann ja.

Gitter

In diesem Fall können Sie das grüne Dreieck (x6) beliebig ändern: hextri

Welche dieser Optionen wird wahrscheinlich gut funktionieren?

Sie alle funktionieren gut. Wahrscheinlich werden Sie sowieso mehrere Methoden anwenden. Sie können nicht nur die Mittelpunkterhöhung verwenden, es sei denn, Sie möchten nur Berg-Features mit einer Kachel. Wenn Sie eine Topografie mit mehreren Kacheln wünschen, müssen Sie die Kanten beim Aufstieg auf einen Berg "anheben".

Welche werden in Eile wahrscheinlich den ganzen Saft aus der CPU und dem RAM saugen?

Dies ist kein Problem (es sei denn, Sie schreiben dies für ein Embedded-System?), Da die gesamte Kartenerstellung während der Ladephase durchgeführt wird, bevor jemand das Spiel spielt.


Mit Mittelpunkthöhe meine ich eine Situation, in der Sie nur die Höhe für den Mittelpunkt einstellen und speichern können. Wenn zwei Felder unterschiedlich hoch sind, werden die Kanten um sie herum angehoben, um den Höhen ihrer Gesichter zu entsprechen. (zB 1,1 hat eine Höhe von 3; 1,2 hat eine Höhe von 5; die Fläche 1,1: 1,2 hat beim Rendern eine Höhe von 4).
Williham Totland

1
Zur Laufzeit ist dies kein Problem, da Sie in der Lage sein müssen, Bewegungspfade, Höhenunterschiede für den Kampfvorteil usw. zu berechnen. Zur Laufzeit ist dies möglicherweise kein Problem, da auf den meisten Plattformen ein Dutzend Floats pro Hex nicht wirklich so schlimm sind, aber die Daten müssen noch vorhanden sein, um die Karte zu verwenden.

-1

Schön, dass zumindest jemand anderes daran gedacht hat. Schade, dass ich erst einige Jahre später auf diese Seite stoße. Ich beantworte jedoch stattdessen Ihre Frage für die grundlegenden Sechsecke. Die bisher gezeigten Bilder sind nicht 100%. Und auf einer 1-Meter-Karte ist das Raster nicht mehr in Form. Das heißt, keine 60-Grad-Drehung möglich.

Ich habe experimentiert an:

  • Unterschiedliche Sechseckgrößen: Auf welcher Dreiecksbasis (in Pixel) wird die höchste Genauigkeit auf 1-Meter-Karten erzielt, wenn diese einmal ausgedruckt wurden. Dazu gehört, dass sie beim Drehen um 60 Grad so perfekt wie möglich sind. Auch beim Drehen um 180 Grad zum Nachrüsten.

  • Verschiedene kombinierte Schichten von Sechsecken.

  • Einzelne Sechsecke zum Ausschneiden hochdetaillierter Bilder (RAM = bei großen Karten nicht ausreichend).

  • Die genauen Grenzen meines Computers sowie das, was ich für zulässig halte.

Ich habe noch nicht experimentiert, wie man eine Höhe erreicht, indem man unterschiedlich geformte Sechsecke macht. Aber ich weiß, dass die Basis korrekt sein muss, bevor man die Erhebung vornimmt.


Zusammenfassung:

  • Genauigkeit von 1 mm oder weniger auf einer 1-Meter-Karte. Die 60-Grad-Regel.

  • Ich brauche Linien, die sich um 180 Grad drehen lassen.

  • Ich brauche das Dreieck, damit es mit maximalem Zoom auf meinen Bildschirm passt.

Mit diesen Regeln habe ich meine Auswahl auf 3 eingegrenzt:

Klein:

  • Größe; +26 x +45, 27 x 46 Pixel

  • Ungenauigkeit auf 1 Meter; 0,74 mm

  • Reihenfolge; 131213131312131

Mittel:

  • Größe; +41 x +71, 42 x 72 Pixel

  • Ungenauigkeit auf 1 Meter; 0,20 mm

  • Reihenfolge; 1312131313121313131312131

Groß:

  • Größe; +56 x +97, 57 x 98 Pixel

  • Ungenauigkeit auf 1 Meter; 0,05 mm

  • Reihenfolge; 1312131313121313131213131312131

Die einen sind 1 Pixel.

Die Zwei und Drei sind Gruppen von 2 Pixeln. A 2 ist insgesamt 4 Pixel und A 3 ist insgesamt 6 Pixel.

Wenn Sie eine Sequenz addieren, sehen Sie, dass dies die Breite in Pixel ist. Wenn Sie sie addieren und 4 und 6 statt 2 und 3 zählen, erhalten Sie die Höhe in Pixel.

Die + Zahlen sind das, was Sie in Pixeln addieren, wenn Sie 2 Dreiecke übereinander oder gegeneinander setzen.

Fühlen Sie sich frei, Fragen zu stellen. In meiner E-Mail.


1
Es ist nicht klar, wie Sie die eigentliche Frage angehen. Sie haben das Thema etwas besprochen, obwohl es auch schwierig ist, Ihren allgemeinen Standpunkt zu isolieren. Was haben diese Pixelgrößen mit der hexagonalen Geometrie und Höhe zu tun?
Seth Battin

1
Eine andere Sache: StackExchange ist kein traditionelles Forum. Die hilfreichen Informationen sollten in der Post enthalten sein und die Leser sollten keine E-Mail benötigen, um eine vollständige Antwort zu erhalten. Auch weil dies kein Forum ist, gibt es keine Möglichkeit, Ihre Antwort erneut zu hinterfragen. Das Einladen von Fragen ist also nicht nur unangemessen, es wird auch nicht funktionieren. Siehe gamedev.stackexchange.com/help/how-to-answer .
Seth Battin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.