Multiplayer version compatibility (8050)

Problems and solutions for installing or running FreeOrion, including discussion of bugs if needed before posting a bug report on GitHub. For problems building from source, post in Compile.

Moderator: Oberlus

Post Reply
Message
Author
Magnate
Space Dragon
Posts: 425
Joined: Sat Nov 08, 2014 3:44 pm

Multiplayer version compatibility (8050)

#1 Post by Magnate »

Hi all,

I'm trying to host a game of 8050. I'm running the Windows build of 8050, d/l'd from Sourceforge. Players running the Mac build of 8050 can connect fine, but the chap who's built 8050 on Linux from the git repo can't connect (and in fact crashes the server when he tries). We are pretty confident that we're building the right 8050 version, as the repo tracks the old version numbers. So does anyone have any other ideas about what could be going wrong?

(The exact same problem occurs if he tries to host and we try to connect to him, so the incompatibility is commutative.)

CC

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: Multiplayer version compatibility (8050)

#2 Post by Geoff the Medio »

What versions of Boost did everyone build against?

Magnate
Space Dragon
Posts: 425
Joined: Sat Nov 08, 2014 3:44 pm

Re: Multiplayer version compatibility (8050)

#3 Post by Magnate »

Geoff the Medio wrote:What versions of Boost did everyone build against?
I can look that up for the Linux build, but how do I find out which version was used to build the Sourceforge builds?

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: Multiplayer version compatibility (8050)

#4 Post by Geoff the Medio »

At least on Windows, and I'd guess for OSC, the Boost shared library / DLL files have their version numbers in the file name, eg. "boost_signals-vc100-mt-1_56.dll" is Boost 1.56. These files should be in the main FreeOrion install directory, where the .exe is, on Windows, and similar files are probably in the OSX install directory.

User avatar
Vezzra
Release Manager, Design
Posts: 6095
Joined: Wed Nov 16, 2011 12:56 pm
Location: Sol III

Re: Multiplayer version compatibility (8050)

#5 Post by Vezzra »

Magnate wrote:I'm trying to host a game of 8050. I'm running the Windows build of 8050, d/l'd from Sourceforge. Players running the Mac build of 8050 can connect fine, but the chap who's built 8050 on Linux from the git repo can't connect
That's most likely because you did not turn off binary serialization. Binary serialization works with Mac and Windows, but not with Linux on one side and Mac or Windows on the other side.

Go to the options dialog, ""Other" tab, disable "Use Binary serialization" and try again. If that still doesn't work, report back.

User avatar
Vezzra
Release Manager, Design
Posts: 6095
Joined: Wed Nov 16, 2011 12:56 pm
Location: Sol III

Re: Multiplayer version compatibility (8050)

#6 Post by Vezzra »

Geoff the Medio wrote:At least on Windows, and I'd guess for OSC, the Boost shared library / DLL files have their version numbers in the file name, eg. "boost_signals-vc100-mt-1_56.dll" is Boost 1.56. These files should be in the main FreeOrion install directory, where the .exe is, on Windows, and similar files are probably in the OSX install directory.
On OSX the boost libraries are statically linked, so you won't find anything inside the app bundle. However, I can of course tell which boost version the recent test builds used: 1.56.

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: Multiplayer version compatibility (8050)

#7 Post by Geoff the Medio »

Presumably there are ways, in Boost and the various other dependencies, to get the version numbers as text at compile or run time. Might be good to include them somewhere in the UI for all dependencies.

User avatar
Dilvish
AI Lead and Programmer Emeritus
Posts: 4768
Joined: Sat Sep 22, 2012 6:25 pm

Re: Multiplayer version compatibility (8050)

#8 Post by Dilvish »

Geoff the Medio wrote:Presumably there are ways, in Boost and the various other dependencies, to get the version numbers as text at compile or run time. Might be good to include them somewhere in the UI for all dependencies.
For boost there are apparently two main ways to get the version at compile time, with different type/format characteristics. A form like "1_56" is available from BOOST_LIB_VERSION; the boost workaround hacks we've had to do lately use BOOST_VERSION, which for 1.56 is 105600, and for 1.57, 105700. A full way to parse that version number is described here. For runtime, I didn't see anything clearly indicating it was possible, although the build_info available via the boost unit test framework might be able to give it, it sounds like, but I didn't read up enough to be sure it wasn't just compile time still.
If I provided any code, scripts or other content here, it's released under GPL 2.0 and CC-BY-SA 3.0

Magnate
Space Dragon
Posts: 425
Joined: Sat Nov 08, 2014 3:44 pm

Re: Multiplayer version compatibility (8050)

#9 Post by Magnate »

Vezzra wrote:
Magnate wrote:I'm trying to host a game of 8050. I'm running the Windows build of 8050, d/l'd from Sourceforge. Players running the Mac build of 8050 can connect fine, but the chap who's built 8050 on Linux from the git repo can't connect
That's most likely because you did not turn off binary serialization. Binary serialization works with Mac and Windows, but not with Linux on one side and Mac or Windows on the other side.

Go to the options dialog, ""Other" tab, disable "Use Binary serialization" and try again. If that still doesn't work, report back.
Works a charm - thanks a million!

Post Reply