A year-long failure, or experience developing a game for Android

Hello, Habrasociety!

In this article I would like to talk about my (not the first) experience in developing games for mobile platforms, the history of one game and the results. As the title of the article makes clear, this experience can be considered a failure, but here's how to see what will be discussed below.


Some time ago, for two years, I developed games for Windows Phone. During this time 6 games were released, only 2 of them were paid + trial and brought only a few dollars, the rest were free without ads. I developed games for this platform, because there was XNA + C #, I really liked this bunch, but then there were rumors, and then the realities that XNA support was ending. The search began for other engines, among which I liked Unity the most. I say right away that I don’t want to argue about the advisability of using it for small games, everything suits me here, even if other engines have an editor, C #, cross-platform, etc. At that time, Unity did not yet have Windows Phone support, but that didn’t bother me, because I no longer wanted to develop for this platform, at least for now (as one friend said, why ride a dead horse). Frankly, my games were weak, but the choice was made. The subscription of the Windows Phone developer was closed, a new strip of studies, tutorials and, in fact, game development began.

Game selection, start

As you know, you can not start with the difficult. For this reason, an idea was chosen for the trial game, which I already started implementing under Windows Phone, namely a puzzle in the style of the Pilot Brothers (screenshot), but with a slightly different mechanics. In my game, when I click on an object, the state does not switch between the entire row and the entire column, but only for the selected object and neighboring objects (above, below, left, right). To visually display the switching effect, it was decided to use directly the inclusion or ignition, but what can burn? Stars! Therefore, the name Shining stars was chosen quickly enough. Development has begun.

It is worth saying that there was absolutely no budget. Therefore, everything was supposed to be done independently - programming, graphics, promotion, etc.


There were practically no problems here. Functionality and mechanics are quite simple, because I made the foundation very quickly and easily. I had to suffer only with different effects in the form of rotation, scaling, sliding, etc.

Rotation - Unity has methods for rotating objects. But to be honest, they work for me sometimes strange, because in part I just poked at random and looked for an option that suits me.

Sliding was implemented on the level selection screen. Only part of the icons with levels were displayed on the screen (the size of the part depends on the size of the screen), the rest are displayed when switching with the left and right buttons.

Scaling was also quite simple as soon as I figured it out. The basic idea is that the game should look good on all screen sizes. There are not many lessons on this topic in the network, mainly I had to study forums. By the way, I want to immediately advise novice Unity users to go to their English forum, it is very lively, people always try to help, unlike most Russian-language forums on various topics. As a result, I came up with an option in which a certain screen size is selected as the basis, then a coefficient relative to the real screen size of the phone or tablet is considered. All game objects change the scale and position depending on this coefficient. Personally, my coefficient was not one, because different types of game objects had to be scaled differently due to that they were perceived differently on different screens. Some objects on small screens could be left in the standard size, others had to be slightly increased relative to the first.


In the very, very first version of the game, I wanted to make 20 levels. Well, the game would be interesting. According to wise advice, this number was expanded to ~ 100 (in plans). Of course, I did not want to invent levels myself and check whether they were solvable. I’m a programmer, so why mock myself! After some time, the generator was ready, which gave out all possible combinations of levels of a given size, then checked whether the level was solved, and output it to a text file. This was where my biggest problem was in this game. If with the size of the playing field 4 * 4 the number of levels was measured in tens of thousands, then for the field 5 * 5 there were already millions, for the field 6 * 6 ... Well, you understand. Yes, I’m a programmer, I can write a generator, I can teach him to solve levels, but I can’t teach him to choose which level is beautiful and will enter the game, and which will be eliminated. Therefore, all these millions of levels had to be viewed, manually selected. I even tried at first, but then figured out the scale of the action (and I wanted to make the playing field right up to the size of 10 * 10) and I felt sick.

Like it or not, I had to return to the manual drawing of various patterns. These patterns were introduced into the game, I personally decided on my own phone (at the same time, solvability test + aesthetic pleasure from solving the level). Unsolvable levels were finalized, uninteresting ones were thrown out. And after a while I had ready 120 levels, arranged in increasing order of their size and complexity within the size.

Level Creation Example
This is how the level creation process looks like. The grid marks the entire field, the yellow cells of the place where there are stars, the white ones where they are not. In the upper left corner is the level code in the form of which they are stored and processed in the game. In the upper right corner, a figure in light green means that I have solved the level in such and such a number of steps (there are still red squares for the unresolved levels), and an exclamation mark means that the level is selected for entering the game.

The number 120 was not chosen by chance. On different sizes of phones on the level selection screen, you can accommodate a different number of icons of these levels. With the number 120, I managed to break the icons into groups with the same number of icons in each, which is important. I didn’t want the first pages to have 12 icons, and the last only, for example, 10.


The graphics in my game went through, in my opinion, a whole evolution! Initially, I wanted to make the game very fast and release "what is" with those 20 levels. And this “that” at first seemed really good to me, but after receiving a couple of tips from other people, I thought deeply and began to redraw everything. The basis was taken of various famous games, for example, Angry Birds, from which I took the idea of ​​the appearance of the UI, the location of the level icons when they were selected.

Old version of graphics
Main menu with two button options. Of course, after the first, the second seemed beautiful! Until the final option was made.

Game Information

Window Level Selection Window

So that the game does not seem dead, the idea came up to do something in it that would give the opposite effect. The live background of the game became such an idea - if you take a closer look, the starry sky in the background is not just a picture, other colored stars blink on it (blue, yellow and pale yellow), and even a shooting star flies from time to time! Yes, this effect does not draw on originality and novelty, but I believe that it turned out well and helped create the right atmosphere in the game.

The final version of the graphics
The main menu with the settings buttons open (in order not to clutter up the screen, they are initially minimized and opened by clicking on the settings button)

Game information

window Level selection

window Window with a level during the game (one of the background options; there are 3 of them, randomly selected )

Attention was paid to absolutely everything. Game objects have been improved to be beautiful. UI objects (buttons, level icons) have been improved to be beautiful and intuitive only in their picture. Even for the icon, several options were developed, of which the final one was hardly chosen, and subsequently replaced with another one, which seemed to me more suitable. And how many times have I redrawn all the texts!

Initial Options for Choosing the

Final Option

TexturePacker helped me a lot in graphics layout, I highly recommend it! Its free features are enough for our purposes, and it collects atlases really well. I prepared several atlases - one for buttons and two sets for game objects (with localization in Russian and English). True, in the old version of Unity, I had to cut the necessary pieces using uv coordinates, which is somewhat inconvenient. In the new version of Unity, everything can be made much simpler with the help of sprites.

Sounds and music

There are no problems here. There are many resources where sounds can be bought or taken for free. Because There was no budget, I chose several suitable sounds and melodies that these resources allow you to download for free, i.e. everything is absolutely legal and without theft (yes, for me this is important).
The main idea was to create a calm environment in which the player can think with quiet music in the background. But the very first update of the game changed the situation - more rhythmic music was added with the ability to select the desired melody (calm or fast) in the settings.

Release, Promotion, Results

I note that I was going to release the game only for Android, because I have a corresponding phone, but there are no iOS devices on which I could test the game, and I don’t want to release without a real test. Also, the reason was that registration on Google Play is a one-time payment of $ 25, and Apple needs to pay $ 99 every year. Perhaps I will release the game under iOS, but a little later.

Immediately after the release, I wrote about the game on a number of Android forums and began to monitor the results that appeared soon, but this almost stopped. Then I released two updates, each of which I reported on the forums (at least some, but bump). There was also a variant of cross-ratings (you give someone a high score and ask you to praise your game). But this means installing a whole bunch of alien (not always at least somewhat good) games on your phone, a possible deception on the part of others (it's not a fact that they will appreciate your game in return), so I quickly refused this option.

At the moment, the number of downloads is very small. I guessed that there would be some kind of failure, but so much ... This is partly due to the fact that I posted not only a link to Google Play on the forums, but also the apk file itself, and judging by statistics, its downloads exceed the downloads of the game from the market.

The game is free. As a monetization, ad serving was selected. During the development process, I wanted to connect several modules - if it was not possible to display one, show the second, etc. The famous Chartboost was the first to connect, then it tried to connect RevMob and PlayHaven, but some hitches came out with them (frankly, they didn’t work in the game, I still didn’t figure out the reason), because there was only one module, from which all income . But if you take into account the above (the number of downloads and the desire of users to click on ads or put advertised games), you understand that there is no income.


As they say, a bad result is also a result. About 14-15 months have passed since the start of development on Unity (I don’t think of time on Windows Phone) until the release. In a good way, such a game is written in a month of part-time employment, and even this is a margin. The reason was the lack of time . No, there was enough time - a couple of hours in the evenings, a few hours at the weekend were enough to continue to make the game without long breaks. And I did not have enough moral health. There were a lot of personal problems during this period, and there was a desire to make a game, there were ideas, but I sat down at the computer, stared blankly at the monitor, then realized that I had no inspiration, that I could not realize absolutely anything, and turned it off . And this year flew by.

Let's start with the negative points. I really spent a lot of time on the game, but here are circumstances beyond my control. The game frankly failed, it did not bring me income (well, a few dollars do not count). And from this point of view, this is a complete failure.

But there are probably more positive points. First of all, this is an experience! On this game, I studied the basic features of Unity with one caveat - the game was developed on the old version, where there was no 2d yet. Now 2d games can be developed with this new technology, because most of my achievements from the game may no longer be needed.

On this game, I realized that the graphics are really important! Do not forget about it, never! If I released a game with the first design options, I would be ashamed of him. Now I have released a beautiful game. Yes, she failed, but I'm still proud of her! If you have a budget, you can hire a good designer. If not, then redraw it all over again until the result is really worthwhile.

I think that the only major mistake I made here is the choice of the genre of the game. Probably, most players love action games, arcades, maybe something else, but they don’t really like puzzles of this type. People see my game, someone may not like the graphics, and someone cuts it off because of the genre. And if we talk about the next game that I would develop, I would only change the genre, I would do the rest!

Also popular now: