📜 ⬆️ ⬇️

I believe - I do not believe in indie development. Part 1

Probably, in the work of each programmer there comes a critical moment when the creative favorite work develops into a routine. Everyone copes with this moment in their own way. Someone changes the programming language, someone changes the work, and someone tries to make an independent product.

image

This moment did not pass by me, but it overtook me with its whole essence and ordered something to be done. I didn’t want to change my job, but it was possible to create something outside of this very work. Since at work you have to create extremely useful applications - I wanted to do something completely useless otherwise. In my understanding, this was supposed to be an entertainment application, which means a game. In the worst case, the game should go to the piggy bank portfolio, which is not prohibited by a non-disclosure agreement of commercial secrets (yes, you work a lot, but you can’t show anything, because you can't). In the best case, the game is pleased - it should bring at least some money.

From idea to implementation


First you need an idea and requirements for the final game. Of course, right away, I wanted to make a step-by-step 3D strategy with RPG elements of class AAA + with lasers and elves. But it is necessary to take into account the moment that fantasy is limited by possibilities, and therefore the requirements must be adjusted to these possibilities. There are no problems with programming and the experience of writing network applications is available, and this suggests that the game should be multiplayer. But since I own only art from Zen overlaying shadows in Photoshop, there should be a minimum of graphics in the game.
')
I had to seriously think about the genre of the future game. Shooting, strategy and race require beautiful graphics, it means that the development of one of these genres at some point will be resisted in the impossibility of implementation. But card games - meet all the requirements. But there is another problem - there are so many card games that you only need to go there with the original game. Of course, "poker" and "fool" disappear immediately. I had to compile a list of possible card games and conduct a survey among my acquaintances, which showed that many people know the game “I believe - I do not believe”. And what could not please - the sensible implementations of such a game were not on the market or in the social. networks!
Decision is made.

Having run through the cute card games to the giants, the following requirements were formulated for the appearance of the game:

Cards, tables, buttons and letters were created by independent forces, but with the girls something had to be done. And for this more thanks to the familiar artist - drew the required for thanks (Thank you, Anya!). True, closer to the publication had to clean up a little screaming eroticism, and gloss over too explicit places. (More in the next article).

Conclusion 1: You need to rely on your capabilities, then there will not come a moment when you need something, but you cannot get it (for example, 3D character model for MMORPGMEGA AAA +). When you manipulate opportunities and desires, you are not standing still.

Concept
The concept of the style of the game

Let's cake make


The first thing that is needed for a multiplayer game is the backend. In order to make everything as honest as possible, the server part must handle all possible actions of users, sift out the wrong combinations and all sorts of cheat moves. In other words - the logic should be on the server and not at the client.

Let us analyze the components of the server part:

In any game must be permanently stored data. This is the data that is stored for the client between sessions. These data include, for example, the number of player chips. In general, the stored data was not so much, so the storage and processing of such data took (a) MySQL.

Next - processing client actions and communication of several participants in one game. This is what the socket server does.

The most accessible language for the socket server was Java. And since it was up to writing a socket server, it was decided to make an API for the server. It turned out quite well. Surprisingly, for the full operation of the game, it took only 8 api. Those. writing a socket server was much easier than it seemed from the very beginning.

Conclusion 2: Do not be afraid of difficulties. Everything is much easier than it might seem at first glance.

Choose a platform for the client


The ability to use the API to work with a socket server has opened up virtually unlimited possibilities in choosing a client platform. I had to think over the choice of the platform. To embrace, in principle, you can have several platforms at once, but which one should you start with?

There was already a need to make up the pluses and minuses of various programming languages ​​(the pluses and minuses were chosen solely on the basis of capabilities, goals and my humble opinion):

ActionScript (Web)
Pros: Very easy to work with graphics. Pretty easy language. Cross platform The possibility of integration into social networks in order to attract additional audiences.
Minuses: No mobile devices, and Flash, according to my observations, people use less and less.

HTML + JavaScript (Web)
Pros: Very easy to work with graphics. Pretty easy language. Cross platform The possibility of integration into social networks in order to attract additional audiences.
Cons: Trouble (IMHO) with work on mobile devices of the average price category. The socket server must be tied to the standards of the protocol RFC 6455 (and therefore increase the threshold of entry for other programming languages)

Unity (a huge number of platforms)
Pros: Full cross-platform. The possibility of integration into social networks in order to attract additional audiences.
Minuses: Despite the fact that the game is planned completely in 2d format - you will have to get used to the fact that you are working with 3D. High threshold of entry.

Java (Android)
Pros: Pretty easy language. A large number of target devices.
Cons: Coverage of only one platform.

Swift (iOS)
Pros: "Prestigious platform." A large number of paying audience in comparison with other mobile platforms.
Minuses: Lack of devices on which to test development

A little reflection on the list - choose Android, as the most optimal in terms of capabilities and desires.

Conclusion 3: It is necessary to leave ways for maneuver. Who knows - if your project takes off - you can always supplement it with a new platform. If you do not add up with one platform - you can switch to another.

About client creation


The best option for writing any games for Android is to use OpenGL , which is quite a laborious process and requires some knowledge. Therefore, you should pay attention to the engines, which greatly facilitate the work. My choice fell on AndEngine , which eventually showed good results. The only thing that caused some problem is the correct positioning of the camera for different screen resolutions. I didn’t want to write the processing of coordinates for different formats, but to leave empty frames is all the same as making a mess in a flower bed. I had to tinker with the format of the camera that would allow to fill the entire screen with an image, while cutting off the excess and not stretching the contents. It turned out pretty good, and quite nice on all device formats. Describe the work with AndEngine in this article is not intended, since the topic has been repeatedly mentioned in Habré.

It remains only to adjust the image to write a little code. So, after a very short time, I managed to play my own work, to hear feedback on the work done with the testers.

Conclusion 4: The right combination of capabilities and desires leads to an early result.
image
Screenshot of the first, the real game party

Total:


Having reviewed the work done - it can be argued that the development of Indie games can cost you a pleasant time, with absolutely free financially (Creation, not publication). The purpose of the article is to achieve an understanding of how time-consuming the process of creating a game is and whether a programmer is able to create something playable only with programming skills. And as something a playable programmer can, then it’s worth believing in indie development. But in part. Because the results should bear fruit. It’s decided to transfer this hobby to the next article, since the creation of the game is only the tip of the iceberg. And only by trying to make a profit from the game, by the forces of one programmer - one can understand whether it is worth believing in indie development.

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


All Articles