Die Parzellen lagen im Wald. Ich hatte -mapSize/2 bis +mapSize/2 angenommen — naheliegend beim Namen, aber falsch: die Koordinaten laufen von -mapSize bis +mapSize. Damit wurde jede Parzelle um Faktor zwei vom Mittelpunkt weggezogen. Schlimmer als der Fehler war meine Pruefung. Der Zonentest hat die Koordinaten auf ihre eigene Bounding-Box normiert und danach geschaut, ob die Felder in der richtigen Ecke liegen. Das besteht bei JEDEM Massstab, weil die Anordnung zueinander ja stimmt. 14 von 15 Treffern klangen ueberzeugend und sagten ueber den Massstab genau nichts aus. Gemessen wurde es dann so: die eingebrannte Legende steht sowohl im Feed-Bild als auch im Ingame-Screenshot, damit laesst sich der eine aufs andere umrechnen. Vier Parzellen an den vier Ecken ergaben eine Weltbreite von 7822 bei mapSize 4096 — Faktor 1,91 bei rund 5 Prozent Ablesegenauigkeit. Dabei ist noch etwas herausgekommen: die Marken H1..H8 auf dem Luftbild sind als Passpunkte hervorragend, nicht wertlos, wie ich in der Doku behauptet hatte. Mit richtigem Massstab liegen alle acht Hofparzellen unter 13 px von ihrer Marke; mit falschem rund 200. Das ist jetzt der Test — acht Passpunkte, die jede kuenftige Verschiebung sofort auffliegen lassen, statt eines Zonenvergleichs, der alles durchwinkt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
102 lines
5.0 KiB
Markdown
102 lines
5.0 KiB
Markdown
# Was ein LS-Server über sich verrät
|
||
|
||
Aufgeschrieben, damit die Frage „können wir nicht auch …" nicht dreimal
|
||
gestellt wird. Alles hier ist an einem echten FS25-Server (1.21.0.0) geprüft,
|
||
nicht aus der Dokumentation abgeschrieben — die schweigt zu den Einzelheiten.
|
||
|
||
## Die Endpunkte
|
||
|
||
Alle brauchen `?code=<Zugangs-Code>`. Der Code steht in der Abfrage-URL, die
|
||
der Hoster ausgibt; der Port ist **nicht** immer 8080.
|
||
|
||
| Endpunkt | Grösse | Inhalt |
|
||
|---|---|---|
|
||
| `dedicated-server-stats.xml` | ~49 KB | Server, Spieler, Mods, Parzellen, Felder, Fahrzeuge |
|
||
| `dedicated-server-stats-map.jpg` | 51 KB – 1,5 MB | Luftbild, `size=` 512…4096, `quality=` 1…100 |
|
||
| `dedicated-server-savegame.html?file=careerSavegame` | ~20 KB | Einstellungen, Geld, Spielzeit, Modliste |
|
||
| `dedicated-server-savegame.html?file=vehicles` | ~39 KB | jedes Fahrzeug mit Preis, `farmId`, Betriebsstunden |
|
||
| `dedicated-server-savegame.html?file=economy` | ~305 KB | Preiskurve je Fruchtart über zwölf Perioden |
|
||
|
||
Andere Dateinamen antworten mit `204` und leerem Rumpf. Geprüft und **nicht**
|
||
verfügbar: `farms`, `farmland`, `farmlands`, `fields`, `field`, `items`,
|
||
`placeables`, `environment`, `sales`, `players`, `production`, `productions`,
|
||
`missions`, `densityMapHeight`, `treePlants`, `growth`, `weeds`, `fillTypes`.
|
||
|
||
## Was in der Statusabfrage steht
|
||
|
||
```xml
|
||
<Server version="1.21.0.0" mapSize="4096" mapName="…" dayTime="46057948">
|
||
<Slots capacity="4" numUsed="3">
|
||
<Player isUsed="true" isAdmin="true" uptime="128" x="…" y="…" z="…">Name</Player>
|
||
</Slots>
|
||
<Mods> <Mod name="…" author="…" version="…">Titel</Mod> <!-- 110x -->
|
||
<Farmlands><Farmland id="1" owner="0" area="22.3" price="1340352" x="…" z="…"/>
|
||
<Fields> <Field id="1" x="…" z="…" isOwned="false"/>
|
||
<Vehicles> <Vehicle name="…" type="…" x="…" z="…" fillTypes="…" fillLevels="…" isAIActive="false"/>
|
||
```
|
||
|
||
`owner` ist die Hof-**Nummer**, nicht der Spielername. Welcher Spieler zu
|
||
welchem Hof gehört, steht in keinem Endpunkt — deshalb die Zuordnung im Panel.
|
||
|
||
## Koordinaten
|
||
|
||
**x nach rechts, z nach unten, und die Welt läuft von `-mapSize` bis
|
||
`+mapSize`** — also doppelt so weit, wie der Name vermuten lässt.
|
||
|
||
Das ist die Stelle, an der man zweimal falsch abbiegt:
|
||
|
||
`-mapSize/2 … +mapSize/2` wirkt naheliegend und sieht auf den ersten Blick
|
||
sogar richtig aus, weil die Parzellen zueinander stimmen. Tatsächlich zieht es
|
||
jede Parzelle um Faktor zwei vom Mittelpunkt weg, und am Ende liegen die
|
||
Felder im Wald.
|
||
|
||
Ein Test, der die Koordinaten auf ihre eigene Bounding-Box normiert, merkt das
|
||
**nicht** — er prüft nur die Anordnung und besteht bei jedem Maßstab.
|
||
|
||
### Woran man es festmacht
|
||
|
||
Viele Karten tragen eingebrannte Marken `H1…H8` mit einer Legende, welche
|
||
Parzelle das ist (`131 H1`, `132 H2`, …). Das sind acht kostenlose Passpunkte.
|
||
Mit dem richtigen Maßstab liegen die Parzellen-Schwerpunkte **unter 15 px** von
|
||
ihrer Marke entfernt, gemessen auf einem 1024er Bild; mit dem falschen rund
|
||
200 px. Der Unterschied ist so deutlich, dass eine einzige Prüfung reicht.
|
||
|
||
## Was es nicht gibt
|
||
|
||
**Welche Frucht auf einem Feld steht und wie weit sie ist.** Das liegt in
|
||
`densityMap_fruits.gdm`, einer Binärdatei ohne öffentliche Spezifikation, die
|
||
nur im kompletten Savegame-ZIP steckt — und das lädt man über die
|
||
Admin-Oberfläche, nicht über den Code.
|
||
|
||
Daran ändert auch kein Mod etwas. [Crop Growth Stage
|
||
Info](https://www.farming-simulator.com/mod.php?mod_id=232903) und [Additional
|
||
Field Info](https://github.com/yumi-modding/FS25_additionalFieldInfo) berechnen
|
||
genau diese Werte, sind aber reine HUD-Overlays: Lua, `modDesc.xml`, ein Icon —
|
||
nichts, was eine Datei schreibt oder einen Port öffnet.
|
||
|
||
Bestätigt durch die Konkurrenz. Keiner dieser Bots zeigt Feldfrüchte, obwohl
|
||
einer davon Geld kostet:
|
||
|
||
- [GamePuls](https://bot.dein-gamepuls.de) — kommerziell, mit Premium-Stufe
|
||
- [Farm Sim Game](https://www.farmsimgame.com/) — gehostet
|
||
- [IceEagle132](https://github.com/IceEagle132/Farming-Simulator-25-Discord-Bot)
|
||
- [DJWoodZ](https://github.com/DJWoodZ/Farming-Simulator-Discord-Bot)
|
||
- [cloudmaker97](https://github.com/cloudmaker97/FS25-Discord-Bot)
|
||
|
||
**Die aktuelle Jahreszeit.** Sie steht in keinem Endpunkt. Aus `playTime` und
|
||
`plannedDaysPerPeriod` liesse sie sich schätzen, aber nur solange niemand die
|
||
Zeitskala ändert — deshalb ist sie eine Einstellung im Panel und kein
|
||
Rateversuch.
|
||
|
||
## Fallstricke
|
||
|
||
- **Parzellen haben nur Schwerpunkt und Fläche, keine Umrisse.** Die Karte
|
||
zeichnet flächengleiche Kreise. Bei langen schmalen Feldern sieht man das.
|
||
- **Die Modliste steht vor den Parzellen.** Wer nur die ersten Zeilen
|
||
anschaut, hält den Feed für eine reine Statusabfrage.
|
||
- **Spargel sprengt jede Preisliste.** Er schwankt zwischen 26 und 7540 € und
|
||
verdrängt nach Schwankungsbreite sortiert jede echte Feldfrucht. Deshalb
|
||
arbeitet die Preisliste mit einer Auswahl statt mit einem Ranking.
|
||
- **Das Luftbild als PNG ist zehnmal so gross wie nötig** — 2,5 MB statt
|
||
250 KB. Es ist ein Foto, also JPEG.
|