⬆️ ⬇️

Mobile game on Unity. The first pancake ...

image



After completing the creation of a puzzle game on Unity and its release on Google Play and the AppStore, there was a desire to share experiences and impressions. And get constructive comments and suggestions, if any





Teamwork



So, the project was done on Unity 4.5 Free by the efforts of 5 people in their free time and household chores. For the organization of teamwork, we used the Bitbucket service - there up to 5 people can be added to the project for free. Version Control System - Git. As I understand it, Unity PRO has its version control system, but we decided not to buy PRO and not to hack - Free

')

The first problem we encountered was the rather complicated merging of changes made by different developers. Project Unity files - forms, prefabs, and so on. - have their own peculiar formats, and as 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 properly distributed. Of course, there were no problems with C # script files, they were ruled simultaneously.



Performance



The project decided to do in 2D. The final image is formed from 3 layers: the substrate, the shadow of the element and the element



image



Testing the game on devices later, we found that we have very low FPS - about 20, and insane battery consumption. It turned out that the problem is in the display of a translucent shadow layer. There are not so many of them at the level, but in Unity this completely kills the performance



We started optimizing - we reduced the size of the textures of the elements, collected the textures in atlases. The FPS got taller, but the battery still landed very quickly. Then we made the mechanism of lowering the FPS in those moments when the user does not move the elements, and there is no animation



It looks like this: there is a dictionary, where the keys are the various animations and user actions. Each key is assigned an integer - counter. An animation or action increments the counter when it completes — decrements. When all keys have counters == 0, we lower the FPS:



Application.targetFrameRate = Constants.CountFPS_Min; // == 10, in our case



As soon as something happens, we remove the restriction in the same way. After this uncomplicated focus, we forgot about the problems with the battery.



A separate topic could be how we used to butt with fonts and the general GUI in Unity. It was not a very easy job. But, fortunately, in Unity 4.6 everything has been significantly redone and improved, so I will not dwell on this



Release



At the time of release on Google Play, we wrote on several sites and forums about our game. This gave the first peak of downloads:



image



Then we hit the “Top Gaining Popularity” in the Puzzle section. After that, everything settled down to 150 downloads per day. The next peak was in 3 weeks - we got into the section “Similar” to our main competitors - “Lazors” and “Dr. Laser. We currently have 200 downloads per day.



The game has internal purchases - you can open chapters without going through the levels and buy hints. Tips are especially in demand, especially the smallest package - 20 tips for $ 1. Net profit per day is now about 200 rubles.



An interesting observation: improving the game, adding music, more difficult 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. Like this



In the absence of a professional designer, they squirmed with the icon themselves:



image



Another interesting observation: I spent a couple of days to make a commercial, and then I discovered that it is viewed by a very small number of people coming from the application page. Was it worth it?



A month after being released on Google Play, we decided to go to the AppStore. Also with minimal advertising on several forums. Our output looked like this:



image



It is called: it rose and fell ... The first five days brought us 1.5 thousand downloads and $ 45, and then everything gradually dropped to 30 downloads per day and $ 2 of daily income



The following decision was made: we deleted the game from the AppStore, modified it and put it under a new name. Now we have Double # 2, I can tell you a bit later what this decision brought to us.



Analytics and Purchases



At some point we decided to add an analytics collection to our game. Added Google Analystics (hereinafter - GA), using the Unity plugin GoogleAnalyticsV3. The very integration of analytics is not complicated at all. If interested, I can describe in a separate article how best to do it.



I want to note that the very 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. Yes, and the recording of analytics in GA is possible only within the framework of specified templates. If you conduct some serious analysis of user behavior, 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



And lastly, I will tell you about one problem we faced. I hope my warning will help 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. Installed on the phones, checked that everything works. Filled on Google Play. And got a bunch of angry reviews! Why? - because, as it turned out, when you first install our game, all purchases work as they should. But when updating the game, Soomla did not pick up a new purchase, and users saw an interesting bug with 6 chapters. Perhaps the fact is that Soomla caches a shopping list on the phone and does not find a new one when updating ...



We simply bypassed this issue in the next update. But the global conclusion suggests itself: when updating the game, you need to test how the game behaves during the “clean install”, and how correctly the update is



Epilogue



This project is a debut for us. We learned how to work together, stuffed a couple of cones with Unity and Markets. There is another big and serious project ahead. And, I hope, success!



I will be glad to discuss and share experiences!

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



All Articles