Pinned Tutorial - Anleitung - Howto: Neue Fruchtsorten ins Spiel integrieren - Raps, Hafer, Custom1 (Zuckerrübe)

    • Tutorial - Anleitung - Howto: Neue Fruchtsorten ins Spiel integrieren - Raps, Hafer, Custom1 (Zuckerrübe)

      Hallo,

      ich habe mich einmal daran versucht zu schauen, ob und wie es möglich ist, neue Fruchtsorten in Cattle and Crops zu integrieren. Es besteht dazu leider keine Anleitung oder sonst eine Dokumentation, so dass ich es einfach nach bestem Wissen und Gewissen probiert habe. Es gab auch einige Hilfestellungen im Discord und auch hier im Forum, die ich versucht habe irgendwie für mich zu nutzen.

      Editiert werden müssen mindestens folgende Dateien:
      Diese Dateien definieren die neue Frucht, was man damit machen kann (Dreschen, häckseln, schwaden und auch, welche Nährwerte die jeweiligen Produkte diese Frucht haben sollen.
      • C:\Program Files (x86)\Steam\steamapps\common\Cattle and Crops\Assets\Data\Base.zip\config\fruits\filltypes.xml
      • C:\Program Files (x86)\Steam\steamapps\common\Cattle and Crops\Assets\Data\Base.zip\config\fruits\fruittypes.xml



      Die Datei "fruittypes.xml" hat eine interne Dokumentation, die wie folgt lautet:
      Fruit typeName:
      "Wheat", // 1
      "Grass",
      "Rape",
      "Barley",
      "Maize", // 5
      // reserved for further AGM Fruits, don't use
      "Grass2", // 6
      "Rye", // 7
      "Oat", // 8

      // for modding:
      "Custom1", // 9
      "Custom2",
      "Custom3",
      "Custom4",
      "Custom5",
      "Custom6",
      "Custom7",
      "Custom8" // 16
      Das bedeutet nach meinem Verständnis, dass es die Slots 1- 8 gibt, welche CNC "intern" genutzt werden. Diese sind auch bereits vordefiniert, was dort einmal für eine Frucht entwickelt werden sollte. Neben den bekannten wie Weizen, gerste, Mais, Roggen und "Grass" (Feldgras)!? sind dort noch 3 weitere Sorten definiert. Einmal "Raps" und einmal "Hafer" und einmal "Grass2".

      Weiterhin wird dort geschrieben, dass es die Slots 9 bis 16 gibt, welches mit "Custom", also beliebigen Fruchtsorten belegt werden können, durch Modifikationen. Insgesamt also maximal 16 Fruchtsorten (Dazu zählen nicht die Untervariationen, wie "gehäckselt" oder "Schwad" oder "Heu" oder "Stroh". 5 von 16 Sorten haben wir. Zwei sind mit Raps und Hafer "vordefiniert". "Grass2" ist entweder ein Platzhalter für irgendetwas oder er ist für die "Landschaft" reserviert, also das Gras am Feldrand etc.

      Meine Idee war es nun, dass ich einmal die zwei "reservierten" Fruchtsorten Raps und Hafer implementiere als auch einmal eine Frucht des Typs "Custom1". In diesem Fall habe ich einfach die "Zuckerrübe" genommen, da ich dafür die Wachstumswerte, NPK, BBCH etc. in einem anderen Zusammenhang schon erstellt hatte. Es kann aber auch jede andere Frucht sein.

      Ich habe dort also meine neue Frucht definiert und zwar wie folgt:
      <FruitType typeName="Custom1" fruitName="custom1" modelNamePrefix="vegetation/fruits/sugarbeet/sugarbeet" >
      <FruitStageFillType stage="Seed" path="Solid,Seed,Corny,Custom1" />
      <FruitStageFillType stage="Fruit" path="Solid,Fruit,Corny,Custom1" />
      <FruitStageFillType stage="ThreshedFruit" path="Solid,ThreshedFruit,Corny,Custom1" />
      <FruitStageFillType stage="Chaff" path="Solid,Chaff,Custom1" />
      <FruitStageFillType stage="Swath" path="Solid,Swath,Custom1" />
      <!--
      <FruitStageFillType stage="Crown" path="Solid,Crown,Custom1" />
      <FruitStageFillType stage="ChaffedWholePlant" path="Solid,ChaffedWholePlant,Custom1" />
      -->
      </FruitType>

      Meines Erachtens müsste die erste Zeile und die letzte Zeile ausreichen, da dort auf die custom1.xml verwiesen wird und dort die "FruitStageFillType" nochmals definiert werden. Irgendwie "doppelt". Beides habe ich getestet uns es ging, ich habe es aktuell aber so umgesetzt, wie es die Datei auch als Beispiel vorgibt, wer weiß, welche Abhängigkeiten es gibt.

      A propos Abhängigkeiten. Ich hatte hier meine ersten Probleme, dass die Früchte nicht im Spiel im Feldmenü sichtbar waren. Es scheint etwas Konflikte zu geben, wenn ich die Fruchtsorten "Rape" und "Oat" dort eintrage. Vermutlich, weil diese Fruchtsorten bereits in den ersten Slots 1 - 8 im Gamecode definiert sind, jedenfalls musste ich es dort weg lassen, damit es klappte. Custom1 muss aber immer drin stehen und ist vermutlich auch das, was zukünftige Modifikationen nutzen werden




      Im nächsten Schritt habe ich mir aus dem folgenden Ordner die "barley.xml" Datei kopiert und eine "rape.xml", eine "oat.xml" und eine "custom1.xml" erzeugt.

      C:\Program Files (x86)\Steam\steamapps\common\Cattle and Crops\Assets\Data\Base.zip\config\fruits\barley.xml <--- Originaldatei
      C:\Program Files (x86)\Steam\steamapps\common\Cattle and Crops\Assets\Data\Base.zip\config\fruits\rape.xml
      C:\Program Files (x86)\Steam\steamapps\common\Cattle and Crops\Assets\Data\Base.zip\config\fruits\oat.xml
      C:\Program Files (x86)\Steam\steamapps\common\Cattle and Crops\Assets\Data\Base.zip\config\fruits\custom1.xml


      In diesen Dateien muss man lediglich den Kopfbereich anpassen, indem man dort den neuen Fruchtnamen vergibt, einen neuen "stringId" Eintrag erstellt und die FruitStageFillTypes definiert, die für diese Frucht gelten sollen, also "Schwad", und "threshedFruit" (gedroschen) und natürlich die Saat (seed).
      Die Dateien sind in der Regel eine Kopie der "barley.xml". Am besten öffnet Ihr Euch die Barley.xml und eine der neuen Früchte und vergleicht die Dateien, an welchen Stellen etwas geändert wurde.

      Der restliche Teil der Datei sind dann die Wachstumsparameter, welcher Bodentyp, welche Temperatur, wieviele Sonnenstunden, wieviel Ertrag, wieviele Gradsummen, wieviele Wachstumstage, ...




      Im dritten Schritt habe ich die Datei "filltypes.xml" angepasst. Dort wird definiert, was die Frucht alles "kann", d.h. welche Inhaltsstoffe hat die Saat, der Schwad, die Frucht, das Gehäckselte. Auch wird dort definiert, wie die Animation aussieht, wenn überladen wird, abgekippt, gehäckselt, gedroschen. Und es wird eine "stringId" definiert, welche dann den text angibt, den man im Spiel lesen kann. Das ist auch für die Lokalisierung notwendig, so dass es für alle verschiedenen Sprachen möglich ist. Ich habe nur Deutsch und Englisch testweise angepasst bisher.

      Auch hier empfehle ich, die original xml gegen die modifizierte zu vergleichen. Ganz einfach gesagt, habe ich in jedem Abschnitt den teil "Barley" kopiert und dann für "Rape", "Oat" und "Custom1" verwendet. Minimale Anpassungen durchgeführt, also den Namen und den Pfad zur "Animation" und eben den stringId Eintrag.





      Im vierten Schritt habe ich mir die mitgeliefetren "String-Tables" angeschaut, also die .csv Dateien, welche alle Übersetzungen des Spiels beinhalten. Diese Datei liegt hier:
      C:\Program Files (x86)\Steam\steamapps\common\Cattle and Crops\Assets\Import\Base\strings\game.csv

      Diese Datei öffne ich in einem Notepad++ mit UTF-8 Codierung. In den oben genannten .XML Dateien habe ich StringIDs definiert für Raps, hafer, Custom1.
      Ich suche in den game.csv den passenden String Eintrag für "Barley" und erstelle dann passend dazu eine neue Zeile für den Eintrag von z.B. Raps, wenn es nicht schon existiert:

      z.B. diese Zeile für "Raps" und für" Gerste.
      Base/strings/game,FRUT-RAPE,Raps,Rape,Colza,Colza,Colza,Rzepak,Рапс,Repce
      Base/strings/game,FRUT-BARL,Gerste,Barley,Cebada,Orzo,Orge,Jęczmień,Ячмень,Árpa

      Anschließend speichere ich die game.csv wieder ab, sollte ebenfalls im UTF-8 Format sein, sonst meckert er Zeichenverlust an.

      Diese "game.csv" Datei kopiere ich in meinen "Mods-Import" Ordner im Benutzerprofil:
      C:\Users\Nachtfalke\Documents\My Games\Cattle and Crops\Mod-Import\game.csv

      Ich starte anschließend Cattle and Crops ins Hauptmenü und öffnet mittels "SHIFT+^" die Konsole. Links unten klicken und dann "Import CSV String-Table" auswählen und die game.csv angeben. Er importiert nur die csv und generiert für jede Sprache eine neue .txt Datei. Diese Dateien findet Ihr hier:
      C:\Program Files (x86)\Steam\steamapps\common\Cattle and Crops\Assets\Import\Base\strings\game.de_DE.txt

      Alle .txt Dateien kopiert Ihr wieder in Euren "Mod-Import" Ordner.
      C:\Users\Nachtfalke\Documents\My Games\Cattle and Crops\Mod-Import\game.de_DE.txt

      Öffnet Erneut Cattle and Crops, öffnet die Konsole "SHIFT+^" und wählt dann "Import String Table". Daraus werden dann ".str" Dateien erzeugt, welche die C4 Engine von Cattle and Crops lesen kann. Ihr findet die Dateien nun in Eurem "Mod" Ordner:
      C:\Users\Nachtfalke\Documents\My Games\Cattle and Crops\Mods\game.de_DE.str

      Ihr erstellt also von allen .txt Dateien eine .str Datei.





      Im letzten Teil kommt nun die Anpassung der bestehenden Map .wld (albergtal.wld). Das ist leider notwendig, weil die ganzen Händler dort die neuen Fruchttypen nicht kennen. Wir müssen also nach aktueller Erkenntnis mindestens folgende Anpassungen vornehmen:
      • Genossenschaft anpassen um Saatgut anzubieten, inkl. des Preises, des Vorrats, ..
      • Hafen Getreideverkauf um die "Frucht" anzunehmen und anzubieten, inkl. des Preises, des Vorrats, ...
      • Hafen Silos (Silagehändler), damit wir den ganzen gehäckselten kram loswerden, ebenso das lose Stroh
      • Hafen Ballenhändler, damit wir die Strohballen aus Hafer und Raps dort abgeben können, inkl. Preis
      • BGA Bunker (theoretisch ja, aber dieser nimmt alles an, was "Solid,Swath" ist oder "Solid,ThreshedFruit", er unterscheidet also nicht nach einzelnem Fruchttyp, sondern nimmt einfach alles einer Art an. Dadurch keine Anpassung notwendig.
      • Hof Getreidelager ist analog dem BGA Bunker, keine Anpassung notwendig.
      • Es kann durchaus sein, wenn wir mal "Kartoffeln" haben oder wirklich "Zuckerrüben", dann haben wir statt "Chaff" ein "Crown" und dann müssen wir dies auch woanders ergänzen.
      Die albergtal.wld befindet sich hier:
      C:\Program Files (x86)\Steam\steamapps\common\Cattle and Crops\Assets\Data\MAP-Albergtal.zip\world\albergtal\albergtal.wld

      Ich habe die Erfahrung gemacht, dass diese Datei alleine im "Mod" Ordner dann nicht im Editor geöffnet werden kann. Ich verfahre deswegen wie folgt, dass ich die gesamte "MAP-Albergtal.zip" Datei in den "Mod" Ordner entpacke. Auch ist es unbedingt notwendig, dass die modifizierten und neuen .xml Dateien der Früchte bereits verfügbar sind, da sonst der Editor bei Anpassungen der .wld die Anpassungen nicht speichert, da er die Frucht nicht kennt.

      Also die XML Dateien im korrekten Ordner-Pfad hier ablegen:
      C:\Users\Nachtfalke\Documents\My Games\Cattle and Crops\Mods\config\fruits\fruittypes.xml
      C:\Users\Nachtfalke\Documents\My Games\Cattle and Crops\Mods\config\fruits\filltypes.xml
      C:\Users\Nachtfalke\Documents\My Games\Cattle and Crops\Mods\config\fruits\rape.xml
      C:\Users\Nachtfalke\Documents\My Games\Cattle and Crops\Mods\config\fruits\oat.xml
      C:\Users\Nachtfalke\Documents\My Games\Cattle and Crops\Mods\config\fruits\custom1.xml


      Ich starte dann Cattle and Crops, öffne mit "SHIFT+^" die Konsole und wähle dann "Open World" und wähle die "albergtal.wld" aus.

      Das sieht dann wie folgt aus:


      Wichtig ist, dass wir das Fenster links unten haben, mit der Baumstruktur, das nennt sich "Scene Graph". Sollte der nicht da sein, mal irgendwo in ein anderes Fenster Klicken, rechtsklick und versuchen, dass man dort "Scene Graph" zur Auswahl bekommt.

      Im Baummenü suchen wir "harbor" und dann "TRADER" und sehen dort 5 Kästchen, die alle an der rechten Seite in Grau "Trader" hinterlegt haben.


      Dort einen Doppelklick auf den "harbor_grain_trader", also den Getreidehändler am Hafen. Dort in den Reiter "Properties" wechseln und ein neues "Trading Item" hinzufügen, bzw. 3 neue "Trading Items" für Raps, hafer und Custom1. (Solid,ThreshedFruit,Corny,Rape oder Solid,ThreshedFruit,Corny,Custom1) Hier definiert Ihr auch den Preis für An- und Verkauf. Ihr definiert, wie groß der Lagerbestand des Händler ist, ab welchem Füllstand der Händler nachkaufen soll und wie lange es dauern soll, bis nachgekauft wurde.


      Die anderen Trader dann analog bearbeiten und eben schauen, ob dort "Swath" oder "Chaff" angenommen werden soll. Am besten mit den bereits dort bestehenden "Trading Items" vergleichen.


      Die nächste Anpassung erfolgt dann bei "trader - cooperative", also der Genossenschaft. Dort geben wir an, dass wir Saatgut kaufen wollen. Saatgut ist "Solid,Seed,Corny,Custom1" oder "Solid,Seed,Corny,Rape"




      Abschließend auf "Save world" gehen um die Änderungen an der albergtal.wld zu speichern.



      Leider bin ich nun wollkommen hilflos und bekomme diese Dateien nicht als "Mod" in eine .zip gepackt. Deswegen behelfe ich mir damit, dass ich dise Dateien in die original "Base.zip und "Map-Albergtal.zip" packe. Ich überschreibe also die Originaldateien mit meinen modifizierten Dateien.



      Bekannte Probleme / Known Issues:
      • Raps, Hafer und Zuckerrübe haben keine eigenen Modelle, d.h. er wächst optisch auf dem Feld wie "Gerste". Es müsste also jemand die passenden Modelle erzeugen, denn ich habe weder die Software dafür noch die Kenntnisse darin so etwas zu tun.
      • Die Frucht "Zuckerrübe", welche als "Custom1" definiert ist, kann nicht geerntet werden. Eigentlich wächst sie genauso wie Gerste, müsste also "ThreshedFruit" sein und mit dem Tucano dreschen gehen, klappt aber nicht. Vielleicht findet jemand den Fehler und hilft mir.
      • Raps und Hafer können gedroschen werden, aber der Schwad kann nicht aufgenommen werden, weder im Silagewagen, noch in der Ballenpresse.
      • Die Wachstumsstufen für Raps und Hafer sind eine Kopie der Gerste, müssen also angepasst werden, mache ich aber erst, wenn die Ernte klappt. Die Wachstumsstufen für "Zuckerrübe" ist angepasst, aber nicht geprüft, ob es auch wirklich so passt, Stichwort: "Balancing".
      • Die Zuckerrübe ist als "Getreide" definiert, also "ThreshedFruit" und als "Chaff" und "Swath", also gehäckselt und geschwadet. Das ist natürlich Unsinn, es müsste gerodet (Fruit) und geköpft "Crown" sein, aber das bedeutet auch, dass man extra Maschinen dafür benötigt, deren "Cutting Controler" dann auch "Crown" kann. Lässt sich aber lösen.
      • Preise von der Früchte sind willkürlich gewählt, meistens sehr hoch, damit ich erkennen konnte, dass es "funktioniert" hat.




      Anbei die XML Dateien um die neuen Früchte zu integrieren. Sie reichen alleine nicht aus, helfen aber bei der Veranschaulichung. Ebenso die Strings zur Übersetzung:
      New_Fruits_XMLs.zip


      Den "CNC Gameplay Mod" findet Ihr hier mit angepassten Gebäuden und Händlern, die diese Früchte anbieten.
      CNC-Gameplay-Mod




      Grüße
      Nachtfalke
    • Es gibt Fortschritte. Im Discord konnte man mir gute Tips bzw. die Lösung für mein Problem nennen. In den Maschinen und Schneidwerken muss der "Cutting Controller" bzw. dort wo er verwendet wird noch angepasst werden. Um genau zu sein, muss man dort angeben, welche Früchte denn geschnitten werden dürfen. Ein Vario Schneidwerk kann z.B. Gerste, Raps, Weizen dreschen, aber kein Mais. In den Standardeinstellungen hatte das Vario bereits "Hafer" und "Raps" definiert, weswegen es schneiden ging, aber kein "Custom1".

      Schwad ging gar nicht aufnehmen, weil die Ballenpresse weder Raps, Hafer noch Custom1 im Cutting Controller definiert hatte.

      Ich werde versuchen, in den nächsten Tagen (oder länger) nochmal
      • Die Anleitung zu erweitern
      • Die XML Dateien und String Tables (Sprachen) zu erweitern
      • Einige Maschinen einmal anzupassen und bereitstellen, so dass man es einmal testen kann
      • Perspektivisch auch die NPK Werte, den Ertrag, die Preise, die Wachstumsstufen für Hafer und Raps anzupassen. Zuckerrüben (Custom1) haben bereits eine mehr oder weniger gut passende XML, aber noch keine Preise.


      Was ich jetzt definitiv noch suche ist:
      • 3D Modelle für Hafer, Raps und Zuckerrüben
      • Maschinen für diese Früchte, vor allem Zuckerrüben
    • Hallo,

      hier nun die Anleitung, wie man die bestehenden Maschinen anpassen muss, dass diese auch Raps, Hafer und Custom1 Früchte dreschen können.

      Ich zeige dies am Beispiel eines
      • Claas Vario Schneidwerks für den Tucano
      • Der Claas Quadrant Ballenpresse


      Zuerst einmal kopiert Ihr Euch diesen ordner wieder in Euren "Mod" Ordner:
      C:\Program Files (x86)\Steam\steamapps\common\Cattle and Crops\Assets\Data\Base.zip\machines\

      Anschließend startet Ihr CNC und öffnet im Menü die Konsole und klickt auf "Open World". Ihr wählt dort dann das Vario Schneidwerk aus, 930.wld



      Im Editor geht Ihr oben auf "Editor", dann links im Menü runter Scrollen und "Controller" anhaken, dann "Cutting" auswählen und unten "Find Next" klicken. Es wird dann im "Scene Graph" das "Teil" angezeigt, was diesen Cutting Controller nutzt. Es können, je nach Maschine, mehrere Cutting Controller eingebaut sein, dann eben alle entsprechend anpassen:


      Ihr führt einen Doppelklick aus und wechselt in den Reiter "Controller". Dort seht Ihr, dass der Cutting Controller vorausgewählt ist, Ihr scrollt ganz nach unten und setzt die Haken entsprechend. Das anhaken, was Eurer Vario Schneidwerk "ernten" können soll.



      Bei der Ballenpresse müsst Ihr das Gleiche durchführen wie oben. Auch dort gibt es einen "Cutting Controller" und Ihr definiert jetzt alle die Früchte deren Schwad Ihr einsammeln wollt.




      Diesen "Cutting Controller" haben sehr viele Maschinen, hier eine möglicherweise unvollständige Liste:
      • Heuwender
      • Schwader
      • Ballenpresse
      • Silagewagen
      • Mähwerke
      • Maisgebiss
      • Direct Disc Schneidwerk
      • Vario




      ######## EDIT 2021-10-29 22:20 ############

      Bisher gibt es im Spiel keinen Fruchttype der "Solid,Crown", also das geköpfte einer Rübe oder Kartoffel, verwendet, da es weder die Frucht noch die Maschinen dafür gibt. Deswegen muss man es anpassen:

      In der Frucht "Custom1", was einmal eine Zuckerrübe werden kann, die man (a) säen (Solid,Seed) können muss, (b) die Frucht unter der Erde ernten (Solid,Fruit) und (c) das Grünzeug von der Pflanze abschneiden, also köpfen muss (Solid,Crown).

      In der XML definieren wir das wie folgt:

      XML Source Code

      1. <FruitType typeName="Custom1" fruitName="custom1" modelNamePrefix="vegetation/fruits/barley/barley" stringId="FRUT-SUGA-SUMM"><!-- path in folder -->
      2. <FruitStageFillType stage="Seed" path="Solid,Seed,Custom1" />
      3. <FruitStageFillType stage="Fruit" path="Solid,Fruit,Custom1" />
      4. <FruitStageFillType stage="Crown" path="Solid,Crown,Custom1" />
      Um das ernten zu können, muss erst einmal der "Tank" des Erntefahrzeuges, auch der zukünftigen Anhänger, diesen Fruchttype kennen.
      Dazu müssen wir, wie hier beispielhaft, nicht realistisch, am Tucano den "TankController" anpassen:



      Wir müssen weiterhin dem "Erntewerkzeug", also in diesem Fall dem Vario sagen, wenn es die Frucht geerntet hat, welcher Typ es ist. Das muss zum Tank passen. Bei getreide ist es "ThreshedFruit", bei der Zuckerrübe oder Kartoffel wäre es die Frucht im Boden (Fruit) oder eben das abgehackte Grünzeug (Crown). Das ist im Screenshot der "Output Filltype". Das gibt man im "FruitCollector" an.







      Grüße
    • Es ist auch erst einmal nur eine Anleitung, damit die Modder, die damit etwas anfangen können, hoffentlich schneller wissen was zu tun ist, wenn nicht sowieso schon bekannt.

      Abgesehen davon sind aktuell auch noch keine sinnvollen Wachstumsstufen bei Hafer, Raps und Zuckerrüben hinterlegt und vor allem keine Grafiken, es sieht also noch aus wie Gerste.

      Du verpasst also noch nichts ;)
    • Hallo,

      kann bitte jemand die Bedeutung der Wachstumswerte und Düngerverbrauchs die in die xml kommen?
      Hier ein kleiner Auszug aus der Hafer XML. Stand v008 "CNC-Gameplay-Mod_v008\Base\config\fruits\oat.xml"
      1. Wie sind die x und die y Werte zu interpretieren hier am P Beispiel?
      2. Bedeutet <potassium usage="20.00"></potassium> den Gesamtverbrauch innerhalb dieser BBCH Suffe?
      3. Was ist hiermit gemeint? <temperatureSum>446</temperatureSum>
      Die oat.xml enthält zwar auch einige andere Werte die ich nicht ganz interpretieren kann, aber das hier wäre ein Anfang für mich.
      Den Mindestwachstum, egal wie falsch man spielt, habe ich mal auf 0.5 gelassen, so als Gnade für Anfänger
      <growthTimeYieldFactor factor="0.5" factorFast="1.4" factorSlow="0.5" min="0.5" max="1.3" />

      Vielen Dank schon mal


      <potassium usage="0.0">
      <value x="0" y="0.0" />
      <value x="25" y="0.3" />
      <value x="50" y="0.6" />
      <value x="60" y="1" />
      <value x="160" y="1" />
      <value x="180" y="0.6" />
      <value x="240" y="0.3" />
      <value x="255" y="0.0" />
      </potassium>
      <nitrogen usage="27.00"></nitrogen>
      <phosphor usage="5.00"></phosphor>
      <potassium usage="20.00"></potassium>
    • Die Zusage values geben bei x den Wert an NPK, der auf dem Feld ist. Der y wert gibt an, wie gut die Pflanze dann wächst.

      Zwischen 60 -160 NPK auf dem Feld wächst es 1.0 = 100%

      Ist mehr oder weniger NPK auf dem Feld, wächst es eben schlechter. Diese Veränderung siehst du auch im Feldmenü an den Balken und den Farben die von rot nach grün gehen.

      und die letzten 3 Zeilen geben an, wieviel NPK in dieser BBCH Stufe verbraucht wird.

      Die Summe dieser 3 Zeilen aller BBCH Stufen von 0-9 ergibt automatisch das, was man im Feldmenü rechts oben sieht. Das Feldmenü addiert also alle diese Werte der XML.

      TemperaturSum gibt die Gradsumme an, die erreicht sein muss für die nächste BBCH Stufe.

      Beispiel 300 bedeutet, es muss z.B. 30 Tage mit 10° Geben (30 x 10 = 300) oder 20x15°

      Das sind die positiven Durchschnittstemperaturen pro Tag.

      Achtung.
      Das zählt nur, wenn die anderen Werte erfüllt sind,d.h.
      MinTemp 11 Grad bedeutet, dass ein Tag, an dem es nur 10 Grad warm ist, kein Wachstum erfolgt und es auch nicht an die Gradsumme angerechnet wird.

      Weiterhin gibts da einen Parameter, SunHour oder so irgendwie, das gibt an, wieviel Stunden am Tag die Sonne scheinen muss, bzw. Eigentlich nur die Zeitspanne von Sonnenaufgang bis Sonnenuntergang. Also quasi die Tageslänge wie hier zu finden.
      sunrise-and-sunset.com/de/sun/deutschland/wetter/2022

      Damit lässt sich quasi steuern, dass die Frucht nicht bei 8 Sonnenstunden im Winter wächst.

      Kann man alles pro BBCH angeben.

      Yield sind dezitonnen an gedroschener Frucht.
      Chaff sind dezitonnen and gehäckselter Frucht.

      Swatch yield ist glaube ich irgendwie anders, geht da um Quadratmeter oder Kubikmeter. Eine Zelle im Spiel hat 0.25 Quadratmeter. Also 4 Zellen = 1m2

      Die Erträge die du da eintipst zeigen sich auch im Feldmenü. Die BBCH Stufe mit dem höchsten yield oder höchsten Chaff wird im Feldmenü angezeigt.

      Ganz oben in der XML kann Mann sagen, dass es "Swath" im Feldmenü angezeigt werden soll, bei fieldgrass gibt es das.


      Winterhafer muss im Herbst gesät werden. Habe ich meine ich im Feldmenü rechts oben hin geschrieben, welcher Monat es sein muss.
    • Wenn es dir nur um die Schwierigkeit geht, dann schalte sich einfach im Spielmenü die Funktion "Wachstumsgeschwindigkeit hat Auswirkungen auf Ertrag" aus und schon ist es immer 100%.

      Dann musst du nur auf Dünger achten und Bodenbeschaffenheit. Wachstum erfolgt dennoch wie in den BBCH definiert an Hand der Temperatur und Sonnenstunden.
    • Nachtfalke wrote:

      Wenn es dir nur um die Schwierigkeit geht, dann schalte sich einfach im Spielmenü die Funktion "Wachstumsgeschwindigkeit hat Auswirkungen auf Ertrag" aus und schon ist es immer 100%.

      Dann musst du nur auf Dünger achten und Bodenbeschaffenheit. Wachstum erfolgt dennoch wie in den BBCH definiert an Hand der Temperatur und Sonnenstunden.
      Vielen, Vielen Dank für die sehr ausführliche Antwort. Mir geht es um die Funktionsweise. Das ist es was das Spiel hier so besonders faszinierend macht. Ich habe ja jetzt Input von dir und kann weiter wusseln. Weitere Fragen kommen bestimmt ;)
    • Anhand deiner obigen Erklärung habe ich mal die Werte in meiner\Base\config\fruits\oat.xml (CNC-Gameplay-Mod_v008) angepasst. Der Verbrauchder einzelnen Düngestoffe ist gleichgeblieben. Nur die Mindestwerte die auf demFeld vorhanden sein müssen, habe ich nach unten korrigiert.
      Wenn Winterhafer z.B. über seiner ganzen Entwicklung insgesamt etwa 58 P verbraucht, dann passt 60 als Mindestanforderung für 100% Entwicklung nicht. Zumindest erscheint mir das schlüssig.
      Vielleicht liegt es daran, dass die Hafer-xml auf die von Gerste ruht. Die anderen Werte für Sonne, Wind, Regen usw. müssten wahrscheinlich auch weiter angepasst werden.

      <potassium usage="0.0">
      <value x="0" y="0.0" />
      <value x="25" y="0.3" />
      <value x="50" y="0.6" />
      <value x="60" y="1" />

      <value x="160" y="1" />
      <value x="180" y="0.6" />
      <value x="240" y="0.3" />
      <value x="255" y="0.0" />
      </potassium>
      <nitrogen usage="27.00"></nitrogen>
      <phosphor usage="5.00"></phosphor>
      <potassium usage="20.00"></potas

      The post was edited 2 times, last by wallsingham ().

    • So funktioniert es nicht bzw. so ist die XML nicht konfiguriert oder ich habe es falsch erklärt.

      Der X-Wert entspricht dem P Wert auf dem Feld. Entsprechend des P-Gehalts auf dem Feld (x-Wert) wächst die pflanze eben im optimalen Bereich (y-Wert = 1.0) oder eben schlechter. (y-Wert y 1.0).

      In Deinem Ausschnitt würde die pflanze optimal (y = 1.0) wachsen, wenn auf dem Feld mindestens 60 kg/ha P vorhanden sind und maximal 160 kg/ha P.

      Wenn die Pflanze nun 58P über den gesamten Wachstumszeitraum benötigt, dann musst Du quasi 118kg/ha P düngen, denn die Pflanze verbraucht 58kg/ha und der P Gehalt auf dem Feld darf nicht unter 60kg/ha fallen, da es sonst aus dem Optimum fällt.

      Anders ausgedrückt bedeutet das, dass die Pflanze bereits schlechter wächst, wenn der Gehalt an Nährstoffen unter 60 kg/ha liegt und nicht, wie man vielleicht denken würde bis 1kg/ha noch super wächst und erst wenn der Dünger komplett aufgebraucht, also 0 kg/ha auf dem Feld ist, aufhört zu wachsen.

      Es geht hier ja auch um optimales Wachstum, d.h. die pflanze hat immer sehr viele Nährstoffe zur Verfügung, muss sich nicht "anstrengen" diese zu suchen bzw. mit den Wurzeln zu beziehen. Es liegt einfach in optimal gelöster Form, direkt verfügbar vor. Sinkt der Nähstoffgehalt im Boden unter den Schwellwert ab, dann wird es für die Pflanze schwieriger, an diese Nähstoffe heran zu kommen, sie schafft es zwar, muss aber Energie dafür aufwenden, die sie nicht in Fruchtwachstum stecken kann.

      Ich hatte dieses System damals auch schon mal in Frage gestellt und laienhaft gesagt:
      "sind die Nährstoffe auf dem Feld > 0, dann wäcsht die Pflanze. Egal ob da 10kg/ha liegen oder 100kg/ha. Es sind Nährstoffe da, also wächst sie. Lediglich bei zu vielen Nährstoffen könnte es zu einer Überdüngung kommen, welche die Pflanze schädigen."

      In dieser Vorstellung hätte der Abschnitt womöglich wie folgt ausgesehen:

      <potassium usage="0.0">
      <value x="0" y="0.0" />
      <value x="1" y="1.0" />
      <value x="160" y="1.0" />
      <value x="180" y="0.6" />
      <value x="240" y="0.3" />
      <value x="255" y="0.0" />
      </potassium>

      Keine Nährstoffe (X-Wert) bedeutet kein Wachstum (y-Wert).
      Egal wieviele Nährstoffe, hauptsache nicht mehr als 160 und die Pflanze wächst optimal (y-wert 1.0).
      Mehr als 160 kg/ha Nährstoffe und die Pflanze ist überdüngt.


      Hoffe das wurde etwas klarer ?
    • wallsingham wrote:

      Soll hiermit vermieden werden dass bei BBCH 3 gehäckselt werden kann?
      Ob etwas gehäckselt werden kann oder nicht, das entscheidet der "Cutting Controller", der im Jaguar oder Tucano verbaut ist. Dieser gibt eine BBCH Stufe an, ab der er eine Frucht häckseln kann.

      Die XML Werte, die Du gezeigt hast, definieren also nicht "ob" gehäckselt werden kann oder nicht, sie definieren lediglich den Ertrag, der erzielt wird bei dieser BBCH Stufe.

      Ich habe ihn in der Regel nie auf 0.0 gesetzt, weil das ggf - jenachdem wie programmiert wurde - vielleicht zu problemen führt. Deswegen habe ich einen kleinen Wert nahe 0.0 angenommen, nämlich 0.01 Dezitonnen pro ha. Das ist für die mathematische Berechnung denke ich "besser", für den Spieler macht es aber keinen Unterschied, da er 0.01 Dezitonnen auch nicht also guten Ertrag wahrnehmen wird ;)
    • Nachtfalke wrote:

      Die XML Werte, die Du gezeigt hast, definieren also nicht "ob" gehäckselt werden kann oder nicht, sie definieren lediglich den Ertrag, der erzielt wird bei dieser BBCH Stufe
      genau. So war es auch gemeint.

      Ich überlege gerade ob es sinvoll ist die Werte für die Bodendichte geringfügig zu erhöhen da Hafer ja Wintergetreide ist und oft nach der Aussaat gewalzt wird.
    • Nachtfalke wrote:

      In Deinem Ausschnitt würde die pflanze optimal (y = 1.0) wachsen, wenn auf dem Feld mindestens 60 kg/ha P vorhanden sind und maximal 160 kg/ha P.
      Du hast es richtig erklärt und ich denke ich habe es auch richtig verstanden. Der Ausschnitt mit optimalen Wachstum zwischen 60 und 160 ist der aus der oat.xml aus der V008. Und das ist der Ausschnitt den ich testweise bei mir lokal geändert habe.

      The post was edited 1 time, last by wallsingham ().

    • wallsingham wrote:

      Nachtfalke wrote:

      In Deinem Ausschnitt würde die pflanze optimal (y = 1.0) wachsen, wenn auf dem Feld mindestens 60 kg/ha P vorhanden sind und maximal 160 kg/ha P.
      Du hast es richtig erklärt und ich denke ich habe es auch richtig verstanden. Der Ausschnitt mit optimalen Wachstum zwischen 60 und 160 ist der aus der oat.xml aus der V008. Und das ist der Ausschnitt den ich testweise bei mir lokal geändert habe.
      Dann verstehe ich Deinen Satz hier nicht:

      Wenn Winterhafer z.B. über seiner ganzen Entwicklung insgesamt etwa 58 P verbraucht, dann passt 60 als Mindestanforderung für 100% Entwicklung nicht. Zumindest erscheint mir das schlüssig.

      Die x und y Werte definieren nicht, was Hafer über seinen Zeitraum benötigt sondern nur, was auf dem Feld sein muss. Es könnte dorch auch 200 - 237 als x wert stehen und y 1.0


      Was der Hafer verbraucht, nämlich 58kg/ha, das ist die Summe aller BBCH Abschnitte mit diesen Werten:
      <nitrogen usage="27.00"></nitrogen>
      <phosphor usage="5.00"></phosphor>
      <potassium usage="20.00"></potassium>

      Die Summe aller "phosphor usage" für BBCH 0 bis BBCH 9 ergeben in Summe 58.



      Was die Anforderungen an den Boden angeht, die habe ich glaube ich einfach übernommen. Das sind auch Werte, die man so in der Literatur nicht liest.


      Bei den Bodenwerten gilt es mit x und y genauso wie beim Dünger.
      Es gibt dort aber noch "fraction"

      <groundCrumblinessCrumb fraction="0.25">


      Es gibt 4 Bodenwerte und "fraction" gibt ab, zu wieviel Prozent dieser Bodenwert in die Berechnung einfließt. Auch das kann man pro BBCH definieren. Krümeligkeit hat in BBCH 0 und BBCH 10 ggf mehr Einfluß als bei BBCH 80. Wenn Du "fraction" auf 0.0 setzt, dann wird diese Eigenschaft im Feldmenü ausgeblendet bzw. es steht dort dann sowas wie "hat keinen Einfluß in dieser BBCH Stufe".



      Und falls Du Dich wunderst, bei BBCH9 steht überall dieses hier:

      <optimalGrowthTime>0</optimalGrowthTime>
      <temperatureSum>0</temperatureSum>


      Wenn der Wert auf 0.0 steht, dann scheint das System es einfach zu überspringen und nach BBCH 9 kommt BBCH 10 und das bedeutet "abgeerntet".
      Damit simuliere ich quasi das Absterben der Pflanzen. BBCH 89 ist die letzte Stufe wo man ernten kann, BBCH 90 ist "tot".

      Im Vanilla Game stehen bei BBCH 9 überall Werte, aber das Vanilla Game springt nicht von BBCH 90 irgendwann automatisch nach BBCH 10 (abgeerntet), sondern bleibt dort für immer stehen. Das hat mir nicht gefallen, dass man einfach nur spulen musste, bis alles BBCH 90 ist und dann ernten. Ich wollte, dass es auch irgendwie einen "Zeitdruck" gibt, die Ernte rein zu holen.