From idea to Google Play for 30 hours


Welcome, Gabriele!

Today I want to share with you the story of how I was doing a lot of things right, to bring a project to create small toys from the beginning to the end. Such things were: analysis, planning, design, TDD development, and testing. And all this was going on scrum'. Yes, it is in this format and order. All this should be the rule, the ideal route of doing the project, but not all and not always understand it. Well, at least I often get lazy and throw in the code, forgetting about the rest. Not difficult to guess what comes out of this. But not this time, I said to myself, and dismiss the keyboard, took a paper and pen.

Disclaimer: this article is purely motivational in nature. Technical details will be described separately.

Motives

The main reason that spurred me to this project was the desire to go all the way game development, even in the context of such a small project and even in a vacuum. But in the end it would still penetrate every aspect of game dev'. For myself, I decided that in the past have been nachinalsya with homemade projects, and this time everything should be as adults.

the Idea

The type of next ON has already been predetermined — the game (here as something to think about it, subconsciously it was all solved long ago). Target platform the first version assumed a Android, but only because it is closer in spirit and do not require additional knowledge. Then I thought about the genre. Despite the pop-up in my fantasy shooters and real time strategy, I'm pessimistic depending on your strength, decided to follow the principle of the quick win and is targeting a simple puzzle. Among the abundance of puzzles in the first memory of any filler, the field of diamonds of different colors and a single goal: to capture more than half of all cells. On this and stopped. Of course, as expected, found similar results, but nevertheless not so much, and the choice was approved.

Split the tasks and planning

Before considering the work and distribute the tasks on the calendar, it was necessary to consider the end product from all sides, to decompose it to the level of basic tasks, pick up the tools, libraries, to estimate the testing process and production.

The first thing on a piece of paper (or rather a couple dozen A4) were established prior mokapu. Then they decided to fully render to photoshop, so there is a chance to prevent visual inaccuracies even at the design stage. Artist from me no, so in the end I had to find lessons on the Internet (how successful it turned out to judge you). But the sketches it was decided to build from the final versions of resources, so I tried to kill two birds with one stone, and at the end of the project I can say that this decision was successful.

Next, I thought out the business logic from A to z (it is important to understand that even if small, the algorithms will not be considered at this stage, they will have to fence in a hurry at the stage of development, so I strongly recommend not to neglect) and built functional requirements. Building on this information, I went to the choice of the framework.

The spirit of the experimenter prompted that it is necessary to try something new. So I met with cocos2d-x. List the advantages, I will not. Inquisitive users have gone to Google, and those who are familiar with this platform, you will understand me in my choice. From myself only I will notice, and functionality and performance, and license fit my requirements perfectly. Now that was a well-known framework that was easier to estimate work.

And the code to write it's still early, but based on available information, it is possible to do UML'eat. Highly recommend to impose all materials, collected at the moment and to build, to build, to build class diagrams. I spent the whole evening spent on this activity. The first option was as before, anyhow, and managed. But the class diagram should relieve the developer from the designing architecture on the go. So all the boxes went into the garbage and began the second round. Somewhere in the middle I re-made the mistake of over-simplifying, and only the third time turned out to be a very decent document. Looking ahead to say that he is more than 80% correspond to the real code.
Podregulirovan and ran across the writings, I reserve determined 10 hours to work with the resources (music by the way took ready, I don't know that I can not), 20 hours of pure programming, and 10 hours for testing and bugfixing.

Start!

So, the task list is compiled, go to the execution. It was the beginning of the leave, but the hands are not unaccustomed to the keyboard on the work already scratched and torn in battle. But in order to continue to comply with best practices, I sat down at photoshop. And, lo and behold, I was not required to invent a job. I was clearly decomposed and painted:
— All 5 screens.
— 1st day, the menu screen, and choose the game mode. They depict ... the... buttons... elements, etc.
— 2nd day, the playing field, which shows ... ... and so on.
— 3rd day, pause screen and end the game.
Wielding scrum'om, I highlight the challenges, prioritized them, set limits and manage beklova, in short, was the king and God. All vkuche very well systematized my work. For myself, I made a small rule not to take in the development of more than 2 interchangeable tasks. Stalled for one turn to another and later return to the first.
Provisioning took three evenings, a total of 7 hours. This is ahead of schedule warmed the soul.

Go to development. We have 20 hours. How to monitor progress and at least indirectly to understand time? Here's how: 20 hours is a round number, consisting of the amount of effort to implement each element of the class diagram. Now, to understand which parts of the program ready, and what the General progress is made, was invented by the following method:
— implement all-all classes/methods, but put into pacifiers, we just need to get a successful compilation;
for each method we apply Unit tests (3-5 pieces for each);
now when you build you can see how many tests passed and it's % of completion and how many tests has fallen, and this is the part which is not yet implemented.
Thus we have the progress of the project.

A separate paragraph deserves information about monetization. Of course for your time and effort wants reward. Therefore, it was decided to tie a bit of advertising. Google AdMob there are different types of advertising messages. I chose this strategy: during game play — no ads, full page banner only after you exit the game. There are also want to tell you about a small architectural feint (this is 20% of the code-conforming class diagram). Cocos2dx at the end of the game, is not the normal way of finalization of the application, it does not cause onDestroy, etc., it just kill'd yaet current thread with the application. At the same time vpihat advertising in native library — a task too trivial.
The solution here is:
1) after the user closes the game (by pressing Exit) the main field of play is hiding and comes to the aid of JNI which pulls the display a new Activity with advertising;
2) when advertising, whether closed by the user, whether it collapses, is there another option (Back/Home/Menu buttons, etc.), again, JNI, but in the opposite direction sends a call finalizer of the game and everything is closed.

Testing

For testing I used two strategies (again, even at this stage I had everything planned and went according to plan):
1) manual testing. The good wife — QA engineer. Special thanks for the help.
2) automated testing. Now the Internet is actively developing services that provide remote access to real phones/tablets to test the developed applications (below are links). As a positive feature of these services is the availability of a trial period of use. For myself, I have identified three such service. First — in order to be able to run the final application on different devices. Second, measuring performance and load. And the third for mass surface test on a large number of devices.
Both strategies up to a dozen obvious problems, and again the mortgaged amount of labour was used until the end.

Production

Better to see once than to hear seven times.


Summary

This experience is priceless!
— 18 hours of development + 7 resources hours of training + 5 hours of testing = 30 hours of real work, for which no shame.
— Pride in a project that brought to an end! And a wild desire to share an accomplishment (that is why, not enough sleep, I play this.)
— Hope that from this something will turn out (maybe empty, as experience mini-game commercial dev'and previously I was not).
— Motivation/tips for reading.

things to do (if the project starts to show signs of popularity):
1) Unreleased games for iOS and Windows Phone 8, well, most likely the desktop version for Windows.
2) to Tie google Analytics to analyze the behavior of players.
3) to Extend the functionality: levels of complexity, the dimensions of the field/cell, total top (somewhere in the cloud).

If I have not covered any of the interesting parts, write in comments, I will answer.

Useful links:
1) play.google.com/store/apps/details?id=com.xlab.ice.HexFiller — actually my "masterpiece"
2) appthwack.com — service of mass testing
3) cloud.testdroid.com/web/home — service performance testing the application
4) testobject.com — the ability to run applications on multiple devices with the subsequent interaction
5) developers.google.com/mobile-ads-sdk/docs/admob/advanced — interstitials

Behind the scenes remained the nuances of preparing charts, work with different displays, Assembly, run on the emulator, the algorithm of strategy game AI and all sorts of stuff. But this article is more motivational in nature. And yet, if anyone is interested to hear unsaid — vote, I will write the second part of the article.

Thank you for reading!
As you can see, a serious approach to even the small projects is bearing fruit. And time savings, and the final result, it all points to the negative side of disregard for pre-coding/post-coding stages, which must have everywhere. Okay now I got it.

PS Thanks reenboog for tips on the schedule and resources and coder1cv8 for tips on monetization.
Article based on information from habrahabr.ru

Комментарии

Популярные сообщения из этого блога

mSearch: search + filter for MODX Revolution

Emulator data from GNSS receiver NMEA

The game Let's Twist: the Path into the unknown