Paver/Pflasterer (besser spät als nie)

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


  • Wenn ich es richtig sehe gibt es in TPF2 bisher keine vergleichbare Mod von Der Farmer oder Der Pflasterer ?


    Trotzdem denke ich, dass das eine sinnvolle Sache wäre, Bodentexturen von beliebieger Form und Größe einfach aufzubringen. Die Maltools sind für große Flächen einfach zu aufwändig und scharfe Kanten sind schwierig. Und Assets/Konstruktionen sind unflexibel.


    Wie seht ihr das?


    Eine Neuauflage mit dem Förster (TPF2) als Vorlage sollte nicht allzu schwierig sein.


    Mit api.res.groundTextureRep kommt man wohl auch an alle verfügbaren Texturen um eine dynamische Auswahl zu haben. (da scheint aber auch ganz schön viel (unnötiges) Zeug dabei zu sein?)


    Allerdings kann man über Konstruktionen nur "groundTexture" erzeugen. Die terrain Textures, welche man über das Maltools bedient, sind nochmal ein anderes System. Hierfür gibt es ja auch keine API.

  • Das wäre hammercool und sehr viel schneller, als das Gepinsel. Von der Umsetzung habe ich absolut keine Ahnung aber wenn Du da eine Chance siehst, dass das sich umsetzen ließe, würde ich diese Mod sehr begrüßen.

    Möget ihr immer die passenden Assets zur Hand haben.

  • Moin,


    mega Idee! :thumbup::thumbup::thumbup:

    Grüße aus der Stadt am Jadebusen


    Mein System: Intel i5-11400 @ 2,6 GHz + 32 GB RAM DDR4-3200 + AsRock Intel ARC B580 OC Challenger + 1 TB SSD (1) + 500 GB SSD (2)| Gesamtspielzeit TPF2: 6.700+ Stunden

  • Das Grundgerüst steht soweit. Das Polygon ziehen und Pflastern von Bodentexturen funktioniert an sich erstmal.

    Ich drope hier einfach mal eine öffentliche Beta Version.



    snowball s Förster von TPF2 und der Pflasterer von TPF1 waren hilfreich als Vorlage. Allerdings habe ich die Gui erweitert und bin auf die neue api umgestiegen, wobei mir viele komische Fehler mit der legacy api begegnet sind, die ich vor 3 Jahren schonmal debuggt hab.


    Es gibt eine Liste, die alle geladenen "ground textures" (Dateien in res/config/ground_texture) anzeigt. Im Gegensatz zu einer begrenzten vorgegebenen Auswahl, war meine Idee das dadurch flexibel zu halten und automatisch Texturen von anderen Mods bauen zu können. Allerdings sind die ground_textures im Gegensatz zu den Terrainmaltools (res/config/terrain_material) nicht direkt für den Benutzer sichtbar, daher gibt es weder gescheiter Name noch Icon zur Vorschau (anders als z.B. Brückenauswahl für ZeroHeightBridge). Es werden aber zusätzliche Infos der Datei angezeigt. Ich weiß noch nicht was ich von der automatischen Auswahl halte, weil einige Terraintexturen hier fehlen. Das würde aber bedeuten, dass ich für jede Textur nochmal eine eigene ground_texture erstellen müsste... mal schauen.


    Um das Problem der fehlenden Vorschau zu entschärfen, gibt es beim Marker schon im klassischen Konstruktionsmenü eine Auswahl der Textur (via Alle Ressourcen zur Auswahl in Konstruktionsparametern) was einfach eine dummy Fläche zeigt. Die Marker werden nach Abschluss natürlich mit dem gezeichneten Polygon ersetzt wird. Also es zählt die Auswahl der Liste.


    Wer sich mit Bodentexturen auskennt, weiß dass es auch Möglichkeiten gibt den Rand einer Fläche zu texturieren (Stroke). Dazu gibt es ebenfalls eine Auswahl wofür sich eine 2te Liste öffnet:



    Lange habe ich gebraucht, um die erzeugte Fläche anklickbar zu machen. Trotz der angegeben face für die groundtexture, wollte die weiße Linie einfach nicht erscheinen. Der Clou ist, dass zum einen die gebaute Konstruktion dem Spieler gehören muss, was normalerweise Standard ist, aber bei Bauten via game.interface.buildConstruction noch mit game.interface.setPlayer ergänzt werden muss (witzigerweise konnte man es trotzdem bulldozen im Bereich der BoundingBox). Und dann reicht es nicht aus, dass die groundtexture da ist, es müssen auch noch unsichtbare Modelle her, nicht nur eins, sondern an alle Eckpunkte, um eine passende BoundingBox zu bekommen. (Danke snowball an den Kommentar im Code - genau deswegen sind Kommentare wichtig!). Der Vollständigkeit halber: Faces im Uhrzeigersinn erzeugen triangulierte weiße Linien, was unschön aussieht, daher wird das Polygon noch überprüft.


    Nachdem ich endlich in den Upgrade Dialog kam, um mit Parametern ein Nachbearbeiten möglich zu machen, kam die Enttäuschung: TPF2 gibt mir in der updateFn strikt nur params die Zahlen sind, wie für standardmäßig definierte Parameter vorgesehen. Meine parameter sind ja das Polygon (table) und die groundTexture direkt als string, welche auch in der construction entity gespeichert sind! Das ist sehr schade, dass dieses Vorgehen (erst manuell individuelle Struktur einer Konstruktion festlegen und dann klassisch über den Upgradedialog mit vielen Parametern verfeinern) nicht so funktioniert.

  • So... nun der nächste Zwischenstand, im fast finalen Status denke ich.


    Der Ansatz, lediglich die vorhandenen ground_texture auszulesen, war ja wenig zufriedenstellend. Daher erstelle ich nun für jedes terrain_material (also jede sichtbare Bodentextur in Maltools) eine extra ground_texture. Da es für die terrain_material wie gesagt leider keine API gibt, für die ground_textures zwar schon - allerdings das Repository nicht schreibbar ist (kein api.res.groundTextureRep.add()) - war das ein großer Spaß an manuellem Dateien erstellen mit Copy&Paste. Ich habe die wichtigsten mir bekannten Mods bereits unterstützt (NEP, 2 mods von Ingo und einige von Mariotator).


    Zum Problem des Upgradens: Es gibt jetzt ein spezielles Upgrade Fenster, mit dem man auch nachträglich einfach die Textur ändern kann. Das macht die Sache deutlich bequemer.


    Man kann sogar die Fläche flach machen, ist also gleichzeitig ein Planierer.


    Zusätzlich wollte ich mit dem Upgrader den Parameter alignmentDirMode von result.groundFaces zugänglich machen, um die Richtung der Textur zu ändern, was z.B. für Ackertexturen mit eindeutiger Richtung praktisch wäre. Leider musste ich auf die harte Tour lernen, dass man damit nur die Orientierung der Texturmaske verschiebt, aber die eigentliche Bodentextur bleibt anscheinend immer gleich in ihrer Ausrichtung..


    Eine andere Sache aus der ich bisher nicht schlau geworden bin ist die Priorität. Ich sehe kein System dahinter, welche Fläche oben ist, wenn man mehrere Polygone übereinander legt. Es gibt ja auch den priority Parameter, aber ich habe das Gefühl, der hat keinen Einfluss (kann sein, dass er nur für die Reihenfolge innerhalb einer Konstruktion zuständig ist?)


    Download: https://github.com/Vacuum-Tube…a687156ac85467cd87bbb.zip

    Gerne testen, für Feedback zur Usability und potentiellen Problemen.

    Falls es noch wichtige Mods mit Bodentexturen gibt, bei denen eine Anwendung mit dem Paver sinnvoll ist, sagt Bescheid.

  • Eine andere Sache aus der ich bisher nicht schlau geworden bin ist die Priorität.

    Wahrscheinlich ist das auch das Problem, die Grundflächen bei Gebäuden zu verändern. Oder habe ich etwas falsch gemacht? :/


    Wenn mit dem Tool ein Teil der Grundflächen von Gebäuden und die Straßenanbindungen der Gebäude wesentlich verbessert werden können, wäre das für mich eine große Hilfe.


    PS

    Falls es noch wichtige Mods mit Bodentexturen gibt, bei denen eine Anwendung mit dem Paver sinnvoll ist, sagt Bescheid.

    Kann man auch Daten selber einpflegen?

  • So, wie es aussieht, muß ich mir auch bei dieser Lösung wirklich scharfe Kanten abschminken (da muß höchstwahrscheinlich UG noch eine Menge programmieren, bis das geht, bzw. man muß Platten benutzen, die schmiegen sich aber nicht ans Gelände an). Aber was mir ähnlich stark fehlt: Es gibt einige Bodentexturen mit Vorzugsrichtung (Furchen im Ackerboden, Pflanzreihen, ...). Da stört mich immer, daß die zwangsweise parallel zu den Mapkanten sind. Siehst Du, VacuumTube, eine Chance, innerhalb Deiner Figur die Texturen auch gedreht aufzubringen? Ob mit Rotatlonsparameter oder parallel zur ersten Kante, die man definiert, wäre mir egal. Man kommt mit beidem zum Ziel.


    Und zu der Frage nach den wichtigen Mods: Wahrscheinlich alle :-) . Ich nutze zur Zeit einige von Mariotator und die Tropical-Texturen von Ingo-1111, bin aber etwas geizig mit dem RAM. Kann man an die Texturen-Liste rankommen? Dann brauchst Du keine Sonderlösung für jede neue Texturenmod.

    Ablativus mors de genitivo

  • Wahrscheinlich ist das auch das Problem, die Grundflächen bei Gebäuden zu verändern

    Ja wahrscheinlich, also die Frage konkurrierender Bodentexturen überlappender Konstruktionen. Die Häuser gewinnen in der Regel, aber nur manche Texturen können sich doch durchsetzen. Für mich erscheint es wie ein Glücksspiel, weil es nicht so wäre, dass das mit der priority erklärbar wäre (Texturen mit höherer haben sich wieder nicht durchgesetzt). Aber insgesamt scheint mehr priority im Durschnitt doch zu helfen. Ich habe gerade die Prioritäten erhöht und jetzt können deutlich mehr Texturen die vorhandenen Grundflächen überschreiben.


    Kann man auch Daten selber einpflegen?

    Klar, das ist möglich und prinzipiell nicht viel Aufwand.


    Rutel

    Ja scharfe Kanten sind wohl nur mit Meshes möglich.

    Eine solche Lösung, Texturen über Modelle ins Spiel zu bringen wäre aber sehr unflexibel: keine beliebige Form, verzerrt eine Skalierung die Textur, und nur in der Ebene praktikabel.


    Wenn du "Ingo's Vegetation" Mod meinst, die ist schon drin.


    Das mit der "Vorzugsrichtung" meinte ich hiermit:

    Zusätzlich wollte ich mit dem Upgrader den Parameter alignmentDirMode von result.groundFaces zugänglich machen, um die Richtung der Textur zu ändern, was z.B. für Ackertexturen mit eindeutiger Richtung praktisch wäre. Leider musste ich auf die harte Tour lernen, dass man damit nur die Orientierung der Texturmaske verschiebt, aber die eigentliche Bodentextur bleibt anscheinend immer gleich in ihrer Ausrichtung..

    Also meine Vermutung ist, dass Terrain Texturen immer eine feste Orientierung zur Karte haben. Ich hoffe jemand hier kann das bestätigen oder hat tatsächlich eine Lösung.

  • Release -----> PAVER 1.0 <-----


    Der Paver ist nun release-fertig.

    Es sind noch ein paar unterstütze Bodentexturmods hinzugekommen, darunter auch die kürlich erschienene Vegetation Extended von Ingo.

    Außerdem konnte ich zum Glück noch eine nervige Eigenart entfernen: Wenn die Liste Fokus hat und man Buchstaben drückt, wurde wild zu verschiedenen Einträgen gesprungen. Durch einen ungewöhnlichen Workaround konnte ich das umgehen.

  • Gerade eben habe ich die Mod zu ersten mal ausprobiert (im Karteneditor), um ein Weizenfeld zu erzeugen. (Mariotator "Sexy Vegetation")

    In der UI steht "paver/mod_mt_sexy_vegetation/mt_strauch9.lua", es funktioniert aber nicht.

    In der Log steht:

    Zitat

    Resource 'shared/mt_strauch9.lua' not found!


    Danach habe ich testweise irgendeine andere Textur gewählt - "Hafer jung" von NEP² - damit ging es dann.