Sergey Noskov talked about setting up environments for his Unity game called 7th Sector.
Hi! My name is Sergey, I am an indie game developer from Russia. I have been doing arts like drawing and painting from a young age. I used to paint portraits, sometimes for money. Since 18 I began to delve into CG. I started with 3D modeling and rendering, tried my hand at animation and video production. I got into GameDev in 2011 after uploading on the Internet my first Unity project. It was a demo scene with a drowned city. It was noticed by a small game studio and they invited me to an interview.
That’s how I became a member of a mobile game developers team for the first time. However, I barely participated in the project itself, I had been spending all my time on R&D for a more ambitious product. Around the same time, I created my first indie project The Light. After a while, I left the company to start working at GDTeam, where I was responsible for a visual side of Metal War Online: locations, 3D models, shaders and VFX. After work, I came home and had been working on my first commercial game 35MM, which was released in 2016. In 2018 I left GD Team to start sailing alone and to finish game called 7th Sector.
7th Sector
The idea of 7th Sector popped up in my mind right after the release of 35MM, I was greatly inspired by the game Inside. I was keen to try something completely new, something that I have not done before. I came up to the idea of a puzzle platformer where we can interact with lots of tools and solve engineering challenges. All of that was decided to enwrap with an obscure cyberpunk world with neon signs, skyscrapers and a powerful corporation which permeates all areas of the life of the city called Novograd. As for visual style, I was going to make it close to Inside and classic movies like Blade Runner.
Some locations are really huge but mostly in the horizontal dimension. A player moves to the left or to the right, one location smoothly evolves into another visually and logically, there are very few dramatic changes, teleports, and so on. I tried to diversify the level design as much as possible, so players will get into residential buildings, flats, a train, underground, underwater and even on the roof of a huge skyscraper. I did not use any special plugins or procedural tools. All the levels were built manually. Often, I used modules – separate blocks of houses, walls with and without windows, chimneys, etc. The levels were divided on a hunch, each took about 3 days. First of all, I created base constructions and set up lighting. Other smaller stuff, like neon signs, smoke from chimneys, aero cars moving in the background took about 2-3 days.
The creation of seamless levels (long locations without splices and teleports) caused a lot of difficulties related to the CPU load. It was highly undesirable to keep in memory the whole level, so I had to divide it into sections to be able to upload them separately.
The main goal I set for myself was to create a volumetric environment with a distinct foreground, middle ground, and background. A separation like that creates a sense of depth and let you emphasize the things you want. Mainly, it was achieved with fog, lighting, and a Depth of Field effect to blur the background.
Post-Production
The fog creates an aerial perspective which morphs background into the fog and creates a background color. Blur helps to divide the scene into three layers (a foreground, middle ground, background). That task posed some difficulties: a standard Depth of Field effect didn’t give a proper result. It blurred semi-transparent objects (dust particles, electrical flashes, fire, etc.), so I had to create one more camera. A first camera (with blur shader in front of it) was filming a background. A second one was filming a foreground to keep it in focus. In the end, shots from both cameras were merged into a final image.
Another factor that helps to zone a space and emphasizes important accents is the lighting. Some light was baked into lightmaps but there were also a lot of real-time light sources with shadows.
To make the picture even prettier, I applied a few post-effects: Color Correction, Tonemapping, Bloom, Aberration, and slightly modified Noize.
I created a lot of shaders for various effects. For example, I had to improve LensFlare Shader by adding texture with dirty spots on the camera lenses. I also created a few types of shader with twinkling and glimpsing sprites for a newsticker.
For some locations, I prepared puddles with fake reflections. I rendered pictures, saved them into textures and mirrored. Also, additional shaders were made for raindrops, water surfaces, explosions, smoke, volumetric light rays.
Most often, the difficulties with shaders appeared when semi-transparent elements from the background overlayed the foreground. Being an amateur in shaders, I faced many challenges but managed to solve them through trial and error.
There also were a few shaders for neon signs of two types (sprites and texts). The sprites were used for images: posters, etc. All the titles and names were made from texts – it helped to apply the changes immediately and to cut down on the textures. Both of them used shaders with twinkling and distortion to make the signs glitch (the same effect was used in the main menu). I wanted to liven these elements up, make them blink and shake. One of the shaders of the neon signs uses a color mask and can play a few frames imitating a change of posters. I also often placed dust particles in front of the signs, it greatly improved the scene.
Challenges
As for challenges that an indie developer often faces, the main one is a necessity to learn many specializations. In general, game creation is a complex process that requires a lot of skills and knowledge of different areas. There are art creation, sound design, programming, shaders, animation, writing, video production, etc. Surely, it is very difficult to cover all these spheres alone, so, be adequate in evaluating your capabilities. As for me, I try to grow in all these spheres, each of them is extremely interesting and enjoyable. However, not everyone is equally talented, for example, I am not good at the composition of music. That is why I prefer to order music from outsources.
The second difficulty is planning. From my own experience, I have ascertained that developing a work plan is a very important step that people often neglect. As a result, you may face a lot of problems and reach deadlocks like unpredicted storylines without logical ends or poorly designed mechanics which conflict with each other. There are a lot of potential problems but all of them can be prevented with a good design document with a detailed description of the characters, plot, mechanics, gameplay elements, and so on.
One more key to success is a proper project structure. All your files (from the architecture to particular files, folders, and resources) must be in order, keep the desktop neat too. Chaos in the project is fraught with big problems in the future – it will be very hard to navigate and find necessary resources, edits, bugs, etc. Make the structure flexible in advance to be able to edit it and add something new whenever you want. If it sounds unclear, here is a good example: some time after 25MM had been released, I decided to add a DLC. But it turned out to be harder than I thought. The structure and code were so confusing that I had to make lots of quick’n’dirty temporary solutions to implement my idea. So, the task still remains unfinished.
A Windows version of the game is available on two platforms: Steam and Mail. Later, I am going to port it to Xbox, PS4, and Switch.
Sergey Noskov, Game Developer
Interview conducted by Daria Loginova