We present a column by the creator of the game Mayak, Nikita Nikiforov. In it, he discusses his work on the graphics for the project—a visual novel about space and love.
Nikita Nikiforov
Hello! I'm Nikita, a solo-developer of the game Mayak from Moscow.
Mayak is a small narrative sci-fi game, a hybrid of an adventure and a visual novel. The story involves a young astronomer, his girlfriend Nina, their cat Isaac, a signal from another star, and quite a few things I can't reveal yet without spoilers.
But today, I want to talk about something other than the story.
I want to show how a simple static drawing gradually transforms into this:
And yes, it's all genuine 2D.
These aren't 2D sprites placed in a 3D space with a 3D camera.
Just plain 2D.
For someone experienced in game development, there might not be anything groundbreaking here.
But Mayak is my first game. I started working on it without programming experience, and for about the first year, I just tried everything:
- 3D;
- 2.5D;
- different engines;
- various lighting methods;
- different art styles.
Many times, I assembled something, looked at it, and thought: nahhhh.
Then at some point, the flat drawings began to move, light and sound emerged, parallax appeared—and everything suddenly came together.
One day, I looked at the scene and thought: yes, that's it!
First, Just Draw
Almost every scene begins as a simple illustration.
I draw it by hand. I enjoy oils, bold strokes, impressionism, manga, noir, dark colors, and very bright spots of light. For a while, I tried to make my drawing more “correct” and neat. I stressed over my imperfections for a long time. I read manga, experimented with paints, pen, ink, various digital brushes. Then... I thought about it and decided that my wonky style is my style.
Let it be so!
And after reaching this acceptance, drawing somehow became much easier.
The problem is, a finished illustration by itself is not suitable for a game—it's static.
So while drawing, I always think about what will need to be animated separately later:
- the hand in the foreground;
- the face in the midground;
- the pupils;
- the light source;
- the shadow source;
- some completely unnecessary bush in the distance that I drew for two hours for some reason.
And as a result, one drawing turns into a bunch of separate layers.
Then I piece it all back together in Godot.
But now as a game scene.
Parallax: The Cheapest Way to Suddenly Create Depth
The first thing that significantly changes the perception of the image is the parallax effect.
The layers start to move slightly relative to each other: the closer ones move more, the farther ones less.
Sometimes the movement is almost imperceptible, but the brain stops perceiving the scene as a single flat picture.
I like when this effect works quietly, not as a “LOOK, WE HAVE PARALLAX” attraction, but almost subconsciously.
With slight camera movement, you feel there's some distance between the foreground, the character, and the background.
Even though actually, there is no distance.
It's just several PNGs moving at different speeds.
It's a very convenient way to trick the brain.
Then Comes My Favorite Stage — Lighting
The light in the original drawing is already depicted.
There are shadows, reflections, illuminated surfaces.
But on top of that, I add real 2D light sources and dynamic shadows.
This turned out to be incredibly fun.
For example, the character walks in the dark with a chemical light stick.
As he passes by a tree, the light starts to slide across the trunk, branches cast a shadow, and the lighting changes with the character's position.
There’s even a layer on the tree that reacts especially sensitively to light.
Seems like a small thing. But for some reason, I really enjoy these tiny details.
For me, here happens a very pleasant conflict between painting and all sorts of IT stuff.
A Bit of Distortion
Next come the shaders.
I don't want them to become a separate visual effect.
The ideal case for me is when the player barely notices something is happening.
I use slight surface distortion, barely perceptible shaking, overlay, and movement of semi-transparent textures over the original drawing.
The shaders I use are technically quite simple. No black magic.
Just a few small effects combined: random pixel displacement sideways, slight color offset around each pixel, slight brightness flickering of the pixel. All of this at a speed of 3-4 frames per second.
And this creates that moment: the brain starts to perceive the still drawing as something alive.
One Effect Does Almost Nothing
This is probably the main takeaway I've had while working on the visual aspect.
There's no single technology that will suddenly turn static art into a game scene.
Parallax alone is just parallax. Light alone is just light.
Slight texture movements don't do much.
Animating a few details is also nothing special.
But when all of this works simultaneously, the effect becomes much greater than the sum of its parts.
And then sound is added to it.
Unfortunately, GIFs can't show sound, which is a pity.
We add room noise, or wind, or equipment hum. Then footsteps.
Some quiet mechanical sounds. And on top of all that, music! Mmm...
By the way, for about 15 years before game development, I wrote music, so the audio part is a separate pleasure for me. By the way, listen to Nicephorus!
And when the drawing moves, the light reacts, somewhere the ventilation hums, and music starts playing on top—it creates real magic for me.
A few days ago, you drew a PNG.
And now it feels like a real place or a living character.
Why Godot
The entire game is currently assembled in Godot.
I didn't arrive at it immediately. At first, I tried simpler engines, which seemed more friendly to someone who had never made games before.
But I quickly ran into limitations.
I wanted a lot of parallax effects. And lively dialogue bubbles. And dynamic lighting. And the ability to create complex scene transitions. And to write my own shaders. And for smooth camera movements. And to not have to rewrite the engine to create a save system.
In Godot, in this sense, I have almost complete freedom.
It's lightweight, launches quickly, and allows me to test my ideas very quickly.
This is especially important when working alone.
You can come up with some silly idea in the evening, assemble it in a couple of hours, confirm the idea is indeed silly, delete everything, and calmly move on.
That's progress too.
Gradually, I've developed quite a few of my small systems: scene management, parallaxes, transitions, handling lights, images, and shaders.
For dialogues, I use Dialogue Manager by Nathan Hoad—a wonderful plugin that saved me a tremendous amount of time.
But there’s no unique engineering magic under the hood of Mayak.
Almost everything was invented before me.
I simply take familiar elements and assemble them in a way that I like.
Now for the Downside
There is one fairly obvious drawback to this approach.
You need to draw. A lot.
Almost every scene in Mayak is unique. I don't construct levels from repeating tiles or rearrange the same set of objects. A new episode often means a new full-fledged illustration, which still needs to be split into layers and brought to life.
Sometimes in a week, I can create two or three scenes.
Though who am I kidding.
More likely one or two...
And some I can tinker with much longer.
At some point, I realized that the romantic idea of “let's draw each scene individually” is a trap I built for myself.
It's too late now. I'll have to keep drawing.
Wouldn't recommend it to anyone.
But this part of development is still my favorite. You take a completely still image. Start adding layer by layer: parallax, light, shadows, shaders, sound.
And at some point, it starts to breathe.
Probably the reason I started all this.
A Little About Mayak Itself
If after all the PNGs you're still interested in what this game is: Mayak is a linear narrative sci-fi story that takes about four hours.
It centers on a young astronomer, Nina, the cat Isaac, and a signal from another star:
- 3571
- 3559
- 3557
… (people started receiving numbers from space!)
All numbers are prime.
And they are decreasing.
Further details lead to spoilers, so I'll stop here.
There's already a free demo on Steam that takes about 30-40 minutes.
And I continue to work on the full game.
The script is already finished.
The smallest part remains.
To make everything else.
Visit my Telegram channel.













