SengiGames team talked about the production of their sandbox game The Serpent Rogue: potion crafting system, use of shaders in Unity, interactive world & more.
Alexander Ponomarev, the founder:
My name is Alexander, I am 29. Like most members of SengiGames, I am from Ukraine. I have been doing Game Dev since school years. My first games were made in Blitz3D, a popular tool among indie developers and small teams in those years. I successfully released a few games, there were many kinds of projects: a city racing, a survival horror in a psychiatric hospital, story-driven pixel adventures.
I had a full-time job and at the same time, I had been working on my own projects when one of my clients saw me writing the code and asked what I was doing. I told him about my hobby and discovered that he was the owner of a local gaming studio. Soon, I was sitting in their office and learning the basics of a team-based approach to the large projects.
After gaining some experience, I went to Pinokl Games and released a few social media and mobile games. But after a while, I was overwhelmed by a desire to make a game for Steam. By a lucky coincidence, I was soon given a chance to work on my own idea. As a result, the world saw a game Party Hard and its recent sequel Party Hard 2.
Now I am working on a new project at my own studio SengiGames. Many people who I had met while working on Party Hard, joined me. Together, we are making something new, a project called The Serpent Rogue.
About The Serpent Rogue
The thing I really appreciate in games is a combination of immersive atmosphere and interesting mechanics. In the case of The Serpent Rogue, I wanted to make something unusual, to explore unfamiliar workflows. I had accumulated many ideas while working on Party Hard but I did not have enough time to implement them. The main focus of the project was on the freedom to develop your own way to win. I needed a new testing ground for experiments and finally, I got it. As it often happens, the idea came out of the blue. It was far from being perfect but I believed in it and kept polishing. Now the project is full of interesting and uncommon features. All in all, now I am developing something I really want to play.
Instead of just another arcade game, I wanted to make a system so deep it would allow finding something new each time you play it. I built a solid base which was then expanded by the entire team. A player is given an opportunity to become a real alchemist who invents recipes and experiments to get what he wants.
Game Development in Unity
The game is made in Unity. The main reason to opt for this engine was our experience. Besides, Unity is easy to access, easy to learn and easy to customize.
We try to use native Unity tools, gradually expanding them with custom utilities when it is needed for additional convenience and simplification of interactive things like level design.
The game world is wide and rich, a player can travel across different areas and biomes. In one corner of the world, you will be surrounded by snowy mountains, while on the opposite side of the map there are swamps.
Being a small team, we can’t afford the creation of an open seamless world. So, we took a decision that a player will be able to visit certain “handmade” locations and other maps will be generated according to the biome. Navigation like this has already been used in Fallout 2.
We focused the game on the most important aspects: an interaction with NPCs, potion crafting and exploring new ways to win.
Potion Crafting System
Andrusenko Serhii, Alexander Shkoropad, developers:
Our game is a mix of sandbox and roguelike genres. Our NPCs have a basic set of perks which form their behavior, desires, defects, and advantages from very simple abilities like walking, sleeping, eating to more advanced class skills.
A player will interact with NPCs mostly by using potions. It will be possible to craft a wide range of them to restore health points, make an NPC to go to a certain point or to attack mobs of a certain race or age, etc. The potions can also influence mobs’ mechanics. For example, a hen can lay eggs. Cool! But a special potion can replace the eggs with gold bars or coal. Here we go! A common hen becomes a gold mine or a machine producing coal. A player can also experiment on himself, drink a potion to become a rat, sneak into a hard-to-reach place and grab something valuable.
The potions will give a possibility to create custom scenarios of interaction with animals: we can tame them, send on missions, order them to collect resources, fight, etc. It makes our world non-linear and colorful. There are a lot of ways to achieve a goal.
Designing the crafting system, we wanted to make it easy to understand. We decided that there is no need to memorize the formulas. Each ingredient has a keyword, while a receipt is a phrase. For instance, to craft a harming potion we need three ingredients with tags: Remove, Vitality, 10.
Dmitry Kaidash, an artist:
The Serpent Rogue’s world has a significant impact on its inhabitants. Their appearance is influenced by a gloomy style of the Middle Ages and dark times. Generally, ideas for the concepts are coming from myths and scary tales of that time. The key features of a character are defined during the concept stage – it is important to emphasize the role and functions of the character visually. And even at that stage, it is important to understand that your character is limited by optimization requirements.
When the concept and other details are approved, it is time to create a low-poly base model. The main software we use is Blender. There can be a lot of objects in a scene, so each one must be optimized and have just a necessary number of polygons, bones, textures, etc. In order to save resources and simplify the textures, we often merge UV maps of some symmetrical elements.
The animation is made manually, in Blender. As for references, we mainly use videos with real people and animals. Observation of the world around us, knowledge of physics and anatomy, understanding the nature of things also benefits the believability.
Adding Interactive Elements into the Environment
Anna Karpova, a concept artist:
We really love that our players can interact with the environment in many ways. However, it is not the interactivity in the conventional sense, we emphasize only those details which help to catch the atmosphere and mood of the game.
Our goal is to give a player a sense of a living organic world. Just like an animal, the world sometimes can be calm and take a nap or get irritated, angry, unexpectedly dangerous.
Grass swinging in the wind, dancing flame of candles, spreading fog, falling leaves, sunrises and sunsets – all these minor details create a harmonious and pleasant atmosphere.
Then, all of a sudden comes a storm. Who knows what secrets it brings… A force of nature can easily break the balance. The wind is blowing, thunder clouds are gathering, flashes of lightning are striking. The aftermaths are really unpredictable. Mysterious creatures from deep dark forests and swamps create dramatic tension too.
Peace and calm, chaos and uncertainty working together, all these inseparable things create a comprehensive world. This game of contrasts lets the player subconsciously feel the environment, understand the main hero and become a part of this strange and crazy place.
Alexander Ponomarev, the founder:
As for the inventory, it will influence the gameplay too. For example, if there are rotten tomatoes in it, the character will soon be surrounded by flies. There are a lot of great ready-to-use inventories in Asset Store but we made ours from scratch. When it comes to such important systems, we try to use our own developments.
We used Screen Depth as a base for our shader to show the player an area where he can put or throw an item.
Then, we get mouse (or gamepad) coordinates in 3D and calculate Raycast from the player. If nothing stands on its way, the item can be placed. In other cases, we tell the player that he can’t place the item there.
Use of Shaders
Dmitry Kaidash, an artist:
All our shaders are made with Amplify Shader Editor. On the one hand, they are used for visual effects, on the other – they help us to create the atmosphere we want. They are not only for Cel Shading but also serve as an optimization tool for solving many visual tasks. For example, we have a low-poly carriage which consists of six separate meshes: a body, door, and four wheels. It has only one material with one texture and two masks. But thanks to the shader, it comes to life! The tilt is swinging in the wind, curtains look transparent.
One more inhabitant of the world is Medusa. To save resources, we decided to animate the snakes on her head by a shader instead of bones.
We had to pay special attention to the UV unwrap and textures preparation for the shader. Use of Vertex Offset could break the seams. So, it was necessary to prepare a seamless UV for the snakes. Later, all their UV maps were merged into one for the purposes of optimization.
If vertexes are animated via a shader, the outline of the shader won’t follow their movements correctly. The solution is to create one more mesh to use it as an outline. We used Solidify Modifier and flipped the normals. But since all parts of the character use the same material and UV set, the outline must use UVs without the texture to be able to repeat the movements of the snakes. That is why the vertexes were painted red. Then, inside the shader, their texture was replaced with black color. The outline for other parts of the characters was made with a shader via a mask.
Alexander Ponomarev, the founder:
Now we are going to focus on the creation of a chain reaction. A perk system we developed allows the creation of really interesting non-linear behavior patterns for NPCs. The active development began not so long ago, so the game still needs some basic elements like gamepad support or localization. We are also recording a folk vocal for soundtracks. Next step is to hold closed pre-alpha testing to collect feedback from our players. When the time comes, we will announce it on our Twitter, so stay tuned!