📜 ⬆️ ⬇️

A year long crash, or an Android game development experience

Hi, Habrasoobschestvo!

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

Prehistory

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 advertising. I developed games for this platform, because there was XNA + C # there, I really liked this bundle, but then rumors went, and then the reality that XNA support stops. The search began for other engines, among which Unity liked me the most. At once I say that I don’t want to argue about the expediency of using it for small games, everything suits me here, even if there is an editor, C #, cross platform, etc. in other engines. At that time, there was no support for Windows Phone in Unity, but it 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 developer of Windows Phone was closed, a new band of studies, the passage of tutorials and, in fact, the development of games began.
')
Game selection, start

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

It should be said that the budget was absolutely no. Therefore, everything was supposed to be done independently - programming, graphics, promotion, etc.

Development

There were practically no problems here. The functionality and mechanics are quite simple, because I made the basis 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 sometimes work strangely for me, because in part I just poked at random and looked for an option that would suit me.

Sliding has been implemented on the level selection screen. Only a part of icons with levels was displayed on the screen (the size of a part depends on the screen size), 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 main idea - the game should look good on all screen sizes. There are not a lot of lessons on this topic on the network, basically I had to study the forums. By the way, I just want to advise novice Unity users to go to their English forum, it’s very lively, people always try to help, unlike most Russian-speaking forums on various topics. As a result, I came to a variant in which a certain screen size is chosen as the basis, then the coefficient is relative to the actual screen size of the phone or tablet. All game objects change scale and position depending on this coefficient. Personally, my coefficient was not one; Different types of game objects had to be scaled differently due to the fact that they were perceived differently on different screens. Some objects on small screens could be left in a standard size, others had to be slightly increased relative to the first ones.

Levels

In the very, very first version of the game I wanted to make 20 levels. Hmm, an interesting game would be. By wise advice, this number has been expanded to ~ 100 (in plans). Of course, I didn’t want to think up the levels myself and check whether they could be solved. I'm a programmer, so why mock yourself! After some time, the generator was ready, which gave all possible combinations of levels of a given size, then checked whether the level was solved, and outputted it to a text file. That was my biggest problem in this game. If at 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 understood. Yes, I am a programmer, I can write a generator, I can teach him to solve levels, but I cannot teach him to choose which level is beautiful and will enter the game, and which one will be screened out. Therefore, all these millions of levels needed to be viewed, manually selected. I even tried at first, but then I figured the scale of the action (and I wanted to make the playing field right up to size 10 * 10) and it felt bad to me.

Anyway, but I had to go back to hand drawing various patterns. These patterns were brought into the game, were solved by me personally on my own phone (at the same time a solvability check + aesthetic pleasure from the level solution). Unsolvable levels were being finalized, uninteresting ones were thrown away. And after a while, I had 120 levels ready, arranged in ascending order of their size and complexity within the limits of size.

Level creation example
This is how the level creation process looks. The grid marks the entire field, the yellow cells of the place where there are stars, the white ones where they do not exist. In the upper left corner of the code level, in the form of which they are stored and processed in the game. In the upper right corner, a digit in light green color means that the level is solved by me for such and such a number of steps (there are still red squares at the unsolved 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 fit 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 one only, for example, 10.

Graphics

The graphics in my game was, in my opinion, a whole evolution! Initially, I wanted to make the game very quickly 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 a lot and began to redraw everything. The basis was taken by 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 choosing them.

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




Game info window


Level selection window



So that the game does not seem dead, the idea to make something in it that would give the opposite effect. Such an idea became a lively background of the game - if you look a little closer, the starry sky in the background is not just a picture, other colored stars (blue, yellow and pale yellow) blink on it, and sometimes a shooting star flies! Yes, this effect does not pull on originality and novelty, but I think it turned out well and helped create the right atmosphere in the game.

The final version of the graphics
Main menu with open settings buttons (in order not to clutter the screen, they are initially collapsed and opened by pressing the settings button)


Game info window


Level selection window


The window with the level of the game (one of the options for the background; there are only 3, randomly selected)



Attention was paid to absolutely everything. Game objects improved to be beautiful. UI objects (buttons, level icons) were improved to be both beautiful and intuitive only by their picture. Even for the icon, several options were developed, of which the final was hardly chosen, and later replaced by one that seemed more appropriate to me. And how many times I redraw all the texts!

Icons
Initial options for selection


Final option



In the layout of the graphics I was very helped by the program TexturePacker , I highly recommend it! Its free features are quite enough for our purposes, and it collects atlas really well. I have prepared several atlases - one for buttons and two sets for game objects (localized into Russian and English). True, in the old version of Unity I had to cut the necessary pieces using the uv-coordinates, which is somewhat inconvenient. In the new version of Unity, everything can be done much easier 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. Since 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, this is important to me).
The main idea was to create a calm environment in which the player can think with quiet music in the background. But the 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 the corresponding phone, but there are no iOS devices on which I could test the game, but I don’t want to release it without a real test. It was also caused by the fact that registration on Google Play is a one-time payment of $ 25, and Apple needs to pay $ 99 each 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 forums about Android and began to follow the results that appeared soon, but this was almost the case. Then I released two updates, each of which was reported on the forums (at least some, but the bump). There was also a variant of cross-assessment (you give someone a high score and ask for a high assessment of your game). But this means installing a whole heap of alien (not always at least some good) games on your phone, a possible deception from others (it's not a fact that they will appreciate your game in return), because 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 was partly due to the fact that I posted not only the link to Google Play on the forums, but also the apk file itself, and judging by the statistics, its downloads exceed the downloads of the game from the market.

The game is free. Advertising monetization was chosen as monetization. In the development process, I wanted to connect several modules - if I could not display one, show the second, etc. The first was connected to the famous Chartboost, then tried to connect RevMob and PlayHaven, but with them came some hitch (frankly, they did not work in the game, I did not find out the reason), because there was only one module left, from which all the income should go . But if you take into account the above (the number of downloads and the desire of users to click ads or put advertised games), you understand that there is no income.

findings

As they say, a bad result is also a result. Since I started developing on Unity (I don’t consider the time on Windows Phone), about 14-15 months have passed before the release. In a good way, such a game is written in a month of underemployment, and this is with a margin. The reason was a lack of time . No, there was enough time - a couple of hours in the evenings, a few hours on the weekend was enough to keep making the game without long pauses. And I lacked moral well-being. During this period there were a lot of personal problems, while there was a desire to make a game, there were ideas, but I sat at the computer, looked at the monitor stupidly, then realized that I had no inspiration, that I could not realize absolutely nothing, and turned it off . So flew this year.

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

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

In this game, I realized that the graphics are really important! Do not forget about it, never! If I had released a game with the first design options, I would be ashamed of it. 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 everything again and again until the result is truly worthwhile.

I think that the only major mistake I made here is the choice of the game genre. Probably, most players love action games, arcades, maybe something else, but they don’t like this type of puzzle very much. 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, which I would develop, I would change only the genre, everything else would have done the same!

Source: https://habr.com/ru/post/227451/


All Articles