📜 ⬆️ ⬇️

New game development bugs


Original image

Six months ago, I talked about my experience as a freelancer on oDesk. After that, I decided to leave the development of Android applications to order and take up my long-time dream - the creation of games. My friends and I were united, and the work began to boil ...

First I want to talk about the current state of the project:
Time from design to publication: 2 months
Time spent in app stores: 3 months
IOS Downloads:> 15000 (93% Russian-speaking users)
Android downloads:> 35000 (63% Russian-speaking users)
')
This project is not financially successful at the moment, so I want to talk about our mistakes.
The article is primarily intended for beginners in the field of game development.

For convenience, all errors are divided into categories and have our assessment of their impact on the final result.
Attention, the article is voluminous and contains many images.

The idea and mechanics of the game
Someone else's idea
Importance: Medium

The first mistake was made before the start of development. Not having the idea of ​​the original game, it was decided to peep the concept of an existing game, but not yet presented on mobile devices.
I came up with the game Euclid: The Game, about which I learned thanks to the post on Habré ( http://habrahabr.ru/post/228005/ ) six months ago. Then I spent a few fascinating hours, remembering the rules of school geometry.


Quest from Euclid: The Game

Taking the idea of ​​the game as a basis, I didn’t want to just copy it, so we dived into the home libraries and found several Soviet books on entertaining mathematics. On the basis of the information from them 30 first levels were made ...
Closer to release, I decided to compare the levels of Euclid: The Game and our game. And, to my great surprise and disappointment, the levels coincided by about 70%. My conscience spoke to me inside, and it was decided to contact the author of the original game and ask his opinion.
I offered cooperation and free aid (add new levels to his game, translate it into Russian and Ukrainian) in gratitude for inspiration.
The author was not against the release of this mobile game, but completely refused to cooperate and even from my thanks.
In my opinion, cooperation with a web application of a very similar subject would give a big impetus to development.

Interface
Importance: Big


GeoGebra interface

I think the interface of the original game is quite convenient. Moreover, its appearance is very similar to the popular application GeoGebra, so this interface was taken as a basis.
The mistake was complete confidence in the interface. It turned out that this way of interacting with the user is convenient only for large screens and when controlling the mouse. On small screens of mobile devices to effectively place more than 10 buttons along with information about the current state of the game is very difficult. We also had to sacrifice information about the original task on the game screen, and players have to go to the menu every time to remember what they need to do.

Training in the game
Importance: Critical


GameAnalytics: Funnel diving user into the game based on the 4 first levels

As seen in the screenshot, out of 8288 users who entered the game in a month, only 3310 passed the first level (39.94%). This is a very low result, considering that the first level is very simple and is only necessary for teaching the user how to work with the tools. Loss of users at subsequent levels is significantly lower (5-10% of the audience of the previous level).

The reason for this is the training, which was implemented in text form. When you run the first level, the user in text form was told about the tools of the game. The player was given full information about all the tools in the game, and it could easily be missed.

To promote the game, a video was created that contained similar assistance to the user in mastering the game, but in an animated format. The hand drawn moved through the interface and consistently performed the necessary actions. In my opinion, the trailer teaches the game process well, but, unfortunately, the number of people who watch the video when installing the game is small (Android: 30% of the total audience).

In my opinion, this is the main error in the gameplay. For future projects, I have identified for myself a few mandatory items when creating training:
small amount of text. The average gamer on mobile devices does not want to read long texts. Also, if the texts are not localized, then the threshold of entry for users without translation into their native language becomes much higher.
animation of actions that need to be done by the user (swipe, click);
step by step training. Tell only what the player needs at the moment, do not load the user with information.

In the last update, we completely reworked the training.



Genre and difficulty of the game.
Importance: Medium

According to statistics, the puzzle genre is very popular on mobile platforms.


One of the ratings of the popularity of mobile gaming genres.

But, in my opinion, only fairly simple puzzles are popular, in which tasks are solved quickly and there is almost no way to get stuck on any level. I think our game was very difficult, which, coupled with very poor training, led to a small percentage of users returning to the application.


Game Analytics. The percentage of return players.

The next day after installation, only 10% of users return, and a week later - only 1%. Analysts of successful companies say that in successful games these figures are 50% and 20%, respectively.

Lack of motivation to play.
Importance: Critical

The game weakly motivates to pass new levels and improve the result already passed.
Only two elements in the game motivate the player:
stars. Ordinary technology, 3 stars as a result for the level
plot. When a player passes the level of 3 stars, he helps the main character of the game, adds a new element to his transport.



But, as statistics have shown, this is not enough to interest the user for more than a week. I believe that it worked very well before, for example, most of the players in the first game of the Angry Birds series tried to pass all levels into 3 stars, and it worked. But the mobile gaming market is changing very quickly. After analyzing the applications that are currently on the top of the rating, I highlighted the following points:
Competition of a player with people he knows (a good example of Subway Surfers, where the player sees the record of a friend who is to be improved).
Ratings Competitions between strangers are now very popular among the Flappy Bird clones. Often these games are very hardcore, and people tend to put their name in the high score table.
Awards and achievements. In my opinion, this technique has become very popular after being used in Fruit Ninja, and now it isn’t really used by it.
Ability to lose. If the player is always able to play, and the game does not punish him for losing, the player is very quickly saturated. A typical example is energy. It is needed not only to earn money for red caviar for developers, but also to increase the interest in the game from the user.
Loss of game values ​​when throwing the game. From hard “Other users will destroy your village if you don’t repair it” to softer “If you don’t harvest carrots once a day, you will lose it”.

Technical errors
Work with the beta version of Unity.
Importance: Medium

At the time of the development of the application, the version of Unity 4.6 with the new UI system was only in beta. However, since I was just starting to learn Unity, I decided to use the new UI system instead of the popular NGUI plugin. As a result, I worked for a couple of months in the IDE, which was closed several times an hour with an error message (OS X) and did not partially save the result. This significantly spoiled my nerves and increased the development time.

But in the end I studied the new UI well and after the release version of Unity 4.6 was released, the crashes stopped.

Problems with the size of elements and text.
Importance: Medium

In Unity 4.6, the new UI system supports specifying element sizes not only in pixels, but also as a percentage of the size of the parent element. This is very convenient if you want all elements to be resized in proportion to the size of the screen. Thus, I once created the interface markup and used it both for tablets and for phones.

However, the ability to proportionally increase the font size is not provided, and I wrote a script that sets the font size not in pixels, but in one of the enum variants, which calculates the desired font size depending on the screen size. It was possible to use a percentage instead of enum, but enum guarantees that all the labels of a certain type will have the same font size and can be easily changed.


My FontSizeHelper script and standard Text script

But it caused inconvenience. Under certain circumstances (screen size and localization), some texts got out of the dimensions of the component and looked very ugly. It was necessary to study each element of the interface after changing the texts.

Update:
The comments suggest that Unity 3D has standard solutions to this problem, namely Automatic Layout Groups. Link to the video review - https://www.youtube.com/watch?v=DAdW_K44Dao

Confidence in the bug tracking system - Crittercism.
Importance: great

In my past projects I have already used this service. I also like the free tariff, which fully meets my needs and provides an easy integration into Unity.

But this time I was expecting a few surprises:
catching errors in the iOS version does not always work. After the release, I was very happy to see a small number of errors in my statistics, but this did not correspond to reality. A week after the release, I checked the new functionality and came across an error that caused the application to crash, but Crittercism did not send information about it. This is especially pronounced with unusual errors (not NullPointer or DivisionByZero).
OutOfMemory tracking complexity. Crittercism can show StackTrace even C # code, but for OOM errors this is not the case. With OOM on Android, it displays a unique dump of memory as a stack trace, which personally did not tell me anything. But, after analyzing several similar errors, I paid attention to the often coinciding MemoryUsage parameters (Android devices have different maximum memory sizes for running applications, so there were several duplicate values) and determined that this error signals a lack of memory, soon found it and eliminated it.


Crittercism. StackTrace OutOfMemory errors


Crittercism. Device information at the time of the error.

Adding new privileges when updating
Importance: Medium
This error applies only to the Android version. Initially, I planned to implement push messages to the user, but due to lack of time, it was decided to implement this functionality in updates. Unfortunately, I did not install the necessary permissions (access to the Google push service) in the initial version, and I had to do this when updating. As a result, the update rate on the version with increased privileges has dropped several times.
The reason is simple: when an update is released without increasing privileges, most users will have the game updated in the background, but if the developer has requested more privileges, the user must manually update the application via Google Play.

App stores:
Adding game description localizations on the App Store
Importance: Low

For the release of the iOS version, we had several translations to describe the game, but when I started learning the iTunes interface, I was in for an unpleasant surprise.
I only had access to 9 localization languages ​​for the game, while the list of languages ​​was very strange: Danish and Finnish were present, but Chinese and Russian were missing.
A few months ago, iTunes updated the interface, and I did not find any articles about the new interface. Scrolling through Apple’s developer documentation, I found that iTunes analyzes the downloaded executable files and can change the developer’s web interface depending on the internals of this file. Blaming Unity and the plugin for localizations, I began to study the XCode interface and look for how to add language support to the project. I spent a few days on this, but did not achieve a result.
I decided to write in support of Apple, after a couple of days I was redirected to the technical department, and after a couple of days, the technical department said that I was using Unity and that was my problem.
After that, I created a detailed question on stackoverflow and immediately got an answer.

The error turned out to be very shameful:


It turns out that the list contains scrolling inside, with which you can select other languages.
I’ve been using OS X for 2 years now and I’ve got used to the fact that the scroll bar is hidden by default and is shown only when you start scrolling a page or document, but in this place it was not obvious that there is scrolling inside.

Negative reviews
Importance: Medium


Original
Feedback from the Internet.

Of course, this way we did not respond to reviews, but sometimes we really wanted to.
Most negative reviews are constructive and helpful. But there are others.


Google Play Reviews


Reviews from the App Store

As practice has shown, they are still worth answering. Approximately 20% of reviews from 1 change to higher after a polite and intelligible answer.

Feedback about viruses inside the game: Some antivirus companies have decided to show that they care about the user very much and if they find the com.revmob package when installing the application, they warn of a big threat, not about possible advertising.

Feedback on localization: After we received a comment about the Ukrainian language, the game was translated to a good level, but we also decided to add 10 more localizations, using Google Translate. After that, foreign users began to complain and demand to return English instead of a curved translation, and automatic translations were deleted. There was no increase in downloads from adding transfers.

The frame of the phone in the screenshots in the App Store.
Importance: Low

Before sending the application to the App Store, I flipped through several applications and saw that some of them use the phone's frame in the screenshots. In my opinion, such screenshots look more attractive, so I decided to use them in my game.
Although I assumed that the use of the framework is prohibited, I sent the application for review to Apple. The first version did not find any problems, the game was released in the App Store.
But a month later the update was released, and this time it was blocked because of the devices on the screenshots, I had to redo all the screenshots.



Application Name
Importance: Critical
Unfortunately, I cannot give the real names of the application in order not to get into “I am promoting”, so I will use fictitious names, which, nevertheless, show the evolution of the name of the game.

Initially, the game was released under the title “Tasks on geometry”. I consider this name unfortunate for two reasons:
the words “problems” and “geometry” are very rarely searched for in app stores (can be traced using App Annie).
The title is a common phrase, and it is very difficult to track mentions about the game on the Internet (for example, Google will issue a lot of non-game pages under this title).

After this name was changed to “Problems for Logic”. It is also very difficult to track, but the request “Logic Challenges” is very popular in stores, and full compliance raised our game immediately to the top five for this search query. The game also got into “Similar” for some popular games that contain the words “” puzzles ”and“ logic ”in the title.

After that we tried to change the name to “Problems for logic and mathematics”, but the result was ineffective: we dropped in the results of the query from the previous paragraph and did not rise on queries about the mathematics. Full compliance with the search query is required.

However, this tactic is only suitable for small projects. The increase in downloads is not so huge as to sacrifice the uniqueness of the name. For the second game, we chose a unique name that is easy to track, but contains one word that users often search for (for example, “Runner”).

Promotion

Schedule downloads Android version.


Schedule downloads iOS version.

Question marks on the graphs mean that we probably do not know what gave this result. Our main assumption: the game fell into the section recommended for some popular games, since the increase in downloads always started on Monday (possible update stores), and we noticed our application in the similar section. We have not come up with a way to track this phenomenon. I would be glad to know any thoughts on this.

Database for promotion.
Importance: great.

At the very beginning we wrote several hundred letters to various resources, and all the information about the correspondence was stored only in our mailboxes, which turned out to be very inconvenient when searching for information. After a couple of months, we spent a few days and collected all the information about the results of correspondence and the number of downloads in one table.



This document is very similar to the open for all Google Doc - Publishers. Reviews
docs.google.com/spreadsheet/ccc?key=0As1joqDAfz6UdHhhQ3lMZ0oyZXZRRGFQZXdHTGZEYnc&usp=drive_web#gid=0

We also decided to share our work in this area. The document is not open, but access to it is easy to get - send us information about your experience in communicating with sites for reviews or publishers. , , - , .

.
:


, . , , . : , Facebook , 1 .

- .
:


. , 30-40%.


:


. , .


:


.
, , , #ScreenshotSaturday .
. , .

.
:


, , . , .

iOS Android
:


Several popular Russian-language sites that specialize in the themes of iOS and Android, collaborate and actively share information among themselves. This led to the fact that some of them are asking for 16,000 rubles (4 months ago) for publishing a review, arguing that there are no other alternatives in the Russian-language segment. The arguments that this price is significantly higher than that of similar foreign sites with similar statistics of visits, did not affect the opinion of the interlocutor. This, of course, is their right, but next time I plan not to waste time on them.

Most administrators adequately and politely explained the reason for the refusal to publish our dev story for free. But some of us began to openly insult and humiliate us during personal correspondence, when we learned that we sent a request for publication to another site from their association (we prepared several unique dev story options and did not send the same text to different sites).

Doing nothing when growing.
Importance: The Big


Time, when the application starts active growth, is very important, and in no case can you relax and enjoy the result. During such periods, it is necessary to launch various contests and discounts in order to get the maximum effect from the growth of the audience.

Hope for “Fichering”
Importance: Medium


Now we understand that the game could not be highlighted by Google or Apple because of its specificity and implementation. But we ourselves killed any chances.
Must meet the requirements. For example, in the first versions of the game on Android, the physical “Back” button did nothing. While in the halts of Google, this functionality is mentioned as very desirable. In the App Store, your application may be missed with the device frames in the screenshots, but if you look more closely at “feature”, this mistake may become critical for the application.
Also, in our opinion, the stores will never finish an application that is not profitable for them. Therefore, free applications without in-app purchases, such as advertising-oriented, have very small chances.

Decrease rating with the beginning of popularity
: .
3.8 Play Store. . : , , , , , .


Google Play. .



. : (, , ).


Importance: The Big


Banner Idea was a failure. Players were not at all interested in a small banner, and pay per click turned out to be very low. We tried 3 exchanges, but the results were about the same.



Admob. Banner advertising impressions statistics.

Comparison of advertising exchanges
Importance: Average


After the failure of banner advertising, we decided to use full-screen advertising and test the effectiveness of several exchanges. For this, a small library was written, which selected a random advertising exchange when launching the application.
We obtained the following results.



* Statistics for Vungle are approximate and more based on data from our analytics, rather than on data from the advertising exchange.
* Dashes in the IR column mean that these exchanges pay per click on advertising, and not for installing the application.
* Dashes in the Android column mean that I could not integrate this exchange into Unity and use it on this platform. Support for Revmob and Leadbolt recognized the presence of errors in the SDK, for a couple of months they promptly fix the problem.

Since for me just 4 months ago, the designations from the table were completely incomprehensible, I will give a brief description:
eCPM (effective cost per thousand impressions) - the average amount of money from 1000 impressions;
IR (install rate) - the average percentage of users who installed applications after displaying ads;
CTR (click-through rate) - the average percentage of users who clicked on ads after the show;
Fill Rate — . : ( ) / ( ). , ( , ), .

Chartboost , - Vungle . Chartboost . Chartboost SDK Unity , , .

.
Importance: A large


main audience of the application (more than 70%) is Russian-speaking users.


Google Analytics. Geography of users of the application.

However, advertising revenue in the CIS countries compared to, for example, the United States + Australia is about the same. Thus, the difference in the number of users between the CIS and the USA + Australia is 25 times greater (CIS - 75%, USA + Australia - 3%), and the amount of the generated profit is about the same.


Google Analytics. The geography of the earnings of the application on the ad exchange AdMob.

The paid version is not on time
Importance: Medium


, , . , , ( 50 2-3$) Play Store(2-3 ), .


AppAnnie. Play Store

PS habrhabr. . , ?
.

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


All Articles