In this article I will describe the process of creating a mobile game from scratch, from the birth of this thought in my head to the publication of the application and work with advertising. The article is suitable for people who do not even have a hint of experience and knowledge in the field of mobile games development (as well as programming), since the author was the person at the time of the start of work on this project.
The main and important points:
- The application was developed using Construct 2 - a game engine on HTML5, which allows porting the application to all popular mobile (and not only) platforms;
- Programming skills for the implementation of such functionality are not required at all;
- I repeat: the article describes the path of an inexperienced person, so if you want to start - this article may seem useful to you;
- The following stages of creating an application are described: development, porting to the Android mobile platform, integration with advertising networks, application publishing, promotion (some free similarity of this activity).
- All terms for these activities are given taking into account the fact that at the moment I am not busy at the main job, so I could devote whole days to this.
Beginning, Idea, Basic Concept
The beginning was laid after reading the article about the tool Construct 2, after which it was decided to look at the possibilities of this program. It took several weeks to study the functionality of Construct 2. The free version of the Free Edition is enough for this. There are restrictions on the number of effects, layers, etc., but for studying the program it does not interfere much. Here it is no longer possible to port to mobile platforms with a free version.
Tests with different behavior of sprites and the physical engine helped to get comfortable with the program, and at the same time served as a source of inspiration for several ideas. I decided to stop at one of them - it was decided to make a game, the main character of which could move around the city with the help of a rope - on the principle of a spiderman.
When browsing through GooglePlay, no analogues were found, which served as a decisive impetus for the start of development. Subsequently, it turned out that with the study of existing applications hurried. When searching, I was guided only by the phrase spiderman and its variations, which was a mistake. Later on other keywords I found about ten similar applications and several of them were very popular.
')
With a more detailed construction of the logic of the game, I tried not to deviate from the basic principle: the game should be simple and quick to implement - so as not to spend a lot of time on the first com and gain all the minimum necessary experience for subsequent projects. Given the fact that the character of the game resembles a runner, I wanted to do without a headache in the form of building dozens of different levels and make one endless.
Game creation
For further work, an extended Personal License was required. Otherwise, export to mobile platforms is not available, and commercial use is prohibited.
He made a sketch of one screen, continued to work on the physics of the main character. As a result, the following happened: when the Hero moves to the right, various buildings on the facade and on the size of the building are randomly generated. When you click on the building creates a conditional rope connecting the Hero and the said point of contact. The rest is done by the physics engine built into Construct 2. When clicking on the space free from the buildings, the conditional rope disappears, the Hero flies out on a tangent. The end of the game when falling to the ground.
Subsequently, the wretched stick on which the Hero rocked was replaced by a less miserable similarity of rope (consisting of successively connected small sticks).
After the realization of the conceived physics of motion (i.e., the realization that the conceived game can really be done through Construct 2), I began to introduce some details - the necessary minimum for any mobile game:
- Normal graphics (I used free Inkscape as an editor - a very nice vector editor, I worked with it for the first time and with pleasure);
- Menu screen;
- Buttons with restart level, pause, exit from the application and all that;
- Screen with information about the game;
- Account and local storage of the best result on the phone;
- Optimization of the "code";
- Finalization of the gameplay, the creation of obstacles (lights, tearing the rope and knocking down the hero pigeons);
- The increasing complexity of the game with each new level (pigeons become faster and are more common, there are also more lanterns, buildings less often);
- Made the correct display of HUD elements on devices with different resolutions.
One of the major difficulties was the implementation of one infinite level for the whole game. The problem was that the layout can not be made infinite. Games like infinite runners are made on the basis of the movement of a spacecraft from the notorious Futurama series: not the hero moves relative to everything else, but the whole surrounding space moves relative to the hero, but the hero stands still. In such games, physics as such is absent, so in my case it was virtually unrealizable. As a result, I took the path of least resistance - the length of a layout is considered one level, when it reaches the hero, all data about its movement is removed, the sprite with the Hero is deleted, at the beginning of the layout a new one with the same movement characteristics is created, and this is considered the next level .
Inserted music, took freesound.org from the source. There are a lot of things on it for free, but you need to pay for the type of license (there are three of them). For some of them, you need to ask the author for permission before using it, or be sure to include a link to it in your product. I used sounds with a license, in which you do not need to do anything, just download and use. Subsequently, most of the sound effects had to be removed - they slowed down the game, and this problem could not be solved without a hitch, it was necessary to postpone it until better times.
Most of the above was done in a week and a half (I remind you, I did it not in the evenings, but for 10-12 hours every day with tea / coffee breaks / dancing). The rest was finished at the subsequent stages.
Below are illustrations of the evolution of the game:

Export
The game created on Construct 2 can be ported to Android, iOS, Windows Phone. This is in addition to not interested me at the moment Facebook Games, Chrome Web Store, etc.
The choice of a mobile platform for porting, of course, was made in accordance with the phone I used in everyday life, so it turned out to be Android.
There are several alternatives for export, my choice fell on Intel XDK. Convenient and understandable XDK, quick testing on the phone without having to reinstall the application after each change.
However, in my case, the result was very deplorable - the game was terribly slow, playing it was very sad, drawing graphics also left much to be desired. I tested the same application on my brother's iphone - the result was enormous.
I spent a lot of time studying the forums, trying to solve the performance problem, optimized and simplified the “code” to the maximum, a lot of articles were written on this topic - I discovered a lot of interesting trifles. For example, that displaying a constantly changing current result (score) through text loads the application very heavily, and instead of text you need to use Fonts.
As a result, it turned out that Intel XDK behaves like this only when using the Box2D web physics engine. To solve this problem, they created a separate Box2D engine asm.js, but my application with this engine stubbornly refused to start. As a result, as an export tool, I switched to CocoonJS. Construct 2, as I understand it, no longer cooperates with them (in the constructor itself, in the list of export tools, CocoonJS is hidden as a deprecated exporter). However, in the case of using physics, this is the only working (well-working) option. And from CocoonJS, plugins for Construct 2 are still being created and updated.
Separately, I note that to connect advertising when exporting through CocoonJS you will need a premium account. It is free, however, to receive it, you will need to write a request with an indication of the description of your current projects, plans for the future, as well as a justification of why you needed a premium account. Therefore, I advise you to attend to this issue in advance - it takes some time to get an account. In my case, it took about a day.
It took about two weeks to search and explore export methods, optimize the “code”, make improvements to the application after testing on the phone, and adapting for various possible permissions.
I hope my article will save some of you this time.
Monetization
As a way of monetization, I decided to use the least simple, in my opinion, way - advertising.
I decided that advertising must be connected immediately. It would be mean to post the update of a free application, after installation of which the user has a missing advertisement.
The only way to connect advertising to the game created in Construct 2 for Android and exported via CocoonJS is a bunch of ad networks Mopub + Admob and others. MoPub ads connect to the app when exporting to CocoonJS. However, this ad network, in addition to its ads (of which it has little, and the payment for them is small), can serve as an intermediary between other networks, exposing the minimum cost per impression for each network. Thus, it is possible to display advertisements of several advertising networks in one application, and one of the most expensive ones will be selected for display. Admob, of course, is a favorite among ad networks for Android, so as an extra, I settled on it.
Immediately, I note that to test advertising, publication in the App Store is not needed, you can embed and test advertising at any convenient stage of application development.
My choice of ad display format fell on Full screen ads at the moment that the Back or Restart button was pressed, but no more than once every 2 minutes. The use of banners on the menu screens is meaningless, because no one is there for a long time; a banner on the screen with a level in the case of a dynamic arcade game is even more useless.
When you connect an advertisement for this scheme, several features should be noted.
1. By integrating advertising into the application - do not worry the first minutes / hours when testing. At first, ads will not appear at all, then very rarely will be shown - it takes some time for ads to start loading in full force.
2. Admob has one of the highest Fill Rate, but in the case of the implementation of this scheme using MoPub as an intermediary for FillRate Admob network drops to 30-80%. This problem exists, it is known, and the developers promised to fix it. However, when this happens is unknown.
For this reason, I decided not to wait and get out of this situation in a fairly simple way. Obviously, no one will show ads in the application every 10 seconds. Regardless of the way you choose how to display an ad (whether it is pressing a certain button, or showing it every n minutes), you can spend some significant time between two shows. Let's say 2 minutes. In Construct 2, when we connect an advertisement, we do the following thing: we start the AdsLoadTrigger variable, which indicates whether the advertisement was loaded, and if not, we try to load it again every 10-20 seconds, right up to the successful attempt. Thus, with the actual Fill Rate of 20%, you can easily achieve close to 100% probability of displaying advertising at the right moment.
I spent a lot of time on connecting ads. Analysis of many different advertising networks, registration and development in each of them, the integration of advertising in the application, its testing and setting the optimal places and frequency of the display take a lot of time. However, if you immediately follow the above path, you can manage in a few days.
Publication
Let me remind you that porting was done on an Android device: of course, the most popular platform for distributing mobile apps is Google Play, but there are quite a few alternatives that you shouldn’t forget. Thus, besides the obvious choice in favor of Google Play, I also used one of the most popular alternative stores: SlideMe and GetJar.
Considering that a powerful confident start is very important for advancing in the most promising Google Play (for getting to the tops of sections) - alternative sites can be used to run the application on users, eliminate key comments and collect data for analytics (of course, if this possibility was taken into account in application).
A few words about localization: at least the game description should be translated into 4 languages ​​- Japanese, English, Korean and Chinese. Thus, you will cover more than half of all potential users of your product.
Another very important point is the signature of your product. I'm not sure about other sites, but for Google Play, a signature is required. When performing this operation, I recommend using the Java Development Kit version 1.6. I unknowingly used the following version 1.7 - as a result, when installing an application from Google Play, a message was issued about the package’s incorrect signature, and in fact from the first minutes of the game’s publication no one could install it. What is unpleasant. The only solution I found is to upload a new apk, which is already signed with JDK version 1.6, so it’s better to use this version right away.
Promotion
As usual, I decided not to spend money on promotion at all. Considering that this is the first experience of publishing a mobile application, I would not pin special hopes on the financial success of this enterprise, and therefore I considered spending money a meaningless undertaking. The main thing is to gain experience.
Thus, free reviews were chosen as promotion tools. A list of thematic sites and blogs was compiled, and suggestions were sent with an overview of my game. Unfortunately, at the moment I can not say what is the result of these actions, and how many percent of the appeals were crowned with success - the reviews were sent immediately with the publication of the application that occurred the other day.
As an example, I will give a useful, in my opinion,
link to the list of paid and free reviewer sites for Android, iOS and Windows Mobile apps.
The description of the game in all app stores was referenced to an unreasonably pathetic promotional video of the game depicting the main points of the gameplay. When creating the promo video, Camtasia Studio 8 video editor was used. Its capabilities are more than enough to create such material, while the program can be very quickly and independently figured out. For me, a nice feature is that it is possible to record a computer screen (I recorded the gameplay, launching the game created in the browser) with the ability to delete the cursor. Unfortunately, the program is not free, but you have 30 days to sample this product.
Expenses
Below is the minimum list of financial costs that you will need to put up with:
- Personal license for Construct 2: 130 USD;
- Google Play Developer Account: 25 USD;
- Apple developer license: 100 USD / year (it is only in the plans);
- Time is priceless. I would like to immediately note that you should not have any illusions about time-consuming on the basis of the time spent on developing the game itself. In my case, it turned out to be significantly less, compared to the other points. However, I am sure that with the subsequent games the difference will decrease.