📜 ⬆️ ⬇️

Development of one game - new approach, P2

Skippy's photo So it's time to continue the story about an exciting hobby - game devs - the development of casual games.
Earlier in the article I talked about my first game for Android, which pushed me to reconsider the approach in the stages of creating and promoting a mobile application. Today I want to share what I finally came to after my first experience and talk about creating a new, cross-format game for Android and iOs, the html5 and Tizen version was also made on the way, but first things first ...

From the very beginning I would like to make a small comment - the game just came out, and it’s still too early to talk about how much I moved in the right direction after analyzing my first more or less significant project, but from the first reviews from beta testers it can be assumed that in general the final product now at least may not be embarrassing. Also, everything that goes on is purely my vision and can be radically different from anything.

Instead of a dry description of the development process, I preferred to build a story as a comparison of approaches in the development of two games - an old game and a new one about the journey of the frog, because in fact it is not so important what I did, like how much the article will help you draw your own conclusions, accept own decisions and push on ingenious ideas which, I hope, will pour out in the first-class applications!

Then you will find a description of all the stages of development - from idea to release, in the light of what happened "many letters", divided by stages, let's go!
')

How it all began


The idea of ​​the first game was partly inspired by the previously popular flash and not only games on the PC, and, in general, I never hid that in search of ideas I went to different gaming sites, I was looking for something that would have hooked me. At this rate, the search was brought to the game, which served as a prototype for a mobile entertainment application.

This approach is good in the sense that “everything is new - well forgotten old” (c), but, unfortunately, it does not take into account a small, but very important detail - control on a PC with a mouse and keyboard is quite different from what we see today on tablets and phones, when interaction with the device occurs at the fingertips. In the new game, it was necessary to first consider the simplest version of the gameplay and user interaction with the virtual world.
It was decided to highlight the "skeleton" of the most convenient and attractive game, based on previous experience, and, most importantly, successful projects of other cool developers. In the course of a brief analysis and study of the mobile casual games market, a list of such key aspects of a “successful mobile casual game” appeared:
My recipe for a successful casual game
The easiest way to control, ideally - one gesture

If you look at what people play, you can see the desire for a bundle - minimal interaction with the phone screen + maximum interactivity. As examples, the Angry Birds are well suited - the only movement - the swipe leads to the dynamic development of the plot and the chain reaction, during which the entire game world starts to move; “Cut the rope” - again, initially only swipe, then more complex interactions are introduced, but only after the user has mastered the basic skills.

Now you can escape for the first game for a moment - from the very first level you need a relatively serious skill of accurately positioning your finger on the screen, simultaneous switching of game modes and analog joystick control ... an ordinary user will rightly demolish the application after the first unsuccessful attempts.

Trying different variants of gameplay, you can resort to a simple, but very effective way to check the "playability" - give the application to the child, sit down and watch. My 5-year-old niece quietly plays and loves Cut the rope, she coped with the new game relatively quickly. Regarding the old game - here you can cite the words of my partners - the Koreans: "The game may well go in Korea, they love hardcore management."

Gameplay above all

Take, for example, f2p games favorite by publishers, such as “Clash of clans”, if you look at it - these kind of games were also in browsers before the mass appearance of smartphones and tablets, the main thing is to go into the game from time to time, put the build \ explore \ fight virtual men and you can go on to watch your favorite TV series. In my opinion, with good implementation, social multiplayer games do not need innovative, interesting gameplay, people often come not only to play, but to communicate and in passing show “who's in charge here”.

Now let's go back to casual non- social games. Why does a person download and what makes him return to the game? Only the gameplay itself, nothing more, nothing special. And then what will happen if it (gameplay) will be boring? A person is unlikely to launch an application more than once.

Now, looking at how the user plays the first game, it becomes obvious that at the first level, the user falls into a stupor - it is not clear what needs to be done, or why it should be done, it’s not even obvious how ... In the new game, from the very first level, teaches and explains how and why you need to move forward and go through all new levels, trying from the very beginning not to let the user go.

User needs to be taught

When talking about the gameplay, it is worth mentioning the fact that with a long development of the game he manages to pall and it seems that the control is nowhere more obvious, and even the child will pass the levels, but try to give a friend a game and ask him to complete the first level ... In my case, the first game failed practically no one, in the new one - until the appearance of the learning screen, they managed a little more than the people. After a careful explanation through the game interface, the situation changes dramatically - the first level does not introduce the user into a stupor, which undoubtedly increases his loyalty.

Difficulty from level to level is again worth checking carefully, because when you build another level, the answer is often known in advance, and if you look from the outside, what is put second in complexity may well go up to a hundred and second. For example, in the same game there were several levels in my game, which seemed to me not very difficult, and about a month later, after I returned to them and tried to get through, I managed to do this from 6-7 times.

Motivation to return

That only people will not think up to get their users to return to the application day after day: bonuses for the day visit, and individual events, and annoying reminders with push notifications. With my game, I decided to try not to introduce rewards for a separate daily visit at the first stage (I couldn’t figure out what the user could be attracted to), but I tried to motivate me to complete all levels, namely, once a game about a frog, then the path will be after each newly traversed level an interesting fact with the country of "stay". In the future, there are ideas - to display “Fact of the Day” in a separate window, but it is not clear how important this can be for users.

The plot around the main character (s)

Think of such hits as “Cut the rope”, “Angry birds”, “Where's my water” and others - everywhere the game mechanics is tied to helping cute creatures who need your help. With this approach, among other things, in my opinion, there is a closer comparison of one particular game with its name and characters, because there are a lot of games where you can run something somewhere, and “Angry Birds” are alone. It cannot be argued that without brightly selected heroes, the game would not have even merged with its own clones.

The protagonist - the personification of the game - cute (how much of course it turned out to be made as such) a frog with a briefcase and in a cap, without him it would be another logical game where you need to jump along the arrows.

Soft monetization

In my thoughts on how to publish, I turned to different publishers - from small companies that just have their own published applications, to such giants as chillingo, rovio, glu and others, now most people say that they want to release f2p games, in general, I certainly understand them, in theory, with user f2p you can get obviously more than with paid / freemium games, but most of all I didn’t like the position of the project manager of one fairly large company - the point was about the fact that games should earn, and everything else (gameplay, etc.) sweat m (and in general, if they earn it and do not need anything more). I fully believe that the first cool app that users like and that play and share their emotions, and you can monetize a cool product.

That is why, in the new game, it adhered to the position of maximally soft monetization - you can turn off advertising (which appears only when it does not interfere with the user - between levels - and does not block further interaction), you can purchase small game process simplifications, such as hints. But the whole game from start to finish can be completed without a single cent.

Ps. Yes, I understand that this way you can earn nothing, but for now I’m trying as much as I can to leave the games primarily for the entertainment of users, and not to make another money pumping machine.

Design


I must say, in order to think about how an application should be built at all, when creating an old game, I didn’t even think about it - I did it as I received new thoughts and ideas, one thing I can say - I don’t really advise doing that.

The game was originally created on a piece of paper, various possible scenarios, different locations of screens and elements were chased away in my head, and only after the desktop was pasted with different sketches and diagrams there was a problem of choosing where to make the game as a result.

I can assume that my approach in sketching prototypes on a piece of paper is suitable only for a very small team of development that sits in one place, for example, I ran into a problem how to explain to the designer who worked with me what I really want to get at the output . Only a scanner helped, and the painted little leaves flew away by mail.

In general, looking back, it can be said that prototypes, screens and ideas should have been initially digitally generated, but since that time, I think a new step has been taken and it can be said that it is much more convenient to develop ready-made layouts and prototypes. than the idea in my head.

Design


The first game was drawn by hand and at that time it was still not completely beaten, but today I come to the conclusion that it is cheaper to give some things to the professionals, which I did in general. Freelance is rich in good specialists, I hope you will like the Frog!

Screenshot Screenshot

How, where and what do we do?


The first game was in fact one of the first development experiences for android, then it never even entered my head that it was possible or needed to write on several platforms, it was initially decided to do the game “seriously”, at least under iOS + Android.

In the course of studying various possible options for developing an application - from native two different applications to all sorts of different frameworks (which are abundantly described and compared, including in Habré), the choice fell on corona, because what I liked the most:


No cost here and without cons:


Now it seems that in order to develop any big projects in a team, you need to have a very cool skill in understanding someone else's code, the ability to comment out what is going on and to know good development practices in scripting languages.

Personally, I’m far from master scripts and lua isn’t my native language; as a result, quite standard problems arose in the course of working on a project, which were sometimes solved in a way that is not standard in my opinion.

Interesting difficulties with lua and corona
Frankly, this is my first experience with lua, so judge it strictly, describing moments that seemed to me at first glance not the most trivial.

Lua and OOP

Out of the box, lua does not support the PLO approach, but it implements metatables, on which you can build some kind of PLO yourself, also the other day I was advised to look towards a ready-made solution to the problem , but frankly, I haven’t tried it yet.

How to make your class metatables described in the community coronasdk here:
www.coronalabs.com/blog/2011/09/29/tutorial-modular-classes-in-corona

Multi-resolution support

How to organize support for the highest possible zoo of devices is described well here:
developer.coronalabs.com/forum/2012/03/12/understanding-letterbox-scalling

In a nutshell, the idea comes down to the fact that they have allocated a workspace that intersects with most devices, and it is in it that the elements are located, and the rest of the unused space is allocated to the background. It turns out that what is cropped on some devices contains only the background.

Localization

The most convenient option that I found is to make a separate lua file, approximately with the following content:
local translations = { ["test"] = { ["en"] = "Test", ["ru"] = "Test", }, ["play"] = { ["en"] = "Play", ["ru"] = "", } } function setLanguage() --    (         ) language = system.getPreference("ui", "language") if (string.lower(language) == "english") then language = "en" elseif (string.lower(language) == "") then language = "ru" end if (string.lower(language) == "1049") then -- 1049 -   ,    language = "ru" elseif (translations["test"][language]) == nil then --     ,    (    test). language = "en" end end return translations 

And in those places where you need to use a localized string, it remains only to use:

 translations = require("translations") -- ,       ,    translations["play"][language] 

Closures

On the screen with the choice of the level where the grid of n * m elements is located, it is necessary to transfer the selected element to the universal event handler, due to the fact that the handler is set for a specific event in the following way:

 level:addEventListener( "tap", onImageTap); 

just passing the data through the argument will fail. Here closures can come to the rescue, you can add the necessary fields to the created instance itself, which will be contained in the context when the handler is called:

 level.idLevel = value 

and then the handler itself will look something like this:

 function onImageTap(event) level = "levels/"..packNum.."/"..event.target.idLevel 

Animations

On the main screen of the game, you can see two types of animation - cyclical in a circle (clouds float behind the screen) and cyclical with reverse motion.
The first option is done quite easily by calling the end of the animation itself inside the handler:

 cloudListener = function( obj ) if (obj ~= nil and obj.width ~= nil) then --          local aTime = nAnimationTime * (30 + math.random(30)) --    obj.x = - obj.width --        transition.to( obj, { time=nAnimationTime, x = display.actualContentWidth + obj.width / 2, time = aTime, onComplete = cloudListener} ) end end 


The second situation is also handled, only this time there will be 2 handlers that call each other in turn.

If the object remains alive after leaving the scene, you need to remember to clear the animation - the transition.to returns an object, which can then be separated from the animation:

 transition.cancel(animtaionObject); 


Leak detection

For Conor, there is a convenient third-party cheap profiler, which is a lua file that is inserted into a project and the method of collecting objects involved is called in potentially problematic places, after the N repetition, for example, opening a scene, a pool of objects accumulates and the analysis is displayed in the html page, on which immediately see where and what objects do not die. Thus it turned out to catch the problem, because of which my game began to slow down terribly after a certain number of levels played.

In-app purchases when building under ios

The official documentation details the steps that need to be done to test in-app purchases, but for some reason nowhere could not find one small, but very critical nuance (especially if they had not tried to develop for iOS before): you need to build.settings in the section describing the ios application add 'CFBundleIdentifier = "yourbundleid"', after that, everything immediately took off.

Version Control System?


Immediately before the development, the question arose - is there any need for any version control system, or when you develop one, you can get by with a regular backup a couple of times a week? For me, there is only one correct answer - when developing, always use this kind of storage.
You can bring several options when the presence of a change history is very useful:


Level design is a separate issue.


But without what, and without levels, a casual game cannot exist as such, in the first game, the levels were originally made in xml and I can say that the work is not pleasant, and the editor appeared much later.

The game was originally chosen path through the level editor. There were ideas to write it under a mobile device so that it could be made on the road - from a phone or tablet, but the more reasonable option was a small javascripta, which can be edited on almost any device from any browser, and the result was immediately stored on the server. As a result, this approach brought only benefit:

The result was an editor who saved a lot of time and nerves.



Sort levels by difficulty

Each level of the game was completed after creation, but to objectively assess the complexity, not seeing the whole picture is not a trivial task, here again a universal solution was found:
Screenshot + online gallery = grid from all levels, which allow you to visually compare the levels among themselves - I must say, it turned out very convenient.

* But any galleries, runs and so on do not replace testing on live users - let your friends play, something that may seem elementary to you may in fact be almost impassable for a non-dedicated user.

We do not miss the chance to shine


At the development stage, when the design was already ready, the alpha version of the application was ready, suddenly a competition was caught. In general, various events in the form of contests, conferences, etc., are excellent for providing a certain PR - after all, it is not bad by definition.

So, the game was ported by the efforts of the found freelancer to html5 and from there to tizen (after all, it will be possible to find uses for the web version of the game). By the way - the first game between times also appeared at the competition.

Total - less than 1000 dollars spent on one game for the possibility of a small PR and a chance to win some money for the further development of projects, let the success rate is not as great as we would like, but “the game is worth the candle” and, if I had not decided, probably in the future would be very sorry. The results of the competition will be in early 2014, so we will wait ...

We follow our user


When creating the first game, I somehow did not think about logging and tracking user actions - why should I let myself play calmly ... Today I understand how wrong it was - detailed statistics allow you not to spy on the player, but let him know that I like that, no, what important elements of the game he does not notice, and many other interesting facts.

At many conferences devoted to mobile development, today they talk about how statistics collection can improve a mobile application, using flurry in the game, corona makes it easy to log any events, building effective graphs and diagrams using them, which can be used to analyze user steps in an application. for example, to understand that a person simply did not notice the key feature of the game ...

Marketing and publishing


In the last article, you can obviously observe the fact that publishers are not in vain doing their work, and 100% of the first much less than 10% of the 100th, it was decided to go to the publishers. But it was not there - today, one and all, they say that they want to publish f2p machines for pumping out money. The understandable desire and such a business model deliberately generate large profits, but I still believe in casual games, if only because the word “casual” is close to users - every day people spend some time waiting, which can ideally be brightened in a couple of minutes in an application, which does not require involvement and can be immediately turned off without losing progress and without a lone interlocutor in an online social game. After all, the above described characterizes the word 'casual'.

Publishers have retired, but nowhere to retreat, I am well aware that in the world of game-devs, the rule now works that they earn on invested funds, marketing budgets and purchases of new users. Nevertheless, there is nowhere to retreat, press releases are ready, the video has been shot, it's time to launch ...

For a start, I decided to try a less expensive method - if possible, send press releases and order reviews on different sites, such as:
appadvice.com
androidtapp.com
iphones.ru
W3bsit3-dns.com
148apps.com and others, including those found here .
Jeff Scott, the founder of 148apps, speaks about the benefits of press releases and presseites.

As far as I understand, the review site is strongly interested in receiving new reviews of games that are interesting for them, so they offer services to prepare a review before the final release in order to launch the pr machine simultaneously with the appearance of the game in the markets. (Today it is not a secret for anyone that the number of downloads in the first days of an application’s life is a very important parameter).

Separately for the press, there is a press site on the promo site - an archive with banners, icons, screenshots, etc., and I must say, it makes life quite easy when posting applications for reviews, and, it’s worth it, editors and journalists themselves are extremely comfortable with this section. - for initial review and, possibly, further use, you only need to download one archive.

Finance and performance


Probably, some readers will find this item one of the most interesting, but ... at the moment it’s too early to talk about any results, if there is interest, I’ll add some statistics here - it’s interesting to see how my approach turned out to be right today. Will the game get a return, or, as my friend once said: “Tried, done, tried ... and what did you get? Again experience. ”

Ps. I hope I did not finally tired of his story? If at least one lover of gamedev found at least one paragraph of this essay is informative, I think that I have not had a good time ... And if not ... I even tried, thank you!

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


All Articles