ZickZack: Unterschied zwischen den Versionen

Aus KaroWiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „''ZickZack'' ist ein von {{Benutzer|ultimate}} geschriebener Kartengenerator. Seit dem <tbd> ist er in Karopapier eingebunden. == Streckenverlauf == <!-- NOCH…“)
 
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
''ZickZack'' ist ein von {{Benutzer|ultimate}} geschriebener Kartengenerator. Seit dem <tbd> ist er in Karopapier eingebunden.
+
''ZickZack'' ist ein von {{Benutzer|ultimate}} geschriebener Kartengenerator. Seit dem 25.10.2023 ist er in Karopapier eingebunden.
 +
 
 +
Ursprünglich wurde der erste Entwurf des Generator irgendwann vermutlich so um 2008-2010 in Matlab implementiert. Seit Didi aber die Generatoren eingebaut hat, hat {{Benutzer|ultimate}} den Code migriert und noch etwas aufgemotzt. Das Ergebnis seht ihr unten...
  
 
== Streckenverlauf ==
 
== Streckenverlauf ==
<!-- NOCH ÄNDERN
+
Der ZickZack arbeitet nach einem modularen Prinzip aus den folgenden Schritten:
Der Kartograph setzt die Strecken komplett aus Kurven zusammen, wobei jeweils Links- auf Rechtskurven und Rechts- auf Linkskurven folgen. Die Kurven sind dem Beschleunigungs- und Lenkverhalten der Karoautos nachempfunden, sodass sie problemlos bei hoher Geschwindigkeit zu durchfahren sind. Die optionalen [[Checkpoint]]linien sind für den Rennverlauf unbedeutend und  stellen nur eine Art ''Straßenbeleuchtung'' für [[Nachtkarte|Nachtrennen]] dar.
 
-->
 
  
Eigentlich waren die Strecken als Küstenstraßen geplant, mangels Felsen und Wasser als Terrain musste auf Gras, Sand und Matsch zurückgegriffen werden.
+
# erzeuge einen hübschen Hintergrund<br/>(Dafür wird ein [https://de.wikipedia.org/wiki/Perlin-Noise Perlin-Noise] Generator verwendet)
 +
# erzeuge die Streckenverlauf als Abschnitte mit individueller Breite<br/>(Dabei wird der nächste Abschnitt immer an den vorangegangenen so "angehangen", dass die Kurvigkeit "Zick" eingehalten wird)
 +
# füge N Checkpoints entlang der Strecke hinzu<br/>(Dabei sind die Checkpoints immer quer zur Streckenrichtung (mit Ausnahme, wenn sie zufällig in einer Kurve liegen))
 +
# füge N Hindernisse entlang der Strecke hinzu<br/>(Dabei variiert die Form der Hindernisse je nachdem ob die Strecke mehr gerade oder mehr diagonal verläuft)
 +
# für Startplätze hinzu<br/>(Dabei gibt es zwei Setups: eins für "gerade" und eins für "45 Grad", die je nach Startabschnitt ausgerichtet werden. Beide haben immer 8 Startplätze)
 +
# für Ziel hinzu<br/>(Das ist einfach immer ein kleines Kreuz)
 +
# für ULTI-Logo hinzu<br/>(gaaanz wichtig :wink:)
 +
 
 +
Ziel ist es das Prinzip auch für andere Generatoren verwenden zu können. Diese können dann z.B. einfach nur Schritt 2 (Erzeugung des Streckenverlaufs) anders machen, aber ansonsten auf die gleiche Logik für CPs, Hindernisse, Start und Ziel zurückgreifen...
  
 
== Parameter==
 
== Parameter==
<!-- NOCH ÄNDERN
 
 
Folgende Parameter bestimmen den Verlauf der Strecke und das Aussehen der Karte.
 
Folgende Parameter bestimmen den Verlauf der Strecke und das Aussehen der Karte.
* '''Anzahl der Startplätze''' - gültige Werte sind durch die möglichen Anordnungen der Startplätze einprogrammiert
+
* '''Streckenlänge''' - die Maximalanzahl an Abschnitten (es wird aber früher abgebrochen, wenn kein Platz mehr ist)
* '''Mindestlänge in Zügen''' - nach Erreichen der Mindestlänge wird die aktuelle Kurve zum Ziel geführt, sodass die Streckenlänge einige Züge weiter gehen kann
+
* '''Streckenbreite''' - die minimale und maximale Breite der Strecke (die Strecke wird dabei Mittig um einen Vektor aufgespannt und ist also nach rechts und links je Breite/2 breit)
* '''Minimum''' / '''Maximum der Kurvenbreite''' - aus diesem Intervall wir ein Zufallswert ermittelt; kleine werte führen zu eng aufeinander folgenden Kurven, große Werte ergeben lang gedehnte Kurven
+
* '''Zickigkeit (Stärke der Kurven)''' - der minimale und maximale Winkel in Grad um den die Strecke an jedem Abschnittswechsel "umknickt"
* '''Minimum''' / '''Maximum der Kurvenstreckung''' - ähnlich wie oben; sehr kleine Werte ergeben Slalomstrecken, sehr große Werte führen zu leichten Schlangenlinien
+
* '''Zackigkeit (Länge der Geraden)''' - die minimale und maximale Länge der einzelnen Abschnitte
* '''"Zufallsvorgabe"''' - aus diesem Parameter wird die "zufällige" Zahlenfolge bestimmt; somit generiert der Kartograph mit gleichen Parametern immer die gleiche Strecke
+
* '''Checkpoints''' - die Anzahl der Checkpoints (mindestens jedoch immer 4, wegen des ULTI-Logos - wenn du keine willst, dann deaktiviere sie einfach in den Spiel-Einstellungen). Die CPs werden dabei immer gleichmäßig auf die Gesamtlänge der Strecke (in Karos, nicht in Abschnitten) und aufsteigend ihrer Nummerierung von 1 bis zur eingestellten Anzahl verteilt.
-->
+
* '''Hindernisse''' - die Anzahl der Hindernisse. Die Hindernisse werden dabei immer gleichmäßig auf die Gesamtlänge der Strecke (in Karos, nicht in Abschnitten) und immer abwechselnd rechts links vom Streckenverlauf verteilt. Bei starken Ecken, werden unter Umständen Hindernisse weggelassen um die Wahrscheinlichkeit zu verringern, dass die Strecke unpassierbar wird. Achtung: bei zu vielen Hindernissen kann die Strecke trotzdem noch unbefahrbar werden.
 +
* '''Überschneidungen''' - normalerweise achtet der ZickZack darauf, dass sich die Streckenabschnitte nicht berühren oder kreuzen. Mit dieser Einstellungen kann das deaktiviert werden. Das Ergebnis kann dann aber sehr wirr werden :wink:
 +
* '''Startrichtung''' - normalerweise wird die Startrichtung rein zufällig gewählt. Du kannst aber auch gezielt eine Richtung vorgeben (z.B. wenn du ein City-Race / rechte Winkel haben willst)
 +
* '''Maximale Größe''' - hier kannst du zu guter Letzt noch die maximale Größe der Karte in Karos festlegen. Du kannst damit auch echt große Karten (siehe unten) erzeugen.
  
 
== Beispielkarten ==
 
== Beispielkarten ==
[[Bild:ZickZack-001.png]] [[Bild:ZickZack-002.png]] [[Bild:ZickZack-003.png]] [[Bild:ZickZack-004.png]]
+
=== normale Ergebnisse ===
 +
[[Bild:ZickZack_parameterized_01.png]] [[Bild:ZickZack_parameterized_04.png]] [[Bild:ZickZack_default.png]]
 +
 
 +
=== man kann auch schöne rechte Winkel zaubern ===
 +
[[Bild:ZickZack_parameterized_09.png]] [[Bild:ZickZack_parameterized_10.png]] [[Bild:ZickZack_parameterized_05.png]]
 +
=== mit Überschneidungen sieht es nicht mehr ganz so sauber aus ===
 +
[[Bild:ZickZack_parameterized_07.png]] [[Bild:ZickZack_parameterized_08.png]]
 +
=== man kann es auch mit der Größe übertreiben ===
 +
[[Bild:ZickZack_parameterized_02.png]] [[Bild:ZickZack_parameterized_06.png]]
 +
=== ... oder untertreiben ===
 +
[[Bild:ZickZack_parameterized_03.png]]
  
 
[[Kategorie:Kartengenerator]]
 
[[Kategorie:Kartengenerator]]

Aktuelle Version vom 28. Juli 2024, 07:11 Uhr

ZickZack ist ein von ultimate geschriebener Kartengenerator. Seit dem 25.10.2023 ist er in Karopapier eingebunden.

Ursprünglich wurde der erste Entwurf des Generator irgendwann vermutlich so um 2008-2010 in Matlab implementiert. Seit Didi aber die Generatoren eingebaut hat, hat ultimate den Code migriert und noch etwas aufgemotzt. Das Ergebnis seht ihr unten...

Streckenverlauf

Der ZickZack arbeitet nach einem modularen Prinzip aus den folgenden Schritten:

  1. erzeuge einen hübschen Hintergrund
    (Dafür wird ein Perlin-Noise Generator verwendet)
  2. erzeuge die Streckenverlauf als Abschnitte mit individueller Breite
    (Dabei wird der nächste Abschnitt immer an den vorangegangenen so "angehangen", dass die Kurvigkeit "Zick" eingehalten wird)
  3. füge N Checkpoints entlang der Strecke hinzu
    (Dabei sind die Checkpoints immer quer zur Streckenrichtung (mit Ausnahme, wenn sie zufällig in einer Kurve liegen))
  4. füge N Hindernisse entlang der Strecke hinzu
    (Dabei variiert die Form der Hindernisse je nachdem ob die Strecke mehr gerade oder mehr diagonal verläuft)
  5. für Startplätze hinzu
    (Dabei gibt es zwei Setups: eins für "gerade" und eins für "45 Grad", die je nach Startabschnitt ausgerichtet werden. Beide haben immer 8 Startplätze)
  6. für Ziel hinzu
    (Das ist einfach immer ein kleines Kreuz)
  7. für ULTI-Logo hinzu
    (gaaanz wichtig :wink:)

Ziel ist es das Prinzip auch für andere Generatoren verwenden zu können. Diese können dann z.B. einfach nur Schritt 2 (Erzeugung des Streckenverlaufs) anders machen, aber ansonsten auf die gleiche Logik für CPs, Hindernisse, Start und Ziel zurückgreifen...

Parameter

Folgende Parameter bestimmen den Verlauf der Strecke und das Aussehen der Karte.

  • Streckenlänge - die Maximalanzahl an Abschnitten (es wird aber früher abgebrochen, wenn kein Platz mehr ist)
  • Streckenbreite - die minimale und maximale Breite der Strecke (die Strecke wird dabei Mittig um einen Vektor aufgespannt und ist also nach rechts und links je Breite/2 breit)
  • Zickigkeit (Stärke der Kurven) - der minimale und maximale Winkel in Grad um den die Strecke an jedem Abschnittswechsel "umknickt"
  • Zackigkeit (Länge der Geraden) - die minimale und maximale Länge der einzelnen Abschnitte
  • Checkpoints - die Anzahl der Checkpoints (mindestens jedoch immer 4, wegen des ULTI-Logos - wenn du keine willst, dann deaktiviere sie einfach in den Spiel-Einstellungen). Die CPs werden dabei immer gleichmäßig auf die Gesamtlänge der Strecke (in Karos, nicht in Abschnitten) und aufsteigend ihrer Nummerierung von 1 bis zur eingestellten Anzahl verteilt.
  • Hindernisse - die Anzahl der Hindernisse. Die Hindernisse werden dabei immer gleichmäßig auf die Gesamtlänge der Strecke (in Karos, nicht in Abschnitten) und immer abwechselnd rechts links vom Streckenverlauf verteilt. Bei starken Ecken, werden unter Umständen Hindernisse weggelassen um die Wahrscheinlichkeit zu verringern, dass die Strecke unpassierbar wird. Achtung: bei zu vielen Hindernissen kann die Strecke trotzdem noch unbefahrbar werden.
  • Überschneidungen - normalerweise achtet der ZickZack darauf, dass sich die Streckenabschnitte nicht berühren oder kreuzen. Mit dieser Einstellungen kann das deaktiviert werden. Das Ergebnis kann dann aber sehr wirr werden :wink:
  • Startrichtung - normalerweise wird die Startrichtung rein zufällig gewählt. Du kannst aber auch gezielt eine Richtung vorgeben (z.B. wenn du ein City-Race / rechte Winkel haben willst)
  • Maximale Größe - hier kannst du zu guter Letzt noch die maximale Größe der Karte in Karos festlegen. Du kannst damit auch echt große Karten (siehe unten) erzeugen.

Beispielkarten

normale Ergebnisse

ZickZack parameterized 01.png ZickZack parameterized 04.png ZickZack default.png

man kann auch schöne rechte Winkel zaubern

ZickZack parameterized 09.png ZickZack parameterized 10.png ZickZack parameterized 05.png

mit Überschneidungen sieht es nicht mehr ganz so sauber aus

ZickZack parameterized 07.png ZickZack parameterized 08.png

man kann es auch mit der Größe übertreiben

ZickZack parameterized 02.png ZickZack parameterized 06.png

... oder untertreiben

ZickZack parameterized 03.png