
There Was Light
There Was Light is a 2D platformer where the mechanics are based around light. Darkness limits the information given to the player and light guides the player. Through the game, the player stumbles upon new mechanics and skills to help them navigate in the darkness. In turn, the levels also get harder and the player has to combine all skills and mechanics to make it through.
Project length: 2 weeks
Year: 2021
Team size: Solo Project
Engine: Unity
My roles: Everything
Design Pillars

Fluent movement
The character moves fluently through the world and is easy to control. Jumping should be natural and the player should feel like they have control.

Forgiving
The player is not punished for jumping a little bit too early or testing something out. The respawn point is never far away and happens instantly.

Dark but hopeful
Levels should be designed with guiding lights which will help the player navigate but also add a sense of hope. Maybe you can find a way to light up this dark world?
Character
The character is an unassuming blue rectangle. It moves fluently through the world and is animated with joyful little movements when jumping. The character emits a vague blue light, which helps the player during the first level, before they acquire the flashlight. The art style was chosen to let me put most of my effort into the gameplay and level design during the assignment.

Controls
At the start of the game the player can only walk and jump. Later they unlock a flashlight which can be turned on and rotated with the mouse. To give the player a sense of control the jump was designed to make the player fall down faster than they jump up, as to not make the jump feel floaty. The jump height was designed to work with the tiles and I set standard that I could later use in the level design.

Camera
The levels are made up of smaller rooms, where the player has to find a key in each room to unlock the door to the next room. As light is limited, the camera zooms out to a fixed position showing the whole room. This was done so that the player quickly can get a sense of the room and start to figure out how to solve it. Between the rooms, the camera zooms in and follows the player. This also provided a sense of scale in larger rooms.

Level Design
I approached the level design by sketching out puzzles. After that I put together a map for each level to get a sense for the progression.
-
The levels are made up of several smaller rooms.
-
The player must get the key in each room to unlock the door to the next room.
-
The rooms are designed to introduce and teach the player new mechanics.
-
The last few rooms of each level combines all previously learned skills to provide a challenging experience.
.png)
Metrics

Elevator Puzzle

Jump Tutorial

Platforming Challenge

Level 1
The first level serves to introduce the player to the movement and lack of light.

Level 2
The second level introduces the flashlight, and all rooms require the player to use the flashlight to navigate.

Flashlight
The flashlight reveals platforms hidden in the dark.
Technical Design
To make the jump feel more controllable and not as floaty I wrote this script for the player to have the gravity change on the way down.

The first iteration had multiple prefabs for different types of elevators. Some where meant to be activated by a button while some would be activated by the player stepping on them. To make level design easier I implemented a script where the different types of movements could be set in the Inspector in Unity.
The flashlight was coded to follow the mouse. In the first iteration the flashlight would follow the mouse perfectly, but this did not feel very natural so I added a speed variable and used Slerp to make it have a little bit of a delay.