📜 ⬆️ ⬇️

GameDev as a hobby

Working as a programmer in an area not related to games, I suddenly decided to write a mobile game. Without knowing any tools, technologies or specifics of development. What is it like? What conclusions I made for myself and whether game dev can be a hobby - everything is under the cut.


Brief background


Some time ago, I had an idea: “Would you like to write a computer game?” I think that this idea comes to almost any programmer. All of us, when we are just starting to learn a profession, we dream of creating new World Of Warcraft, Counter Strike, or at least, Farm Frenzy. But then school-student years come to an end and we start writing what we pay for.

I wrote my first and only game on Delphi about ten years ago when I first studied programming. It was a miserable clone of vertical shooter sliders that were wildly buggy and slowed down. I realized that to develop something worthwhile, you need not only desire, but also considerable knowledge in the field of working with graphics, and that developing “interesting programming” will take ten percent of the time, and the rest will be spent on solving completely non-romantic technical problems. Therefore, I abandoned the idea of ​​writing games even to the university and today, for five years now, I have been happily working in the field of corporate systems integration.
However, a couple of months ago I wanted to write something “for the soul”. In addition, the rapid development of mobile applications causes the feeling that something very interesting is happening, but without me. “Not order!” - I decided and rushed to dig towards the development of mobile toys.
')
And here the most interesting begins ...

Firstly, it is very pleased with the abundance of various ready-made engines. And free and easy to learn.
Secondly, a lot of markets and websites with applications where you can honestly share your work.
Thirdly - a lot of articles, lessons, tutorials, etc. etc. One article on Habré is quite enough to get an idea about technologies and tools.

So the decision was unequivocal - to do!

So what to do?


The first four or five prototype ideas were ruthlessly thrown out or postponed until better times.
The reasons are very different: some were too complicated to develop, some turned out to be bad clones of existing products, some corny required a lot of work on creating content.

Then I sat down and decided to formulate the requirements for the future game.
  1. It should have a bright and pleasant interface. The times of poorly traced flash games are long gone, if they ever came at all.
  2. The game should have a simple gameplay. This was dictated by the limited resources - writing something serious was neither the strength nor the time. In addition, the correlation between the complexity of the game and its popularity is highly questionable. Hello evil birds!
  3. Management should be as simple as possible. This is my personal view on mobile games. I can not stand those where you need to poke your fingers on a dozen small on-screen buttons, or twist the phone like a steering wheel. Just personal preference.

As a result, I stopped at the following concept: The ball jumps across the platforms. The task is to “jump” to the finish line and not to fall. Management - with one finger. Touched, pulled, let go. No buttons or other controls besides the menu.
Unity3d was chosen as the engine. Firstly, there is a lot of information on it, and secondly, I’m much better friends with 3d than with 2d. Making unpretentious models and building levels out of them seemed much easier than trying to draw beautiful sprites with “crooked” hands.

So, the goal is clear, let's go!
Level start

First problems


The first thing that was missing was the content. Even the simplest game is not only functions and classes, but also models, textures, sounds. Programmers are rarely artists. Musicians - even less. And the one and the other, and the third - almost never.

Content had to either search for drains, or order from specialists, or do it yourself. The paid drains and the individual order disappeared immediately - it was not a commercial application, and there was no point in investing money in it. It was impossible to find something worthwhile on the free stocks - the search process was like digging in a large urn, where they threw everything that was at hand.

The last option left is to do everything yourself. In the end, something had to be abandoned, such as background music. But I got a lot of pleasure from studying 3d tools. The coolest was 3d Studio Max. It is a pity that the time of its test use is limited to one month. If suddenly I take care of this area professionally, I will definitely buy it. And so free Blender completely helps out.
It also turned out to be not difficult with sounds - several short sound effects on the falling ball, “collecting” stars and completing the level were made using free Audacity. It was possible to do more and better, but the problem here is not in the tool, but in skills.

The second problem was the architecture of the application. Describing classes and their purpose is not a problem, but to glue them together somehow with Unity, which I had discovered for the first time when I started developing it, is much more difficult. How to collect all this zoo in a bunch, when you learn the capabilities of the tool in the course of development? I wanted to rewrite everything from the beginning and, humanly, every few hours of development. Constantly learning something new and the old solution seemed stupid.

Very quickly it came to the realization that if we pursue the quality of the code, the game would never be made. As a result, only those moments that really influenced the development and were used in many places were thought out - a dozen prefabs with controller scripts suspended on them. The rest is hardcode and anarchy.

It seems that I used all the antipatterns that are just there - hardcode, copy-pasting, etc. I don’t urge to do this in any way, but I can’t help but notice that this has reduced the development time by a factor of three. At the exit - a working game and a disgusting code that no one will ever see.

Another misfortune of games that I never thought about turned out to be balance. Even in my mini-game, the difficulty of the levels had to gradually increase. And not only the size, namely the complexity. Points accrued for passing should have increased proportionally.

The first version of the game turned out to be mega-hardcore, although I went through it without problems and thought that everything was in order. But “alpha testing” with the help of close people showed that the game is impassable if not you wrote it yourself.
We had to simplify a lot, optimize, add “safety” elements that do not allow to fail the level in one jump from the finish line.

After the changes, the coefficients of the points “floated”. Since they are calculated taking into account the time of passage, then the first levels accrued more than the last.
To straighten the balance I had to go through the game dozens of times. Still, it was not possible to create a linear increase in complexity.

And finally, a lot of emotions delivered the creation of icons. Everything rested in the inability to draw and ignorance of what they should be at all. The result was a miracle crammed with photoshop "artifacts." Not the best option, but for more not enough power. Just did not expect that this would be a non-trivial task.
Icon

File completion


After the first steps were taken and the first level was launched, I made a list of what needs to be added to the game before releasing it. The list was long.

The first points showed that if you do everything, the game will be released in three or four months. Given that everything was done on enthusiasm - not an option. I understood perfectly well that the longer the development lasts, the more gags occur, the less likely I am to do anything at all. Development had to go quickly, in the same fuse. In fact - in one sprint, if it were a scram.

As a result, it was decided to shrink the game.
What he refused:
  1. Background music. It was not possible to find a good and free one, I do not know how to write my own, it is not an option to buy someone else’s. And to steal is not good and immoral.
  2. The number of levels decreased from 25 to 15.
  3. Instead of a multi-layered backdrop with a perspective effect, abstract clouds were inserted.
  4. Not implemented integration with social networks. I really wanted to make a page on facebook and at least the Like button in the application itself, but there was not enough time.
  5. Global ranking. He planned to show not only the achievements of the player himself, but also the best among all and the best among his friends on facebook. Similarly, there was not enough time.
  6. Advertising in the application. I wanted a little bit to compensate myself for the time spent with money. But there were problems with admob, and the question arose - either to earn nothing, or to delay the issue a lot. I decided that it would be better to release it for free, and to reward myself with the experience gained.

These are only the points that were recorded and which I really regret. The total number of unrealized "hotelok" not count.

Results


  1. The game is released and published on Google Play.
  2. The development time from idea to release is a little more than 2 months.
  3. The time spent on development is about 60 hours. Very roughly, because most of the time was spent exploring previously unknown technologies. And also for testing and leveling the balance.
  4. The development cash value is $ 25 per developer account on Google Play.

Win!
Winning Level

findings


For myself, I made a few conclusions that I’m happy to share.
  1. Modern development of mobile mini-games is more the work of an artist than a programmer. For software implementation, the most basic ideas about development are sufficient. Of course, if a large and high-quality product is made with a commercial purpose, everything is completely different. But to write a casual shooter-walker-fly-jumper-now does not present any problem. There would be a desire.
  2. The ideal is unattainable. If you strive to invest in your first game all that you want, then it will never be done. It is better to do something simple and pleasant than nothing.
  3. Do not be afraid to break the rules of development. The “dirty” code is, of course, bad. But the user will never see him. And you, too, if you are not going to develop your game. And to do something for the first time and hope for development is naive. The code of a small game is easy to keep in mind and it is quite possible to neglect its purity, if it speeds up the exit.
  4. The best motivation is an early release. If it is transferred indefinitely due to some problems, then the desire to do something melts before our eyes. Therefore, all "braking" problems need to be addressed as soon as possible. The ideal tool for self-motivation is a piece of paper on which everything that needs to be done for release is written out. If something turns out to be too complicated and unnecessary - it is deleted and it should not be returned to it anymore.
  5. The first game should be the one I would like to play. It is unlikely that it will “shoot” and explode the ratings of app stores. But it will be nice to develop and want to share it with others. And for the hobby is the most important thing.


And the last, very personal impressions.

Making the game is fun. Sometimes even more interesting than playing it. Unlike working in a team on a large project, this gives a little joy of personal victory. Product release at work is the norm, everything is clear there, nothing unusual about that. But such mini-games allow you to experience the joy that we experienced when launching our first programs. When around a heap of unknown technologies, everything is new, incomprehensible, and here: O-pa! It worked!

Impressions from the development were the most pleasant. So - Play game!
Main menu, start of the game

I would be glad if someone will share their experience of "non-professional" game development.

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


All Articles