Wander UWMC

Was haltet ihr von Wanderrouten

  • Super, bin ich voll dafür

    Stimmen: 18 29,5%
  • finde ich gut

    Stimmen: 24 39,3%
  • ist mir egal

    Stimmen: 11 18,0%
  • ne, ist doof

    Stimmen: 5 8,2%
  • Müll! Das ist Müll!

    Stimmen: 3 4,9%

  • Anzahl der Umfrageteilnehmer
    61
  • Umfrage geschlossen .
okhay, ich arbeite im Moment mit @fiebilicar an einem Mod, welcher auf Tastendruck die aktuellen Koordinaten des Spielers in eine .txt Datei schreibt.
Da wir bereits die aktuellen Koordinaten auf Tastendruck in den gameoutput-log schreiben können, bin ich optimistisch, das wir euch bis zum 15.11. diesen Jahres eine erste Karte von der spawnzone und Umgebung (Communityzonen) vorstellen können.

Die erste Version der Mod ist nun fertig, ihr findet sie im Anhang, dort ist auch der Quelltext. (entpacken, mit Forge laden)

Die Ausgaben der Mod landen im Game Output. Dies ist auf uwmc.de leider nutzlos, da zu viele andere Meldungen diese Ausgaben wieder überschreiben. Wenn also jemand Vorschläge hat, wie man aus einer Forge-Mod (java Klasse o.ä.) in eine .txt Datei schreibt, gerne her damit ,'-) (Andere Vorschläge bezüglich des Quelltextes gerne auch, etwa wie man die Tasten umbelegbar machen kann.)

MfG
- @gaboversta
 
Zuletzt bearbeitet:
  • Gefällt mir
Wertungen: Relega
So, die Mod ist fertig (-,'
Wenn der Ordner "tracks" in dem Arbeitsordner des Minecraft-Profils (Normalerweise .minecraft) vorhanden ist, werden dort die Tracks abgespeichert. (Sonst: Absturz)
Die Mod reagiert auf die Tasten x, c, f, v, r und schreibt die Koordinaten in die Trackdatei.
Die Tasten werden gedrückt und nicht in den Chat geschrieben.
Mod und Quellcode sind wieder in der angehängten .zip Datei.
Ihr dürft sie gerne ausprobieren. Benötigt wird 1.10.2 mit Forge, sowie eine Tastatur.
 
Die Mod reagiert auf die Tasten x, c, f, v, r und schreibt die Koordinaten in die Trackdatei.
Die Tasten werden gedrückt und nicht in den Chat geschrieben.
Mod und Quellcode sind wieder in der angehängten .zip Datei.
Ihr dürft sie gerne ausprobieren. Benötigt wird 1.10.2 mit Forge, sowie eine Tastatur.

Zu der Mod hätte ich 2 Fragen (ich hab gerade leider nicht die Zeit, mich in den Quellcode einzuarbeiten :():
1. Kann man dann im Chat überhaupt noch die Tasten verwenden oder muss ich beim Chatten ohne x, c, f, v und r auskommen?
2. Ist diese Mod überhaupt auf Uwmc erlaubt? Wenn ich mich richtig erinnere, meinte @GoodKing vor einigen Monaten mal, dass die LabyMod auf Unlimitedworld verboten sei, da man damit die Koordinaten angezeigt bekommt ohne das sichteinschränkende F3-Menü offen zu haben. So hat man beim Wiederfinden des Todesortes einen Spielvorteil. Unterscheidet sich diese Track-Mod wirklich davon?
 
  • Gefällt mir
Wertungen: gaboversta
Was die Zulassung angeht, sind wif uns noch nicht sicher.
Allerdings werden die koordinaten nicht im chat angezeigt, sondern nur in eine .txt datei geshrieben. Die Tasten lösen nur aus, wenn du dich nicht in irgendeinem Menü befindest, also darfst du auch so sachen wie prkzlycxf schreiben.
 
Naja strenggenommen kann man sagen das die Koordinaten des Punktes gespeichert und abrufbar sind (wenn man vor dem Tod noch die Tasten betätigt).
Das kann ein "normaler " User nicht.
Aber da kann das Staff-Team bestimmt mehr drüber sagen :)
 
  • Gefällt mir
Wertungen: gaboversta
Naja strenggenommen kann man sagen das die Koordinaten des Punktes gespeichert und abrufbar sind (wenn man vor dem Tod noch die Tasten betätigt).
Das kann ein "normaler " User nicht.
Aber da kann das Staff-Team bestimmt mehr drüber sagen :)

Dazu muss man aber sagen, dass die F3-Ausgabe per F2 auch aufgenommen werden kann, wenn man gerade am sterben ist.

2016-10-28_17.55.32.jpg

Effektiv also ein Vorteil, der keiner ist.
 
  • Gefällt mir
Wertungen: gaboversta
2. Ist diese Mod überhaupt auf Uwmc erlaubt? Wenn ich mich richtig erinnere, meinte @GoodKing vor einigen Monaten mal, dass die LabyMod auf Unlimitedworld verboten sei, da man damit die Koordinaten angezeigt bekommt ohne das sichteinschränkende F3-Menü offen zu haben. So hat man beim Wiederfinden des Todesortes einen Spielvorteil. Unterscheidet sich diese Track-Mod wirklich davon?
Das sollte ja auch ohne Mod gehen, etwa indem man das F3-Menü per Fensterregel bis auf die Koordinaten vom Monitor schiebt oder mit einem transparenten Fenster die Verfärbung der F3-Texte umkehrt. Und ja, diese Mod ermöglicht genau dass, man kann ja mit einer Pipe die Ausgabe irgendwo auf den Monitor umleiten. (Das kann man ändern, indem man ausgeben.flush() in ein client-disconnect-Event verschiebt.)
 
  • Gefällt mir
Wertungen: gaboversta
Das mit den Todes-Koordinaten stimmt, wir versuchen im Moment eine Erlaubnis einzuholen.
Ich denke, das lässt sich regeln. Außerdem ist der Weg dann ja irgendwie kaputt oder?

Des weiterem : Eingangspost aktualisiert
 
Da wir bereits die aktuellen Koordinaten auf Tastendruck in den gameoutput-log schreiben können, bin ich optimistisch, das wir euch bis zum 15.11. diesen Jahres eine erste Karte von der spawnzone und Umgebung (Communityzonen) vorstellen können.
Pff, ich denke, das passt.
Ich habe letztes Jahr doch schon mal den Spawn abgelaufen und von Hand eingetippt (viel Arbeit, in der Tat), kannst du das nicht erstmal als Vorgeschmack präsentieren? Ansonsten kommt sicher nächste Woche ein Übersetzer für den Pfadgenerator, dann hast du noch 2 Tage Zeit.
Heute habe ich schon mal ein Programm geschrieben, welches die Ausgabe der Mod in Tastendruck-Serien übersetzt.
 
  • Gefällt mir
Wertungen: gaboversta
So, die neue Software funktioniert. Unten der Beweis.
Ich habe jetzt einen Screenshot der Dynmap unterlegt, alles andere wurde ohne menschliches Zutun erledigt. Lediglich ein Kommandozeilenaufruf, der die Software startet und der Mensch, der den Weg gelaufen ist und die Track-Tasten der Wander UWMC_Tracker-Mod gedrückt hat.
Ich denke, gaboversta wird nun (morgen) den Rest der Spawnzone ablaufen, dann wird der Zeitrahmen tatsächlich eingehalten.
test2.png
Making Of:

Für dieses Bild hat gaboversta einen Track mit dem derzeitigen Wander UWMC_Tracker v2.0 angefertigt. In Zukunft ist die (nicht existente) v2.1 besser geeignet.
Das Aufzeichnen hat 3 Minuten gedauert, wie ich den Zeitangaben entnehmen kann. Abzüglich einer Pause 2 Minuten. Mit etwas Übung wird es wohl noch schneller gehen.

Das Weiterverarbeiten hat ähnlich lange gedauert, wird mit etwas Übung aber wohl auch noch schneller gehen.

In den Knotenpunkten steht, wie viele Wege von diesem Knoten abgehen, dazu weiter unten mehr.

Woraus besteht die Software nun?
Da wäre zunächst der track_cleaner.pl, welcher die Ausgabe der Mod aufräumt und die Tastenbelegung errät.
Dann kommt der key_counter.pl, welcher die geolokalisierten Tastendrücke der Mod zählt und zusammenfasst.
Dann kommt der command_desequencer.pl, welcher die Tastensequenzen in Kommandos umwandelt.
Dann kommt der command_to_pathgen.pl, welcher derzeit die Abschweifung zum Provisorium darstellt. Er dient der Anbindung von Pfadgenerator und Knotenpunktgenerator, welche ich letztes Jahr schon programmiert habe. (Kleines Extra: Der Knotenpunktgenerator versteht nun auch negative Koordinaten. (Da ist mir letzes Jahr ein falscher Regex hineingeraten…))
Dann kommt noch cat, welches die Ausgaben dieser beiden Uralt-Programme in eine SVG-Datei kopiert. (Quelltext für cat: print <>, aber das habe ich dann doch nicht selbst programmiert. Siehe auch: man cat
Diese ganzen Programme werden (größtenteils) von einem kleinen Skript in der richtigen Reichenfolge aufgerufen, das Skript darf ich wegen der höheren Niveaustufe hier im Forum wohl für mich behalten.

Für Pfadgenerator und Knotenpunktgenerator sind recht umfangreiche Konfigurationsdateien nötig, die ich heute auch erstmal schreiben musste. (Da war perl (mit der Option -e) mal wieder sehr nützlich, besonders die netten Features foreach und qw.) Für interessierte hier die Zusammenfassung des Pfadgenerators:
Code:
Folgende Pfadtypen sind verfügbar:
Pfadtypen-Name:                         Farbe:    Breite: (px) Punktierung: Pt.-Länge: Pt.-Anteil: Linecap: 
Normal                                  #1166ee        3       none                 10      50.00%    round
Normal_bridge_damaged_lower             #ffff00        5       none                 10      90.00%     butt
Normal_bridge_damaged_middle            #1166ee        3       none                 10      50.00%    round
Normal_bridge_damaged_upper             #ff0000        6       6,4                  10      60.00%     butt
Normal_bridge_intact_lower              #ffff00        5       none                 10      90.00%     butt
Normal_bridge_intact_middle             #1166ee        3       none                 10      50.00%    round
Normal_bridge_intact_upper              #ff0000        0       5,5                  10      50.00%     butt
Normal_surface                          #1166ee        3       none                 10      50.00%    round
Normal_surface_damaged_lower            #ffff00        0       none                 10      90.00%     butt
…
*gekürzt*
…
Speedway_surface_intact_middle          #ee7711        4       7.5,2.5              10      75.00%    round
Speedway_surface_intact_upper           #ff0000        0       5,5                  10      50.00%     butt
Speedway_tunnel                         #0000ff      0.7       none                 10      90.00%    round
Speedway_tunnel_damaged_lower           #ffff00        0       none                 10      90.00%     butt
Speedway_tunnel_damaged_middle          #0000ff      0.7       none                 10      90.00%    round
Speedway_tunnel_damaged_upper           #ff0000        4       5,5                  10      50.00%     butt
Speedway_tunnel_intact_lower            #ffff00        0       none                 10      90.00%     butt
Speedway_tunnel_intact_middle           #0000ff      0.7       none                 10      90.00%    round
Speedway_tunnel_intact_upper            #ff0000        0       5,5                  10      50.00%     butt

Was Farbgebung und Strichdicke betrifft, kann man sicher noch optimieren, aber das geht nun auch noch später.

Noch eine Secret-Info: Die Eingabesyntax, für die unten noch eine leserliche Erklärung folgt. Sie wird von dieser Subroutine vollständig implementiert:
Code:
sub parse_command {								# Parses the command sequence in @new_sequences and pushes it as string to @processed_commands.
  my $intro = $new_sequences[0];						# $intro for introducing sequence.
  my @arg = @new_sequences;							# @arg for argument sequences, index starting at 1.
  
  if ($intro->[0] == 1) {						# Intro by 1.
    if ($intro->[1] <= 2) {							# Waypoint.
      push @processed_commands, "Waypoint: \"". &position ."\"";
    } else {									# Abort.
      (@processed_commands, @actual_position{qw/time_needed position_needed/}) = ();
    }
    
  } elsif ($intro->[0] == 2) {						# Intro by 2.
    if ($intro->[1] == 1) {							# Node.
      if ($processed_commands[-1] eq "Node: \"". &position ."\", \"$arg[1][1]\"") {	# If double, make to replace node.
	$processed_commands[-1] = "Node_replace: \"". &position ."\", \"$arg[1][1]\"";
      } elsif ($arg[1][1]) {								# If first, make normal node.
	push @processed_commands, "Node: \"". &position ."\", \"$arg[1][1]\"";
      } else {										# If no argument, make node without number of ways.
	push @processed_commands, "Node: \"". &position ."\"";
      }
      $actual_position{'time_needed'} = 1;
      
    } elsif ($intro->[1] == 2) {							# Waykind.
      if ($arg[1][1] <= 3) {								# Waykind.
	push @processed_commands, "Waykind: \"". (qw/0 surface bridge tunnel/)[ $arg[1][1] || 1 ]. "\"";
      } else {										# Way condition.
	push @processed_commands, "Way condition: \"". (qw/0 1 2 3 intact damaged/)[ $arg[1][1] ]. "\"";
      }
      
    } elsif ($intro->[1] == 3) {							# Additional info.
      if ($arg[1][1] == 1) {								# Beautiful.
	if ($processed_commands[-1] eq "Additional info: \"beautiful\"") {			# If double, expand for whole way.
	  $processed_commands[-1] = "Local info: \"beautiful\""
	} else {
	  push @processed_commands, "Additional info: \"beautiful\", \"". &position ."\"";
	}
      } elsif ($arg[1][1] == 2) {							# Ugly.
	if ($processed_commands[-1] eq "Additional info: \"ugly\"") {				# If double, expard for whole way.
	  $processed_commands[-1] = "Local info: \"ugly\""
	} else {
	  push @processed_commands, "Additional info: \"ugly\", \"". &position ."\"";
	}
      } elsif ($arg[1][1] == 5) {							# Beacon effects.
	push @processed_commands, "Local info: \"beacon_effects\"";
	$actual_position{'position_needed'} = 1;
      } elsif ($arg[1][1] >= 6) {							# Discard way.
	push @processed_commands, "Discard way";
      } else {										# Another info.
	push @processed_commands, "Additional info: \"". (qw/0 1 2 needs_revision unimportant/)[ $arg[1][1] || 4 ]. "\"";
      }
      
    } elsif ($intro->[1] == 4) {							# Waytype.
      push @processed_commands, "Waytype: \"". qw/0 normal project private_railway server server_railway speedway/[ $arg[1][1] || 1 ] ."\"";
      
    } elsif ($intro->[1] == 5) {							# Train station.
      push @processed_commands, "Train station \"". &position ."\"";
    }
  }
}

Wer also eine andere Eingabesyntax nutzen möchte: Das wird kein Problem sein!

Wer sich für den Datenfluss interessiert:
Dies ist die Ausgabe der Mod:
Code:
Neuer Track vom Fri Nov 11 18:57:10 CET 2016 durch "gabo"	## Vielen Dank an gaboversta für die Testdatei!
Label: "" ## Hiermit können einfach kurze Zusatzinfos zu den Wegen eingebunden werden.
Fri Nov 11 18:58:01 CET 2016: Wander UWMC_Tracker (C): X: 0.5413535141111341, Z: 0.4265683755452632
Fri Nov 11 18:58:01 CET 2016: Wander UWMC_Tracker (C): X: 0.5413535141111341, Z: 0.4265683755452632
Fri Nov 11 18:58:01 CET 2016: Wander UWMC_Tracker (C): X: 0.5413535141111341, Z: 0.4265683755452632
Fri Nov 11 18:58:02 CET 2016: Wander UWMC_Tracker (F): X: 0.5413535141111341, Z: 0.4265683755452632
Fri Nov 11 18:58:02 CET 2016: Wander UWMC_Tracker (F): X: 0.5413535141111341, Z: 0.4265683755452632
Fri Nov 11 18:58:02 CET 2016: Wander UWMC_Tracker (F): X: 0.5413535141111341, Z: 0.4265683755452632
Fri Nov 11 18:58:02 CET 2016: Wander UWMC_Tracker (X): X: 0.5413535141111341, Z: 0.4265683755452632
Fri Nov 11 18:58:03 CET 2016: Wander UWMC_Tracker (X): X: 0.5413535141111341, Z: 0.4265683755452632
Fri Nov 11 18:58:03 CET 2016: Wander UWMC_Tracker (X): X: 0.5413535141111341, Z: 0.4265683755452632
Fri Nov 11 18:58:11 CET 2016: Wander UWMC_Tracker (F): X: 0.5413535141111341, Z: 0.4265683755452632
Fri Nov 11 18:58:12 CET 2016: Wander UWMC_Tracker (C): X: 0.5413535141111341, Z: 0.4265683755452632
Fri Nov 11 18:58:12 CET 2016: Wander UWMC_Tracker (C): X: 0.5413535141111341, Z: 0.4265683755452632
Fri Nov 11 18:58:12 CET 2016: Wander UWMC_Tracker (C): X: 0.5413535141111341, Z: 0.4265683755452632
Fri Nov 11 18:58:13 CET 2016: Wander UWMC_Tracker (C): X: 0.5413535141111341, Z: 0.4265683755452632
Fri Nov 11 18:58:16 CET 2016: Wander UWMC_Tracker (F): X: 0.9020936049211075, Z: -0.2176717950986739
Fri Nov 11 18:58:16 CET 2016: Wander UWMC_Tracker (F): X: 0.9020936049211075, Z: -0.2176717950986739
Fri Nov 11 18:58:17 CET 2016: Wander UWMC_Tracker (F): X: 0.9020936049211075, Z: -0.2176717950986739
Fri Nov 11 18:58:17 CET 2016: Wander UWMC_Tracker (F): X: 0.9020936049211075, Z: -0.2176717950986739
## Und so weiter…

Der track_cleaner macht daraus folgendes:
Code:
User: "gabo"
Keybinding: "X, F, C"
Max move: "1.5"
Max wait: "8"
Additional label: "" 
2016-11-11T17:58:01 +00: UW_Tracker (C): X: 0.54, Z: 0.43
2016-11-11T17:58:01 +00: UW_Tracker (C): X: 0.54, Z: 0.43
2016-11-11T17:58:01 +00: UW_Tracker (C): X: 0.54, Z: 0.43
2016-11-11T17:58:02 +00: UW_Tracker (F): X: 0.54, Z: 0.43
2016-11-11T17:58:02 +00: UW_Tracker (F): X: 0.54, Z: 0.43
2016-11-11T17:58:02 +00: UW_Tracker (F): X: 0.54, Z: 0.43
2016-11-11T17:58:02 +00: UW_Tracker (X): X: 0.54, Z: 0.43
2016-11-11T17:58:03 +00: UW_Tracker (X): X: 0.54, Z: 0.43
2016-11-11T17:58:03 +00: UW_Tracker (X): X: 0.54, Z: 0.43
2016-11-11T17:58:11 +00: UW_Tracker (F): X: 0.54, Z: 0.43
2016-11-11T17:58:12 +00: UW_Tracker (C): X: 0.54, Z: 0.43
2016-11-11T17:58:12 +00: UW_Tracker (C): X: 0.54, Z: 0.43
2016-11-11T17:58:12 +00: UW_Tracker (C): X: 0.54, Z: 0.43
2016-11-11T17:58:13 +00: UW_Tracker (C): X: 0.54, Z: 0.43
2016-11-11T17:58:16 +00: UW_Tracker (F): X: 0.90, Z: -0.22
2016-11-11T17:58:16 +00: UW_Tracker (F): X: 0.90, Z: -0.22
2016-11-11T17:58:17 +00: UW_Tracker (F): X: 0.90, Z: -0.22
Man beachte, wie das Keybinding hinzugekommen ist. Alles was dazu gemacht werden musste, war vor dem Aufzeichnen „CCCFFFXXX“ einzugeben. Wer erkennts?
Der Kommentar ist verschwunden, nur weil er mit „## “ anstelle von „## “ anfing. Wer erkennt den Unterschied?

Der key_counter macht daraus folgendes:
Code:
User: "gabo"
Additional label: ""
Time: "2016-11-11T17:58:01 +00"
Position: "0.54, 0.43"
Key sequence: "3: 3"
Key sequence: "2: 3"
Key sequence: "1: 3"
Key sequence: "2: 1"
Key sequence: "3: 4"
Key sequence: "2: 4"
Key sequence: "3: 2"
Position: "0.77, -0.21"
Time: "2016-11-11T17:59:00 +00"
Key sequence: "2: 4"
Key sequence: "3: 4"
Position: "0.42, -7.90"
Time: "2016-11-11T17:59:15 +00"
Key sequence: "1: 1"
Position: "0.39, -19.07"
Time: "2016-11-11T17:59:18 +00"
Key sequence: "1: 1"
(Da habe ich mal etwas mehr stehen lassen, sonst wäre nicht viel übrig.)
Weiter unten habe ich die Tabelle zur Eingabesyntax eingefügt. Erkennt jemand ein oder mehrere Kommandosequenzen?
(Tipp: Eine Kommandosequenz besteht aus ein oder zwei Tastensequenzen und endet, sobald sich die Position ändert.)

Der command_desequencer macht daraus folgendes: (Menschenlesbarer wird es nie mehr!}
Code:
User: "gabo"
Time: "2016-11-11T17:58:01 +00"
Node: "0.54, 0.43", "4"
Waytype: "project"
Waytype: "server"
Waypoint: "0.42, -7.90"
Waypoint: "0.39, -19.07"
Waypoint: "-4.90, -24.25"
Waypoint: "-5.61, -28.23"
Waypoint: "-4.62, -32.07"
Waypoint: "-1.84, -37.99"
Waypoint: "1.86, -43.90"
Waypoint: "2.65, -49.46"
Waypoint: "-6.57, -57.28"
Waypoint: "-7.14, -62.46"
Waykind: "bridge"
Waypoint: "-7.28, -84.47"
Waypoint: "0.66, -84.48"
Waypoint: "1.38, -95.61"
Waypoint: "9.50, -96.21"
Waypoint: "9.95, -124.54"
Waykind: "surface"
Time: "2016-11-11T18:00:32 +00"
Node: "10.01, -127.10", "3"
Waypoint: "9.96, -135.69"
Waypoint: "9.93, -142.77"
Waypoint: "10.04, -150.23"
Time: "2016-11-11T18:00:41 +00"
Waypoint: "10.25, -153.54"
Node: "10.25, -153.54", "2"
Das ist jetzt bereits die gesamte Testdatei, mit der das Beispielbild erzeugt wurde.

Der improvisierende command_to_pathgen macht daraus folgendes:
Code:
#Knoten Knotennummer:4
#Knoten 0.54,0.43
#Knoten Knotennummer:3
#Knoten 10.01,-127.10
ID:gabo_
#server_surface_intact_lower
0.54,0.43 0.42,-7.90 0.39,-19.07 -4.90,-24.25 -5.61,-28.23 -4.62,-32.07 -1.84,-37.99 1.86,-43.90 2.65,-49.46 -6.57,-57.28 -7.14,-62.46
#server_surface_intact_middle
0.54,0.43 0.42,-7.90 0.39,-19.07 -4.90,-24.25 -5.61,-28.23 -4.62,-32.07 -1.84,-37.99 1.86,-43.90 2.65,-49.46 -6.57,-57.28 -7.14,-62.46
#server_surface_intact_upper
0.54,0.43 0.42,-7.90 0.39,-19.07 -4.90,-24.25 -5.61,-28.23 -4.62,-32.07 -1.84,-37.99 1.86,-43.90 2.65,-49.46 -6.57,-57.28 -7.14,-62.46
#server_bridge_intact_lower
-7.14,-62.46 -7.28,-84.47 0.66,-84.48 1.38,-95.61 9.50,-96.21 9.95,-124.54
#server_bridge_intact_middle
-7.14,-62.46 -7.28,-84.47 0.66,-84.48 1.38,-95.61 9.50,-96.21 9.95,-124.54
#server_bridge_intact_upper
-7.14,-62.46 -7.28,-84.47 0.66,-84.48 1.38,-95.61 9.50,-96.21 9.95,-124.54
#server_surface_intact_lower
9.95,-124.54 10.01,-127.10
#server_surface_intact_middle
9.95,-124.54 10.01,-127.10
#server_surface_intact_upper
9.95,-124.54 10.01,-127.10
#Knoten Knotennummer:2
#Knoten 10.25,-153.54
ID:gabo_
#server_surface_intact_lower
10.01,-127.10 9.96,-135.69 9.93,-142.77 10.04,-150.23 10.25,-153.54 10.25,-153.54
#server_surface_intact_middle
10.01,-127.10 9.96,-135.69 9.93,-142.77 10.04,-150.23 10.25,-153.54 10.25,-153.54
#server_surface_intact_upper
10.01,-127.10 9.96,-135.69 9.93,-142.77 10.04,-150.23 10.25,-153.54 10.25,-153.54
Die betagte und verwirrende Syntax des Pfadgenerators und des Knotenpunktgenerators bleiben erstmal so. :(
Man beachte, dass beide Programme diese Datei einlesen. Mit scharfem Blick erkennt man, warum das funktioniert. (Tipp: Zeilenanfänge)
Mit der hier genutzten Konfigurationsdatei für den Knotenpunktgenerator entsteht an jedem Knoten ein Knotenpunkt. In Zukunft wird es einen Unterschied zwischen Knoten und Knotenpunkt geben, aber so erkennt man, welche Anzahl Wege mit dem Knoten gespeichert wurde.

Man sieht, dass aus 4 Wegsegmenten 12 Pfade geworden sind. Damit lassen sich die Ränder der Brücke darstellen, beschädigte Wege markieren und beides zugleich.
Das erfordert 108 Pfadtypen in der Konfigurationsdatei, aber das wird hier nicht noch mal behandelt.

Der Pfadgenerator macht daraus folgendes:
Code:
<path
  style="fill:none;stroke:#ee11ee;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:3;stroke-dasharray:none"
  d="m 0.54,0.43 -0.12,-8.33 -0.03,-11.17 -5.29,-5.18 -0.71,-3.98 0.99,-3.84 2.78,-5.92 3.70,-5.91 0.79,-5.56 -9.22,-7.82 -0.57,-5.18"
  id="gabo_2"
  inkscape:connector-curvature="0" />
<path
  style="fill:none;stroke:#ffff00;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:3;stroke-dasharray:none"
  d="m -7.14,-62.46 -0.14,-22.01 7.94,-0.01 0.72,-11.13 8.12,-0.60 0.45,-28.33"
  id="gabo_4"
  inkscape:connector-curvature="0" />
<path
  style="fill:none;stroke:#ee11ee;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:3;stroke-dasharray:none"
  d="m -7.14,-62.46 -0.14,-22.01 7.94,-0.01 0.72,-11.13 8.12,-0.60 0.45,-28.33"
  id="gabo_5"
  inkscape:connector-curvature="0" />
<path
  style="fill:none;stroke:#ee11ee;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:3;stroke-dasharray:none"
  d="m 9.95,-124.54 0.06,-2.56"
  id="gabo_8"
  inkscape:connector-curvature="0" />
<path
  style="fill:none;stroke:#ee11ee;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:3;stroke-dasharray:none"
  d="m 10.01,-127.10 -0.05,-8.59 -0.03,-7.08 0.11,-7.46 0.21,-3.31 0.00,0.00"
  id="gabo_11"
  inkscape:connector-curvature="0" />
Und hier ist erstmal Schluss! Wer SVG schon mal aus dieser Perspektive gesehen hat, der weis, was das bedeutet.

Man sieht jetzt nur 5 Pfade. Das sind alle sichtbaren Pfade, die anderen Pfade wurden in der Konfigurationsdatei als unsichtbar angegeben.

Hier im Klartext die derzeitige Eingabesyntax: (Für diejenigen, die kein Perl im Kopf parsen können.)

Erklärung Wege aufzeichnen

Ein Weg wird definiert durch zwei Knoten, welche Start und Ende positionieren und mindestens einen Wegpunkt. (Nicht Knotenpunkte, diese kommen später.)
Ein Weg hat immer einen Wegtyp (Normal, Hauptstraße, Bahn…) und beliebig viele Wegarten (Normal, Brücke, Tunnel… und intakt, beschädigt). Der Wegtyp gilt für den gesamten Weg, die Wegarten jeweils für ein Wegsegment.

Ein Knoten ist ein Punkt, an dem einer oder mehrere Wege anfangen b. z. w. enden.
Dies kann also eine Kreuzung sein, eine Sackgasse oder einfach eine gedachte Unterbrechung eines Wegs. Sehr lange Wege werden automatisch mit Knoten unterteilt.
Ein Weg kann an einen Knoten angeschlossen werden, indem ungefähr auf dem bestehenden Knoten ein neuer Knoten angelegt wird.
Knoten können die Anzahl der abgehenden Wege speichern, so wird erkennbar, wo Wege noch nicht aufgezeichnet wurden.

Ein neuer Weg kann an einen bestehenden Weg angeschlossen werden, indem an der Anschlussstelle ein neuer Knoten angelegt wird. Der alte Weg wird dort automatisch unterbrochen und am Knoten angeschlossen.

Wenn ein Weg erneut aufgezeichnet wird, kann der alte Weg automatisch ersetzt werden.


Tastenbelegung
Die Wander UWMC-Tracker-Mod erzeugt Track-Punkte wenn bestimmte Tasten gedrückt werden. Jede verwendete Taste braucht eine Bedeutung; für Wander UWMC gibt es 3 Bedeutungen: 1, 2 und 3.

Automatische Tastenbelegung
Jede Taste hat eine bestimmte Bedeutung. Diese Bedeutung muss bei Nutzung der Tracker-Mod angegeben werden, die einfachste Methode hierfür ist die Eingabesequenz (nach Bedeutung) „333222111“.
Beispiel: X -> 1, F -> 2, V -> 3 mittels „VVVFFFXXX“.

Manuelle Tastenbelegung
Alternativ kann die Belegung manuell in der Ausgabedatei der Mod angegeben werden, dazu befindet sich in deren Kopf eine Anleitung. (Es dürfen sogar mehrere Tasten die gleiche Bedeutung haben.)


Weg aufzeichnen: Zunächst muss ein Knoten angelegt werden. Dort beginnt der Weg. Nun kann in allen Kurven und Eckpunkten ein Wegpunkt gesetzt werden. (Eingabesequenz „1“.) Am Ende wird wieder ein Knoten angelegt, von dem direkt der nächste Weg starten kann. Dort wo ein Knoten angelegt wird, ist kein Wegpunkt nötig!

Knoten anlegen: Mit der Eingabesequenz „2“ wird ein Knoten angelegt. Die Anzahl der abgehenden Wege kann mit dem Zähler-Argument angegeben werden. (Beispiel: Knoten mit 4 Wegen: Eingabesequenz „2 3333“.) Die genaue Position des Knotens wird mit bereits existierenden Knoten an dieser Stelle ausgemittelt.

Wegart ändern: Kommt man an eine Brücke oder einen Tunnel, muss die Wegart geändert werden. Hierzu wird ein Wegart-Kommando eingegeben. (Eingabesequenz „22“) Anschließend kann ein Zähler-Argument gegeben werden, um die Wegart auszuwählen. (Beispiel: Wegart Brücke: Eingabesequenz „22 33“.) Wird das Zähler-Argument weggelassen, wird auf Normal (Boden, Erdoberfläche) zurückgestellt. Mit den Zähler-Argumenten 4 und 5 kann auch zwischen den Zuständen Intakt und Beschädigt gewechselt werden. (Wenn ein Knoten angelegt wird, wird automatisch auf Normal und Intakt zurückgestellt.)

Wegtyp ändern: Wenn man die Aufgabe hat, z. B. die Serverbahnen aufzuzeichnen, muss man einmalig den Wegtyp angeben. Das geht genauso wie bei der Wegart, gilt jedoch für die Wege als ganzes und wird nicht durch Knoten zurückgesetzt. (Siehe Tabelle)

Zusatzinfos: Wenn man angeben möchte, dass dieser Weg besonders schön/hässlich ist oder man sich z. B. mit dem Wegtyp nicht sicher ist, kann man dies mit Zusatzinfos sagen. Das geht wieder genauso wie mit Knoten und Wegart. Die Zusatzinfo gilt entweder für eine Stelle oder den ganzen Weg. (Siehe Tabelle)

Bahnstationen: Genauso wie Knoten können auch Bahnstationen angelegt werden. Das sind einfache Markierungen auf der Karte, an der keine Wege anfangen oder enden.



Eingabesyntax:

Die drei Tasten, die für die Wegeaufzeichnung genutzt werden:
1 Wegpunkt/Abbruch
2 Andere Befehl wie Knoten, Wegart,…
3 Zähler-Argument für 2 (Siehe Tabelle)


Wegpunkt und Abbruch:
1Bedeutung:
1xWegpunkt
≥3xAlle Wegpunkte und Kommandos auf dieser Stelle widerrufen. (Abbruch)

Kommandosequenzen:
23Bedeutung:
1xKnoten, welcher schon beschrieben wurde, Anzahl abgehender Wege beibehalten
1xZählerKnoten mit „Zähler“ abgehenden Wegen (2x eingeben, um Knoten neu zu platzieren, z. B. nach Bauarbeiten nahe dieses Knotenpunkts)
2xWegart: Weg auf Erdoberfläche
2x+Wegart setzen (Gültig ab letzten Wegpunkt)
1xWeg auf Erdoberfläche (Wird durch Knoten impliziert)
2xWeg auf Brücke
3xWeg in Tunnel (Oberfläche und Tunnel sind bei Sprintgängen getauscht!)
4xWeg in Ordnung (Wird durch Knoten impliziert)
5xWeg beschädigt (Z. B. gegrieft, verbaut, abgerissen,…)
3xZusatzinfo: Weg sollte noch mal gesichtet werden
3x+Zusatzinfo:
1xWeg hier besonders schön (2x eingeben: Für gesamten Weg)
2xWeg hier besonders unschön (2x eingeben: Für gesamten Weg)
3xWeg sollte noch mal gesichtet werden (Z. B. wenn unklar, ob beschädigt)
4xWeg unwegsam/schmal/unwichtig
5xHier Leuchtfeuereffekte
≥6xWeg verwerfen (Alle Wegpunkte von letzten Knoten bis nächsten Knoten werden verworfen, jedoch keine Einstellungen)
4xWegtyp: Gewöhnlicher Weg
4x+Wegtyp setzen (Gilt ab aktuellem Weg und für alle weiteren Wege)
1xGewöhnlicher Weg (Privat) (Wird durch Anfang eines Tracks impliziert)
2xWeg auf Projektzone/Serverzone ohne Nutzen für Transitverkehr (Beispiel: Viele Wege im Dorf am Spawn)
3xPrivatbahn
4xServerweg (Hauptstraßen)
5xServerbahn
6xSprintgang
5xBahnstation

Nach 8s ohne Eingabe oder einer Bewegung über 1,5m werden Eingabesequenzen/Kommandos automatisch beendet und, wenn ungültig, verworfen.

Tastenbelegung: Welche Bedeutung eine Taste hat. Beispiel: X -> 1, F -> 2, C -> 3. (Siehe auch Automatische Tastenbelegung)
Wegsegmente teilen einen Weg in Abschnitte verschiedener Beschaffenheit (Wegart) und enden an Wegpunkten.
Wegpunkte legen den Verlauf eines Weges fest und werden sinnvollerweise in Kurven und Eckpunkten gesetzt.
Kommando: Eingabesequenz aus einer oder mehreren Tastensequenzen. Beispiel: FFCCC sind zwei Tastensequenzen und das Kommando „Weg im Tunnel“.
Tastensequenz: Eine Taste eine bestimmte Anzahl oft gedrückt. Beispiel: FFF bedeutet F dreimal gedrückt, 333 bedeutet eine Taste mit Bedeutung 3 dreimal gedrückt.
Stelle: Als gleiche Stelle/Position gelten zwei Koordinaten, welche nicht mehr als 1,5m voneinander entfernt sind.
Track: Eine Ausgabedatei des Wander UWMC-Trackers. (Eine Datei pro Start von Minecraft)
Aufzeichnen: Der Prozess, die Wege in Minecraft abzulaufen, dabei Koordinaten zu erfassen und ggf. weitere Infos zu notieren.

Vielen Dank fürs lesen, ich würde mich über eine Rückmeldung zur Verständlichkeit freuen. :)
Wem das zu viel ist, der muss noch ein bisschen warten. Es wird bald noch eine Kurzversion geben, die alles enthält, was man im Normalfall wissen muss.

„War da gerade Englisch drin?“
Ja, ich habe aufgehört, auf Deutsch zu programmieren. Deutsch kann ich inzwischen gut genug, aber auf Deutsch zu Programmieren ist mir auf Dauer doch zu schwer. Darum auf Englisch, das spart eine Menge Zeit.
Es wird reichen, wenn ich zum Schluss die Dokumentation auf Deutsch übersetze, obwohl ich nicht mal das mache.
Die folgende Woche werde ich erstmal auf Englisch dokumentieren, sonst kann ich die sechs Programme in ein paar Monaten selbst nicht mehr auseinanderhalten.

Wer interessiert ist, kann die Programme per PN anfordern. Viel Spaß damit. (Vielleicht gibt es dann auch wieder die Mod zum Download?)

Ach ja: Möchte jemand mit programmieren?

Kleiner Blick in die Zukunft: Das letzte Programm wird recycelt, dann werden auch die Knoten ausgerichtet. (Derzeit verzichte ich darauf, wird wahrscheinlich demnächst hässlichen Ärger produzieren)
Die Knoten, und was man sonst noch so aufzeichnet, werden dann in einer Update-Anfrage, wahrscheinlich in XML, zusammengefasst. Diese Update-Anfrage soll an das „eigentliche“ Kartenprogramm gegeben werden, welches daraufhin eine Update-Zusammenfassung als SVG-Datei ausgibt. Darauf kann man prüfen, ob man bei der Aufzeichnung keine Fehler gemacht hat. Fehler wird man dort korrigieren oder anders beseitigen können. Die bearbeitete Update-Zusammenfassung geht zurück ans Kartenprogramm, welches die Kartendaten mit den eigenen Aufzeichnungen erweitert. Damit mehrere Leute gleichzeitig Update-Anfragen einreichen können, werden die betroffenen Kartensektoren gesperrt, bis die Update-Zusammenfassung zurückkehrt.

Aber bis dahin ist es noch ein weiter Weg…

Beispielhaft findet sich in den Zusatzinfos ein Eintrag für Leuchtfeuer-Effekte, für die es nun wohl keinen /settings-Befehl geben wird. Wer sich also an Leuchtfeuereffekten stört, kann dann auf der Karte nachsehen, wo es Leuchtfeuer-Effekte gibt, und wo nicht.

Beispielhaft deshalb, da genauso verschiedene andere „local_info“s realisiert werden könnten. Ich denke da gerade an Monsterfarmen, Melonenspender, Villager, …

Wer irgentwelche Anmerkungen hat, kann sie mir zukommen lassen, ich werde sie dann erstmal sammeln.
 
Auch wenn ich der ganzen Mod aus später genannten Gründen etwas skeptisch gegenüber stehe, muss ich dir dennoch Respekt zollen für deine Arbeit und deinen Spoiler im letzten Post! Das sieht nach nicht wenig Arbeit aus und scheint auch schon ziemlich gut zu funktionieren. Wenn das sich so weiterentwickelt, wird einer guten Wanderkarte mit eingezeichneten wichtigen Orten bald nichts mehr im Weg stehen :) . ...Hm, wirklich nichts? Naja, eine Sache schon. Denn ich könnte mir zwar vorstellen, dass man diese Mod unter bestimmten Einschränkungen erlauben würde, aber habt ihr überhaupt schon mal das Staffteam nach einer (Sonder-)Genehmigung der Mod gefragt?
- Eine Sache z.B. fiele mir definitiv ein, wo man diese Mod unfairerweise benutzen könnte: Man denke nur daran, was für eine Erleichterung sie bei einem Suchevent wäre. Hier müsste man sie definitiv verbieten.
- Außerdem müsste man mal feststellen, ob deine Mod auch noch posthum funktioniert und den Todesort feststellen kann. Für viele wäre das auch ein Grund gegen die Mod, ich persönlich halte das jedoch für keinen Spielervorteil. Denn statt der Mod kann ich auch einfach immer den F3-Bildschirm anhaben und den gleichen Effekt erzielen.
 
Es war einmal ein @gaboversta , welcher vergessen hatte in seinen Forumsthema nachzusehen, ob es etwas neues gibt ...
Sorry, ich werde mich jetzt mal an die Arbeit machen, Karte kommt vielleicht noch heute, aber wohl eher nicht.
)-.*
 
So, die Mod sollte nun die genannten Probleme behoben haben.
  1. Die Ausgabe ist nun mindestens 5 Sekunden verzögert, somit ist die Mod keine weniger sichteinschränkende Alternative zu F3. Sie bietet also auch bei einem Suchevent keinen Vorteil gegenüber F3, Stift und Papier.
  2. Wenn der Spieler tot ist oder sich vermutlich in Not befindet (Gesundheit unter 75%), werden die Koordinaten nicht mehr aufgezeichnet.
Ich werde nun die Genehmigung des Severteams einholen und stelle die Mod schon mal zum Download.
Wie bisher gibt es in der .zip die Mod als .jar und den Quelltext.
 
So, die Mod sollte nun die genannten Probleme behoben haben.
  1. Die Ausgabe ist nun mindestens 5 Sekunden verzögert, somit ist die Mod keine weniger sichteinschränkende Alternative zu F3. Sie bietet also auch bei einem Suchevent keinen Vorteil gegenüber F3, Stift und Papier.
Entschuldige, aber was bringt der Puffer? Es werden doch trotzdem die Koordinaten aufgezeichnet, bei denen du die Taste gedrückt hast, sonst würde es ja völlig den Sinn verfehlen. Ich begreife es einfach nicht, was der Puffer besser/fairer machen soll...
Es geht mir auch in keinem Fall um die Sichteinschränkung, da ich F3 sowieso fast immer an hab'.
Es geht mir darum, dass ich ganz bequem nur noch beim jeweiligen Kürbis/Ei die passende Taste drücken müsste und auch noch alle Wege, Kreuzungen und wichtige Orte per passendem Knopfdruck festhalten könnte. Damit wäre ich eindeutig den Spielergruppen überlegen, die noch mühsam alle Koordinaten von Hand notieren und vergleichen, um am Ende zum Beispiel so eine Karte aus so einer Liste zu generieren.
Du kannst mir nicht erzählen, dass man mit irgendeiner Trackermod bei einem Suchevent keinen Vorteil hätte. Spätestens bei sowas müsste man sie ganz bestimmt immer verbieten.


Zu der Sache, wie ihr öffentlich im Nachhinein versucht, den Staff zu einer Sondergenehmigung zu zwingen, muss ich ja eigentlich nichts mehr sagen. Normalerweise klärt man sowas frühzeitig und intern, dann hat man auch größere Chancen. Ich persönlich jedenfalls würde mich als Staffler allein schon wegen der Art und Weise etwas auf den Fuß getreten fühlen und nicht mehr so entgegenkommend sein, wie ich es unter anderen Umständen gewesen wäre.


Das hier alles entspringt nur meiner persönlichen Meinung soll keine Mutmaßung sein. Das Staffteam kann ganz anderer Auffassung sein und ich möchte mich hier nicht weit aus dem Fenster lehnen.
 
Morock hat ganz das gut zusammen gefasst, so denke ich auch gerade.

Zwei Developer von uns haben deinen Code angeschaut und sind damit nicht zufrieden. Neben unverständlichen Schritten kann es auch zu Problemen bei Windows und Linux Rechnern kommen. Genauer will ich da aber nicht werden.

Einmal deswegen, wegen der falschen Herangehensweise (mittlerweile gab es eine private Mail, aber zu spät) und besonders dem Spielvorteil ist der Mod nicht erlaubt.
 
Vielen Dank für das feedback.
Die Information, das die WanderUWMC-Tracker mod nicht zugelassen ist wurde zur Kenntnis genommen.
Des Weiteren möchte ich mich für die ausführliche Erklärung des Spielvorteils von @Morock bedanken und mich für die Herangehensweise entschuldigen.
Das erschwert nun natürlich das erstellen einer Wanderkarte wesentlich.

mfg
- @gaboversta
 
Ohne Mod geht es auch, das haben wir letztes Jahr schon bewiesen.
Wenn man die Koordinaten (und andere Daten) direkt im Texteditor eingibt, ist das völlig in Ordnung und somit erlaubt. (Denke ich, korrigiert mich ggf.)
Die Texteditoreingabe für meine Software sieht so aus wie unten gezeigt.
Wie auch schon mit Mod, kann die Syntax noch geändert werden, wenn gewünscht.
Gruß, fiebilicar

Code:
& User: "gabo"
& Time: "2016-11-11T17:58:01 +00"
o-0.-0		## Offset (o) setzen (Betrag und Vorzeichen werden getrennt addiert.)
ts		## Wegtyp (t) setzen zu Server (s)
0,0n4		## Knoten mit 4 Wegen auf 0,0 (/spawn)
,8		## Ausgelassene Koordinaten werden mit der letzten angegebenen Koordinate ersetzt. (Hier: 0)
,19		## Ergibt also 0,-19
5,24  .28  4,32 2,38  -2,44		## Letztes ergibt 2,-44
-3,49 7,57 7,62
kb		## Wegart (k wie waykind) setzen zu Brücke (b)
7,84 -1,84 -2,96 -10,124	## Vorzeichen werden durch Offset weiterhin umgedreht...
ks		## Wegart Oberfläche (s wie surface, n auch möglich)
-10.127n3	## Knoten mit 3 Wegen
-10.127n	## Knoten mit unbestimmter Anzahl Wegen
-10,136 -10,143 -10,150 -10,153n2	## So viele Wegpunkte müssen natürlich nicht angegeben werden. (Liegen auf Gerade...)
 

Benutzer, die dieses Thema gerade lesen

ONLINE 76 Spieler