Vladimir Vitovskii is a web-developer turned game developer, so we decided to speak to him about his latest project, Holy Shift! and some of the design choices he has made during development.
Introduce yourself, Vladimir:
I’m an indie developer in a team called ‘Pure Evil’. We are currently developing our first title ‘Holy Shift!’. It’s a fast-paced action game with lots of explosions and destruction. The other side is a meta game in which you must make difficult decisions. Previously everyone in our team worked in the same company where we were developing a web-service. So this is our first experience in game development.
Could you tell us how you decided to start a career in Games?
When I was at school, my father taught me some basic programming skills. At the time I thought: “If I can program why can’t make a great game?”. Some time ago I left my boring job with a good salary to realise my dream.
There’s a huge benefit to using Procedural Techniques in Games, could you tell us why you chose to pursue this idea?
Procedural Level Generation isn’t a tool which is only used to increase replayability. Nowadays it’s the way to make a competitive product. Small indie teams don’t have many resources to create unique content by hand. Big studios with hundreds of developers have the resources to release larger AAA games, so indies should find ways to move forward to avoid completely losing the market.
The Generator includes some beautiful looking assets, are these pre-made assets? As a programmer/designer, why would this help?
It’s hard to create a lot of content if you have only three people in the team. So all asset creation processes should be very effective. That’s why our game is low-poly. We don’t care about unwrapping 3D models and texturing. Many of the assets are purchased on Unity’s asset store and reworked to fit the game. The other hack is to change and reuse already created assets to create new entities.
Could you expand a bit more into your processes for developing and using the Generator?
We like developing projects using the ‘progressive JPEG’ method. Think about how images show in web-browsers when you have slow internet. A blurry image appears in the beginning, but at this point you already can distinguish outlines and basic shapes. As the browser downloads more image data, more detail appears. We use something similar. Firstly we made a super simple version of a generator. It generated only rocks, trees and grass. Then we started to refine that version. The main problem was the fact that in many cases the hero couldn’t pass from one island bridge to another. So we decided to introduce ‘roads’. Impassable objects can’t be placed on ‘road’. Also we didn’t like how the generator was arranging rocks relative to each other. To solve this problem we added the support of placing object patterns. After about ten iterations we got a result that satisfied us.
Did you use any particular software to make the Generator?
The main software we used was Unity. We created a custom plugin for Unity Editor to be able easily configure the generator. There are numerous objects, patterns, settings and parameters multiplied by different themes of levels. It was important to have such a tool so we did not lose time searching for something in chaos.
What were the main challenges you faced when building the Generator and how did you overcome them?
The main challenge was to make the generator work fast. Now it takes about 600 milliseconds to generate one island. If we turn off all optimisations it will take about a minute. To achieve such performance we reconsidered the algorithm of placing objects three times. The last version of the algorithm takes into account personal characteristics of objects and avoids doing unnecessary work.
Are there any tips you could share with new creators looking to do what you do successfully?
As creators we always see flaws and a room for improvements. We would advise to create a first version of the generator as soon as possible. Even if that version is the world’s worst generator and it won’t meet any requirements. While you will be working on that version you’ll understand how to do better. I’d also advise learning different algorithms as procedural generation is a knowledge-intensive topic.
To keep up to date with Vladimir’s work, you can follow him in Facebook at: https://www.facebook.com/vitkovskii
To follow Holy Shift’s development, you can visit the following links: