Schritt-für-Schritt Tutorial: Wie du für LS25 neue Fruchtarten (z. B. Rye, Hops) mit fruitTypes.xml, Frucht-XMLs, fillTypes und i3d-Modellen hinzufügst.
Inkl. Debug-Tipps, Beispielen und nützlichen Links zur Forbidden-Mods Filebase und GIANTS Forum.
1) Kurzer Überblick — was muss wohin
- fruitTypes.xml (oder in der Map-Ordnerstruktur referenziert) listet die verwendeten Früchte für eine Map.
- Jede Frucht bekommt eine eigene Frucht-XML unter $data/foliage/<fruchtname>/<fruchtname>.xml mit Definitionen (Name, growth, fillType usw.).
- fillTypes.xml / fillTypes müssen die neue Füllart (z. B. „rye“, „hops“) kennen — viele Maps registrieren FillTypes global oder per Map-XML. Developer Network
- i3d: die Visual-/Foliage-Modelle (Texturen, foliage maps) werden im i3d platziert und mit den Frucht-Definitions-XMLs verknüpft (z. B. foliage-map/foliageDensity). GIANTS Developer Network
2) Minimal-Beispiel: Struktur (Ordner)
myMap/
├─ map.xml
├─ fruitTypes.xml
└─ foliage/
└─ rye/
├─ rye.xml
└─ rye.i3d
Die Map verweist auf fruitTypes.xml oder listet die <fruitType filename="..."/> direkt in map.xml.
3) Beispiel: fruitTypes.xml
<?xml version="1.0" encoding="utf-8"?>
<fruitTypes>
<!-- relative oder $data Pfade -->
<fruitType filename="$data/foliage/rye/rye.xml"/>
<fruitType filename="$data/foliage/hops/hops.xml"/>
</fruitTypes>
Hinweis: Wenn du Fehler wie Fruit with name "rye" does not exist siehst, stimmt der Pfad oder der name in der Frucht-XML nicht. Überprüfe beide.
4) Beispiel: rye.xml (Frucht-Definition, vereinfachte Version)
<?xml version="1.0" encoding="utf-8"?>
<fruit name="rye" title="Rye" fillTypeIndex="-1">
<growth>
<growthState speed="1.0" duration="6" season="2"/>
<!-- growthState Einträge variieren je nach Spielversion -->
</growth>
<fillType name="rye" pricePerLiter="0.03" isSellable="true"/>
<harvestedBy>
<vehicleType name="combine"/>
</harvestedBy>
<cultivation>
<seedNeeded value="true" seedFillType="ryeSeed"/>
</cultivation>
<animation>
<!-- falls nötig, z.B. für special harvester oder converters -->
</animation>
</fruit>
Name muss eindeutig sein und mit Verweisen (z. B. in implement-XMLs, HUD, growth) übereinstimmen.
Fehlerhafte Einstellungen erzeugen Konsolen/Log-Errors.
5) Beispiel: fillTypes.xml Ergänzung (falls Map/Mod FillTypes selbst registriert)
<fillTypes>
<fillType name="rye" category="crop" defaultPricePerLiter="0.03" unit="l" />
<fillType name="ryeSeed" category="seed" defaultPricePerLiter="0.005" unit="l" />
</fillTypes>
Viele Maps nutzen bereits zentrale FillTypes — du musst nur sicherstellen, dass die Namen übereinstimmen.
6) i3d: Was muss drinstehen? (Kurz)
- Modelle/foliageNodes: Für sichtbare Pflanzen brauchst du i3d-Geometrie/foliage-Layer oder Du verwendest die Map-Foliage (Blended foliage maps).
- Transform/Root Node: exportiere aus dem Editor (GIANTS Editor) und verlinke in der Frucht-XML (falls nötig).
Praktisch arbeiten viele Modder mit fertigen foliage-Plugins/meshes oder mit den Map-Foliage (Terrain-foliage) — die genaue Implementation hängt davon ab, ob die Frucht Boden-foliage (meadow style) oder eigenständige Objekte ist.
Mini-i3d-Beispiel (sehr reduziert):
<i3d>
<nodes>
<node name="ryeRoot" class="Transform">
<mesh filename="rye_mesh.i3d"/>
<!-- foliage settings, collisions, etc. -->
</node>
</nodes>
</i3d>
(Reality: i3d ist komplexer — nutze GIANTS Editor und exportiere korrekt; viele Tutorials im Videoformat zeigen das praktisch.)
7) Map.xml — Integration
In map.xml entweder:
<fruitTypes>
<fruitType filename="$data/foliage/rye/rye.xml"/>
</fruitTypes>
oder ein Verweis auf fruitTypes.xml:
<include filename="fruitTypes.xml"/>
Achte darauf, dass keine doppelten Einträge für dieselbe Frucht vorkommen (kann zu doppelten Frucht-Einträgen führen).
Typische Probleme & Debugging
- Fehler in Log.txt: Lies log.txt nach ERROR: Fruit with name ... does not exist oder Pfad-Fehlern.
- Das sagt dir genau, welche Datei/Name fehlt. GIANTS Software Forum
- Doppelte Früchte: passiert, wenn dieselbe Frucht in mehreren files registriert wird — entferne Duplikate oder benutze <remove/>/<set/> via parentFile in map.xml.
- Visualisierung fehlt: meist i3d/foliage-Layer falsch exportiert oder nicht in map Foliage integriert.
- Prüfe GIANTS Editor Export.
9) Nützliche Ressourcen / Links
- Forbidden-Mods Filebase (Download-Forum / Filebase) — hier findest viele Map-/Mod-Beispiele, die du studieren kannst. Forbidden Mods - einfach verboten gut
- GIANTS Forum / Developer Network (Fragen zu fruitTypes & Modding) — offizielle Community/Support für Modder. GIANTS Software Forum
- Threads zu FillTypes / converters und Map-Integration (GDN): gute Diskussionen und Code-Snippets. GIANTS Developer Network+1
(Die oben zitierten Seiten kannst du in den Links öffnen — ich habe die relevanten Quellen geprüft und verlinkt.)
_______________________________________________________________________________________________________________________________________________________
✅ 1) Komplettes Beispiel-Modpaket (Struktur + Dateien)
Ordnerstruktur:
myExtraFruitPack/
├─ modDesc.xml
├─ fruitTypes.xml
├─ fillTypes.xml
└─ foliage/
└─ rye/
├─ rye.xml
└─ rye.i3d
modDesc.xml
<?xml version="1.0" encoding="utf-8"?>
<modDesc descVersion="82">
<title>Extra Fruits Pack</title>
<description>Adds extra fruit types (rye) to your LS25 map.</description>
<author>YourName</author>
<version>1.0.0.0</version>
<extraContent>
<extraContentCategory name="fruitTypes" filename="fruitTypes.xml"/>
<extraContentCategory name="fillTypes" filename="fillTypes.xml"/>
</extraContent>
</modDesc>
fruitTypes.xml
<?xml version="1.0" encoding="utf-8"?>
<fruitTypes>
<fruitType filename="foliage/rye/rye.xml"/>
</fruitTypes>
foliage/rye/rye.xml
<?xml version="1.0" encoding="utf-8"?>
<fruit name="rye" title="Rye" fillTypeIndex="-1">
<growth>
<growthState speed="1.0" duration="6" season="2"/>
<growthState speed="1.0" duration="6" season="3"/>
</growth>
<fillType name="rye" pricePerLiter="0.03" isSellable="true"/>
<harvestedBy>
<vehicleType name="combine"/>
</harvestedBy>
<cultivation>
<seedNeeded value="true" seedFillType="ryeSeed"/>
</cultivation>
</fruit>
foliage/rye/rye.i3d (Platzhalter für den GIANTS Editor Export)
<i3d version="1.10" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Scene>
<TransformGroup name="ryeRoot" />
</Scene>
</i3d>
👉 Integration in eine Map:
- Entweder packst du dieses Modpaket in den Mods-Ordner und verweist in map.xml via <include filename="fruitTypes.xml"/> und <include filename="fillTypes.xml"/>.
- Oder du kopierst die Dateien direkt in die Map-Struktur.
✅ 2) Typische Log-Fehlermeldungen + Lösungen
Fehler 1:
Error: 'fruitType rye' not found
Ursache: Pfad in fruitTypes.xml falsch oder rye.xml fehlt.
✅ Lösung: Prüfe Schreibweise, Pfad (z. B. foliage/rye/rye.xml) und Namen.
Fehler 2:
Error: Multiple registrations of fruitType 'rye'
Ursache: Die gleiche Frucht ist mehrfach registriert (z. B. in Map und Mod).
✅ Lösung: Entferne eine der Registrierungen oder nutze <remove/> im map.xml.
Fehler 3:
Warning: FillType 'rye' not registered
Ursache: FillType fehlt oder wird zu spät geladen.
✅ Lösung: fillTypes.xml einbinden oder fruit.xml enthält <fillType name="rye"/>.
Fehler 4:
Error: Could not load foliage for fruitType rye
Ursache: i3d-Datei fehlt oder falscher Pfad in der Frucht-XML.
✅ Lösung: Exportiere i3d korrekt im GIANTS Editor, überprüfe Referenzen in rye.xml.
Fehler 5:
Error: Missing texture for rye in rye.i3d
Ursache: Textur-Dateien nicht gefunden.
✅ Lösung: Texturen (.dds) in den richtigen Ordner kopieren und Pfade in i3d aktualisieren.
Extra-Tipp: Debugging
- Immer log.txt prüfen (Ordner Dokumente/My Games/FarmingSimulator2025/log.txt).
- Mit -cheats Startparameter die Konsole aktivieren (F2) und gsFruitTypes ausführen → zeigt registrierte Früchte.
✅ Kurzanleitung: i3d für neue Fruchtarten erstellen
1. GIANTS Editor öffnen
- Starte den GIANTS Editor in der Version, die zu LS25 passt (Editor 10.x für LS25).
2. Basis-Geometrie laden oder neu erstellen
- Importiere ein bestehendes Foliage-Set aus $data/foliage/ (z. B. Weizen) oder erzeuge ein neues Mesh.
- Dupliziere es und benenne es ryeRoot oder ähnlich.
3. Materialien & Texturen anlegen
- Weise Material für den Frucht-Layer zu (Texturen in DDS-Format: diffuse, normal, specular).
- Passe die Shader-Einstellungen an (z. B. foliageShader.xml).
4. TransformGroup setzen
- Stelle sicher, dass der Root-Node heißt wie in deiner Frucht-XML (<fruit name="rye"> → Node „ryeRoot“).
- Skaliere und positioniere das Modell (normalerweise 1:1, Position 0,0,0).
5. Foliage-Layer konfigurieren
- Erstelle unter „Terrain Info Layer Paint“ eine neue Layer-Maske für „rye“.
- Setze die Density Maps (fruit_density.gdm) für die neue Frucht in den Map-Layer.
6. i3d exportieren
- Datei speichern unter foliage/rye/rye.i3d in deinem Mod-Ordner.
- Im Export-Dialog Pfade kontrollieren (Texturen relativ zum Mod-Ordner).
7. In XML referenzieren
- In rye.xml muss das Attribut filename zum i3d passen (falls foliage visuell referenziert wird).
- Prüfe Pfade mit / statt \ für LS-Kompatibilität.
💡 Tipp:
Wenn du die Frucht nicht selbst modellieren willst, kannst du ein bestehendes Foliage-Modell als Vorlage nehmen
(z. B. Weizen oder Gerste), kopieren und nur die Texturen und Namen anpassen.