KiW

Powered by Perl

Forum

Alle Fragen- Darko antwortet (Seite 68)
Simon DePerte
16.08.08 - 09:38
Darko kennt sicher die Vorteile von Hexagonalfeldern und wenn das ganz so einfach wäre, würde er das wahrscheinlich einbauen, da sich Darko eigentlich nie gegen sinnvolle Neuerungen sträubt.

Mag sein, dass ich zu wenig Ahnung habe, aber es erscheint mir überhaupt nicht trivial, einen kontinuierlichen Raum und seine Abstandsmetriken korrekt auf ein Hexagonalnetz abzubilden. Das geht in Richtung Computergrafik. Bei dem Aufwand könnte man vielleicht die euklidische Metrik beibehalten und gleich an KiW3D arbeiten.

Dass es für Spieler intuitiver ist, ist ein Trugschluß, weil es eben kein Hüpfen von Feld zu Feld ist, sondern eine Abbildung eines euklidischen (zweidimensionalen) Raums auf ein Spielfeld. Wer kann den schon von Hand ausrechnen, wie lange Kreuzer fliegen muss, wenn das anvisierte Ziel ein Hexfeld schräg nach links unten und zwei Felder nach unten liegt? Da brauche ich als Spieler einen Berechnungsassistenten, während ich im derzeitigen Modell mit Schulmathematik 9. Klasse (Pythagoras) auskomme.

Natürlich ist das Hex-Modell besonders wegen dem "Glücksfaktor" höchst erstrebenswert, aber man muss schon die Relation sehen. (Spielprozesse werden nicht erleichtert, sondern einfach nur anders.) Wenn du die Erfahrung hast, kannst du ja gerne ein Konzept mit Darko erarbeiten, aber einen "Routenplaner" brauchen die Spieler dann schon.

Ich persönlich fände das sehr gut. Ich hatte bei KiW schon oft die Aufgabenstellung, eine absolut unglückliche Planetenkonstellation zu verwalten. Runden, in denen ich ausgerottet wurde, waren immer welche, bei denen ich absolute Horror-Koloniegründungen hatte.
Andreas
16.08.08 - 10:29
"Wer kann den schon von Hand ausrechnen, wie lange Kreuzer fliegen muss, wenn das anvisierte Ziel ein Hexfeld schräg nach links unten und zwei Felder nach unten liegt? "

Jetzt sehe ich das Problem das du hast. Flüge sollen meiner Meinung nach aber nicht exakt berechnet werden sondern vielmehr vereinfacht. Bildlich geht der Eintritt in das Hexfeld erst zur Mitte und dann Richtung gewünschtes Ziel
:= Konstante Flugdauer zu allen 7 Zielfeldern.

=> 72 ohne Extras, also genausolang wie 3 Hexfelder nach Rechts/Links/1 oben und 2 rechts etc.
Simon DePerte
16.08.08 - 14:23
Oh, dann habe ich offenbar zu kompliziert gedacht. Beeindruckend.
Das hätte dann Brettspielcharakter.

Dann würde ich als Aufwand schätzen, dass ein ordentlich auf Hexagonalfelder abgebildetes Koordinatensystem einen von der Berechnungslogik her einen einigermaßen einfachen - aber nicht trivialen - Wegfindungsalgorithmus (es gibt ja keine Hindernisse) ermöglicht, der ohne Pythagoras allein mit Subtraktion und Addition auskommt.
Zusätzlich zur Wegfindung muss das Koloniengründen korrekt implementiert werden (sechs benachbarte Felder statt bisher acht).
Und das Problem der Visualisierung bleibt bestehen. Quadrate/Rechtecke sind wesentlich einfacher zu zeichnen als Sechsecke, da eigentlich jede Programmiersprache von Haus aus das unterstützt. Es kann sein, dass die Visualisierung vielleicht den größten Aufwand darstellt.

Zusammengefasst kommt also folgende Arbeit auf Darko zu:
- Koordinatensystem
- Wegfindung
- Kolonien gründen
- Visualisierung
Andreas
16.08.08 - 14:53
Als Zwischenschritt bietet sich natürlich die Variante der Implementation als Achteck/Stoppschild/Oktagon an. Dabei würde die Struktur selbst erstmal erhalten bleiben.
Chrisch
17.08.08 - 10:30
Ähm, die direkte Abstandsberechnung ist auch für Hexfelder nicht so unglaublch schwer, wie Simon das darstellt.

Man kann nämlich auch über ein Feld von gleichmäßigen sechsecken ein Raster aus Rechtecken (keine Quadrate legen), indem man mit dem Mittelpunkt des linken oberen Sechsecks beginnt und ihn als linke obere Ecke des Rechteckrasters festlegt. Von diesem Punkt aus zeiht man dann eine Horizontale durch das Speilfeld, die in jeder dritten Spalte wieder einen Sechseck-Mittelpunkt trifft. Die Vertikalen zieht man schlicht durch die Mittelpunkte der Sechsecke, die genau übereinander liegen, und zwar für jede Sechseckspalte.

Ein wenig umständlich zu beschreiben, aber wenn man es aufzeichnet, wird es schnell klar.
Der Kernpunkt ist der: Die resultierenden Rechtecke sind keine Quadrate mehr, aber ebenso gleichmäßig. Und dann kann man Pythagoras genauso einsetzen wie vorher, nur mit Bruchzahlen statt mit Ganzen - dem MS-Rechner, den man eh die ganze Zeit verwendet hat, ist das wurscht.

Das mathematische Verhältnis zwischen Rechteckbreite und -höhe weiß ich nicht, sollte sich aber von den kundigen MAthematikern berechnen lassen oder ergoogeln.
Simon DePerte
17.08.08 - 16:23
Ich sagte, ich weiß es nicht. (Ich habe mir auch keine Gedanken darüber gemacht.) Aber die direkte Abstandsberechnung ist zumindest eindeutig komplizierter als bei quadratischen Spielfeldern. Das ist wohl das, was Darko bemängelt hatte.

Und Andreas hat ja Recht. Man kann ruhig einen einfacheren Algorithmus nehmen, da die direkte Berechnung unnötig wird, da ja alle umliegenden Hexfelder sozusagen den gleichen Abstand zum Ausgangsfeld haben und es im Gegensatz zum Quadratfeldermodell keine "Eckfelder" mehr gibt, die man anders behandeln muss.
Chrisch
17.08.08 - 18:51
Das stimmt, die umliegenden Felder sind gleich weit weg, aber für die Entfernungen zu anderen Feldern ergäbe sich eine Art Zick-Zack-Kurs. Fänd ich auch in Ordnung, die Flugzeit in dieser Art zu abstrahieren.

----
Nachtrag zur direkten Abstandsberechnung:
Vorweg sind diese Unterscheidungen wichtig, damit sie in der Diskussion nicht durcheinander geworfen werden:
- *Initial* ist der Rechenaufwand hoch, weil man die Höhe H und Breite B (jeweils in Ticks) der Rechtecke, die man sich über das Sechseckgitter denkt, so festlegen muss, dass die Flugzeit zum Nachbarfeld 24 Ticks beträgt. Das geschieht einmal zur Konzeptphase
- *Während dem Spiel* hat man eine pythagoreske Gleichung, bei der die errechneten Größen H und B einfliessen. Also recht einfach zu rechnen.


Laut Euklid setzt sich ein reguläres Sechseck aus sechs gleichseitigen Dreiecken zusammen. Jede Ecke des Sechsecks hat zum Mittelpunkt den Abstand r, und jede Seite des Rechtecks hat die Länge r.
Für die Breite B der Rechtecke, die sich aus den horizontalen Linien ergeben, heißt das: Vom Mittelpunkt eines Sechsecks (erste Vertikale) beträgt der Abstand den Radius r bis zur Ecke und dann nochmal 0.5r bis zur nächsten Vertikale des Rechteckgitters, also insgesamt 1.5r.
Für die Höhe H der Rechtecke gilt, dass sie 2 * die Höhe h eines der gleichseitigen Dreiecke ist. Da die Seitenlänge jedes Dreiecks r ist, ergibt sich für die Höhe nach Umformung sqrt( r^2 * (1 - (r^2 / 4) ) ). Das sieht weniger schön aus, ist aber letztendlich ebenfalls ausschließlich von der Konstante r abhängig.

Die Kunst besteht jetzt darin, r so zu wählen, dass sich für h (also die Höhe des Teildreiecks innerhalb des Sechsecks) der Wert von 12 Ticks ergibt. Denn in diesem Fall fliegt ein Schiff von einem Sechseckmittelpunkt zu dem Mittelpunkt eines benachbarten Feldes genau 2 * 12 = 24 Ticks.
Zu diesem Zweck muss die Gleichung
h = 12^2 = r^2 - (r/2)^2
nach r aufgelöst werden. Dazu weiß ich allerdings keine Lösung, der nötige mathematische Kniff ist mir entfallen.
Wenn man r hat, hat man aufgrund der obigen Abhängigkeiten H und B, und dann kann man Abstände wie gewohnt mit dem MS-Rechner ausrechnen.
Darko
18.08.08 - 16:28
Also, die Idee auf Felder statt auf die echte geometrische Distanz zu wechseln, hatte ich so auch nicht verstanden. Aber allein das macht einen Wechsel erst attraktiv, ansonsten hätte der nicht viel gebracht.

Dementsprechend wechsele ich meine Haltung von ablehnend zu aufgeschlossen, und bitte um die Einstellung von mathematischen Diskussionen über geometrische Distanzen.

Hmm, das wäre wirklich eine schöne Vereinfachung, wenn man einen guten grafischen Mechanismus zum Feldmalen in HTML findet. Ich habe da leider recht wenig Erfahrung mit CSS, finde die absolute Positionierung auf normalen Seiten nämlich einen grausamen Usability-Trend. Rein für eine Karte wäre es natürlich ok.
Paul
18.08.08 - 22:40
Irgend etwas kann bei der Rechnung für h von Chrisch nicht stimmen, da für große r eine negative Zahl unter der Wurzel steht.
Kylex
18.08.08 - 23:12
@Andreas
wie willst du achtecke denn flächendeckend anordnen?


zur distanzberechnung bei einem sechseckfeld:
wenn man es mit pythagoras machen will, kann man definieren, dass der minimale abstand I vom mittelpunkt eines sechsecks zu seinem rand 12 ticks entspricht
nach dem mathematischen modell eines sechsecks kann man dann exakt berechnen, wie groß der maximale abstand A ist (also mittelpunkt zu eckpunkt) und die länge einer sechseckseite S
man braucht nur die 3 größen, dann kann man mit einem normalen koordinatensystem abstände von sechsecken zueinander berechnen, indem man virtuelle linien vom mittelpunkt eines startseckseck zur zeile oder spalten des zielsecksecks zieht (was dann selbst mittelpunkt eines dritten sechsecks ist) und dann von dort zum zielseckseck
diese virtuellen linien lassen sich vollständig als summe von I,A und S darstellen, womit man dann letztendlich den pythagoras anwenden kann
es ist bei der berechnung höchstens eine fallunterscheidung notwendig, wenn es darum geht festzustellen, in wie weit start- und zielsechseck durch die verschiebung der sechsecke zueinander betroffen sind


zur visualisierung:
ich hatte damals ein php-script geschrieben, was nur die sechseckbreite benötigt, um aus einzelnen grafiken ein feld zu bauen, über das dann eine transparente imagemap zum anklicken der sechsecke gelegt wird
die grafiken selbst sind transparente pngs, in die ich per hand sechsecke gezeichnet hatte
bei kiw ist ersteres nicht zwingend nötig, da die feldgröße an sich nicht sehr variabel ist, also könnte man die sechsecklinien komplett vorzeichnen, alles andere transparant machen und gleich diese grafik als imagemap nutzen
die planeten könnten dann im hintergrund absolut einzeln platziert werden

da ja grad neue planeten entworfen werden, sollte man also überlegen, ob man die nicht gleich mit sechseck drum rum erstellt
Chrisch
19.08.08 - 08:34
Hmm, stimmt. Verdammt. Irgendeine Umformung ist falsch gewesen - aber die Diskussion ist ohnehin eigestellt.

Mit der Distanzberechnung von Feld zu Feld wie bei Brettspielen dürfte eigentlich jeder zufrieden sein. Da besteht die Schwierigkeit darin, die Felder zu nummerieren und die kürzeste Route von A nach B zu finden. Das müsste man aber wirklich im Netz finden können, vielleicht am ehesten in irgendeinem Spieleentwickler-Forum.
Darko
19.08.08 - 09:58
Das wiederum halte ich für recht einfach, mit etwas Überlegen. Ihr dürft eure Diskussion gern weiterführen, aber bitte nicht in diesem Thema.

Hexfelder haben die neue Eigenschaft, dass man eine "runde" Galaxis nur hexagonal aufbauen kann, und in 6 Richtungen scrollen müssen kann. Für die möglichen Spielkartengrößen heißt das leider, dass die Feinheit des möglichen Spektrums abnimmt:

1 Feld R0 (+1+6)
7 Felder R1 (+6+6)
19 Felder R2 (+12+6)
37 Felder R3 (+18+6)
61 Felder R4 (+24+6)
91 Felder R5 (+31+6)
128 Felder R6

nach bisherigen Erfahrungen sollte man pro Spieler 8 bis 10 Felder haben, was folgendes Mapping ergibt:

4S -> R3 -> 9.3
5S -> R3 -> 7.4
6S -> R3 oder R4 -> 6.2 oder 10.2
7S -> R4 -> 8.7
8S -> R4 oder R5 -> 7.6 oder 11.4
9S -> R4 oder R5 -> 6.8 oder 10.1
10S -> R5 -> 9.1
11S -> R5 -> 8.3
12S -> R5 oder R6 -> 7.6 oder 10.7
13S -> R6 -> 9.8
14S -> R6 -> 9.1
15S -> R6 -> 8.5
16S -> R6 -> 8.0

bei 8, 9 und 12 haben wir also ein Problem...
Kylex
19.08.08 - 12:17
warum soll das denn so sein?

man kann das hexfeld auch einfach zeilenweise aufbauen
das mit dem scrollen in 6 richtungen ist auch nicht nötig

bei 8 spielern ist alles von 8x8 bis 8x10 hexfeldern realisierbar
Darko
19.08.08 - 14:49
Weil das imho weit weniger anschaulich ist für ein rundes Universum. Das Sechseckige Universum aus Sechsecken ist schon sehr stylish, maximal möglicher Abstand in alle Richtungen bei R6 ist 6.

Bei rechteckigen Feldern ist die Ausschnittsdarstellung unrund, die maximal möglichen Entfernungen unterschiedlich, d.h. in jede der 6 Himmelsrichtungen habe ich unterschiedliche Distanzen, bis ich wieder bei meinem eigenen Planeten ankomme.
Kylex
19.08.08 - 15:44
ok, ist natürlich die frage, ob man voraussetzen will, dass über alle nachbarn die distanz zum eigenen gespiegelten planeten identisch sein soll

ich denke, dass es ausreichend sein sollte, wenn dass in den 4-standardrichtungen wie bisher der fall ist und daher auch wie bisher quadratische universen geeignet sind
man sollte sich hier nicht zu sehr an den feldern festmachen, sondern sie nur als hilfsmittel betrachten, raum einzuteilen, und nicht als teil des raums an sich
Darko
19.08.08 - 16:23
welche 4 Richtungen bei Hexagonalfeldern? Das läuft auf die alte Battle-Isle-Darstellung hinaus, wo es nur links/rechts gab und das hieß "einmal links hoch, einmal links runter abwechselnd". Fand ich nie sehr schön.
Kylex
19.08.08 - 18:54
ich meine das so, dass das kiw-universum wie bisher ein quadrat sein sollte und da ein hexspielfeld drüber gelegt wird, allein zu dem zweck, dass die planeten zueinander anders in beziehung stehen als bisher
der mittelpunkt eines hexfelds steht für einen planeten und bewegungen finden auf kürzestem weg statt, dieser weg könnte mit meiner angedachten methode berechnet werden
das scrollen des hexspielfelds findet wie bisher statt, ein klick auf einen scrollpfeil bedeutet, dass wie bisher eine zeile oder spalte des gegenüberliegenden endes der karte in der darstellung zum angeklickten pfeil wandert
Darko
19.08.08 - 19:54
ja, nur gibt es ja kein striktes "links", sondern nur ein "links hoch" und ein "links runter".
Ich finde das Hexagonaluniversum sehr viel schöner und logischer, und es ist ja kaum mehr Aufwand es so zu implementieren.
Wenn, dann gleich richtig. :)
Chrisch
21.08.08 - 11:40
Was ganz anderes: wo ist denn das Wiki zu finden?
Darko
21.08.08 - 13:05
das ist noch geheim, da noch nicht ganz fertig. ;-)
Seiten: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
zurück zur Themenübersicht