Creating a mobile game in Construct 2. The path of the inexperienced

In this article I will describe the process of creating a mobile game from scratch, from the origin of this thought in my head to the publication of an application and working with advertising. The article is suitable for people who do not even have a hint of experience and knowledge in the field of developing mobile games (as well as programming), since this was the person the author was when he started working on this project.
Key and important points:
- The application was developed using Construct 2, an HTML5 game engine that allows you to port 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 the application are described: development, porting to the Android mobile platform, integration with ad networks, publishing the application, promotion (some kind of free activity).
- All terms for these activities are indicated taking into account the fact that at the moment I am not busy at my main job, so I could devote whole days to this.

Start, Idea, Basic Concept

The beginning was laid after reading an article about the Construct 2 tool itself, after which it was decided to look at the capabilities of this program. It took several weeks to study the functionality of Construct 2. The free version of Free Edition is quite enough for this. There are restrictions on the number of effects, layers, etc., but to study the program it does not interfere much. It is no longer possible to port to mobile platforms with a free version.

Samples with different sprite behavior and a physics 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 on one of them - it was decided to make a game, the main character of which could move around the city with a rope - according to the spiderman principle.

During a quick look at GooglePlay, no analogues were found, which served as a decisive impetus to the start of development. Subsequently, it turned out that with the study of existing applications in a hurry. When searching, I focused only on the phrase spiderman and its variations, which was a mistake. Later, I found about a dozen similar applications using other keywords, and several of them were very popular.

With a more detailed construction of the game logic, I tried not to depart from the basic principle: the game should be simple and fast 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. Considering that the game resembles runner in character, 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 unavailable, and commercial use is also prohibited.

He made a sketch in one screen, continued to work on the physics of the protagonist. As a result, the following was obtained: when the Hero moves to the right, buildings different in facade and size are randomly generated. When you click on the building, a conditional rope is created connecting the Hero and the mentioned point of touch. The rest is done by the physics engine built into Construct 2. When you click on the space free of 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 swung was replaced by a less wretched semblance of a rope (consisting of small sticks connected in series).

After implementing the planned physics of movement (that is, realizing that a conceived game can really be done using Construct 2), I started implementing some details - the necessary minimum for any mobile game:
- Normal graphics (I used free Inkscape as an editor - very nice vector editor, worked with him for the first time and with pleasure);
- Menu screen;
- Buttons with restarting the level, pause, exit 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";
- Improving the gameplay, creating obstacles (lights tearing the rope and pigeons knocking the hero);
- Complicating the game with each new level (pigeons become faster and more common, there are also more lanterns, buildings less often);
- Made the display of HUD elements on devices with different resolutions correct.

One of the significant difficulties was the implementation of one infinite level for the whole game. The problem was that layout cannot be infinite. Games like infinite runners are made on the principle of a spaceship moving from the notorious Futurama series: not the hero moves relative to everything else, but all the surrounding space moves relative to the hero, and the hero stands still. In such games, physics as such is absent, so in my case it was practically unrealizable. As a result, I took the path of least resistance - the length of the layout is considered one level, when it is reached, all data about its movement is removed from the hero, the sprite with the Hero is deleted, at the beginning of the layout a new one with the same characteristics of movement is created, and this is considered the next level .

I inserted music, took it from It has a lot of everything for free, but you need to pay for the type of license (there are three in total). For some of them, you need to ask the author for permission before use, 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 greatly slow down the game, and this problem could not be solved with a snap, had to be postponed until better times.

Most of all of the above was done in a week and a half (I recall that I did this not in the evenings, but for 10-12 hours every day with tea / coffee / dance breaks). The rest was completed in subsequent stages.

The following are illustrations of the evolution of the game:


A game created on Construct 2 can be ported to Android, iOS, Windows Phone. This is in addition to Facebook Games, Chrome Web Store, etc. that are not of interest to me at the moment.

The choice of a mobile platform for porting, of course, was made in accordance with the phone I use in everyday life, so it turned out to be Android.

There are several alternatives for export, my choice fell on Intel XDK. Convenient and clear 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 huge.

I spent a lot of time studying forums, trying to solve the performance problem, optimized and simplified the "code" to the maximum, many articles were written on this topic - I discovered many interesting little things. For example, that displaying a constantly changing current result (score) through text loads the application very much, and instead of text, you must use Fonts.

As a result, it turned out that Intel XDK behaves this way only when using the physical Box2D web engine. To solve this problem, they created a separate Box2D asm.js engine, but my application with this engine stubbornly refused to start. As a result, I switched to CocoonJS as an export tool. Construct 2, as I understand it, is not particularly cooperating with them (in the constructor itself, CocoonJS is hidden as deprecated exporter in the list of export tools). 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 an application with a description of your current projects, plans for the future, as well as a rationale for why you needed a premium account. Therefore, I advise you to preoccupy yourself with this issue - it takes some time to get an account. In my case, it took about a day.

It took about two weeks to search and study the export methods, optimize the “code”, make improvements to the application after testing on the phone, and also adapt to various possible resolutions.
I hope my article saves some of you this time.


As a way to monetize, I decided to use the least simple, in my opinion, method - advertising.

I decided that advertising should be connected immediately. It would be vile to subsequently upload an update to a free application, after installing which the user has previously missing ads.

The only way to connect ads to the Android game created in Construct 2 and exported through CocoonJS is through a bunch of Mopub + Admob ad networks and the rest. MoPub ads connect to the application when exporting to CocoonJS. However, this ad network, in addition to its ads (which it has few, and the payment for them is small), can serve as an intermediary between other networks, while setting the minimum cost per impression for each network. Thus, it is possible to show ads of several ad networks in one application, and one of the most expensive ones will be selected for display. Admob is certainly a favorite among Android ad networks, so I settled on it as an extra.

I’ll note right away that for testing advertising, publishing 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 time of pressing the Back or Restart button, but no more than once every 2 minutes. The use of banners on the menu screens is pointless, 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 connecting advertising according to this scheme, several features should be noted.
1. By integrating advertising into the application - do not worry about the first minutes / hours when testing. At first, advertising will not be shown at all, then it will be shown very rarely - it takes some time for the 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 of the FillRate network, Admob drops to 30-80%. This problem exists, it is known about, 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 method you have chosen to choose the moment the advertisement is shown (whether it’s pressing a certain button, or showing it every n minutes), a significant amount of time passes between the two impressions. Let's say 2 minutes. In Construct 2, when connecting advertising, we do the following thing: we start the variable AdsLoadTrigger, which indicates whether the advertisement was loaded, and if not, we try to load it again every 10-20 seconds, up to a successful attempt. Thus, with an actual Fill Rate of 20%, you can easily achieve a close to 100% probability of showing ads at the right time.

I spent a lot of time connecting advertising. Analysis of many different advertising networks, registration and development in each of them, integration of advertising in the application, its testing and setting up optimal places and frequency of display take a lot of time. However, if you immediately go along the above path, handle it in a few days.


Let me remind you that porting was done on an Android device: of course, the most popular platform for distributing mobile applications is Google Play, but there are many alternatives that you should not forget about. Thus, in addition to the obvious choice in favor of Google Play, I also used some of the most popular alternative stores: SlideMe and GetJar.

Considering that for promotion in the most promising Google Play, a powerful confident start is very important (for getting into the tops of sections) - alternative platforms can be used to run the application on users, eliminate basic comments and collect data for analytics (of course, if such an opportunity was taken into account in application).

A few words about localization: at least the description of the game should be translated into 4 languages ​​- Japanese, English, Korean and Chinese. Thus, you will reach more than half of all potential users of your product.

Another very important point is the signature of your product. 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. Unknowingly, I used the next version 1.7 - as a result, when installing the application from Google Play, I received a message about the package signing incorrectly, and in fact, from the first minutes of publishing the game, no one could install it. Which is unpleasant. The only solution I found was to upload a new apk, signed already with JDK 1.6, so it's better to use this version right away.


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 have placed any particular hopes on the financial success of this enterprise, and therefore I considered spending money a pointless undertaking. The main thing is to gain experience.

Thus, free reviews were chosen as promotion tools. A list of thematic sites and blogs was selected, and proposals with an overview of my game were sent out. Unfortunately, at the moment I can’t say what the result of these actions is, and how many percent of the requests were successful - the reviews were sent immediately with the publication of the application the other day.

As an example, I’ll give a useful, in my opinion, linkto the list of paid and free review sites for Android, iOS, and Windows Mobile.

To the description of the game in all application stores, a link to the unreasonably pathetic promo video of the game with the image of the main points of the gameplay was indicated. When creating a promotional video, the Camtasia Studio 8 video editor was used. Its capabilities are more than enough to create such material, while the program can be quickly and independently sorted out. For me, a nice feature is that it can record a computer screen (I recorded the gameplay, launching the created game in the browser) with the ability to delete the cursor. Unfortunately, the program is not free, but you have 30 days to try this product.


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 note right away that there is no illusion about time costs based on the time spent on the development of the game itself. In my case, it turned out to be significantly less compared to the rest of the items. However, I am sure that with subsequent games the difference will decrease.

Also popular now: