VCMI on Haiku

Hi! I downloaded the VCMI sources and succesful built it on Haiku, a BeOS clone (haiku-os.org)

img504.imageshack.us/img504/9558 … ot2jpd.png

The game starts… but when I choose the scenario and press play… the game changes to a fullscreen mode, and all turns to black an freezes.

I followed those steps at VCMI wiki to build

and I have the following files on my VCMI clean directory

[VCMI]
[AI]
[EMPTYAI]
EmptyAI.so & etc…
[GENIUSAI]
GeniusAI.so & etc…

[Data]
[config]
[Lib]
libvcmi.so & etc…
[Maps]
[MP3]
[Sprites]
vcmiclient
vcmiserver

What could I do to play?

It shouldn’t be changing to fullscreen, but the with the config/settings.txt from the repository the resolution is set to 1024x768, which seems to be the same as yours. You could try changing it to 800x600 and see if that helps.

Thanks… I’ll try…

here is a log message that appears sometimes (sometimes not)

pastebin.com/5J7syDRU

As far as I see Haiku is not supported by neither SDL nor boost, so this problem should be reported to Haiku developers (since both libraries seem to support BeOS).

Of course that Haiku supports all libSDLs, Libboost, and much more!

Please see the complete list here (some libs are missing in this list)

ports.haiku-files.org/wiki/Downloads

Only still misses a decent port of VCMI :mrgreen:

Thanks for your reply!


On the other side, I look closer:

~/Desktop> listimage | grep vcmi
TEAM 435 (./vcmiclient):
1325 /boot/apps/vcmi/vcmiclient 0x200000 0x90a000 0 0
1326 /boot/apps/vcmi/lib/libvcmi.so.0.0.0 0x916000 0xd45000 0 0
TEAM 457 (/bin/sh -c /boot/apps/vcmi/vcmiserver 3030 > server_log.txt):
TEAM 458 (/boot/apps/vcmi/vcmiserver 3030):
1362 /boot/apps/vcmi/vcmiserver 0x200000 0x428000 0 0
1363 /boot/apps/vcmi/lib/libvcmi.so.0.0.0 0x42c000 0x85b000 0 0
TEAM 485 (/bin/grep vcmi):

~/Desktop> netstat
Proto Recv-Q Send-Q Local Address Foreign Address State Program
tcp 0 0 *:ssh : listen 92/sshd
udp 0 0 *:631 - 120/print_server
tcp 0 0 *:3030 : listen 458/vcmiserver

Seems all starts fine. But tcpidump not showing any activity.

Our error message (from this class pastebin.com/1gRmMyXs):

Cannot establish connection! Retrying within 2 seconds
Establishing connection…
Problem with resolving:
system:-2147483643
Something went wrong… checking for error info
system:-2147483643

If I not mistake error code (from dev.haiku-os.org/browser/haiku/t … t/Errors.h):
#define B_BAD_VALUE (B_GENERAL_ERROR_BASE + 5)

And finally I can connect to server via telnet:

/> telnet 127.0.0.1 3030
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
Aiya!
VCMI 0.80 (server)

I think something wrong with client

I still think that those libraries are not working properly. I’ve never seen VCMI printing

nor

.

Maybe SDL_Mixer has a bug on Haiku that spoils VCMI_client preventing it from connecting to VCMI_server? You could try to disable all sound handling code in VCMI and see if it fixes the problem with connecting.

The ports of SDL mixer and image on ports.haiku-files.org/wiki/Downloads are for gcc2… That seems a little outdated to me.

Yes… but all game ports like

openredalert
fheroes2 (the most download game in the history) :smiley:
linball
wormux
boswars

was done with a sdl package that I made with GCC4 here:

haikuware.com/directory/view-det … aries-gcc4

but thanks!

I will take a closer look in SDL_mixer

I doubt that SDL_mixer is source of problems here (and if it’s not working, it should do nothing or crash VCMI but not mysteriously sabotage loopback connection).

If SDL / boost work well enough to allow scenario selection and connecting via telnet to the server, they should also allow playing game.

Error message is pretty clear:

Problem with resolving:
system:-2147483643

Server is running in background and it’s connection is working (as you confirmed by using telnet), the problem lies somewhere in the networking code of client.

Take a look at lib/Connection.cpp, line 70 and further. That’s where connection to the server is established.

tcp::resolver::iterator end, pom, endpoint_iterator = resolver.resolve(tcp::resolver::query(host,port),error);

That line for some reason fails.
If there is server application listening on port 3030 of localhost, I see two possibilities
a) host and port arguments are invalid (I don’t see any rational reason for that but who knows). try logging them before the feral line:

tlog0 << "Host: " << host << " Port: " << port << std::endl;

They should be “127.0.0.1” and “3030”.

b) boost::asio resolver doesn’t work properly with HaikuOS.
(You can try to reproduce the issue on the examples from asio documentation boost.org/doc/libs/1_42_0/do … mples.html )

You may also try to figure out what that error code means (-2147483643). Maybe Haiku has somewhere documented error codes. Maybe strerror will give something.

Thanks for the interest in our project and good luck! :slight_smile:

WoW!!!

Thanks Tow!

I really appreciate much your reply!!

VCMI is something about the Haiku users asking me to port

and your reply give me a light

I acctually using libboost 1.38

I’ll switch to 1.42 now and try again…

How is it going Michael? I’ve just read Haiku released Alpha 2 and I wanted to try it in virtual machine :slight_smile:

Hi!

unfortunately I was aware a bit because some exams!

But I’m getting some errors in building libboost 1.42 …

So, I’ll investigate a bit more

Ah! And Haiku Alpha 2 is very stable! You can test and see by yourself

Only missing 3D stuff and some posix functions…

Seems that VCMI uses

sys/shm.h

functions in some way

but Haiku don’t have it yet…

How did you compile and linked VCMI if you didn’t have that file?

probably part of boost?
if it is remember to extract not basic boost modules too :slight_smile:

We link statically to boost libraries, so if they weren’t built, VCMI wouldn’t link. I think it could be a problem with runtime libraries.

ahh probably

Hi again!!

Thank you!!

It’s ported and working now!

haikuware.com/directory/view-det … -magic-iii

It’s all because the recent changes on the network kit by axeld

Thank you for all help and for this great game!

Hosting provided by DigitalOcean