Some might say designing and building a game in four weeks is madness but faced with the challenge, we pulled up our socks, jumped straight in and came up with the brilliant NOAH!
As part of Corporation Pop’s ongoing Labs Project series, where team members are given the opportunity to design and build something of their very own, Caius, Liam and Marta picked up the gauntlet and came back with NOAH, a first person puzzler set in a futuristic world where memories are stolen by the evil Corporation in order to control the populace.
With time against us we worked in tight sprints. First job was to brainstorm ideas for the story, mechanics, and art style. We came up with a hexagon based gameplay with puzzles on each level and an environment and art style was both simple and striking.
We gave it a futuristic setting, which was dark, moody and mysterious, using lighting and post processing in Unity to create atmosphere. With no concept art and no client we improvised and used Pinterest as a mood board. Each level was made up of multiple rooms including a main hub with paths leading to other rooms, a tutorial, and an outside level.
Two of us focused on scripting, logic and shaders while the other made sure there was somewhere to play-test the code.
Using Probuilder to blockout would usually be a job in itself but when you’re tight with time you have to find ways to squeeze more in so as well as designing the player path and layout we started adding in scripts, as they became available, to make doors open and lifts move. Lo and behold, it turned out blockout is a great way to test ideas, identify issues and iterate super fast! All the simple geometry was therefore modeled and tested in Unity and on the job.
Assets, props and level building
We used a modular approach to creating assets because it gave us flexibility when it came to changing scenes or layouts and meant the whole team, rather than just the artist, could access them as they needed.
Blockouts helped us know what was needed when it came to the levels but it was still a big job for us. Having a library of modules to build the environments from helped massively though so it was easy to keep the look consistent.
We built room by room, focusing first on where player interaction would take place then building around it, adding walls, floors, lights, props, then rebaking the scene and tweaking settings. We built a number of prefab components like columns, lights, corridors and tunnels which we used in a number of different places across the game and used Unity’s brilliant progressive lightmapping which gave better, faster results on lower settings compared to Enlighten.
NOAH’S look heavily depended on post processing which we boxed off in Unity keeping a base concrete texture across all structural elements, and colour grading which was crucial to the outcome.
We kept settings simple to expedite the process and using Tron: Legacy as our muse we introduced blue hues with lots of bloom on brighter colours. Lighting too was kept simple and we used visual techniques to make the world feel bigger.
We really wanted a game without loading screens interrupting the transition between areas but this came with its own challenges.
We looked into introducing portals between areas but soon ditched this idea after some basic testing because of the time it would take to implement.
Luckily, the logic we used for the portal system could be used, with minor modifications, in a new solution using airlocks. This gave a seamless transition by tracking the player’s position in a corridor and using that data to describe their position in the world when the new area loaded.
Player Controller Customisations
We used Unity’s standard first person player assets as a base, stripping functions we didn’t need and adding in new ones needed for the game.
We wanted platforms to move in any direction without limiting player movement but the first person controller didn’t account for this so they would slide out from under the player or jitter depending on where the platform went. Players would also fall off some of the platforms so that needed a fix too.
After some jiggery pokery with velocities and frame calculations we managed to fix this and, after a few iterations, we found a timing that allowed for smooth movement and no plummeting players.
With every Unity project, we create tools or code snippets that aid workflow or help us get around issues that we come up against.
Our first was an autosave system for Unity Editor. By default, backups for loaded scenes are stored whenever the play button is pressed. These backups are a bit rubbish and prone to accidental deletion so we created a system that stored multiple backups at intervals set by the user. We stored them outside Unity’s asset folder so they could be accessed when Unity crashed.
Lightmap baking is the process of calculating lighting information within a scene and it can take ages, depending on the quality needed, putting your PC out of action for the duration. Lacking a built in function to run this at night while we were at home or down the pub, we decided to write our own. This was a simple window with a button for each scene which you select before sloping off for a beer after work.
We wanted to push the visual quality of NOAH as far as possible in the time allowed and we chose Amplify from the asset store to help us with the advanced shader work and effects as well as creating our own standard shader that could be used by our artist across all surfaces. Additionally we used Triplanar shading so the pulse would display on any surface regardless of the UVs or where it was in the world.
The result was an impressive pulse effect with radial properties which when coupled with the dark environment gave the impression of energy emitting from the player.
The results speak for themselves and show you how a bit of pressure brings out the best in a team. We delivered a visually impressive, engaging and playable game in incredibly tight time constraints.
Seriously though, look at it! It’s wicked!