Switch to full style
Diskussionen rund um Eressea, das Fantasy-Strategiespiel.
Antwort erstellen

Server unter 64bit kompiliert - Problem mit Magellan

08.01.2018 16:33

Hallo Zusammen!

Vor ein paar Tagen habe ich Freunden von PbEM erzählt. Es hat gedauert bis ich mich an den Name Eressea erinnern konnte... Bin aber fündig geworden :-)
Ich möchte mit ihnen nun ein kleines Testspiel starten.
Dazu habe ich mir bereits den Source code geladen und compiliert (unter MacOS). Meine ersten Versuchsauswertungen habe ich erfolgreich hinter mir. D.h. der Server läuft mal.
Nun wollte ich aber eine dieser Auswertungen in Magellan laden.
Dort bekomme ich aber folgenden Fehler:

Code:
2018-01-08 15:51:26.623 java[38247:1615860] *** Assertion failure in -[AWTWindow_Normal _changeJustMain], /BuildRoot/Library/Caches/com.apple.xbs/Sources/AppKit/AppKit-1561.20.106/AppKit.subproj/NSWindow.m:13141
(II) 08.01.2018 15:51:26.663: Loading report /Develope/pbem/game-2/reports/11-ycmd.cr
(WW) 08.01.2018 15:51:28.664: java.lang.NumberFormatException: For input string: "2625639936"
   at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
   at java.lang.Integer.parseInt(Integer.java:583)
   at java.lang.Integer.valueOf(Integer.java:766)
   at magellan.library.IntegerID.create(IntegerID.java:59)
   at magellan.library.io.cr.CRParser.parseMessages(CRParser.java:437)
   at magellan.library.io.cr.CRParser.parseFaction(CRParser.java:1899)
   at magellan.library.io.cr.CRParser.parseHeader(CRParser.java:895)
   at magellan.library.io.cr.CRParser.read(CRParser.java:3249)
   at magellan.library.io.AbstractReportParser.read(AbstractReportParser.java:266)
   at magellan.library.io.GameDataReader.readGameData(GameDataReader.java:126)
   at magellan.library.io.GameDataReader.readGameData(GameDataReader.java:89)
   at magellan.library.io.GameDataReader.readGameData(GameDataReader.java:63)
   at magellan.client.Client.loadCR(Client.java:1758)
   at magellan.client.Client$10.run(Client.java:1880)
   at java.lang.Thread.run(Thread.java:748)


In der CR Datei steht - Teil passend zur Fehlermeldung:
Code:
MESSAGE 2625639936
771334452;type
"Frau Andrea (a1) verdient in Vutvonpan (0,0) 10 Silber.";rendered


Nun gehe ich mal davon aus, dass Magellan nur mit 32bit Integer arbeiten kann.
Wenn ich unter MacOS den Server kompiliere, erhalte ich aber ein 64bit Program.

Ich hab schon versucht, das Ding als 32bit zu kompilieren. Bin aber gescheitert. Die Tests gehen dann nicht mehr durch.
Meine Kenntnisse von make files sind aber schon sehr verstaubt. Und cmake-files kenne ich schon gar nicht...

Hat jemand einen Tipp, wie ich das in meiner Konfiguration zum Laufen bringe?
Bin schon am überlegen, mir eine virtuelle Maschine mit 32bit Linux zu installieren und den server dann dort zu betreiben...

Liebe Grüße!

Re: Server unter 64bit kompiliert - Problem mit Magellan

08.01.2018 17:10

Den System hat sizeof(int) = 8? Das ist zumindest ungewöhnlich. Der CR ist da nicht genau spezifiziert, aber so wie es aussieht, nimmt Magellan an, dass die Message Ids 32 Bit sind, was sie jedenfalls bisher auch immer waren.

Ich habe kein System, auf dem das auftreten würde, deshalb ist meine Antwort erst einmal, dass das nicht supported ist.

Re: Server unter 64bit kompiliert - Problem mit Magellan

08.01.2018 17:12

Ich kompiliere allerdings auch gelegentlich unter macOS, und mir ist nicht bewusst, dass die Integer da größer sind. Ansonsten wäre mein Vorschlag aber, Linux in einer VM zu installieren, das ist in der Praxis die am besten unterstützte Umgebung.

Re: Server unter 64bit kompiliert - Problem mit Magellan

08.01.2018 17:14

Letzte Möglichkeit: in das laufende Eressea wieder einsteigen. So super ich es finde, wenn es mehr Spielleiter gibt, wenn dein Ziel lediglich ist, deinen Freunden zu zeigen was Eressea ist, ist das wesentlich leichter.

Re: Server unter 64bit kompiliert - Problem mit Magellan

08.01.2018 18:35

Es kann sein, dass der Fehler ganz woanders liegt. Ich sehe gerade, dass die MESSAGE ID unsigned ist, Magellan aber wohl für alle Zahlen im CR signed 32-bit integers annimmt. Und deine ID hier (2625639936) liegt genau im Intervall [2^31,2^32), wo das eine Rolle spielt. Dass das im laufenden Spiel noch nie vorgekommen ist, hat sicher ganz spannende Gründe, und ich kann mir nicht erklären, warum es in einer kleinen Testwelt auftreten würde, aber der "korrekte" Fix hier ist auf jeden Fall, den Definitionsraum der ID zu reduzieren auf Zahlen in [0,2^31).

Re: Server unter 64bit kompiliert - Problem mit Magellan

08.01.2018 21:48

Enno hat geschrieben:Letzte Möglichkeit: in das laufende Eressea wieder einsteigen. So super ich es finde, wenn es mehr Spielleiter gibt, wenn dein Ziel lediglich ist, deinen Freunden zu zeigen was Eressea ist, ist das wesentlich leichter.


Ja, das mag sein. Jetzt hat mich aber der Ehrgeiz gepackt. Ich möchte dass gerne zum Laufen bringen :-)
Ausserdem weiß ich nicht, ob sich meine Freunde auf das Retro-Spiel :-) einlassen wollen, möchte ihnen daher schon mal etwas vorzeigen können.
Vielleicht packt sie das Fieber und wir steigen wirklich alle in das "richtige" Eressea ein.

Re: Server unter 64bit kompiliert - Problem mit Magellan

11.01.2018 19:25

War etwas viel zu tun die letzen Tage...
Vor 2 Tagen habe ich mir den Source neu gezogen - in der unit.c wurde ein cast auf (long long) eingebaut.
Funktioniert nun mit Magellan. Also doch kein mac bzw. 64bit Problem.

Danke mal an dieser Stelle!
Antwort erstellen