Hello everyone! My name’s Svetlana, and I a game developer from “Buka” company based in Russia. I would like to share with you the story of porting an old but very famous game.
How it all began
Many of those ever interested in gaming most certainly know about “the golden age” of adventure games which happened at 1990s. Some older people were even likely to catch out the best representatives of this genre such as King’s Quest, Space Quest, Myst, Broken Sword, Grim Fandango and Monkey Island.
In Russia, we had some legendary adventure games at that time, too. Among the most popular series there was one called "Pete and Vasily Ivanovich”, which, on a side note, was released under the “Buka”’s guidance. Humorous story of Red Army heroes sank deep into hearts of all people fascinated with good jokes and intricate puzzles.
As time passes by, older games do not grow worse, but they become more and more difficult to launch for playing.
That’s why we, as many other publishers, decided to transfer one of our best releases to modern devices. For our first shot we chose a classic adventure game “Pete and Vasily Ivanovich Save the Galaxy”.
A short review of the game
“Pete and Vasily Ivanovich Save the Galaxy” is a point-and-click animated humorous adventure game released in 1998. It tells the story of three Red Army heroes. The events take place in Backwoods village where Private Pete and Division Commander Vasily Ivanovich Chapaev set out on search of the lost Red Banner of their regiment. At this particular time aliens are trying to conquer the Earth.
The original game had pretty complicated controls customized to the use of a mouse. Players had a wide variety of available actions: they could “look”, “walk”, “use”, “take”, “talk” as well as use items from inventory (which looked like a suitcase) and perform separate actions with secondary character (Chapaev) assisting them. Quite close to the real life, isn’t it?
The main goal of creating this port was the full-feature adaptation of popular classic game to modern operating systems and wide-screen displays. Fans had been asking us to release the first games of “Pete and Vasily Ivanovich” series on Steam for years, and so, in summer 2015 we finally set to that work.
As it happens quite often with older games, the greater part of original “Pete and Vasily Ivanovich”’s source materials has vanished by the time we started working on a port. In this situation we had no other choice but to extract resources from the existing disc version. We ended up with full access to the following materials:
● all sounds = 996 wave PCM files
● all music = 70 wave PCM files
● all dialogues = 8479 wave PCM files
● all animations = 2338 .flc files with 640 x 480 px resolution
● all backgrounds = 115 .bmp files with 640 x 480 px resolution
In total we had 1.8GB of various content which equaled roughly 10 hours of gameplay. Unfortunately, we lacked the most important part of the game, namely its source code. So we had to rewrite it virtually from scratch.
We had to choose a tool to work with. Since we planned to make a multiplatform port, we were looking for an engine which would best suit most of our requirements. In the end we opted for Unity3D because of its popularity, comprehensive documentation and reliable support.
The game was originally based on a number of scripted scenes, so using Unity3D we started designing a special framework witch would speed our work up and allow us quick assembling of 2D point-and-click adventure games.
At the same time we were making game scene documentation and preparing materials for upcoming porting procedures. Original backgrounds and animations with 640 x 480 px resolution and 4:3 aspect ratio were manually fine-tuned by the artists to match 16:9 ratio.
A few words about the controls
We decided to add more actual and comfortable controls to our port, since the entry level of the original game was too high. Now the players can switch between different control schemes whenever they want through the options menu.
The simplified scheme has only one pointer variant which highlights active objects for interaction within playable scenes. This way the player can see at one all objects hidden on a certain location.
Pressing an object the player will see only actions which can be applied to it. If an inventory holds a certain item (say, the key), pressing the lock the player will see the key he has in the list of available actions. This will remove the necessity of opening the inventory too often - now the player can do it only to interact with the items themselves.
Besides, we added visual markers at places where the passage between the scenes is possible and also took charge of the situations where the player may get lost. The simplified control scheme adds Hints element to the Suitcase, which gives players tips on where to go next.
A detailed description of the framework
Every playable scene of our animated 2D adventure game consists of the following components:
● Scene general info:
○ Background sound
○ Background music
○ Background image
○ Walking zone. The walking pattern of the main character within each scene utilizes several collider areas:
■ Main collider area which sets boundaries of main character’s walking within a scene.
■ Objects bypass collider areas used in cases there are objects within the main collider area which the main character has to bypass.
● Scale: we set scale points within the scene’s limits. Each of these has its own weight (percentage of main character’s scale) based on which the character’s scale is calculated.
○ Each object within a given scene should react to the set of certain events, namely:
■ Giving (when we use an inventory item on an object)
■ Chapaev’s actions
■ Reaction to certain inventory items.
○ A locator containing coordinates of interaction with the object. Example: to move to another scene the characters must reach the passage coordinate.
○ An animated object including 1 to N animation patterns. Basic animation parameters include:
■ The number of frames per second
■ A possibility of skipping (made specifically for the long cutscenes which the players may want to skip)
■ Necessity of looping the animation pattern (examples: permanently flowing river, characters during the dialogue)
■ Sprites which build up an animation
■ An audio file corresponding to this animation pattern and played together with it. If an animation pattern is accompanied by an audio file, the former is stretched to fit the latter.
○ The order of objects displaying. All objects within a scene must be sorted by their distance from viewer. The farthest ones are on the background and the closest are on the foreground. For objects situated at the center of the scene, which should be sorted depending on the main character's location, a lower coordinate is used.
Alongside with the graphic content, each scene also includes a functional component representing the whole scene as a XAML document. The latter utilizes a simple script language which we created ourselves. Each document has a description of all objects and actions that can be done with them within the scene.
In the end we got “renewed” version of the game which was in fact created from scratch using a new engine together with original graphics and sound. We also made a special video showing the complete assembling procedure for a certain playable scene.
Probably, someone will take our example in creating their own 2D adventure game. And of course I will be glad to answer all of your questions!