“A” means “Astral.” Interview with Ivan Polyakov (Apus Software)
An excellent example of this phenomenon is the Belarusian company Apus Software and their series of computer card games, most of which contain the word Astral in their name. Starting with the old-fashioned Astral Tournament, which, if it were a human, could have already received a passport last year, and ending with the recently released Astral Heroes, in which the best of past games combined with the best of what was not in them, Apus Software regularly passes cards to those gamblers to whom elves and unicorns are nicer than a pocket pair and a caught minuscule.

In the distant two thousand zeroes, short nights at the “Tournament in Astral”, I could hardly imagine that I would ever begin to interview his creator. However, life is an amazing thing, and today my (metaphorical, of course) microphone has Ivan Polyakov himself, better known as Cooler.
Tell a little about yourself. How did you become interested in programming, and, as a result, came to what is now called the fashionable phrase “indie game development”?
Born in Minsk in 1980. When the USSR fell apart and the Iron Curtain fell, an interesting picture emerged: on the one hand, PCs became available on the market, on the other, commercial structures appeared that could afford them and had some kind of interest in informatization. My mother, who used to work as a programmer on “big” machines in one of the research institutes, at that time worked in a company that decided to purchase PC AT 286. In general, she was instructed to “master” this wonderful technique, and not at the workplace in office, and at home. As a result, I got the opportunity to get acquainted with the computer.
A few games quickly got tired, I wanted something more interesting: I got Turbo Pascal 5.0 installed and bought a book on it. So I became interested in programming. However, all the good things quickly end - the computer was taken away, but interest remained. I continued to gnaw on literature, and for practice I was looking for opportunities to work with someone at work. Computers were very rare among the people, the people who knew them were all the more so, but I was lucky: there were a few more guys in our class who were interested in programming. We communicated very intensively, shared books, arranged all kinds of experiments and exchanged knowledge.
Finally, at the age of 16 (I was then in the 10th grade at the Lyceum of BSU) I bought my own home computer, and I was able to engage in programming even more intensively. I tried to make different games “just for fun” - they never turned into something finished, it was just entertainment. Spent more time writing all kinds of libraries. In the 11th grade, I had the opportunity to write a course project in computer science, and then my friends and I, as fans of WarCraft II, decided to make a small RTS. They could not create a full-fledged game, it turned out to be something like a very limited demo, but it fit in as a term paper. The main thing after all - to properly arrange the text kursacha, let alone how it is working or not working code - minor matters :)
Estarh ( Alexey Stankevich, co-founder of Apus Software - Ed..) studied in the same class and then made his course project - a text-based game-MUD “Swamps of Chaos”, which, unlike ours, was playable! Making games and passing them as all kinds of educational projects turned out to be an interesting idea, so at BSU I continued to do this, but with Estarch, since we studied together. So we made a simple network space shooter “Star Madness”, which helped to get credit for computer networks, and at the same time a little bit to master DirectX (previous games worked in DOS).

At this time, at FIDO, I met with a steam cooker Anatoly Kovylin from Moscow, who told me that games can be sold on the Internet, that this can be not only study / entertainment, but also some kind of income. The Internet was then a rare curiosity, but we decided to give it a try. Anatoly "published" our Star Madness in the form of shareware, but the game did not go - not a single copy was sold in a year. However, the topic itself was interesting, and negative experience was also an experience. We started experimenting, making free games and publishing them on the Internet, watching what came of it, gaining experience. Slowly groped for an approach to development, there was something like a game engine. It's time to try yourself again in shareware.
How did you come up with the company name?
To publish games, you had to choose the name of the developer. At that time, one of the main sources of traffic was catalog sites (software / games), where games were shown in the form of lists, sorted by name or developer name. Therefore, if they started with the letter “A”, the game appeared in the list above. This factor did not give a significant advantage, but even a small advantage was worth using, especially since many did so. Therefore, we have a lot of game names with the letter “A”, and the company name also starts with “A”. Generally speaking, Apus is simply the Latin name for the constellation Bird of Paradise.
So, Apus Software is two people, you and Estarch?
Initially, we had a full-time artist Victor. He drew cards / portraits in Astral Tournament, creature cards in Astral Masters, several individual cards in the Spectrummancer. The battle screen in Astral Heroes, the map frame, the logo are also his work.
Who is art for you now?
In all games, several people made graphics, they are indicated in credits :) Portraits for Astral Masters were created by Alexander Pribylov, an artist who painted characters for DBA Online in Wargaming. He offered a screensaver for the game, but the style of the picture did not fit, so it was thoroughly modified by the artist-demoscene Lynx Vulgaris.
The interface graphics in Astral Masters and Spectromancer are the work of George Rukosuev, he also drew spells for AM. In his work, he very actively uses rendering: he models all sorts of elements, and then he combines the result of the render in the final picture. Portraits and most of the cards in the Spectromancer, as well as all the portraits in Astral Heroes, were painted by Ivan Dribas, a former Wargaming art director who worked there on the Massive Assault series. Most of the interface in Astral Heroes was made by Andrey Belyakov.

By the way, it was always interesting, where do you get music / sounds from? Sound design is the strength of all your games.
Recently, music and sounds have been made to us by DJ MoHaX, a talented person from the demoscene. His first track for Astral Heroes, in my opinion, is generally a masterpiece! One of the requirements was “non-intrusiveness”, to check it, I put the track in the loop and listened for half an hour - usually after that any melody is memorized in detail and played in the head already on the machine, and then I seemed to forget it instantly!
As far as I know, the last (although it is better to call it extreme) your game, Astral Heroes, is written in Pascal, like the previous ones. What determines the choice of language? Are there any difficulties due to the fact that Pascal is not a very popular language right now (lack of libraries, something like that)?
So historically, the base code is written in Pascal. The process and tools are understandable, familiar and well studied. It's always easier to start not from scratch, but from some base. The question has repeatedly been raised - should we switch to C ++? But each time it meant "more fuss and labor now, for the sake of possible benefits in the long term." Urgent problems always worried more than a hypothetical future, so they did not switch to C ++. Although the C ++ language itself is not a problem for me - I worked as a C / C ++ programmer for several years.
There are difficulties, of course. But most likely not with libraries - no one forbids using libraries written in other languages: we use zlib, libfreetype and others. Difficulties are mainly associated with cross-platform, as well as with libraries that are tightly tuned to their native language. In gamedev, C ++ is almost standard, so many libraries (for example, the Bullet physics engine) are not suitable for use from other languages. That is, it is possible to use them, of course - but it is very inconvenient and labor-intensive. In general, in the game client, I try not to use external libraries, unless there is an obvious need for this. And not because I like to reinvent the wheel (there is such a sin), but because when porting, say, to iOS, the question may arise - where to get this lib,
Is the server part also written in Pascal?
Yes. Part of the game’s website is written in Perl, but I gradually abandon it because of the slowness of the CGI principle, and writing in Perl anything other than CGI is inappropriate in my opinion. I really like Perl as a language for writing simple and short scripts that do not require debugging.
You are about to port Astral Heroes to Android and iOS. Probably, then you have to change the language?
Not necessary. There are several ways to develop mobile applications in Pascal. One option is to use Delphi XE and its proprietary FMX framework, which hides the details of interaction with platforms. The advantages of this approach: the minimum necessary knowledge about the platform APIs, a single code for all platforms. Cons: it is difficult to get to the opportunities that the platform provides, and the framework does not support. It is difficult to connect third-party libraries. Well, the need to buy a license for Delphi :)
Another option is to create native applications in pure pascal, using the platform APIs directly and the FPC (Free Pascal Compiler) compiler that supports a huge number of platforms, including IOS / Android. In the case of Android, the application is created in the form of the so-called native library that works through the NDK, which hosts the main application code. A minimal java wrapper is used only to connect and call this native library.
In the case of IOS, you can completely simplify your life by using a dialect of the language called Objective Pascal - it is binary compatible with Objective-C and allows you to use the IOS SDK directly. This is how I ported the Spectromancer to iOS. True, here Apple itself made developers a trick - it banned the distribution of modified (translated) headers from the IOS SDK in its license. This means that anyone who wants to write an application for iOS on pascal must either transfer the necessary readers from the iOS SDK from Objective-C to Pascal (for this, however, there is an automatic parser converter), or go to violate the license and download the ones already translated by then other files. However, there is a positive point: in contrast to C ++, the specifics of Objective-C are as follows.
You talked about the fact that it is always easier to start from some base. What is this base? How big is the common, so to speak, denominator of your games?
We use a common base code and a common engine that evolves along with the evolution of games. Our second engine was created in 2004 for the game Astral Masters, it was focused on the use of 3D-graphics and asynchronous event processing. The Spectromancer and Astral Towers games are made on it, but the engine has changed a lot during the work on these games. Some features were added, others were removed, a huge number of crutches appeared. In the end, we decided to do what Valve once did by creating a new branch of its engine for HL2. We also froze the current engine code (allowing only bug fixes), and for further development we created a new branch “Engine3”, which was subjected to rigorous refactoring and cleaning from crutches. Thus, the game Astral Heroes has already been made on the new engine, although the roots of its code stretch deep into the past.
If we talk about size, then the base code is about 700 KB of source, the engine is still megabytes. For comparison, the source of the game client is 1200K, the server is 400K.
As for the code of the game itself, it is mainly written from scratch, although, of course, ideas and algorithms are borrowed from previous projects. Pieces of code are sometimes borrowed, although I do not approve of the Copy & Paste method - this is one of the main sources of bugs.
What specific problems arise in the development of computer-based CCI?
CCI has a lot of text, and the text is dynamic in some places - all this creates difficulties for localization. In addition, we have the concept of "Usability Above All", which, in particular, dictates the use of a 2D interface. We have to take into account many restrictions that fetter the design of the interface, think about a bunch of different little things. For example: if you enlarge the map when you hover over the mouse, what will happen with the sharpness of the picture, what will happen with the sharpness of the text? How to avoid aliasing artifacts? How to achieve maximum clarity / readability in a static position? If we compare, say, Hearthstone with one of its clones - Star Crusade CCG, then it is noticeable that in the first one they worked much more carefully on such trifles, therefore there are much less visual artifacts there.

Another question: do you make "games for yourself" or "games for the player"? In other words, do you focus primarily on your own preferences, or are you trying to please the target audience?
We make games both for ourselves and for the player. On the one hand, it is very problematic to make a good product if you don’t like it yourself, if you don’t feel it. We made different games, but only KKI achieved success - it says something! On the other hand, it is unrealistic to succeed, focusing only on yourself, it is important to understand your audience.
I would also like to talk about your project like Spectromancer. Unlike your other games, you did this in collaboration with other people, in particular, the notorious Richard Garfield. (creator of the collectible card game Magic: the Gathering, by far the most famous in its genre. - approx. ed. ) How did it happen?
Garfield played in both Astral Tournament and Astral Masters. We met, chatted live - this is an interesting experience. He himself proposed cooperation - for us it was in all respects a tempting prospect.
Prior to that, you yourself were very good at creating games. Is it possible to say that the main profit from this cooperation for you was not Garfield’s help in game design, but rather the opportunity to "break through" to the western player?
I can’t say that this was the main goal: our games before were almost completely oriented towards a western audience - in the early 2000s this was standard practice in shareware, since there were only purchases there. The goal is rather to scale up: additional financing for development, additional marketing opportunities - all this was useful to the project! The game got into places where we would hardly be able to place it ourselves. One Steam is worth it, because there was no greenlight then, and there were less than a thousand games in Steam itself. Getting there was very cool. I must say that Richard made a useful contribution to the game mechanics. True, over time, this format began to slow down the development of the game more than to contribute to it.

I always wondered what the creators of the games play. Tell us what your favorite toys are.
I am a fan of the 3D FPS genre (Half Life, Portal, FEAR, Red Faction, NOLF, Prey, etc.), as well as the genre of racing simulators: for 4 years I was engaged in e-sports - in the Belarusian virtual Formula 1 championship. True, in recent years I almost do not play, except that I study some games from a professional point of view. The last game to which "stuck" - browser agar.io.
Estarch - an active MMO player, played in the lineup, WoW, Rift. Well, in MtG, of course (cardboard version).
How do you feel about collectible card games?
In general, I am not a fan of KKI: I still played Spectromance with pleasure, but collecting decks is not mine. Good thing we have a random deck mode! But Estarch is a great connoisseur of the genre: he spends a lot of time in his game, and is well versed in others. By the way, he came up with the Astral Tournament while serving in the army, where he ended up because of too much MtG passion while studying at the university :)
Finally, let's talk about your current project - Astral Heroes. What improvements have been made to it compared to previous games?
Well, firstly, this is the transition to the Free-to-Play model and a number of other measures in order to make the game capable of living and developing in the long term without harming itself. In addition, we were able to improve the learning curve.
What are the immediate and long-term plans for the development of Astral Heroes?
In the next version 1.1, we will eliminate a number of phenomena that interfere / repel newcomers, as well as add new maps to the game for the first time. Also in the near future we will release ports for Android and IOS. Further we plan to add new cards, new features (such as viewing replays), arrange official tournaments for the game.
How do you rate the current success rate of this project?
Complex issue. To a large extent, the expectations did not materialize, but one must understand that success depends not only on the game itself - it also depends on the situation on the market, on various external, often random factors. Let's see, there are prospects.
PS As you know, there is a great traditional tradition - to talk with copy-paste. However, in this case, this is not necessary: suddenly it so happened that Ivan Cooler2 became a full member of the habrosociety and would be happy to respond to your comments personally.