TL;DR: Einfach starten mit :
env LC_NUMERIC=en_US.UTF-8 mono WWServer.exe -name "MEIN_SERVERNAME" -tcp 5127 -localPath -world "MEIN_WELTNAME"
Vor einer Weile wurde ich auf Windward aufmerksam. Aus meiner Sicht ein nettes Spiel für zwischendurch. Was mich noch mehr erfreute, ist das der dedizierte Server sogar problemlos auf dem Raspberry Pi läuft. (Ja, der Artikel ist für Ubuntu – geht aber 1:1 auf Raspbian. Stichwort Debian Wurzeln 😉 )
Allerdings kam es nach einem Neustart des Servers zu zweierlei Fehlern.
- Teile der Config wurden nicht mehr erkannt / fehlerhaft gelesen.
- Daraus folgend gab es plötzlich keine Fraktionsauswahl mehr und verschiedene Grafikbugs.
Durch einen Post in den Steam Diskussionen wurde ich dann durch den Entwickler auf den richtigen Weg gebracht. Das ganze Liegt in der Tat daran, das die Konfiguration nicht sauber gelesen werden kann und daraus die Fehler resultieren. Doch was ist der Fehler? Mono verwendet (wie viele andere Sprachen auch) lokalisierte Standards für die Darstellung verschiedener Werte.
So wird zum Beispiel im deutschen Raum eine Zahl mit Dezimalstellen mit einem Komma geschrieben (z.B.: 1,34 / 0,5 / 2,9 / …) während in vielen (meist englischsprachigen Regionen) die Dezimalstellen durch einen Punkt getrennt werden (z.B.: 1.34 / 0.5 / 2.9 / …).
Soweit dazu. In der .conf Datei der Serverwelt sind die Werte mit der Punkt-Schreibweise hinterlegt, da mein Raspberry (und damit auch Mono) auf deutsche locals eingestellt ist passiert was? Genau „.“ vs. „,“!
Wie kann man das nun lösen? Na recht einfach – man muss Mono nur beibringen, das es nicht die Systemeinstellung für die Darstellung verwenden soll, sondern eine andere (z.B.: US ). Dazu habe ich hier einen Hinweis gefunden.
Die Lösung ist, den Windwardserver wie folgt zu starten und somit Mono explizit einen Punkt als Dezimaltrennzeichen vorzuschreiben:
env LC_NUMERIC=en_US.UTF-8 mono WWServer.exe -name "MEIN_SERVERNAME" -tcp 5127 -localPath -world "MEIN_WELTNAME"
Einziger Wehrmutstropfen: Wenn eine Welt erst einmal mit dem Fehler gestartet wurde und der Server danach dann normal runterfuhr, sind die Fehler mit gespeichert worden und auch dieser Fix hier kann das nicht beheben.
Es muss also eine neue Welt gestartet werden.