
The story of how the creators of "Berserk Online" decided to transfer to the tanks and what came of it.
As you know, any self-respecting gaming company should make a game about tanks. We were no exception, and we - "Bytex".
')
The Tank Masters game is a variation on the theme of an old classic game for DOS “Alchemy”, but uses the setting of the history of the development of tank building. The game is very simple, the rules are elementary, so the list of elements and “recipes”, well-thought gameplay, as well as graphics and sound, are of primary importance in the game.
Idea
The general idea was formed very quickly, but the details were repeatedly changed during the pre-production stage. Originally planned one large branch, in which all large tank nations are mixed. This idea was quickly abandoned, realizing the need to display a huge number of elements in the interface, and settled on another option: one nation = one campaign in the game. As a result, “perelopat” many sketches of the interface, we received an estimate in terms of interface convenience - a maximum of 12 groups of 10 elements.
Variants of the main game screen:

Then followed the selection of elements that were destined to enter the game.
Since Baytex is a Russian gaming company, it was decided to start with the USSR tank building school as the closest and most familiar. Selection of the main groups, including tanks, was not difficult. Here immediately entered the car, familiar to many of the online game World of Tanks. Starting with the legendary “thirty-three” and Isov and ending with the unplayed prototypes A-20, A-44 and KV-13. Further, not less obvious "spare parts" for tanks were added: various elements of the undercarriage, engine-transmission compartment, tools, etc.




To increase the historical diversity were added eminent designers and famous events, one way or another connected with tank building:


Start
The most difficult and interesting, of course, was the process of making reactions. Some of the already planned elements had to be removed, replacing with others to build more logical links. Not without seemingly strange, but quite logical reactions.

When creating a list of reactions, we also did not forget about the addiction of the gameplay, the involvement of the player and the motivation to use prompts. The number of available reactions at the beginning of the game is constantly growing, so the player only needs to collect the first 10-15 elements to get carried away by the process. This continues until the creation of the first tank, which, according to the canons of World of Tanks, is the MS-1. Then the number of possible reactions gradually decreases, so that after the discovery of a new key element, increase again and reward the player with the possibility of rapid progress in the game for his efforts. When there are few unknown elements, it becomes very difficult to find acceptable combinations.
The list of items was originally made on a piece of paper in the box, which was very inconvenient to change and check. Therefore, a tool for visual editing of sets and reactions was implemented almost immediately.

Since for a simple task we took such a large combine as Grails, it is not hard to guess that the capabilities of the framework were used to a large extent. For the convenience of the game designer, you can edit the elements using AJAX:

We started fighting future errors back in the back end using validation mechanisms. Also, to avoid problems in the future, filters were written that help to find possible errors (broken pictures, forgotten descriptions); or a filter that displays items that do not belong to any groups.
Writing scripts to search for items that were, in principle, impossible to obtain, turned out to be useful. The presence of such elements is a very big mistake. Initial elements (which are also impossible to obtain from others) were marked with the “basic” flag.
Mobile app
The application is implemented in C # using Unity3D. Despite the presence of the 3D suffix, Unity is also well suited for developing two-dimensional games. The most important thing: if any functionality is missing in the Unity framework itself, you can find a plugin in the Unity Asset Store. Many of the plugins are free.
The choice of game architecture is one of the most important decisions that is made before the start of development. We studied many similar games and decided that the option of creating different screens in different scenes does not suit us. This would not allow for the required smoothness of switching between screens and would greatly complicate the addition of transitions when they change.
We implemented something similar to the scene, but by our own means. We have a screen manager, which has its own state machine (state machine), which can switch between screens. Each screen implements an interface with methods Hide, Show and has several events of the type: OnShow, OnHide. This gave us the opportunity to use Mecanim to create animations for transitions between screens and simplified working with them.
At the beginning of development we had a difficult choice: to use well-known libraries that simplify 2D development (for example, ngui), or take a chance and try to implement everything with the help of the Unity UI system that appeared. We chose the latter and almost did not regret it, although in the end the game had a mixture of sprite (used in the gameplay itself) and canvas (used in the menu, header, pop-up hints).
The application is very simple. There are 7 game screens, which correspond to 7 controllers - MonoBehaviour. On the one hand, they subscribe to events from invisible objects, for example, to a game store events. On the other hand, if necessary, create pop-up windows and dialogues, control sounds and music.
Few of the libraries used. We chose plug-ins according to the following characteristics:
â—Ź the plugin is developing, there is a community - Unity does not stand still, do not want to face the incompatibility problem of the old version of the plugin with the new Unity and the lack of desire of developers to upgrade the plugin;
● the plug-in is free, or there is a “free” (shareware) version for testing - to buy a plug-in only to understand that it does not fit, we were not satisfied;
â—Ź open source code - not a mandatory condition, but highly desirable. Sometimes you need to urgently fix a bug found, and spending a week waiting for edits from developers is not always possible.
For data storage, we use JSON, which is convenient to view with our eyes and easy to export from the reaction editor. To work with JSON inside Unity, our choice fell on JSONObject - it has everything you need and has a fairly high speed of work; the list with reaction history consisting of 2-3 thousand elements it automatically processes in less than one second.
Android Immersive Mode is a very small but very important plugin that increases the player’s immersion into the game; accordingly, the time spent in the game also increases. This is a mandatory plugin for Android, so I had to dig a little in the source code, add "#if UNITY_ANDROID": without them, the plugin prevented me from building a project for iOS. Dive mode is a mode in which your program is shown to the user on the full screen, while not showing any system panels, including the navigation bar.
Facebook can be used as a universal solution. Linking a player to a Facebook account allows you to publish achievements through the Graph API. In addition, social networks can be used to communicate with the player. In the case when a player has several devices (for example, a laptop with Windows, an Android tablet and an iOS phone), it is most convenient to do authorization through social networks. The FB team has greatly simplified the life of developers by releasing a plug-in for Unity. Authorization / sharing - everything works out of the box.
DOTween - all the animations inside the application are made using standard means of Unity, Mecanim and occasionally legacy animations, but it turned out to be easier to make elements moving in a spiral when carrying out reactions using third-party plug-ins. .
Soomla is a “showcase” that allows you to connect the program to several “markets” at once: Google Play Market, iTunes App Store, Amazon Appstore, Windows Phone Store. In our opinion, this is the only plugin that combines in itself the support of such a large number of stores, which has a good community, a fast-growing, and even free.
To translate the application used library
SmartLocalization . There are sources on githaba, a lot of positive reviews in the asset store. There is export / import to csv, it works with almost no comments. Initially, the translation of elements was carried out in the element editor, but then the export was written in haste to XML clear for SmartLocaliztion.
response.addHeader("Content-Type", "text/xml; charset=utf-8") def xml = new MarkupBuilder(response.writer) xml.root() { for (def o : objects) { data(["name": o.key, "xml:space": "preserve"]) { value(o.value) } } } response.writer.flush()
Next, the translations were imported into the Unity environment and edited them already in place. Thanks to this, it was possible to see if the translated text is somewhere out of scope, and how everything will look like in the end.
Art style
After the list of game elements became known, two of our artists began working on the graphic design.
First of all, several sketches of game windows were drawn to determine the appearance of the game. As a result, the main colors in the design of the game were light gray tones and khaki, so that the small text was easy to read, the illustrations on the light background were clearly visible, and the shades of green caused the player to associate with the tank theme.
Having chosen a suitable visual style, we began to draw the rest of the interface windows and work in parallel on the illustrations of the objects. It was decided to depict tanks and other objects in the style of comics in order to correspond to simple mechanics and the general mood of the game. For tonal transitions, strokes were used instead of gradients (we borrowed this technique from illustrations of old technical literature). So that the small details of the tank could be seen on the phone screen, we slightly increased them in the illustrations, the style chosen did not contradict this.




As soon as ready, the graphic content was transferred to programmers and miraculously appeared in the game. Day after day the number of elements in the game grew. Subsequently, each tank got camouflage, which diversified game graphics.
All the animation in the game is made on Unity, which suited both programmers and artists. The artists liked the convenience of working with the timeline window, similar to the Adobe AfterEffects or Photoshop CS6 window, to programmers - no need to look for ways to import animation into Unity.
Voice acting
At the beginning of development, we took the voice acting and music from our other project. The final version we ordered freelancer. When he provided the first versions of voice acting, it turned out that the sounds differ in duration. And worst of all, their duration was different from the sounds we used and, accordingly, the animation did not fit. At this stage, we issued an application to the freelancer with the provided set of sounds. Subsequently, all sounds were normalized in duration and volume, and several new voice ideas were proposed.
Readiness # 1 and release
In the end, by connecting all these parts, we got our game. Next, the assembled application went to testing to get through the fire and water. Testing was conducted on more than 30 different devices. As a result, we had to squeeze some pictures, because only the artist could notice the difference in the eye - it saved us about 40MB of RAM. Then we combined the pictures of the elements with sprite sheets, which made it possible to reduce the number of draw call calls from c ~ 430 to ~ 80. Added removal of objects located outside the scene, although they were not visible, each of them added an additional draw call. Now the game feels good on the iPhone 4, and runs on Android with 512MB of RAM.
Now that the vigilant and meticulous testers are happy with everything, all that remains is to upload the application to various trading platforms and wait for an exciting launch point.
Try to plunge into the wonderful era of the first half of the twentieth century, when tanks turned from huge monsters into real war heroes:
tankmasters.ru/?utm_source=w1And your questions, impressions and comments, as usual, are accepted below.