About my Android development experience or training on Tic-Tac-Toe

- My experience: 4re working months (really it lasted for a year and a half)
- Reader Level: Novice
- The topics that I will try to discuss in this article are: how I came to this, motivation, how to make a simple design myself, a little about SEO on Google Play, and one thought that was lost among all this about localization.
Hello, my name is %% username and I also write mobile games
It all started with Unigine Open Air 2012, I went there with friends who write games, hoping to just have a good time (spent), but when people who are passionate about writing games around
Super plan
The plan worked out almost immediately:
- We write the simplest game, put it on the market, have fun (code, draw, translate, optimize, add socialization).
- We take the experience (and a little code) from the previous paragraph, rewrite the gameplay - and voila, we have a different game.
- ...
- With the paragraph after the ellipsis, everything is clear to everyone.
At the moment, I'm somewhere at the end of the first paragraph. But it doesn’t let me go, and I constantly want to add something else here, add, finish, change.
As a fallback to the plan, I decided that such an experience would not be superfluous anyway.
Zen and Motivation
Motivation is a strange thing, everyone has their own. But it seems to me the general essence of motivation is that if you can fool yourself (cheating others is not good, but yourself is it!) And explain why you need to spend this sunny day on coding instead of riding a bicycle - be fooled! Even if the explanation is far from logic - it does not matter.
About where to take time
See, if you allow yourself to cut your application on Saturdays, every Saturday for 8 hours, purposefully sit down and do it! It turns out that in a year you will run 52 business days. And this is 2.5 working months! Let’s suppose that we think a little more about the application and architecture in the evenings and increase this time to 3.5 months a year. Already not bad, but now a feint with your ears and think about how productive we are when we write our application and when we work for uncle? Oooh, what is your odds? 1? 1.5? maybe all 2?
About the pipe (or where to spend time)
Imagine that your users are water that flows through a pipe. And your goal is to make sure that as much water as possible flows through the pipe. And, let's say, every improvement that you make gives you an increase of this flow by 10% (which is quite real, let’s say one improvement - one working day). So, at the beginning we have 1 user per day, and we want 1000, the question is how many improvements do you need to make in total? 1,1 ^ x = 1000, total x - 72 improvements in 72 working days. (Here are our 3.5 months and come in handy).
And all sorts of failures - it seems that he improved the project, but did not win 10%, it can be explained by the fact that the pipe has pieces of different diameters, and maybe you improved not the bottleneck. Or why there are no users at all - so you didn’t finish the pipe, what kind of users are you? In all respects, a pleasant model for self-deception.
About communication
It is very important to find someone who will cheer you up and who are also passionate about the same topic (mobile development). At my side sits a comrade who successfully saws his games, and with whom we often discuss a variety of strange things that we learn about the platform, about the psychology of users and more. This helps a lot not to abandon this hobby.
About the survivor's mistake
Remember her. Read not only the success story, but just reports like mine, and even more so - reports of comrades who failed. And only then draw conclusions.
About apps for a couple of evenings
I often hear about the “application on my knee for a couple of evenings” and it is very demotivating. I do not know such people personally, but I know others who spent many months before the application began to bring normal money. It motivates me. (considering that I spent about 4 months already).
Pro purchase icons
I’m trying to spend money (especially since I don’t expect anything from the test project). This is a strange thing, when you spent a lot of time dofig, which costs a lot of money (well, experience still got in return), but you can’t buy an icon or a translation or order a design. If you have such garbage - you need to fight it, well, or at least somehow take it into account. This is not the case when you draw a wretched icon spending more time on it (and money in its equivalent) than if you ordered the icon from the designer. In general, application development is similar to a game. In the game, it is important to get the player to make a small purchase as early as possible, because as soon as the user makes at least one purchase, he will spend money much easier. So here - buy an icon, and then it will be easier.
All people are different again, someone is pushing the dofig of his time, someone is money.
PS Many thoughts like these came to my mind as a kind of enlightenment - that’s why I called this part of the article “Zen and Motivation”.
About design
As I said, I’m gonna squirt, so I’ll tell you how I made at least some design on my own.

- To start, google images on the topic and find some in several colors that we like.
- We take a set of flowers from it (it is desirable that there are not many flowers).
- Since we don’t know how to draw (at least I don’t) - flat design is our choice.
- At first I thought to find some kind of vector editor to draw everything in it, and then export it to png and use it in the application. As a result, it turned out that the document “Drawing” in google docs and, accordingly, its capabilities to work with vector objects (hello to a friend who drew the design of iOS 7 in Word) was quite enough for me - there just turned out to be an object similar to a donut (zero) and a vector multiplication sign (cross). The button was also drawn first in the same editor and then exported to png.
Here's what happened: The





background texture was also drawn in google docs, and then it multiplied and rotated in Paint.NET.
The result was something like this:


Both options in my inexperienced view turned out to be quite acceptable. Which I wish you too.
The remark about the button is still this - a little later I found out that after all, android allows you to draw a few vector objects natively - they are called Shape and allow you to draw just such a button with rounded edges, border and even a gradient. Create such a Shape in the drawable folder, and then use it as a background for buttons or other objects.
Animation
To make it a little more interesting - for each move I made an animation (also a native thing in android).
The effects are as follows:
- manifestation (alpha change from completely transparent to opaque),
- appearance (resize from point to cross or zero),
- rotation around the axis (vertical or horizontal - resize along one axis to zero with the center in the center of symmetry of the cross or the zeroth then reverse resize),
- rotation around the center (only for a cross).
Let's look at an example of rotation around the X axis.
Add the overx.xml file to the res / anim folder of the project with the following contents:
- pivot - means the center point relative to which scale is produced
- repeatCount - 1 - means that the animation will be executed once and after that there will be 1 repeat
- repeatMode - reverse - means that the repeated animation will be performed in the reverse order - that is, it will return all the changes made by the original animation back
I hope the rest of the parameters do not raise questions at all.
The call of this animation directly is as follows:
Button button = (Button)findViewById(R.id.button);
Animation anim = AnimationUtils.loadAnimation(this, R.anim.overx);
button.startAnimation(anim);
I created a pool of animations for the crosses and for the zeros separately and used them randomly. So it turned out that you should not use the same Animation object to animate different images. For me, this somehow turned out to be unobvious. And I had some strange problems.
Icon
The icon is very important (but I didn’t notice the change in the number of jumps from changing the icons).
Icon evolution:






About localization
It looks like the times when it was enough to make the translation of the application into Korean so that they started to download frantically passed (at least for tic-tac-toe). I think this is because before there was a chance almost immediately upon request to be one of the first - now it is gone.
All one useful thought about localization I have is this: we go to the xda developers forum, monitor the branch where the developers post their applications and write to them, let me translate your application into Russian, and you mine into my native language. But you first need to figure out first, so that it doesn’t turn out that it will take a day to translate someone else’s application, and you only have a couple of lines to translate. I wrote the 6th, the second responded, the translation so far we have done so with only one comrade, the experience is quite pleasant, even despite the fact that I had to translate three times more than my friend. But on the other hand - one more good application is more in the Russian market.
About SEO
All that below will refer not to the tops, but to the search by the keyword “Tic Tac Toe”.
So how do you go higher?
- First of all, the number of leaps affects the position.
- Asterisks also somehow affect, but I still do not understand how. I think at least users will be reluctant to download a low-rated application. To get asterisks - do a reminder to users in the application to rate and go to Google Play.
- The most interesting is the name of the application. Here is more detailed.
- Other things being equal, “Tic Tac Toe” at the request of “Tic Tac Toe” will be higher than “Tic Tac Toe online”. Even more, if you have an application called “Tic Tac Toe” you will bypass many comrades even with a large number of downloads.
- Google Play prompts after typing “Tic Tac Toe” in the search for other popular options, for example, “Tic Tac Toe online”, you can name it that way if you have a really online version and you are high for this request (if you change the name), then there is a possibility that this traffic will come to you. And it may be larger than the current one.
- It makes no sense to be called “Tic Tac Toe” because this way you will not be high enough for “Tic Tac Toe” and not high enough for “Tic Tac Toe”. In this case, it is better to leave “Tic-Tac-Toe” in the Russian description and “Tic Tac Toe” in English, then no matter what language you choose, you will be higher both at the request of “Tic-Tac-Toe” and “Tic Tac Toe”.
- You can also experiment in the Russian name to write “Tic Tac Toe” and in some Thai “Tic Tac Toe online”, yes in Russian. Then you will be high enough in the Russian search for “tic-tac-toe” and also “tic-tac-toe online”. But it is, thoughts for reflection.
- The name of the application has high priority when ranking by keywords. Not even so, the name of the application in any localization takes precedence over the description in any localization.
- But the description is also important, so adding the words “Tic Tac Toe” to the description several times allows you to go up a couple of positions, but it certainly depends on the applications that are located directly next to you in the search.
- About translations into different languages - users of other countries do not write “Tic-Tac-Toe” they write the most diverse letters that we need to somehow learn. The traditional way is to open Wikipedia and see the names in different localizations (Google translate is wrong - Wikipedia is not). For tic-tac-toe, I found a wonderful article in Belarusianin which translations into many languages are written. (From there I learned the origin of the wonderful word "gooseberry" which means checkbox and which I considered slang). So, at the request of “tic tac toe” you can, in the beginning, be far beyond 100 places, but at the request of “Kryzhyk-nullik” everything can be completely different :). But this is if you add a description in Belarusian (google-translate hi) and a name in Belarusian. Google translate is not very good of course, but as a result, adding about 10-15 languages (and most importantly localized names), a little more users began to come (10-20 percent) and those who had never been there before began to come.
- Yes, on Google Play, descriptions and names of applications are updated for about an hour or two. But the search index is updated instantly. That is, you change the name to something else in the description, save it, and you can already try to search for your application on the keyword with Google Play and immediately evaluate its position.
And a couple more comments regarding SEO
I tried to add localized names to the application itself in the hope that this would somehow change the position in the search, but alas, no. (I assumed so because Google play gives hints that they should translate the application itself into such a language, which means that it may pars application localization files).
New applications (less than a month in the market) run the risk of getting into the top of new ones, so if you are sure that the application can shoot directly, it is better to wait a little while laying out and shoot. I, of course, didn’t think of anything like this and I think that in most cases of leisurely development (indie), feedback is much more important so as not to abandon this whole thing completely. Therefore, my first version looked very poor.
And finally
When I was just going to write an article, I thought it would be something comprehensive, fully revealing everything that happened to me over the past year, but it seems to me that I have already tired readers with my letters, and I myself am already tired. Therefore, I decided that I would describe only a few things regarding application development, and leave the programming itself for a possible second part.
The announcement of the sequel will be something like this:
- work with analytics,
- different ad networks
- Crashlytics,
- code obfuscation (proguard),
- implementation of the table of records (oh, the task was too heavy),
- selection of a player’s record score metric (now this is the player’s reaction speed over the last 15 games, but I had several options and I'm still not sure if this one is ideal),
- protection of locally stored data with encryption,
- and simple cheat protection in the high score table.
- I can also tell you about sharing player records with a link to the game’s website, but players are reluctant to rummage through records.
Add the rest to taste.
If you have any wishes for a sequel or questions or better suggestions what and how best to do - I am happy to discuss.
UPD: Active and new users for the last month.


UPD2:
Analytics showing that adding translations gives a plus
Here's an analytics that compares two months — the month before adding translations to the descriptions on Google Play and the month after.
You can see that the upper circle on the right has become more colorful (there are users with languages that were not there before).
You can also see that the shares of Russians and Americans have decreased (in percentage terms). And the share of the British, on the contrary, increased. (probably due to the fact that in English the tic-tac-toe is called “Noughts and Crosses”)
You can also see in the numbers - that in Greece, Bulgaria and Italy there were no users at all, and then they appeared.

You can see that the upper circle on the right has become more colorful (there are users with languages that were not there before).
You can also see that the shares of Russians and Americans have decreased (in percentage terms). And the share of the British, on the contrary, increased. (probably due to the fact that in English the tic-tac-toe is called “Noughts and Crosses”)
You can also see in the numbers - that in Greece, Bulgaria and Italy there were no users at all, and then they appeared.
