iOS Port

Is it possible to port VCMI game engine to iOS?

Acoording to the explain of SDL , Yes it can be port to IOS

Is anyone making iOS port of vcmi? Wanna join porting team.

I’ve made an iOS port, but it has some more work to be done. So far i’ve successfully compiled the project with SDL2, boost and ffmpeg for iOS. Currently i’m working on the folder structure and initializing the context. I’ll let you know when I have some progress.

Got some progress. SDL now initialises successfully, and the data is loaded from Documents folder, which should be easy to manage. Here’s a screenshot.

By the way if anyone from the team (or not) have hint of how to bypass the server connection I will be very thankful. Im thinking of running the server on a different thread in the same app right now… don’t know if its a good idea. Any help is welcomed.

Ok, a little update if anyone is interested in this. I’ve managed to run the game and it looks good on ipad, but still is very unstable. Crashes a lot when starting a new map and new day. I’m not sure what the problem is yet, I think its the way I’m running the server.

I’m not sure if the team is interested in ios port…

No team member uses iOS, that’s all.
Maybe start thinking about what the players are interested in? :wink:

Sorry, for the previous unregistered post.

I was thinking more like if someone from the team can give me a little help debugging the issiues, since the code is complex and I’m not very familiar with it.

I’ve silent some asserts in order to make the game run, so I guess someone can give me some hints on the cause of them. Is this ok if i post some debugging questions here on the forum?

More like we can’t help much with this. For example getting rid of server is quite problematic - don’t know who from active members of our team can help you with that. You may have better luck trying to replace networking with something else (interprocess memory, pipes, etc). Merging two processes into one may be too complex.

Of course. This is what these forums are for :slight_smile:

The good news is that when I fork() the server to a different process it all works perfect…(On the simulator where fork is allowed) . The bad news is Im not allowed to fork processes on iOS devices since its apple policy… :-/

I guess I’m stuck with trying to run the server into a thread on the same process…

Hey, again

I have a small question, as I’m going trough the server code I see for Android all the shared memory IPC is skipped. For what I understand so far the shared memory is used only for the server to notify the client when ready, am I right on that?

I kinda really want to leave the client/server part as it is and fix the threading issues. So far I made verry small changes and am wrapping them in #ifdefs because I hope I can make you a pull request for the iOS version once I’m done with it :slight_smile:

Yes, that’s the only use.

@dimi.t.d Check out your mailbox. I would like to help you with iOS port.

For anyone interested. My fork of the project is at:

It currently works on jailbroken devices when runned outside the sandbox. I need to make some cleanup and will make a pull request to the main repo.

After that I’m thinking to help with some bugfixing to the vcmi team

Out of curiosity…does anyone think HOMM3 will make it to the App Store on the iPad?

I am thinking about simply buying a laptop to play H3 on but it would be nice to be able to play on my ipad instead.

You all are incredible for doing this project. Heroes 3 is my all time favorite game and I still play it often. Keep up the excellent work! I wish I had the expertise to match my ambition for this project so I could contribute.

I was wondering if you could give some instructions on how to install this cause i’d love to try it out

trying to compile this with xcode 6 but i am getting the following error

In file included from /Applications/
In file included from /Applications/
/Applications/ error: the parameter for this explicitly-defaulted copy constructor is const, but a member or base requires it to be non-const
pair(const pair& __p) = default;

Posting message at the end of template chain never helped anyone. Try to find which piece of VCMI code causes this behavior.

well that actually turned out to be a problem with the latest Xcode,reverting to a previous version makes it advance quite a bit and give this error:

	ony += std::bind(&CCallback::dismissHero, LOCPLINT->cb.get(), curHero);
vcmi/client/CHeroWindow.cpp:296:6: No viable overloaded '+='

welp,still stuck on the same error

Hosting provided by DigitalOcean