Student’s path to mobile app development

Hello, I want to talk about how I came to create my first relatively serious game for iOS and Android.

Background


Back in high school, my friend and I were very good at computer science lessons, I liked coding and solving various problems using programming. In addition, I always loved games, and I, like many fans to play, was seduced by the ghostly opportunity of writing my own.

As it should be, I have developed an interest in other programming languages, and I decided to "grow" out of the notorious Pascal. My choice fell on the notorious Python, for I had heard about its wide range of applications and relatively easy development. Moving a bit in reading the relevant literature, for practice I solved problems from the Euler Project .

In fact, all this time I wanted to start doing something really serious, and at a certain stage I felt that if not now, then never.
This “serious”, as you might have guessed, games became.

Having found the PyGame library for this lesson, I set to work. To begin with, I decided to practice a little something banal. Tetris nevertheless did not do, but realized, although not immediately, the good old game "life", which he was very pleased with.

A life



Then they joined my creations: an almost finished DX-Ball, which I played with interest on my uncle computer in the middle of the zero, a copy of Supaplex in its infancy (the same nostalgia) and, in the same state, an arcade inspired by the relatively modern The Binding of Isaac.

Dx ball '



Isaac '



The beginning of students and the first impulses to create their own projects



Over time, I realized a thing unpleasant for myself: I did not finish anything from the projects, although at first there was more than enough enthusiasm. And so it went: less and less I returned to the old developments, sometimes with enthusiasm took up new ones, but the result was one.

Then, the most terrifying period in the life of any student began: the exam. Programming has faded into the background, but having passed the exams and entered the "Electronics and Nanoelectronics" at the St. Petersburg Polytechnic, I returned to programming. Moreover, the student life shook me a little, taught me responsibility, which is why I decided that from now on I would finish all my projects.

And so I decided to write something for Android. Everything stopped on the same Python, as it was the only thing that I somehow knew and what I could cling to. Started learning the Kivy framework. Unfortunately, as much as I would not like, Python + Kivy is not the best option for development for android, and I realized that I could not go far in this direction.

As a result, having spent a considerable amount of time on such a simple application as a test with the conclusion of several options for the final result, I still brought this modest project to the end and even uploaded it to GooglePlay. Then, in the wake of the popularity of the battle of two well-known rap battles, my friend offered to do a test on this topic and prepared questions for him. So our first completed project appeared, and a team of two people appeared, taking on the name “Aspid Dynamics”.



Most of the time was spent getting to know Kivy and another KivyMD library that provided Google Material Design elements. The rest of the time was spent on drawing icons and numerous redesigns (It turned out in the end, not very, but it could have been worse). Since I was not working alone, it made the development process a little easier and motivated me.

New beginnings


The result was not quite what I wanted, but I decided to move on. I looked closely at a new development tool for me, which was the well-known Unity engine. The choice of the further direction of development was finally made, it remains (just something) to get acquainted with C # and explore the capabilities of Unity itself. Thus, we got close to the events that took place recently.

As before, I decided not to tackle immediately something impossibly. The idea was simple: to create a game in which people will write out words suitable for a predetermined condition. One simple example: “Enter the words containing the three letters“ o ””, after which you enter, for example, “bell”. At first, the idea didn’t seem any new, but after checking the Play Market, I didn’t find such games, which ultimately convinced me of the success of the idea.

Project “Word Expert”


Having chosen the trivial, but catchy name, “Word Expert” for the game, I began to carefully consider the development process. The implementation seemed uncomplicated, at least after a superficial analysis. Maybe it is so, if we formalize only the basic mechanics, but with detailed consideration, the functionality has repeatedly grown and has been significantly expanded.

Having finished the description of the project, I enthusiastically began to implement point by point. The main idea really came true quite quickly: the ability to create levels based on several templates was added.

Templates are a kind of basis for some criteria that a word must satisfy, among them: the beginning of a word on a "substring", ie a letter or sequence of letters, the content of the "substring" in the word, the content of N letters, the evenness / oddness of the number of letters in the word, etc.

Further, the words entered by the player were checked for compliance with the template and the presence in the dictionary. Points were awarded depending on the frequency of the word, and I began to set passing levels depending on the number of points I received in 5 minutes. In the standard levels of the game, a person needs to enter the maximum possible number of words in order to be able to pass the following levels.

Word Expert



New problems and unexpected solutions


Everything would be fine, but it turned out that it is quite difficult to make many levels unlike each other. Again, my friend took up the task of helping me, and by the time I was in my forties, the problem was not only that the levels are hard to think of, but that, due to some linguistic features of human perception, we too often chose certain letters and patterns, stubbornly ignoring others.

This was noticed in a timely manner, and an attempt was made to strengthen control over myself, but it did not give the desired results, so I had to calculate and record the frequencies of the use of letters and patterns in our levels. After that, it became much easier to take care of yourself, but in the end only 60 levels were done.

Due to the fact that the need to come up with levels impeded development, as well as due to the problems described above, I decided to implement a level generator that would create a sane task based on our templates. I could not find a correlation between the number of words corresponding to the assignment, their frequency and how many points are gained (This meant that the levels would have to be balanced as well - manually).

Apparently, this is due to the fact that words are easier for some conditions, even if there are fewer of them. For example, in the consciousness words quite simply pop up, with the condition of starting on some substring, for example, take the words on 'ba'. It’s as if we are saying to ourselves this initial condition “ba”, and the brain easily completes it to a lot of words: “tank”, “bank”, “banana”, etc.

But if the condition contains no more than 4 vowels and exactly 8 letters, then even though there are 6 times more such words, the speed of selection will obviously decrease. On some templates, when we find one word, we find ourselves in a whole cluster (for example: ending in 'spruce', if we come up with the word teacher, we can see that many professions end up like: 'builder', 'driver' and etc.). If there was no connection, nothing would have united these words, then by a simple search in our head we would have guessed much less.

Polishing, new modes, finishing touches


The created generator really markedly facilitated the creation of levels and, gradually increasing the number of levels, my friend and I reached already hundreds. It was inspired by the success of the generator involved in creating the levels that we decided to introduce a new game mode.

It was “survival," where you need to enter words until the timer expires. The difference from the classic mode is the fact that here the player is faced with the task of entering a word in N seconds according to a given condition. Upon successful fulfillment of the condition, a new task is generated, and the timer is extended.

Later, we decided that to constantly maintain the content, we need to add multiplayer. Of course, it’s much more interesting to measure your vocabulary with a friend at recess, or play with a stranger online. The "classic" multiplayer mode implies a competition in the number of points received over a certain time. Quite a long time carrying around with the implementation of the game over the network, I still figured out and finished 2 corresponding multiplayer modes.

A lot of problems in the development process brought us design. The main catch was that I, myself, was far from being a designer, my friend also did not possess the necessary skill, and I wanted to make an adequate picture. A third acquaintance agreed to help me, but after several drafts that were not brought to the end, he could not continue.

As a result, through repeated processing and collection of feedback from friends, I myself developed the final version of the design.

Game release, plans for the future


Initially, the Word Expert was supposed to enter the Play Market only due to the limited budget, but my friend helped me get the necessary $ 99 for the release on the AppStore.

We plan to supplement and update the game. Extra levels, achievements, player ratings and much more. Perhaps we will make English-language localization, which is a little expensive in the context of this game.

Thank you very much for your attention to everyone who read this long post.

Sincerely yours,
Aspid Dynamics Team.

Also popular now: