Der Feed eines LS-Servers gibt viel mehr her als die Spielerzahl, die der Monitor bisher davon benutzt hat: in denselben 49 KB stehen 163 Parzellen mit Besitzer und Hektar, 130 Felder, jedes Fahrzeug samt Ladung und die Position jedes Spielers. Und das Luftbild liefert der Server auch, in jeder Groesse bis 4096. Also eine Karte: gekaufte Parzellen nach Hof eingefaerbt, Kreisflaeche gleich Hektar, Fahrzeuge und Spieler live, dazu eine Hof-Uebersicht mit Flaeche und Wert. Wechselt Land den Besitzer, kommt eine Meldung — beim allerersten Durchlauf bewusst nicht, sonst haette der Botstart eine Meldung pro bereits gekaufter Parzelle abgesetzt. Dazu die Preiskurven aus der economy.xml: je Fruchtart, was sie in welcher der zwoelf Perioden bringt, als Balkenzeile mit "jetzt verkaufen" oder "+43 Prozent im Hochwinter". Was NICHT geht, und zwar grundsaetzlich: welche Frucht auf welchem Feld steht und wie weit sie ist. Das liegt in einer binaeren Density-Map, die kein Endpunkt herausgibt. Ich habe 18 Dateinamen durchprobiert, es gibt genau drei. Die Mods, die das anzeigen, sind reine HUD-Overlays ohne Ausgang. Und keiner der fuenf anderen LS-Bots kann es, obwohl einer davon Geld kostet. Das steht mit allen Belegen in docs/ls-feed.md, damit die Frage nicht dreimal kommt. Beim Bauen aufgefallen: - istLsServer() gab den Zugangs-Code zurueck statt true — die &&-Kette liefert den letzten wahren Wert. Beim ersten Log-Aufruf haette der Code im Klartext im Protokoll gestanden. - Die Karte als PNG war 2,5 MB, als JPEG 268 KB. Es ist ein Luftbild. - Nach Preisschwankung sortiert gewinnt Spargel: 26 bis 7540 Euro, und Weizen taucht gar nicht mehr auf. Die Liste arbeitet jetzt mit einer Auswahl. - Die Jahreszeit steht in keinem Endpunkt. Schaetzbar waere sie, aber nur solange niemand die Zeitskala aendert — also eine Einstellung. Geprueft gegen echte Serverdaten: Zerlegen der Statusabfrage inklusive Vollstaendigkeit aller 163 Parzellen, Ladung ohne Diesel und leere Slots, Hof-Uebersicht ohne verlorene Parzellen, Preiskurve mit vollem und leerem Balken an der richtigen Stelle, flache Kurve ohne Division durch Null, Besitzwechsel inklusive Erstlauf und neu hinzugekommener Parzelle, Hof-Namen aus der Einstellung, SVG ohne NaN und mit maskierten Namen, und der Merker in der Datenbank inklusive kaputtem JSON. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4.6 KiB
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
<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
Weltkoordinaten laufen von -mapSize/2 bis +mapSize/2. Auf das Luftbild
gerechnet: x nach rechts, z nach unten, linear über die volle Breite.
Gegen die Ingame-Karte geprüft: 14 von 15 markanten Feldnummern landen in der richtigen Zone. Der eine Ausreisser ist ein sehr grosses Feld, dessen Schwerpunkt knapp über einer Zonengrenze liegt.
Die eingebrannten Beschriftungen H1…H8 im Luftbild taugen nicht zum Kalibrieren. Die zeichnet der Map-Ersteller ans Hofgebäude, nicht in den Schwerpunkt der Parzelle, und die Nummern daneben müssen nicht zur Farmland-ID passen. Wer daran ausrichtet, landet gut 200 px daneben.
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 und Additional
Field Info 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 — kommerziell, mit Premium-Stufe
- Farm Sim Game — gehostet
- IceEagle132
- DJWoodZ
- cloudmaker97
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.