jack: (Default)
I posted Emojilution Match to android store! I don't really expect anything from it, but it was really exciting to go through the process and see if listed there. I had to fiddle the graphics to get right size versions, but they look really quite professional[1]. Like I'm competent or something :)

The process was fairly easy: you need to sign up for a developer account (paying a small fee) and a merchant account if you wanted your app to be paid. And fill in a bunch of forms about app versions, inappropriate content, regions, etc, etc, which were a bit intimidating but not complicated. And find the .apk not from the build output directory but from the top-level app directory.

I know other people have done this ages ago but it was exciting to actually do it for the first time.

The process was *mostly* hassle free. I did hesitate over "let google manage your app signing key and make unspecified (?) improvements to your app", but I decided for a simple game that was probably ok and I'd be more careful for an app that actually handled people's data of any sort. One of the sorts of content you need to describe if your game includes is "sexualities", I'm not quite sure what that means but I suspect :(
And it strongly pushes you to include your actual home address and really doesn't make clear that you're putting that on the internet for anyone to see[2], but apparently it's not absolutely required.

It's only on android for now -- I'm sorry, I wish it wasn't constrained to one platform, but porting is an effort (and I hear the apple store is a lot more bureaucratic and expense, is that true?) If anyone can point me in the right direction I might consider it.

https://play.google.com/store/apps/details?id=org.cartesianheights.emojilution

[1] With a couple of exceptions I need to fix.
[2] Hello? Might that have, like, catastrophic downsides?! :(
jack: (Default)
https://www.dropbox.com/s/cdky2dnc8ck50rk/emojilution-2018-03-04.apk?dl=0 (Edit: See alternative link at bottom)

I made a new version of Emojilution Match! Prominently, I changed:

* Removed all the extraneous menus and options left over from the open sudoku, and updated the icon
* Changed the scoring so when you match a third-level evolution of an emoji, you unlock an additional starting emoji which is worth more, but the more you have, the more cluttered the screen gets
* Added a cheat mode so you can play at home if you prefer
* Fixed saving and restoring so your game is still there if you restart the app (or turn it sideways)

General notes

* On an android phone, you should be able to download the apk above and it should give you an option to install it. You may need to enable "install from untrusted sources" in the settings somewhere. But I know lots of phones treat apks weirdly so if it doesn't recognise the alk I would like to know and if possible help.
* You need GPS (unless you need cheat mode), it doesn't yet warn you if you don't have GPS on.
* You do NOT need mobile internet (or any form of internet). That does mean, your game isn't saved to the cloud, so if you use a new phone, you'll need to start a new game :)

Edit 1: Currently *only* on android because that's what I was able to figure out first. It would be nice to be cross platform but it probably won't happen soon, sorry.

EDIT 2:

I believe the above file is correct, but dropbox apparently doesn't do something the HTTP headers necessary to get android to recognise the file. I don't quite understand, but downloading from github seems to work:

https://github.com/CartesianDaemon/emojilutionmatch/raw/master/releases/emojilution-match.apk

EDIT 3

And here's a version which doesn't crash at negative longitude:

https://github.com/CartesianDaemon/emojilutionmatch/blob/master/releases/emojilution-match-0.3.apk
jack: (Default)
OK, I revisited my emoji matching android game. Now I think I understand what's going on better, both the way the author of the game I based it on laid out different files, and how android UI works.

I usually split my code into "backend" and "frontend", and frontend usually instantiates a backend class that does all the working out all the consequences. And this was similar, except backend was called "game" and frontend was called "gui" which is reasonable but I kept expecting things in a slightly different place than they actually were.

The frontend is mostly a list of lots of SomethingActivity classes, where in Android-development speak, an activity is one mode the app may present to the user, something which displays... something, and handles input, etc. So in this case the important one was PlayActivity, when the game is actually active, but there were a lot of others for importing, exporting, choosing a game from a list, etc, etc, which I didn't use.

The way multitasking is handled, there are functions called when your app resumes, pauses, starts up, is killed, etc. And you need to look at a big flow chart to make sure you get it right, but I mostly just copied the code already there. Basically, there's a "quick save" thing, where if your app is still running in theory but there's not enough memory for it, the OS calls a function with a variable in which it can stash its current state (including things like "are any menus open" etc), and then if it's switched to the front again, that is used in its initial start-up function and it's expected to reconstruct its current state from that info, as if it had never been swapped out.

But it *also* needs to do a real save when it's swapped out, because the phone might restart or kill its app completely before it's swapped in again, where it writes the current game layout to a database (but doesn't try and track things you wouldn't expect to be the same after you start it up again).

When you turn the phone sideways, these functions are also called: there's not a separate "reflow all the GUI elements" function, instead it temporarily saves the state, then restores it again in the new orientation.

And I added a cheat mode so I (or anyone who would like to), can test it out without walking around.

Active Recent Entries