VCMI for Android


Thanks for the awesome port xyz!

I have one problem with the AI - the enemy doesn’t seem to be buying almost any creatures. I’ve seen this mentioned earlier in the thread but it doesn’t seen to be fixes. Any ideas?


So far Android version is still based on 0.97 in which AI doesn’t work at all.
In 0.98 AI still seems broken, so we may need to wait a little longer.


Any news from xyz about new version of VCMI for Android? I saw him last week on the forum, long time since last time, so I wonder if it was a good omen. :smiley:


He said he has not enough time to make 0.98 now. You can find him online on IRC channel #VCMI ( network)


Hello there o/
Some days ago, I fell over this awesome port when I were checking the play store for Heroes Onine app, with no luck, and was like AWESOME, I tried both with HOMM3 HotA, Crack, GOG, GOG with WOG, version… All complete editions, all of them do start up and play music nicely, can navigate to the campaigns browse singleplayer / multiplayer map. But then again when I press "begin"to start the chosen map. It just crashes :< does any1 of you have an idea if I have done something wrong?
Help is much appreciated :>


… any hope for an update? It refuses to work on LG G4 5.1


This thread seems pretty dead but I didn’t want to post somewhere this topic doesn’t belong.

Am I correct in believing that VCMI is not compatible with Android 5.0? As stated elsewhere by others, I can launch the app and navigate the menu but VCMI crashes immediately after cinematic screen before the game can actually start.



Yes it’s correct. Ported version that currently available is really old and nobody updated it for newer Android versions.

If nobody else going to do that I’ll eventually attempt to build newer version for Android, but so far there was more important things to do.


Please do! :mrgreen:

Thanks for the reply.


I do like SXX’s post very much :stuck_out_tongue:


Well, been a time o.o an no one gonna revive it : ( ? Could be really awesome!


Is it not better to wait for it too be a little less buggy then people can focus on android version?


Oh, well, haven’t really looked into the normal version of the VCMI but that could be good thing I guess


Just want to let you know. I’ve been working on android version for a couple of days and currently have a quite stable application (vcmi master (0.99), boost 1.61, ffmpeg master, SDL 2.0.5). If there aren’t any big issues, I’ll try to upload it to github in a few days.

Main changes in vcmi to make it working:

  • similarly to xyzz’s version, I compiled AI libraries together with main lib; android’s support for dlopen/dlsym is broken (it compiles and kind of works, but RTTI between libraries is broken),
  • I disabled StupidAI for now (currently always using BattleAI); is StupidAI important? the game seems to work correctly with BattleAI; I didn’t search a lot why it doesn’t work, but it seems that memory gets corrupted somewhere in there,
  • starting server / notifying client that server is ready can’t use boost IPC, so these messages go through java (using android’s Messenger for a simple IPC)

Currently testing only on my android 7.1, but in theory it should work on 4.1+.

I didn’t try to play any game longer than a week, but I think it is quite stable. Playing feels very weird, because map can’t be swiped and only viable way to scroll the map is through minimap.


I pretty sure that original idea to have StupidAI is to make it handle neutral creatures while BattleAI should be used for VCAI players.

Sadly this is not implemented: #2369

To be fair I not sure we should use it even on desktop since it’s cause compatability issues with Windows and we use networking for local game anyway.

So personally I would prefer to have it removed: #2560

PS: I sent you invite to our slack.


It’s great to hear the VCMI for Android will be alive again :slight_smile:
I have seen “oh so original” Heroes 3 “HD” version on Android at friend’s smartphone and… How should I put it, the laugh is still on… They have some bug on PL letters which suddenly cuts the texts making funny situations like “Troglodyci widz” which we could kinda translate to “Troglodyte Spectator” which in turn made my friend to extend the joke to the point of the image attached~

Besides what SXX said, I guess it is important so the CPU will not think in full power which in turn will allow us to sometimes win :stuck_out_tongue:

If you will need testing reports I can test as hard as possible the game on Android 5.5 , 6.0 and probably some 4.x if I will search a bit.
I can’t test on Android 7.0 yet but since you have that version I guess that won’t be problem for now :slight_smile:

Have a nice and sunny day~

Kiiro Yakumo


Do you mean it should work correctly without boost IPC in the current version? Hmm, maybe I should check if it works on android. That replacement for IPC was a first thing that worked correctly so I went with it… (currently messaging works like this: client-cpp sends msg to client-java (and enters waiting loop) -> client-java -> server-java -> server-cpp -> (server-inits and messages back) -> server-java -> client-java -> client-cpp -> (atomic_bool gets switched and we exit waiting loop)).

I’ll leave stupidAI/battleAI like this for now. It needs to be checked but it doesn’t seem that important… For now I’d like to make building process easier and allow for basic config editiing like in standalone launcher.

As you can see, currently special characters are broken on my version as well. :wink: That’s probably because vcmi default to CP1252 codepage and I currently don’t change it to anything else.

I have access to various versions of androids at work, but for the last week I’ve been quite busy and haven’t been able to check yet. I’ll upload the project soon(ish) and of course you’re welcome to test. :slight_smile:


I was working on porting it to Android on my own too, but didn’t manage to even get it working, so won’t call it stable like yours.
I guess I’ll ditch whatever I have and try helping your project - as soon as you upload it somewhere :stuck_out_tongue:

I’m on Android 6.1, so I’m up for testing too.


No. I just mean on PC we don’t really need any IPC at all since we can just start process and then do everything over network. Shared memory is absolutely unnecessary dependency we better to drop.


Shared memory is used to signal that server has opened socket.