📜 ⬆️ ⬇️

How I decided to go to game dev

This is a story about how I threw everything and started making games.

Step Zero - Solution


For almost ten years I have been involved in electronic document management. Probably, if someone ten years ago said to me that I was so seriously stuck in it, I would not have believed it. Nevertheless, although the subject area has not changed, for quite a long time it was all interesting to me. It was interesting to create a support service instead of tribute programmers on duty in turns, it was interesting to create an all-Russian (wow, what a pathetic word) developer community, it was interesting to meet with hundreds of stupid people from dozens of leading Russian companies, from burgers manufacturers to NPP builders. Constantly look for clever solutions to non-standard queries. At this place they often write "and then one day I understood ...", but, in fact, there was no such day.

Gradually, I realized that I lived to the position of "guru sitting in the corner." The company even composed a humorous attestation question to newcomers after a trial period - what I actually do. Because no one really knew. As a result, I began to engage mainly in expert activities. Coordinated specifications, advised how to build a large-scale architecture, how much the project will cost and who has the competence to implement it. And he taught the rest to new technologies, which often got me on trial just for me. And as a hobby, he stuck his nose into everything where brains were required, from architectural hacks to the company's strategic planning. In general, such a bearded uncle is sitting in a corner, a programmer by post, according to grade as head of a department, the code does not write what he is doing is unclear. And from time to time someone breaks up to educate or lecture on the history of the USA, China or Ancient Rome. Well, even with him it is beneficial to have a good relationship, because he is usually terribly bored, and he is always happy to help come up with something.

In general, warm, light, flies do not bite. The salary paid by the provincial standards is good. Free time as you want, few people can load you with a bunch of stupid work, because no one knows how much and what you are doing. And somehow it is not accepted to send a trench to the gurus. And then suddenly there will be a job that only I can do, and I'm just digging? But smart work was not enough. For some, such a position is ideal, but for me, mortal boredom. And over time, this boredom has led to the fact that the subject area has become thoroughly nauseated. And this means that the option to go to managers has also disappeared. It is difficult to be a master of shoemakers when you are sick of one type of boots.
')
And I decided to relearn. I started by taking the initial Java course on Intuit, and I wasn't going to leave the world of large corporate software, but then I accidentally came across Unity. I thought - Ege, this is a cool thing. Do you write the code once, in an elementary domain-specific tool, and you get a port on all platforms? Let him be far from optimal, but still it’s fantastic!

I always wanted to create games. Probably, ever since years in 10 years he learned to draw circles and lines on the screen of the ZX Spectrum. It was an incredible feeling. I think it’s about the same way that the little mummy feels when it understands why you need a marker. And he begins to draw Kalyaki-Malyaki enthusiastically on everything that comes to hand. I could write my Malyaki from geometric shapes on BASIC for days. And the first completed game was written somewhere in 15 years. It was a step-by-step Pakman. Unlike the classic Pakman, in my gameplay was based not on speed, but on logic. Some monsters were with absolute homing on the player, spread over the entire map, so the route had to be carefully planned. Before the era of kazualok smartphones, then it was still 10 years old, and the games that a schoolchild, which is far from genius (or manic working capacity) a schoolchild can do, did not have either demand or distribution media. Therefore, in school, everything was written for himself.

So, looking at Unity, I decided to shake the old days. I was very emotionally hooked simplicity and cross-platform. The joy of successfully launching the first elementary scene on the android was comparable, perhaps, with the joy of drawing the first circle on the Spectrum.

Deciding that being an indie is still too much, I started looking for companies in which I could work. A quick search for vacancies showed that, in principle, there is a job for unitists. Not enough, of course. And even from this small list, some are not related to games, but to some modeling of tractors for stands of agricultural exhibitions. But in general, finding someone to work with is completely realistic.

I did not want to send out a resume without any game-building experience. I suspect, of course, that my resume would attract attention. I don’t think so many people are moving away from corporate systems architecture to a fun farm on the phone. Exaggerating, of course. I do not know, however, would such attention be positive or not. One way or another, both for the portfolio and for myself, I decided to write something. Not to publish, but at least to understand the platform, to provide at least some working example of your code, and not just stories about how my spaceships plow open spaces of Gazprom and all state bodies.

Step One - the game


I decided to write something simple that I can master alone, and at the same time that I would be interested in playing. I haven't played platformers since childhood, but I don’t like puzzles at all. In addition, relatively recently, the first Plants VS Zombies and the second Fieldrunners passed with pleasure. And decided not to philosophize and do something like Tower Defense. Although moveton already, I know.

Copy the gameplay of the above games did not want to. This, of course, is not bad, most of the great games are the development of other people's ideas. But I was seized by the thirst for creativity and the desire to come up with something original. Therefore, I decided that instead of towers, I would have unmanaged troops, who would decide how they would fight. Probably, this does not really fit into the TD genre, but oh well, I thought. In the end, people play games, not genres (although they choose by genre, I admit). And as the scene of action let it be the Anglo-Zulu war. Because the first game I remembered with the principle of “control elite troops against a weak but very numerous enemy” was Zulu Wars still on Spectrum.

Since I was looking for the simplest solutions, I decided not to emulate the three-dimensional world in 2D, but to use all the features of the engine to speed up development. In the end, Unity offers me a search for the path, and the calculation of collisions, and a bunch of all sorts of goodies, originally designed for 3D.

Having found a couple of free models with animation, I made dudes running around each other and launched it all on Huawei MediaPad X1 (average performance phablet lags behind modern tops, but not many times).



The result was generally pleased, the dudes were running, the animation was working. This is how it looked, the pink debugging line shows the key points of the path found.



But here I was overtaken by the first problems. It turned out that my test device is categorically unable to cope with the presence of more than 20 such units. With such a performance, mass battles could be forgotten. The profiler was not available to me, so I had to study the causes of the brakes by the method of elimination. In general, I came to the conclusion that the most problematic part is the models and animations themselves. From the pictures you can see that the details of this trial model are much higher than necessary. But even replacing it with a stick-stick-cucumber humanoid model, I could not achieve normal operation of more than 30 units. The conclusion that I made - or the troops should be much less, or have to go in 2D, which I did not want.

So this is not a war, but some kind of small battle. Where every unit counts and every "hero". Then I remembered the Seven Samurai. It fits almost perfectly - defenders can be counted on the fingers of one seven-fingered hand, the levels of the game are the days of the battle. In general, it could get quite atmospheric. Having tried to find something about rights, I was able to find only the fact that the films of Kurosawa were still not in the public domain. So just in case, I decided to make a samurai 6. The prototype was quite playable, but I could not cope with one problem - drawing animated humanoid models. Not that it was a completely unsolvable task, but after a week of digging, I realized that progress does not suit me. I understood this too slowly.





As you can see, two-dimensional houses are combined with three-dimensional models. Overall, it even worked without visible defects. Each samurai had a portrait - digging, allowing to give him orders. In particular, it was possible to order to go somewhere or retreat to the village (off the edge of the screen) for treatment. True, the gameplay itself was not thought out at all, because Most of the decisions were made on the basis of two questions - “Do I like this idea?” and “Can I do it,” and not at all “what is this for the players?”

I think this would be enough for an entry-level portfolio. On the one hand, it was already possible to play, on the other - the code was not so scary. But I was already dragged out, so I quit my boring job so that I could devote all the time to the game, and decided to go to publish.

It was morally difficult to refuse samurai, I liked this idea. It could be made beautiful and interesting. But for the first game of a novice developer on self-investing, this seemed a bit too much. Therefore, the samurai moved from a medieval Japanese village to ... Mars. And turned into Martians, fighting off the earthly invasion.

Unlike humanoids, the technique with the simplest animation almost caused no problems. Both with drawing, and with productivity. Therefore, a terrible battle broke out between the UFO and the rovers.



Just do not beat me for the yellow water on Mars. I know this is nonsense. But it is beautiful and dilutes the monotony of the desert. It's all earthlings ... hmm ... done.

I did not give up mechanics with six units and portraits, I liked it. Of course, she lost her original meaningfulness, but turned out to be quite comfortable and earned the right to life. The treatment behind the screen turned into a disassembly for resources, this added interactivity.

In the end, from the intention to make Tower Defense turned out ... almost a classic RTS. Only the barracks and the voice of "spawn more overlords" is not enough.

I started working on the “Martian version” from the beginning of January. By the end of January, the game engine was made 95 percent and there were a couple of levels. It would seem that almost everything is ready - draw new units, make levels. But this is not why I left work, right? It is necessary that it was not boring. Therefore, each unit and each level must add new chips to the game. Almost everything that came to mind turned into code. Fortunately, nothing completely insane came to my mind. As a result, the state of “almost ready” stretched for another 2 months of work with virtually no days off. But I think that in this case such an approach justified itself rather than not. If you write something that was not thought out initially, but only embody your fantasies, then if you please, embody them all. Or at least the majority. Otherwise, the result and the process can be sad. And if you're interested, then at least you will always enjoy the process. However, most of this time was taken, of course, not by new chips, but by drawing models and, seemingly endless, testing the balance of each level. The 3D artist and tester lacked terribly. This is partly why there are only 10 levels. I just didn’t master it anymore.

Step Two - Integration


Of course, my thoughts did not make any money on this game. But in order to consider the enterprise successful, I decided that I must return at least $ 124 in the cost of licenses. So I decided not to make the game completely free, but I released two versions - free with ads and paid without. This option seemed to me more trustworthy than the built-in purchase "disable ads". Recently, there has been so much framium divorced that almost all games with the description “free of charge, contains built-in purchases” are simply extortion. Freebier there and does not smell. I didn’t want to get into this company, so no in-app purchases.

But! How to be a player when he passed half the game, decided to buy it, and the new application makes him go all over again? In my opinion, such an attitude towards customers is unacceptable. And it would be fine if the free game were limited to a couple of levels, but it is fully functional. You can go even to the finals and only then buy a paid one. And the levels by the standards of the modern casual world are complex, I myself still cannot pass some guaranteed from the first time.

In order not to offend the buyers, I decided to find a way in which the free game could inform the player about the progress of the player. After a day of searching, I did not find anything, I realized that I would have to invent.

It would be possible to use access to the file system and write some kind of file to shared folders such as photos and music, but this is a completely ugly approach. Instead, I decided to try using Game Center and Play Games games. In both platforms, you can create groups of applications tied to the same set of tools. What you need - you pass the level, you get achivka. And all the related games know that you already have this achivka.

Things are easy - write. Google even tried and made a plug-in for Unity, allowing you to work with Play Games, and Game Center support has long been built into the engine itself. Delighted with this success, I download Google plugin, connect, write code and ... it does not work. I am writing in a slightly different way and ... again it does not work. Achivki open, but you can not get a list of open achivok at the start of the game. The method is, but does not work. I look at the implementation and see “not implemented yet” and the return is always an empty list. Bravo, google. Doesn't anyone need to get a list of open accounts? Is I the only one pervert?

Rummaging through the plug-in code and feeling like Dr. Nick at the operation, I found out that the plug-in still receives a list of achivok, but it is private.



The plugin gets it only when logged in to Play Games and does not update. Apparently, Google decided not to shine it out. Those. if I open a new one, it will not appear in the list until restarting. Well, let me, this list is completely arranged for me. After all, I need to check the achievements only at the start.

But with Game Center, there were no problems; in Unity, all that was needed was implemented and operational.

Total - victory. However, in order for someone to appreciate it, you need at least one person who buys what he has already been given to him for free. Taking into account the fact that advertising is only interstitial, only between levels and no more than once every 15 minutes, then there are hardly any such people. Well, so much the better that I tried for them.

Step Three - Publish


I began to prepare for publication in the second half of February. I bought the Google developer license in 2 minutes, ordered the Apple license (if I knew what this would end up with, I would start in December). But Microsoft did not buy a license. Here I must say that for testing I had the following devices - the already mentioned Huawei MediaPad X1, iPhone 4s, iPad2, iPad Mini and Lumia 1020. And of all, only Nokia turned out to be unsuitable for the game. In scenes with which the old iPhone 4s coped well, not quite the old Lumiya gave out 2-3 fps. This turned out to be an absolute surprise for me. A cursory search for “on these your Internet sites” reported that 3D performance tests even for top Lyumi show very poor results. Attempts to twist the quality of the drawing situation is not fundamentally corrected. Sorry, but had to abandon the release under Windows Phone.

So, Apple license. In general, over the past couple of months, I realized one thing - Apple, as a company, hates its developers. I mean not employees, but third-party software developers. I don’t know how it turns out, but each Apple employee is individually polite, friendly and very helpful. But as a company ... Maybe such an opinion will seem to someone too radical, it came together from a heap of trifles. To start writing something - buy a poppy, in order to test something that you wrote (even for training purposes) on your device you already bought - buy a $ 99 annual license. The developer support infrastructure consists of a cloud of integrated services, the connection between which is broken. Approval of the application takes 30 minutes of work, but you wait for it for 1.5 weeks. The hassle added the sudden (for me) rule of mandatory native support for ARM64 for all applications published after February 1, 2015. Imagine if Microsoft banned all developers from writing 32-bit applications. That would be fun.

I ordered the Apple developer license on February 20, and I received it on March 12 (compare with two minutes from Google). And it deserves a separate story.

After reading about the old practice of faxing pdf forms to the United States, horrified, imagining that the Amish had been captured by the Cupertino and do not allow anyone to use modern means of communication not approved by Grandpa Lincoln, I filled out a license order form on the developers website (apparently, the Amish have recently recently expelled together with faxes). $ 99, these credit cards, nothing foreshadowed trouble. Great, Apple told me, after processing your order will appear in the Apple Store.

And indeed, in a couple of days he appeared. With the price of 99 rubles and a message about the rejection of the payment, in which I was recommended to contact the bank.



Perhaps, if the bank was not VTB24, then this would be the end of my problems. But fate decided that small trials would probably not hurt me. He himself wanted to not be bored. Having traveled to VTB and received oath assurances from them that they did not reject anything and nothing from Apple and in general did not come from anyone, I decided to call the Russian support of the Apple Store. Not that I seriously hoped that they would help me, but there was at least a minimal chance. Unfortunately, the Russian Apple Store did not know anything about it, I did not see the order (Apple Store support does not see my order in the Apple Store - ha!), But the support employee really wanted to be useful and offered to help me navigate the site so that I could find feedback form with European developer support. In my opinion, very correct of him. However, this form I have long been opened. Recalling my miserable knowledge of English grammar, I wrote a letter about the following summary: “Look, you have 99 rubles there, this is very little. This is probably a mistake. And the payment does not go through, the bank says it did not reject. " In parallel, I noticed that in the profile on the developers site I have a name in Cyrillic, and a surname in Latin. In theory, this should change through Apple ID, but having changed there, I found that the integration does not work for them. I also wrote about this.

Surprisingly, the answer came on the same day from a friend named Stefano. I did not expect such a rapid reaction. He said that he had repaired the name for me, but everything should be fine with the payment, it is the bank that rejects. And that the specified price is also normal, because the price in different countries may differ, taxes, local rules and blah blah blah. And that order will hang now a week, for which I can deal with the bank. And if I do not have time for a week, I can send another order. Well, I think, 99 rubles is a great price. Well, to hell with this incompetent VTB, I'll try another bank in a week. But it might have been worth it to squeeze in VTB.

I did not have any other valid international cards, but the other day I just saw the information that you can almost instantly make a virtual Mastercard in Yandex.Money. I made a virtual card, put 150 rubles there, because Yandes.Money used the last time a couple of years ago and it was empty, and issued a new order for a license.

The result did not keep waiting - the same payment rejection. I wrote to Stefano so that he could double-check whether the payment system works for them or not. And he especially noted that 99 rubles is $ 1.5. Such a huge discount says an error. And where is one mistake, there is another. Stefano answered the next day. He checked everything and again rejects the bank. Oh well. Then I wrote in support of Yandex. Money. After waiting for a response week, I called them to quarrel. As a result, the answer came during the day that the payment was declined because it was $ 99, but I don’t have that much. That's the news.

Well, at least the situation has cleared up. After replenishing the wallet with the right amount, Apple did get my money. Sent in response to the message "We are unable to activate your Apple Developer Program membership. We’ve received your information And in parallel, ceasing to let me on the site by Apple ID. Only the most stubborn will receive a license. I decided to keep up with Stefano, and scolded him slightly for being misinformed from the very beginning, and $ 1.5 is an abnormal price, which I warned him about several times. And I also complained about the refusal of the login.

True, I did not expect that in response he would call me and begin to quickly explain something in English with a Spanish accent and with a connection as if with the planet Plyuk. He took me so by surprise that the only thing that I was able to answer with my shock with my Russian accent was that he sent me everything by mail. And in 10 minutes I received a letter with apologies and assurances that he repaired everything for me, activated everything, and gave information about an error in the store to the authorities. And Apple ID just broke all, my troubles have nothing to do with it, when they fix it, he doesn't know, but probably soon. Supervisor then wrote it to me too, explaining that now I should be fine, and if not, let me write to him. But I didn’t write, the license quest was completed, and the Apple ID was really repaired.

And then ... the creation of 108 screenshots (6 devices * 6 languages ​​* 3 screenshots) and anxious waiting for approval of the application for 11 days. Disturbing, because the project generated by Unity for Xcode gave me 5-6 warnings for an outdated API that Unity uses. And it is already out of date in iOS 7, and Unity is the most recent. If this caused problems with the review, it would take weeks to fix it, because I don’t know almost nothing about Objective C. But, fortunately, everything went well.

Step Four - work in game dev


And here it is still empty. For 3 months of adventures, problems with Apple, repairing 2 buggy unfinished Google plugins for Unity, in which I understood about as much as a monkey with glasses, lack of income and constant difficulties that threatened to put up a cross if not in the whole game, then a significant part of it or on the publication under one of the platforms, I was pretty pretty exhausted. Yes, and new knowledge had to swallow as much as in the last 3-4 years. Therefore, I leave on vacation to swim in the sea and look at the fish. And then find a job.

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


All Articles