Engine: Unity Language: C#
Duration: 7 weeks Team size: 10
Nominated for Best Narrative in Swedish Game Awards 2019
My Role: Gameplay Programming, Audio- & Music Design
I started with prototyping the camera system and worked closely with the 3D artists to finalize the technical execution to get the “painting look”. I built the system for removing smudges and triggering environmental events, as well as some of the actual events. I built a custom sound manager system, along with creating all the sounds and music in the game and menus. In addition I built a custom platform script that is used in every level. Apart from that I was also the scrum master.
My thoughts about this project
WHat I Learnt
Overall it was a great learning experience. Being the scrum master gave me more insight into the other disciplines and a good perspective of how much time things take vs how much you think it’s going to take. Working with the camera system furthered my understanding of how cameras work in engines, their variables and how they are used. I also got a better understanding of how shaders and textures work since I was working so close with the 3D artists.
Reflections
I realize that I tend to put my heart and soul into my work, which makes me push myself to work hard and always do my best. But I know now that I need to plan better and not take on too much even if it’s fun, because I was very tired after this project. Needless to say, I am really happy with how it turned out.
The Camera- & Level System
The technical execution of this system is complex compared to the functionality. We had a very specific idea that required us to stretch the possibilities of the engine. I worked closely with the 3D artists to find the solution that matched our vision.
The camera follows the character both vertically and horizontally with a smooth lerp, including when the player moves on to the next painting (level). It also zooms out when a painting is completed to show the player its final state.
Painting Camera & Frame
Every level has a camera positioned to see the whole level from a side view. Each camera projects their view onto a Target Texture. That texture is then placed on a plane as a Render Texture and the plane is placed inside a frame – like a canvas of a painting.
Player Camera & Player
Level Areas
To make sure the script of the follow player camera uses the right painting camera and frame(canvas plane) in the calculations, I worked with level areas. This was also used for the audio, making sure the right sounds are actively playing.
Sounds & Sound System
Each painting contains a part of the story with their unique sounds. Since this game is very focused on narrative, I wanted to help convey the story and emphasize the feelings through sounds and music.
The sound system also uses the Level Areas, to fade in and out the painting’s sound channels when entering and exiting an area.
This manager contains information about all audio channels initial output volume, to make sure the audio area can set the correct value when the player enters and exits the level area.
Remove smudge & Environmental events system
When you remove the smudge, you uncover parts of the story. The idea is that you make the painting “come alive” and relive the memories of each painting by doing so. A lot of the events are enabling sounds, which are part of the narrative.
To give the level designers the ability to add or remove events themselves, I chose to use Unitys event system.