Rebus inside out – my first Android game published

Rebus inside out - a new kind of word puzzle game

Rebus inside out – a new kind of word puzzle game

For the last couple of months this blog has been abandoned. This happens when someone becomes so excited about his idea, that he forgets about everything, and devotes all the spare time he has to developing this idea. Which exactly what has happened to me.

I love puzzles. This is the only type of games I play on my mobile phone. Last year I came across a very good puzzle game, which took away a couple of weeks of my life: REBUS – Absurd Logic Game. And recently I thought, what if I inverse the idea, and instead of finding out the word encoded in a picture, try encode that word using the set of given pictures.

Developing a quick prototype took about a week, and when I showed it to my wife, she found it playable. So I decided to move on and develop a complete game.

The idea


There is a picture, representing some word. You have to guess this word, and then construct it, using other pictures given below. Of course, most of times you need only certain parts of these words, so you have to remove some letters from the front or the back of these words. Like this:

Removing the first two and the last one letter from the word "design", merging it with "nature", results in "signature".

Removing the first two and the last one letter from the word “design”, merging it with “nature”, results in “signature”.

For each correctly composed word you get some coins. Initially, the number of coins equals to the number of letter the target word has. Each time you remove a letter, while composing the target word, the number of coins is decreased by 1. The aim is to find out the word while removing as fewer letters as possible.

The puzzles are composed in such way that there is always one best solution (which gives you at least one coin after solving it), and there are other not-so-bad solutions (which give less or even no coins).

Coins can be used to get various types of hints, like revealing the target word, or the word options, or they can be used to unlock new puzzles. Initially, only 10 out of 250+ puzzles are available, and each time you solve one, a new one is unlocked.

The player can purchase additional coins using in-app purchases, and Google provides a very easy way of integrating such a feature into your app.

The platform

Android. Just because I’ve already had some experience developing Android apps and recently completed a few Android Development courses, I decided to make it the primary platform. The iOS version will follow, if the Android gets even slightly successful, meaning that it gets at least 1000 downloads by the end of 2017.

The puzzles

Probably, this was the most time-consuming part. Constructing puzzles manually would take weeks and would have been error-prone. So I decided to automate this task.

I downloaded a file containing 1000 most popular English nouns. This dictionary was fed into a Python script, which I developed.

On the first iteration the script creates all possible splits of each word; each split containing word parts with at least 2 letters, like this: “massage” = [[“ma”, “ss”, “age”], [“mas”, “sa”, “ge”], [“mass”, “age”], [“massa”, “ge”], [“mas”, “sage”], [“massa”, “ge”]].

One the second iteration the script looks at each word, and for each split it finds the full words, from which each word part of the given word can be obtained by removing letters either from the front or the back. For each word part there can be many full words, from which it can be obtained, so the script keeps track of how many letters have to be removed from the full word to get the required part – the cost of that word.

Then it sums up the costs for each combination of full words that construct the target word, and drops those, whose costs are equal or higher than the number of letters in the target word. The combination of words, which has the lowest cost becomes the best possible solution. Limiting the cost of the best solution to the target [word length – 1] ensures that the player receives at least one coin for successfully solving the puzzle using the best solution.

After running the script on the entire dictionary, something like 400 questions have been generated. These questions then have been manually checked. Many puzzles had similar word options, because, for example, if there are many target words containing the part “id”, and the shortest word option in your dictionary, which contains this part is “idea”, of course the script will suggest this word for almost all of such puzzles. So these had to be manually substituted to a different word options. Often, this led to increasing the cost of the best solution, but gave a greater variety of word options.

The resulting set of puzzles has been saved into an XML file, and imported into the Android project. The app would then parse this file, and use it to display the puzzles.

The graphics

Tricky part. Android runs on a vast range of devices, each with different screen size and resolution. There are literally thousands of possible combinations of these, and it is impractical to try to create images that suit the majority of them. So the solution was to use vector icons in SVG format. Android Studio can import this format, so that there is only one resource for all screen sizes and densities. Also, this greatly reduces the size of the app, because often, vector images take less space than raster ones.

I still had to create different variations of the main puzzle screen, where the lower part of the screen that contains the buttons has been rearranged for better utilization of the available space on larger screens. However, this was just one such place in the app, and all the rest of layouts are completely identical for small, medium and large screens.


Surprisingly, this was the easiest part. There is a singleton, which keeps track of the score, provides the puzzle data, decides, whether the player has solved it or not, and saves the progress to a small internal database. The rest is quite straightforward, so I won’t describe it in too much details.

The result

launcherThe game is now available on Google Play, and it is free. Now I’m trying to figure out how to cheaply promote it so that I get the desired 1000 downloads by the end of this year. Social media has been utilized, but this did not result in too many installs. I’ve sent review requests to a few dozens of Android gaming websites, and still waiting for responses. I even tried to run an AdWords campaign, which brought me about 50 installs for the $15 spent. Still, 1000 installs is quite far away. Probably, a larger promotion budget would have given me the required numbers, but unfortunately I don’t have a spare penny at the moment to spend it on promotion.

All in all, this was a good exercise, which gave me the opportunity to get some experience in all stages of an app development, starting from the concept, to prototype, to the complete app, and to promotion. It would be nice to do the same for the iOS version, especially, if the app also brings some money.

How to promote an Android app that no one actually needs – Part 1: Begging for reviews

You reached this moment when you generate a signed APK, upload it to the Play Store, fill all that description and screenshot stuff, and hit ‘Publish’. And then comes that thrilling feeling… How many people will have downloaded it?

Just to get rid of that disappointing zero in the dashboard stats you download it via the Play Store to your own Android device. The next day, there is 1.

You turn on to Twitter in the hope that someone from your tiny followers pool will find the app worth the downloading hassle, or at least do some retweets, like this:

Oh, what’s that? There’s 2 now! You and some other guy! However, now you see another disappointing number, 1/2, which means that this guy has uninstalled it right after first interaction with your app. Too bad. You wait another week or so, but nothing really happens. Your download stats look something like this:

Google Play Store stats after a week

Sad picture…

This was my situation after I uploaded my very first app to Google Play Store (here’s the link, by the way). The app was developed while going through one of the Android Development courses on Udemy, just to refresh my Android skills, and I wasn’t planning to monetize it in any way. However, just to make the numbers look better, I decided that my app needs some promotion. In a month I want to get, let’s just randomly say, 1000 active users. Is it feasible if you don’t plan to spend a penny on promotion? Let’s see!

By the way, in a few days after you submit you app to the store, you will be contacted by several companies offering you to promote your app and get some positive reviews using their services. If you have some spare money to spend on these, you may want to try them.

First thing, asking Google: “how to promote an android app for free”. Besides the ads of the services, which offer you to “reach millions of mobile users”, there will be hundreds of pages written by random people with “XX creative ways to promote your app for free”.

Despite being pessimistic about the specialized services, in terms that they will all probably ask you for money upfront, let’s test what came out on the ads first. I got five of them: Appnext, AppBrain, StartApp, AppLift and Tappx.

Note to myself: Create an app that generates names for app promotion platforms. You just take the dictionary and add ‘App’ to a randomly selected word: AppGiraffe, AppPotato, AppNostril…

So, what do we have here…

1. Appnext

Signed up, added an app. Now on to creating a campaign… and they ask me how much I’d like to spend per day. I do not want to spend anything, so skipping this option.

2. AppBrain

Singing up, then trying to add my app… Wait, what’s that? They have already listed it in their database! Cool! No need to add it manually. Now going to dashboard and creating a campaign… And again, asking me for money.

3. StartApp

Their landing page says that if I deposit $50, I will get another $50 credit. So just skipping them too.

4. Applift

Signed up… And they told me to wait until they contact me. Disappointing. (Edit: there have been 7 days since I signed up, and still nothing from them. Wonderful service!)

5. Tappx

Easy signup and adding of the app. There is an option to promote the app for free using cross-promotion, which means that you have to display a banner promoting some other apps, and the banner of your app will be displayed in exchange. It may be the way for someone who does not object to display banners, but I do not want to do this (ok, I’m missing an opportunity here, but I personally find displaying banners in such a small app quite unfair towards my users).

Alright, specialized services are not an option for me. So moving on to the zillions of creative ways.

Basically, if you compile what these guys are telling you, it comes down to the following things:

  • Post the link to your app wherever your can: your blog, email signature, Facebook groups, Pinterest, LinkedIn, etc. Done it.
  • Polish you app and its page: make good-looking icons, screenshots, videos (if you can). I’m not even remotely a good designer, so I can’t say my app icon or screenshots look good. Taking a video of a simple app? Not worth the time spent, I think. Come one, who would want to watch a video of how I switch back and forth over my app’s two screens, telling how easy and fun it is to find pattern-matching words? One good advice here was about making a very good app description, which both attracts the user’s attention, and uses the right amount of relevant keywords, so that it is easy to find your app on the store. Did here my best effort, so hopefully, it helps.
  • Reach out to influencers: ping some well-known guys on Twitter, Facebook, whatever asking them to tell their audience about your app. I tweeted the guy, who is the author of the course, and he retweeted my message. But literally nothing happened. Nobody has downloaded it. And this was despite he has almost 15k followers. Anyone knows any other easily-reachable person with a larger audience, who would be so kind to tweet about my app?
  • Submit your app to various app review sites: surely a go-to approach for my case, as it does not require any money investment at all. Below I’ve listed the sources that I’m going to use.
  • And, weirdly, go offline and tell people about your app. Probably, very specific to a limited number of apps, and definitely not my case. I’m not going out to streets and telling random people about a newly released fantastic app for solving word puzzles.

So, to sum up, the feasible thing to do would be to submit my app to as many app review resources, as I can, and wait for the results.

I have found several lists of the websites, where you can submit your app for review. Many of them are free, some require paying for reviewing, some specialize on particular platforms, and some are just abandoned. Therefore I took a 5-day pause and manually complied a list of exactly 100 sites (out of around 300), where you can submit your app. The full list is available on this page. It’s funny that this magic number was just a coincidence, I didn’t plan to make it to look round.

From this list we are selecting only those which accept Android apps, and, because we are poor, those which offer a free review. All of them say that they do not guarantee that the app will be reviewed, because they receive millions of free review requests per day, but we’ll try.

So, we start going through the list and begging for reviews. In total, I’ve submitted the app to 25 app reviewing resources, providing them with the basic info, such as app name, the link to Play Store, app description, etc. Some may feel uncomfortable asking random people to do some unpaid job, but hey, this is what they offered to do themselves.

Note: It is convenient to prepare a spreadsheet with your app’s key details, like the name of the developer, app description, app URL, etc., so you can just copy/paste them into the submission forms. Saved a lot of time for me.

After I’ve completed this job, I found that there are other sites, where you can showcase your app, which fall into several categories:

  • Community review platforms, where you review others’ apps in exchange for your app being reviewed by others – a good option for me;
  • Startup showcasing platforms, where you submit a description of your product (could be anything, not only apps), and the community will try and rate your product – some of them may work for me;
  • Mass app submission services, where for a small fee you are able to submit your app to a number of review websites – I’m not going to do this.

So while I’m waiting for the first reviews to appear (if there will be any), I decided to spend some time submitting my app to these:

  • ProductHunt – will give you some good traction if you manage to get enough upvotes (read: if your app is actually useful and innovative); mine is not useful, nor innovative, but we’ll give it a try;
  • Preapps – a platform for posting info on upcoming apps (before they are released) and new app ideas; haven’t figured out the usefulness for the app that has already been released, but submitted it there anyway;
  • Betalist – a platform for pitching recently launched startups; not sure that I would meet their submission criteria, but in any case worth trying;
  • ReviewsMotion – another community review website with simple idea: you review someone’s app, and get reviewed in exchange; posted there;
  • Reddit – Apps for Android – a large community devoted to Android apps; posted there, and expecting fierce reaction from them for wasting their time with my useless app 🙂

In total, if I exclude the time required for finding these resources, it took me about a day to submit my app to all the websites. I guess, it’s not too much for an app, which you are not planning to monetize. In the next post, which will come in a month, we will analyze the outcome of our experiment, and see, if these efforts have brought us any significant results. Stay tuned!

If you liked this article, consider following me on Twitter