Mobile game on Unity. The first pancake ...
After completing the creation of the puzzle game on Unity and releasing it on Google Play and the AppStore, there was a desire to share experiences and impressions. And get constructive comments and suggestions, if any.
So, the project was done on Unity 4.5 Free with the efforts of 5 people in their free time from work and household chores. To organize teamwork, we used the Bitbucket service - there just up to 5 people can be added to the project for free. Version Control System - Git. As I understand it, Unity PRO has its own version control system, but we decided not to buy PRO and not to hack - yuzali Free
The first problem that was encountered was a rather complicated merging of changes made by different developers. Unity project files - forms, prefabs and so on. - have their own peculiar formats, and how text files do not merge. As a result, we simply shared the responsibility: more than one person did not rule at the same time one form or one prefab. This is easy to achieve if the tasks are distributed correctly. Of course, there were no problems with the script files in C #, they were corrected simultaneously
They decided to do the project in 2D. The final picture is formed of 3 layers: the background, the shadow of the element and the element
. Then testing the game on devices, we found that we have very low FPS - about 20, and insane battery consumption. It turned out that the problem is in displaying a translucent layer of shadows. There aren’t many of them at the level, but in Unity this completely kills the performance.
We started optimization - we reduced the sizes of the textures of the elements, collected the textures in atlases. FPS got higher, but the battery still landed very quickly. Then we made a mechanism for lowering FPS in those moments when the user does not move the elements, and there is no animation
It looks something like this: there is a dictionary where various animations and user actions serve as keys. Each key is associated with an integer - a counter. An animation or action increments the counter; when completed, it decrements. When counters == 0 for all keys, we lower the FPS:
Application.targetFrameRate = Constants.CountFPS_Min; // == 10, in our case,
As soon as something happens, we similarly remove the restriction. After this simple trick, we forgot about the problems with the battery.
A separate topic can serve as we butted with fonts and in general the GUI in Unity. It was not a very simple job. But, fortunately, in Unity 4.6, everything has been significantly redone and improved, so I won’t stop there.
At the time of the release on Google Play, we wrote on several sites and forums about our game. This gave the first peak of downloads:
Then we got to the “Top gaining popularity” in the Puzzle section. After that, everything settled down at the level of 150 downloads per day. The next peak was after 3 weeks - we were in the “Similar” section to our main competitors - “Lazors” and “Dr. Laser. " At the moment we have 200 downloads per day.
The game has internal purchases - you can open chapters without going through levels and buy tips. The hints are most in demand, especially the smallest package - 20 hints for $ 1. Net profit per day is now about 200 rubles.
An interesting observation: improving the game, adding music, more complex levels, changing the design and so on. - does not lead to an increase in the rating of the game (place in the search) and an increase in downloads, but increases the number of purchases. So,
in the absence of a professional designer, they messed around with the icon on their own:
Another interesting observation: I spent a couple of days to make a commercial, and then found that it was viewed by a very small number of people coming to the application page. Was it worth it?
A month after the release of Google Play, we decided to go to the AppStore. Also with minimal advertising in several forums. Our output looked like this:
It’s called: it rose and fell ... The first five days brought us 1.5 thousand downloads and $ 45, and then everything smoothly dropped to 30 downloads a day and $ 2 of daily income.
The following decision was made: we deleted the game from the AppStore, finalized it and posted it under a new name. Now we have Double # 2, a little later I can tell you what this decision brought us
Analytics and Shopping
At some point, we decided to add analytics collection to our game. Added Google Analystics (hereinafter - GA) using the plug-in for Unity GoogleAnalyticsV3. The integration of analytics is not at all complicated. If it’s interesting, I can describe in a separate article how this is best done.
I want to note that the presentation of data in the GA web-interface is not the most convenient. I export data to XLS and work with them already in Excel. And the recording of analytics in GA is possible only within the framework of the given templates. If you conduct some serious analysis of user behavior, then you probably should use your statistics server and collect information in the desired format. Well, there are still other statistics services - the same Flurry. But I can’t say anything about them, because I didn’t
Well, lastly, I’ll tell you about one problem that we encountered. I hope my warning helps someone.
To organize internal purchases, we use the Soomla plugin version 1.5.3. A week ago, we added a new purchase to the game - the opening of chapter 6. They installed themselves on phones, checked that everything works. Poured on Google Play. And got a bunch of angry reviews! Why? - because, as it turned out, during the first installation of our game, all purchases work as they should. But when updating the game, Soomla did not pick up a new purchase, and users observed an interesting bug with Chapter 6. Perhaps the fact is that Soomla caches the shopping list on the phone and does not find a new one when updating ...
We just circumvented this issue in the next update. But the global conclusion suggests itself: when updating the game, it is necessary to test how the game behaves with a "clean install" and how correctly the update goes
This project is debut for us. We learned to work together, filled a couple of cones with Unity and Market. There is another, big and serious project ahead. And hopefully success!
I will be glad to discuss and exchange experiences!