The end of the first part of the story , revealing a briefly mentioned episode in the Finnish book "Finnish Video Games: History and Catalog" .
In this part, I describe organizational and technical issues and draw some conclusions about the organization of the project and the reasons why it was successful.
So, having finished a short Swedish project and having rested for some time, I got a job in a company producing content under the trademark “INFON” (yes, this is the same one - “INFON your phone”). INFON also had plans for the production of mobile games in 2001, but this market was still quite foggy and lacked the necessary quantitative base of devices, in the office I saw only the Nokia 9110 phone suitable for game development, but after playing with it we decided to postpone this matter (I I heard that later this “brick” was presented to some governor). I was put into applets for the company's online services, published under the Logoton brand name, which allow users to prepare graphic and audio content, and then send it to their phones via SMS. In general, I spent almost a year doing this.
Somewhere in March 2002 the story began about which Mikko Honkakorpi briefly told in his interview. As far as I remember, Artyom Golubchin, a manager from the Finnish-Russian recruiting company MPS-Russia (who worked for the Finnish market), initially came to me and offered to be interviewed for the subject of work. They decided to develop the business and move into the category of outsourcing development, opening the so-called “competence centers” (as they called their business model). The main advantage of the “centers” was the simplicity of personnel management on the part of the employing company, namely, the ease of closing and dismissal, since in Finland there are very great difficulties and improper dismissal can cause the company to go bankrupt.
One of the companies that wanted to place their “competence center” was the Finnish company Akumiitti Oy. At that time, a well-known provider of solutions for organizing mobile services. The first interview was without the presence of a representative of the Finnish company. If I'm not mistaken, the first time I was interviewed by Artem Golubchin and two Finns. One of the Finns was a Viking-like Timo Multamaki (now a famous Finnish board game designer) and some other Finn whose name I no longer remember. I only remembered that they asked what kind of game I like, to which I replied that "Operation Flashpoint." Then there was an interview with psychologists, and only once in a third was there an interview with Mikko Honkakorpi. In parallel, the Finns contacted Sergey Kuligin and we were invited to discuss the project.
It turned out that one of the major telecommunication companies was planning to start selling the new budget Siemens M50 phone in one of the countries of Eastern Europe and since the phone had onboard J2ME support on board, the customer wanted to receive a package of 20 games from Akumiitti along with mobile services. The main difficulty was that the deadline was scheduled for June 1, and the yard was already the end of March and there was less than two months left for everything about everything. Based on his rich gaming experience, Sergei Kuligin rejected the offer of cooperation, citing that making so many games in such a period is a gamble, but I was less experienced and continued negotiations.
I was asked to develop scenarios for 20 mobile games and show them at the next meeting, which was to take place in a few days. In the evenings during these days I "shoveled" a bunch of old games from my archives from BK-0010, making a compilation of suitable scripts. Games included arcade, gambling and logic. Having met a few days later with Mikko and Timo, I presented them with the scripts. Mikko said that the scripts suit them and with me they and Timo shook hands, marking the conclusion of a deal. Well, I signed up to create a team and release 20 mobile games in my scenarios with a “deadline” on June 1, 2002.
In the phase of team building, the project managed to interest three more people:
- Alexander Vasiliev , an experienced Java developer with the skills to solve unsolved problems, I worked with him in the German company Concept Software GmbH.
- Evgeny Mikhailov , who recently quit his military service. He was assigned the role of a QA engineer, he also had experience in developing for domestic computer platforms.
- Sergey Oleinik , one of the best Russian artists in the field of pixel art, who was hired at part-time as an designer-outsourcer, as he had the main employment in the form of work at INFON (a few years later, Sergey will get to the director's top positions in INFON).
Of all the team members, only I and Sergey Oleinik had direct experience with mobile devices. The company allocated us a room in their office building on Bolshaya Morskaya Street, next to the House of Composers. The necessary equipment was delivered in the form of computers and office furniture. All this was not new and bore obvious signs of "beushnost". Computers are “branded” and, if I am not mistaken, COMPAQ production, with preinstalled Windows XP, which was new at that time, which few of us at that time encountered (we preferred Windows 98). All this “branding” and the specificity of “hardware” did not allow us to rearrange the OS, which provided additional risks in a busy project, we could not do anything about it.
The next phase was design and work planning. Based on the “deadline”, I calculated that the average time for one game was about 2.5 days (it’s clear that there was no need to talk about weekends and holidays with such a busy schedule). To develop games with this according to the standard generally accepted methodology - “on, you, programmer, task and do me well” was unrealistic and since I remembered Adam Smith’s precepts about increasing productivity with a kind of “conveyor”, I focused on the “conveyor” with minimal task switching. A clear network schedule was compiled with the calculation of the time and order of work to maximize the parallelization of work.
The roles were distributed in this order:
- Alexander Vasiliev was busy developing platform-dependent modules for displaying the game space, and he also made several game models.
- Evgeny Mikhailov was busy testing finished products. His skills in solving puzzles while testing puzzles helped a lot. (In the implementation of the next game package, he was also involved in writing game models)
- Sergey Oleinik was busy only in the production of graphic content.
- I was involved in communication with the customer, the development of game models and post-production with the preparation of releases. I also had the role of art director and rendering of some game elements (thanks to BK-0010 and ZX-Spectrum who gave me these skills).
We didn’t have a real physical device at the start of the project (as far as I remember, it was brought by the Finns somewhere in two weeks) and we used emulators from Siemens (emulators for SL-45 and M50). As the final build system, we used the Sun Java Wireless Toolkit . There were no obfuscators at that time, we also didn’t have a version control system (we worked on a common file server system), automation was minimal.
Since the target device had very severe limitations on performance and memory, it was decided to minimize the load on the "garbage collector" by creating game objects when the game starts and reusing them during the application, i.e. at the start, we immediately created everything we needed and it lived until the end of the application. Graphics were stored in the form of PNG files, and due to the lack of time, we made minimal automation of their packaging (by removing redundant and duplicate information) and designed this as a separate utility that glues graphic resources together. Text resources were also packed and stored separately, a special utility was responsible for this. They decided to exclude sound design due to the poverty of the device’s capabilities, lack of time and saving memory. Each game was supposed to be represented by a JAR archive of 30-40 kilobytes in size.
Since some games required floating-point calculations, but CLDC 1.0 (which was on the target device) did not support either float or double, we, like on old computers, got out by transferring all such calculations to a “fixed point” (8 bits were allocated to int to the fractional part), trigonometric functions were implemented through tables and a small library was implemented for this type of data. In order not to get confused in the data types, since everything was int, we made a special notation, where additional data went in the variable name with a prefix, for example, i8_width denoted a value with a fixed point of 8 bits (I then couldn’t get away from using this notation )
Using my previous developments, a game framework was created. The framework consisted of several interfaces and auxiliary classes and described a standard abstract model of a mobile game, which would cover all genres from the planned package of games with the ability to load-save the game process.
Each game was developed according to the Model-View-Controller pattern, this made it possible to isolate the modules being developed and not to “hang” during the development process at any stage by preparing the modules in batches.
- StrategicBlock described the Model and contained everything related to the implementation of the game model and the interaction of components contained in this class.
- PlayerBlock was responsible for the Controller , it was a universal interface that returns a record of the player’s progress or AI, this allowed automatic demo games to be shown to the user.
- GameStateRecord was the most important and described the internal state of the game world. This object was also transferred to the platform-dependent part of the View, where a game field was drawn based on its state.
When the preparatory phases were completed, they began production work. The first game released, if I’m not mistaken, was the game “Carting” (car racing), then its game model was reused with minor changes for the game “Downhill race” (ski slope). In the development process, all the games produced had their code names, and the finished product was already called by the name sent by Mikko. Some names of the games were rather strange (for example, the karate game was called “Chop Chop”), but if you remember that the Swedes had to get rid of the name Battleships at some point, then there was a sound grain.
The work went smoothly enough and I don’t remember serious organizational and technical problems. As usual, the real device showed that emulation does not always reflect the real picture of things, but there weren’t any critical moments requiring a total redo. With the “unfamiliar” Windows XP there was a “funny” case when we arrived at work in the morning and unexpectedly saw for ourselves that all computers changed their password and we didn’t have to enter the system. At the same time, computers were configured so that we did not have the opportunity to set new passwords, apparently, we forgot to reset some security settings. About half a working day was spent on fuss with this matter and it all ended with a total hacking of systems with a change in system passwords.
Thank God, no one was ill during the period of work and some force majeure circumstances did not happen, since we did not have any reserve time for them. Mikko personally visited us infrequently, mostly with him correspondence by email. It happened that he could come and I only found out about it after the fact. About a month and a half after the start of work, he photographed the three of us at the workplace for the Akumiitti internal newsletter.
Not without changes in work plans affecting the schedule. One of the game scenarios was on the theme of September 11 and the player was asked to protect the twin towers from kamikaze aircraft flying on them. At first, this scenario was approved by the Finns and Sergey Oleinik drew an excellent screen saver (others he didn’t know how to draw) even containing a miniature portrait of Osama bin Laden, but somewhere in the second half of the production work, I received a message from Mikko that I would have to refuse this game , since it’s a very “muddy topic” and nobody wants to rake probable problems with the spiritual world of terrorists and their sympathizers, who may incorrectly evaluate the game. So this script was rejected and the game was quickly replaced by another, which required an additional couple of days.
Ultimately, all 20 games were made on time + 2 days due to changes on the part of the customer. The package was fully tested and shipped first by Akumiitti, and then by them to their customer (a large mobile company). The package consisted of the following games:
- AMAZING MAZE (puzzle, maze) inspired by the famous game Soko-Ban
- BALLOON PARK (arcade) inspired D-Day game
- BLACK JACK (gaming) is just a game in 21
- CARTING (arcade) inspired Soviet slot machine
- CHOP CHOP (fighting game) inspired by the game KARATE-DO
- COSMIC STORM (arcade) inspired game Asteroids
- DANGER ZONE (arcade) inspired game LONG RAID
- DOWNHILL RACE (arcade)
- LEAP OF FAITH (arcade) inspired by the game once seen on PC
- OFFROAD (arcade) inspired rally game
- PACK RACE (arcade) is vaguely reminiscent of Pac Man
- PING-PONG (sport) inspired game TENNIS
- PITMAN (arcade) is vaguely reminiscent of the game Boulder dash
- PUZZLE (puzzle) made on the basis of the puzzle 15
- RACKET BALL (arcade) inspired game Arkanoid
- SEA BATTLE (arcade) script for the good old naval battle
- SHIP DUEL (arcade) inspired game Worms
- STAR GUN (arcade) inspired by the seen Star base game
- TREASURE HUNT (arcade, maze) inspired treasure game
- VIPER (arcade, maze) alteration of the game Snake
Against this background, the management of TekLabs (the so-called business unit of MPS-Russia) and Akumiitti decided to mark this matter through a one-day visit by the management and team of the Scandinavia suburban holiday home with a gala dinner and a sauna. After a while, the “top” from Akumiitti Jurki Matikainen also visited us and discussed the development of the mobile direction. At the rally, I described what resources are required to organize the production of mobile games on an industrial scale, but I did not meet much understanding (this was not a priority for the Finns).
Mikko quit after some time and Eero Pöyry (currently Rovio's Development Director) became our curator from the parent company. He kept us informed about shipments of the published first game package. He received information that more than 1,200 mobile applications were shipped to the first 1000 Siemens M50 mobile phones sold by their customer, which showed the real interest of users in J2ME content. I received an email shipping chart for games and it fulfilled the heuristic rule expressed by Sergey Kuligin to me - “if you want the game to be guaranteed to be sold - do the race”, the game “Carting” was the absolute leader in shipping and took more than a quarter of the chart.
I think you can stop here, because in my opinion the details and results of the project are disclosed in sufficient detail.
Against the background of all the above, I would like to formulate a number of reasons that, in my opinion, led to the success of the project:
- It was possible to quickly find and interest sensible personnel capable of doing the job.
- The team was created from scratch, if there was an attempt to connect an existing team and dilute it with new members, lapping and disassembling with the hierarchy would take so much time that it would almost certainly put the project on the brink of death.
- An active "lead" was found (albeit practically without knowledge of English), who took responsibility and was not experienced enough to understand that "this is a gamble."
- The project was thought out at the start, planning and distribution of roles was carried out. (note auth. - In fact, this is a very rare step in projects, despite the fact that everyone declares it, especially in projects where “deadlines are on.” The usual development cycle goes through the system - “think too late, do it!” )
- Akumiitti representatives and TekLabs management did not try to interfere in the production processes, respecting the boundaries and interacting only within their business role, providing the team leadership with all the necessary “leverage”.
- In general, the process did not use something radically unfamiliar to the participants.
Of the wrong steps that I would like to note were:
- Production equipment with unfamiliar basic software, with stringent time requirements, was an unnecessary risk.
- Insufficient analysis of game scenarios by the customer, which led to the replacement of one of the games.
- Too busy work schedule leading to burnout.
Additional phase, Russian
Against the background of steps in the field of mobile games by Western partners, one cannot but tell about the steps I know of Russian players in this area. As indicated above, before the project, I worked at INFON and she also did not want to stay away from developing J2ME games. In general, INFON was very similar to Akumiitti in business, with a small difference - what the Finns laid for 10 years, they did in INFON for half a year or a year.
In July 2002, the owner of INFON asked to make a mobile game on the topic of “duck hunting”, as he was going to hunt with one of the top managers of NOKIA. It was necessary to make a game for the new (at that time) Nokia 3410. The problem was successfully solved, we developed a script and made a pretty good implementation. I remember how we discussed with Sergey Oleinik the drawing of ducks and he stood for realism, and I for the "Disney approach", in general I won the argument. Unfortunately, the “director's hunt” broke and the customer presented the game at one of the western thematic conferences. He returned back with burning eyes and the words - “When I showed them this, they began to look at me in a completely different way! Just for the sake of it was already worth doing! ".
INFON ordered another snowboard game for shipments at an event in Moscow (as I understand it was the Nokia Totally Board, held in September 2002). Arcade Snowboard was successfully designed and implemented for NOKIA 3410 phones, I ordered music for it from Sergey Boyarsky. By order of INFON, Penalty and Drive OFF were also made. Later, all these games were adapted for a wider range of phones.
Once, when I opened one of the then popular Russian magazines on mobile content (unfortunately I forgot the name), I saw screenshots from Fowling and Snowboard with the note that “INFON games have opened the era of mobile games in Russia.”
Oddly enough, but the echo of those mobile projects still sounds, although not on mobile platforms.
Somewhere near the end of summer 2002, to automate the assembly for different mobile platforms, a version of the preprocessor for the Java language was made. I think if this was not the very first Java preprocessor (the Antenna preprocessor appeared in the same year), then at least it was the most powerful, since it was two-pass and even allowed to store data in XML files. This project is still alive as OSS and is used for example when building the JDBC driver using the Postgres command . I was even a little surprised to find this preprocessor in different Linux repositories designated as the libcomment-preprocessor-java package.