Android Version


Yeah as @dissociativity guessed, the save game long loading times appear to be caused by deserializing map memory from the save game data on disk - here’s a grab from the Android Studio profiler with the callstack:

It appears the short stall before displaying the surface level of the overmap is a similar issue - slow json read times for a large amount of data - seems serializing in monsters is taking the lion’s share, probably as there’s simply a lot of monsters:

I wasn’t able to get a capture of the quicksave lag before it exits back to the main menu, but I assume it’s a similar issue.

At a glance, I think a potential fix to this problem across the board might be to adjust the json data loading so that it always loads from a string buffer in memory (ie. the JsonIn class in json.cpp/h takes whatever std::istream object is passed into it in its constructor, immediately streams the contents of that stream into a std::string buffer in memory, then does the rest of its processing using a std::istringstream that reads from the string buffer) rather than operating directly on a fstream, since it seems file seeking using a std::fstream is causing quite a performance hit. Some of the code may already do this, but it would be great if it was default behaviour for all JsonIn streams. Not sure how much of an issue this is for the desktop version as file IO seems to be pretty fast, but wouldn’t be a bad idea for scalability and would definitely improve Android performance. At least I think that will work anyway.

Edit: just tried playing around with the solution I suggested above and it doesn’t seem to make much of a difference to load times unfortunately! I think IO streams are just rather slow in C++ across the board. Oh well, back to the drawing board.


My pleasure, glad you can reproduce it. Thanks for all your work on this!


Is there a way that we can have the ability to assign show/hide keyboard and show/hide quick shortcuts to the two fingers swipe gestures? I want to play this game in immersive mode (hiding the Android navigation bar) but would still need a way to toggle the keyboard and quick shortcuts on and off.


Ah, that’s a good suggestion. Are you able to turn on/off immersive mode yourself, or would you prefer if the app managed it for you, eg. through an “Immersive mode” option in the Android settings? I’m thinking the latter would make the most sense. When enabled, it would probably disable the two finger swipe up/down keyboard mappings and use them to show/hide the keyboard instead. It might be possible to allow swiping up from the bottom of the screen to reveal the keyboard, but I think this may cause issues as some Android implementations have their own system-wide actions for swiping in from screen edges.


The best solution would be if the app could handle this itself.

I know when I was compiling my own version (before nightly builds of Android were a thing - an awesome thing by the way!) I made some changes so that firstly it would run in immersive mode and secondly I hijacked the two fingers swipe up and down gestures. I made it so that two fingers swipe down would hide the keyboard if it was showing and two finger swipe up would show the keyboard if only the quick shortcuts were showing. If only the quick shortcuts were showing a two finger swipe down would hide them. If nothing was showing then the first two finger swipe up would show the quick shortcuts then if you swiped up again the keyboard would show. (I also removed the toast when the quick shortcuts were hidden).

I found that this worked really well and allowed me to play in fullscreen without the navigation bar.

I’m not sure if there is anyway something like that can be integrated as it might not suit everyone? It was great for me because obviously screen real-estate is huge when you are talking about a screen that is. 5" - 6".

Also I think that (for me anyway) if fixes some slight issues when scaling fonts. My resolution is 1920px wide (without the navigation bar) but with the navigation bar it’s 1794px and with a font width of 8 it seems to scale perfectly at the full resolution of 1920px but not quite perfectly at 1794px.


Ah yes, I remember playing with your build and seeing those changes, it was a cool idea actually - imho a better use of the two finger gestures than the current defaults (panning around the map). So perhaps the best solution is to add an “Immersive mode: true/false” setting to the Android settings. It defaults to “false” (preserving current behaviour), with a description along the lines of “Hide the navigation bar. Use two finger swipe up/down to toggle quick shortcuts and virtual keyboard.” When this setting is enabled, the “Two finger swipe up” and “Two finger swipe down” action mapping options are disabled to indicate they cannot be used in immersive mode. Sound okay?

So will the devs do update for android version (solved)

That would be awesome! :):grinning:


Aye bro so i got the newest version. February 26 and it keeps crashing everytime i open it. I even turned off software rendering and all that did was mess up the screen, it just showed a smaller version of the screen on top of the original which was frozen. Im using a 2gb ram alcatel 4 fierce


I’ll have to test it on my snapdragon device, Mediatek CPUs very often have compatibility issues due to them not releasing source code for things and the newer android ports being a bit of a hack-job.

Anyway, game technically works.
Both software and hardware rendering for myself, BUT the renderer’s scaling is broken and it renders to a tiny window.

Apparently a fix is planned soon to fix all this, as it results in an issue on the PC version too.




Known issue, I mentioned it on GitHub and there’s a fix in the pipeline, may take a little while to test and verify though.

Edit: More info here for anyone curious:


Same thing happened to me


The same small window happened to me in the February 26 update when i turned off software rendering. If i kept it on it would only crash my game and everytime i tried getting back on it would just kick me out. I need help


works great for me now using a device with a snapdragon 625 and 4gb RAM


Ah brilliant, looks like it’s been fixed! Works fine for me too, tested 8551.


I’m just here to say thank you for your hard work Stud! You rock! CDDA on Android is so good. It’s become my go to game to play on my phone. XD


Any idea if/when you’ll be releasing an official 0.D release on the Play store?


Never, it’ll be on F-Droid if anything


I meant an official build from the Android developer. I see it was last updated Feb 21.


The unofficial Google Play version is no longer active - just download the latest APK from the Jenkins build machine instead.

It can’t be updated anyway as the app id changed when we merged it into mainline. I’ve kept it alive as I don’t want to interfere with anyone who’s still playing on that older version.