[LS13 Tut] Eigene Formen für kaufbare Felder

  • Hallo Community,


    ich kann nicht sagen, dass dies die beste Wahl für verschiedene Formen von kaufbaren Feldern im LS ist, vielleicht gibt es welche, die besser funktionieren. Auf jedenfall funktioniert diese schon einmal ganz gut.


    Nützliche Informationen von Giants waren, dass die Felder trianguliert sind. Bei rechteckigen Feldern müsste demnach auch das triangulierte Feld (bei einem Modell wäre es einfach ein Poly) noch einmal virtuell an selbigen angehangen werden. Ich selber muss noch gucken, in wie weit es sich jetzt bei meiner "Version" dazu addiert, bzw. wie man das ausstellen kann.


    Zumindest behaltet erst einmal trianguliert im Kopf. Ich werde das Tutorial abändern, wenn ich mehr Gewissheit habe, versprochen!


    Vorab solltet ihr euch einfach auf der Standardmap die field01 TG klauen. Dort sind bereits alle Attribute, Trigger und TG's verbaut.



    1. Die eigene Form des Feldes triangulieren:


    Beispiele:



    2. Die Felder innerhalb des Giants Editor anpassen:



    Jedes "Poly" wäre ein eigener "cornerX_1" + die beiden untergeordneten Transform Groups (Childs).
    | für X >= 1 und aufsteigend pro weiterem trianguliertem Bereich im Feld.


    Beispiel:



    Die ganzen Ecken jedes "cornerX_1" sind die eigenen "cornerX_2" und "cornerX_3".
    _________________________________________________________________________



    Im Großen und Ganzen war es das jetzt auch schon! ^^


    Fehler, Ideen und Kritik einfach unten reinschreiben, ich lerne gerne dazu!


    Mit freundlichen Grüßen,
    pfreek


    PS: Falls Ihr das Tutorial auf eurer Seite veröffentlichen wollt, wäre ein Direktlink zu diesem Thread die höflichste Möglichkeit:
    Fuchsbau original Link (Ein bissl die Bekanntheit steigern :D )

  • Hallo!


    Ich möchte hier mal meine Ergebnisse zum Thema "Wie mache ich das ganze ohne Blindflug" mitteilen.


    Ihr braucht:

    • cultivator_density.grle in png umgewandelt (mittels grle-converter)
    • Ein Bildbearbeitungsprogramm (Paint.net, Photoshop...)
    • Ein Vektorgrafik-Programm (illustrator, corel... )
    • Eine Excel-Tabelle zum Umrechnen der Koordinaten -> hier könnt ihr meine Version für Excel oder OpenOffice herunterladen


    Vorgehensweise:

    • cultivator_density.grle in einem Bildbearbeitungsprogramm öffnen. Wenn man nur schwarz sieht, ist alles in Ordnung ;)
    • Farbbereich schwarz auswählen (RGB 0,0,0)
    • Ausgewählten Bereich mit einer hellen Farbe füllen, so dass man die Felder gut erkennen kann

    • Bild speichern
    • Im Vektorgrafikprogramm ein neues Dokument mit 2048 x 2048 px anlegen
    • Nullpunkt in die Mitte legen
    • cultivator_density.png importieren und falls nötig auf Arbeitsflächengröße skalieren
    • neue Ebene über der cultivator_density anlegen
    • Ebene mit der cultivator_density am Besten sperren
    • nun für jedes Feld beliebig viele Rechtecke/Polygone* zeichnen, so dass eine gute Abdeckung entsteht. Ich mache das nicht bis in die kleinste Ecke, weil es den Aufwand nicht wert ist. Wenn jemand die freien Flächen für sich im Spiel nutzt, ist ihm eh nicht mehr zu helfen :D
    • mein Beispiel, wo ich mal etwas mehr Polygone verwendet habe, sieht dann so aus:

    • Nun müssen wir für jedes Rechteck/Polygon von drei Eckpunkten die Koordinaten (zusammenhängend "L-Form"!) in die Excel-Datei übertragen (Bereich X-orig und Y-orig). Um die Eckpunkte auswählen zu können, muss man in den meisten Grafikprogrammen den Auswahlpfeil wechseln.
    • Da corner02 und corner03 ihren Ursprung in corner01 haben, lasse ich das automatisch umrechnen und TransformGroups erstellen:

    • Die KOMPLETTE Spalte H, in der die fertigen TransformGroups stehen, wird nun kopiert.
    • Neues Tabellendokument erstellen
    • Einfügen bzw. Inhalte Einfügen und dabei alles außer Formeln einfügen, also die reinen Daten
    • Nun noch zweimal Suchen/Ersetzen: doppelte Anführungszeichen statt einfach ( ' -> " ) und Punkt statt Komma ( , -> . )
    • Datei als csv OHNE Texttrenner speichern
    • Transformgroups können nun mit dem Texteditor in die i3d eingefügt werden!
    • Abschließend die i3d einmal im Giants-Editor öffnen und speichern, damit die nodeId´s geändert werden


    *Achtet darauf, bei Polygonen immer die komplette Seite zu verschieben, also die Linie und nicht einzelne Eckpunkte.

    Ein Endgültiger Test steht noch aus. Habe es auf der Standardmap aber auf einem Feld erfolgreich getestet.
    Grobe Denkfehler möge man mir bitte mitteilen ;)


    Gruß
    webalizer


    P.S. Das "triangulieren" aus der Anleitung oben stimmt nicht, wurde hier aber leider nie geändert! Es sind Polygone und ich nehme der Einfachheit halber Rechtecke.

  • Wozu eine ungenaue PDA-Map verwenden, wenn man doch eine 100% genaue cultivator_density.grle hat?


    Im Großen und Ganzen sieht das aber schon recht ordentlich aus. Mir persönlich wäre das zwar noch zu ungenau (ich bin da sehr pingelig), aber im Vergleich zu den meisten Maps, die ich bisher gesehen habe, schon um Welten besser.
    F8 ist übrigens ein schönes Beispiel dafür, wie man mit einem Parallelogramm eine noch deutlich bessere Abdeckung hinbekommt. Da braucht man nur das große Rechteck etwas scheren und schon hat man die Ecke links unten auch fast vollständig abgedeckt.

  • Ein Programm dafür schreiben ist einfach. Zum triangulieren gibts schon fertige Libraries/Funktionen. Und wenn man bei einem Dreieck die Kantenmitten miteinander verbindet hat man auch schon drei Parallelogramme. Ohne Optimierung bekommt man da aber massenweise Parallelogramme raus. Ein Rechteck würde dann mit 6 Parallelogrammen abgedeckt werden, anstatt mit einem. Also ziemlich gepfuscht. Für einfache Formen ließe sich da sicher etwas machen, damit man da trotzdem mit wenigen Parallelogrammen auskommt. Bei etwas komplexere Formen wird man so aber trotzdem nicht um die überflüssigen Parallelogrammen rumkommen.
    Um die Felder sauber abzudecken, also ohne massenweise überflüssige Parallelogramme, ist mir kein Algorithmus bekannt. Auch im Netz hab ich dazu nix gefunden.




    Edit: Grasflächen braucht man nicht abdecken. Nicht gekaufte Felder können trotzdem geerntet werden. Nur Bodenbearbeitung, also grubbern, säen und düngen gehen bei nicht gekauften Feldern nicht. Die drei Sachen macht man bei Wiesen in LS aber sowieso nicht.

  • Also ich finde das TUT von Tom schon mal eine sehr gute Sache.Wenn es natürlich noch etwas einfacher geht ist das auch gut.
    Übrigens bis auf eine Anfangswiese habe ich immer alle kaufbar den in real kannst ja auch nicht dem Nachbarn seine Wiese mähen grins.
    Freue mich auf Updates.


    Grüße Frank

  • An eine automatische Felderkennung dachte ich auch nicht.


    Die Rechtecke / Parallelogramme sollte man schon selber zeichnen um den passenden Kompromiss aus Nutzen und Performance zu finden.


    Viel mehr ging es mir um den "unschönen" Umweg über Excel und das zeitraubende setzen der Transformgroups.


    - - - - -


    Ich persönlich würde Grünland dennoch mit Grenzen versehen. Gehört mir die Wiese nicht, fahre ich dort erst gar nicht drauf :D

  • O.K. Bis die Vollautomatik fertig ist, hier noch eine kleine Erleichterung Excel -> i3d


    Möglichkeit a)
    Im Giants-Editor nur die benötigten Transformgroups anlegen, ohne sich um die Koordinaten zu kümmern
    Möglichkeit b)
    Transformgroups direkt zusammen mit dem folgenden Schritt in Notepad++ bearbeiten/erstellen


    Dann habe ich in die Exceltabelle zwischen X-real und Z-real noch die Spalte Y-real eingefügt mit den Werten 100/0/0.
    Jetzt kann man die Tabelle im CSV-Format speichern und als Trennzeichen zwischen den Spalten ein Leerzeichen verwenden. Das hat den Vorteil, dass man bereits einen fertigen Inhalt für den "translation="-Eintrag in der transformgroup hat. Somit muss man nur einmal copy&paste machen
    ;)


    Achtung! Nachdem ICH gestern alles auf die mittelschwere Art gemacht habe, jetzt in der Anleitung die leichte :D

  • Hi Leute,


    ich habe das Tutorial mal benutzt um meine Felder zu berechnen. Die Vorgehensweise ist schon sehr gut, wenn auch sehr zeitaufwendig.
    Ich habe dazu eine eigene Exceltabelle (Office 2007) erstellt, unter Vorlage der oben angehefteten, wodurch sich einige Vorteile ergeben.


    negativ an der Herangehensweise:
    - sehr Zeitintensiv
    - benötigte Programme (wie oben beschrieben)
    - erhöhter Arbeitsaufwand


    Probleme mit der Exceltabelle:
    - Die Berechnung geht nur bei rechteckigen Feldern, die Ausrichtung ist dabei egal.
    - Überschneidungen wären auch zu vermeiden, da die Fläche sonst doppelt berechnet wird
    - es ist wichtig, dass ihr die Bildröße der Datei im Vektorprogramm halbiert (wenn density.grle = 4096px groß, dann Bildgröße im Vektorprogramm zu 2048px halbieren) - Die Feldgrößen stimmen sonst nicht



    Bei meinen unförmigen Feldern habe ich die Rechtecke so geschoben, dass
    sie sich nicht überlappen, und gleichmäßig Feldfläche nicht mit
    einbeziehen, wie die Fläche außerhalb des Feldes mit einbezogen wird.
    Auf diese Weie ergeben sich zwar Abweichungen, die grobe Fläche wird
    aber trotzdem ausgerechnet. (Bsp: ich vernachlässige 20m² Feld, habe
    aber dafür 20m² "Straße oder sonst was - nur kein Feld", wodurch die
    Fläche wieder stimmt)


    positiv:
    - Feldgrößenberechnung anhand der Koordinaten
    - Preisberechnung anhand eines festgesetzten Preises pro ha
    - Erstellung der TransformGroupeinträge wie vorher auch, aber ohne notwendiger Textkonvertierung oder ähnliches, Copy & Paste reicht


    Angehangen ist meine komplette Exceltabelle für die Map Mönchwinkel, in der auch Preise für kaufbare Wiesen stehen (kann normal nicht für andere Maps verwendet werden, ist der Vollständigkeit halber trotzdem dabei).


    Ich hoffe das hilft euch etwas weiter.

  • Hi!


    Der Vollständigkeit halber sei erwähnt, dass die automatische Feldpreisberechnung nur dann funktioniert, wenn es ein rechteckiges Feld mit nur einer TransformGroup ist, oder sich mehrere TG´s nicht überlappen. Letzteres dürfte bei unregelmäßigen Feldern unmöglich sein.


    Dafür gibt es aber eine einfache Lösung:
    Im Bildbearbeitungsprogramm in der oben verwendeten cultivator_density.grle mit dem Zauberstab-Werkzeug jeweils ein Feld auswählen und dann die Anzahl der gewählten Pixel durch 40000 teilen = Hektar.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!