Pauspapier

Aus KaroWiki
Version vom 27. Mai 2024, 13:47 Uhr von Ultimate (Diskussion | Beiträge) (→‎Beispielkarten)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Pauspapier ist ein von ultimate geschriebener Kartengenerator. Seit dem <tbd> ist er in Karopapier eingebunden.

Der Generator ist kein "normaler" Generator in dem Sinne, dass er eine Strecke "aus dem Nichts" erzeugt. Stattdessen erzeugt er Karten durch "durchpausen" des Zugverlaufs eines Spielers in einem Spiel.

Streckenverlauf

Pauspapier arbeitet nach dem gleichen Prinzip wie ZickZack. Dabei wird lediglich der Schritt 2 des Algorithmus abgewandelt und statt zufälliger Abschnitte werden die die Vektoren des gewünschten Spielers aus einem Rennen aus der Karo-Datenbank geladen und als Abschnitte verwendet. Die zufällige Variiation der Streckenbreite, sowie alle weiteren Schritte (Checkpoints und Hindernisse hinzufügen, etc.) bleiben unverändert.

Parameter

Pauspapier verfügt über mehr oder weniger die gleichen Parameter wie ZickZack - aufgrund der abgewandelten Funktionsweise kommen jedoch ein paar dazu und andere fallen dafür weg...

  • Spiel - ID des Spiels aus dem die Vektoren geladen werden sollen
  • Spieler - Name oder ID des Spielers von dem die Vektoren geladen werden sollen
  • Streckenlänge - die Länge ergibt sich aus den Vektoren des Spielers
  • 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 Verlauf ergibt sich aus den Vektoren des Spielers
  • Zackigkeit (Länge der Geraden) - der Verlauf ergibt sich aus den Vektoren des Spielers
  • 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) 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 - Überschneidungen können sich natürlich aus den Vektoren des Spielers ergeben
  • Startrichtung - die Startrichtung wird anhand des ersten Vektors ermittelt
  • Maximale Größe - die Größe ergibt sich aus den Vektoren des Spielers
  • Crashs ignorieren? - normalerweise ignoriert Pauspapier Crashvektoren (da diese bei großem ZZZ sonst quer über die Karte neue Verbindungen schaffen können). Mit dieser Einstellungen kann man die Crashvektoren aber einschließen
  • Zugbereich einschränken - normalerweise paust Pauspapier den gesamten Verlauf eines Spielers ab. Mit diesen zwei Parametern kann man einschränken welche Vektoren verwendet werden sollen (von, bis). Kleine Hinweise dazu:
    • positive Zahlen vom Anfang, negative vom Ende
    • für 0 gilt: von = 0 --> ganz vom Anfang; bis = 0 --> ganz bis zum Ende
    • also z. B.
      • von=0, bis=0 --> alle Züge (default)
      • von=10, bis=-5 --> die ersten 10 und die letzten 5 Züge werden ignoriert
      • von=0, bis=100 --> nur die ersten 100 Züge werden genommen
      • von=-100, bis=0 --> nur die letzten 100 Züge werden genommen
    • aus Performance-Gründen ist bei 10000 Zügen erstmal Schluss (also ausgewählter Bereich von, bis)

Trivia

  • im PHP Code sind ZickZack und Pauspapier beide von einer gemeinsamen Klasse AbstractPointPathGenerator abgeleitet. Ebenso sind die Settings von PointPathGeneratorSettings abgeleitet.

Beispielkarten

Vektorverlauf (Input) Generierte Karte (Output) Generierte Karte (Output) - Variante
Pauspapier 39838 input.png Pauspapier 39838 output.png
Zugbereich: von=96, Breite: von=bis=1
Pauspapier 39838 output uncut.png
Zugbereich NICHT eingeschränkt, Breite: von=bis=2
Pauspapier 58511 input.png Pauspapier 58511 output.png
Zugbereich: bis=716, Breite: von=bis=1
-
Pauspapier 141723 input.png Pauspapier 141723 output.png
Crashes ignoriert, Zugbereich: von=0, bis=-14, Breite: von=2, bis=4
Pauspapier 141723 output withcrash.png
Crashes NICHT ignoriert, Zugbereich: von=0, bis=-14, Breite: von=2, bis=4