Platformer GDD
“A Dreamer’s Journey” is a 2D platforming game for PC / console set in an oniric world where the main character (A Dreamer) heart rate is controlled by every action performed: being idle for too much time or performing too many actions may result in defeat. Will our hero climb to the top of the castle and escape or will they be trapped in the realm of dreams forever?
Character
A kid trapped in the oniric world who can’t wake up.
A silent character who will be an avatar for the player.
They radiate a white aura and wear an orange silk scarf that contrasts with the mainly green and blue environment, leaving an orange trail behind, always easy to spot on screen. The scarf was a gift from their grandparents for a child prone to catching colds quickly.
When their heart rate is too low, the aura slowly fades and they fall asleep, resetting the checkpoint. When the heart rate is too high, the aura glows too strong and some red, alert lights appear, making them collapse and resetting the checkpoint.
The animations are child-like and since they won’t speak, animations need to convey lots of emotion.
Character references
The proportions, colours and mood of Sky: Children of the Light will meet the 2D art style of Rayman Legends.
Controls
Gameflow
The gameplay is a 2D platformer where the player must remain within a certain heart rate threshold. Jumping or dashing will increase the heart rate, moving or staying airborne will freeze the current value, staying still will decrease it. The player will need to use those abilities to overcome the platforming challenge, while keeping a safe heart rate: a confident, steady stream of actions is the best strategy.
More complex challenges will require the player to chain the abilities to complete it: jump from a platform, dash into a wall, bounce, double jump, glide on the next platform and so on.
The game is divided into episodes, with different numbers of levels in each one (episode number - level number).
Each level consists of a series of platforming chunks, which the player will have to overcome.
Each chunk will have a checkpoint at the start and one in the end.
Each chunk will have a short duration (some seconds).
Touching the next checkpoint will make it active - only one can be active.
If the character dies, it will respawn in the active checkpoint.
Touching the last checkpoint of the level will make the player complete the level and return to the level selection screen.
Goals
Short term
Keep the heart rate stable.
Advance to the next platform avoiding hazards.
Advance to the next checkpoint, completing a platforming chunk.
Mid term
Complete the level, reaching all checkpoints.
Long term
Complete the episode.
Complete all episodes.
Complete bonus hard levels.
Complete all achievements (e.g. beat all levels without dying)
Mechanics & Systems
Heart rate threshold
One of the main mechanics of the game is keeping the heart rate of the Dreamer within threshold.
Actions that affect the current heart rate value:
Jumping, double jumping or dashing will increase the heart rate.
Moving or staying airborne will freeze the current value
Staying still will decrease it.
A moon in the background will show the current heart rate as a UI display. Every time an action is performed, a new pulse will be seen, followed by a soft bass sound.
A range, known as “healthy threshold”, will let users play in a steady but not frantic way.
Being below or above that range for too long will result in player death and respawn in the previous checkpoint.
Dying below will make the character sleep.
Dying above will make the character faint.
Checkpoints
At the start of a level and in between longer levels, a checkpoint, displayed as a lantern in-game, will act as a beacon for the character to reappear after death.
Approach the lantern to activate the checkpoint.
Being near one will stabilise the heart rate of the character.
Non-active checkpoint/lantern vs active lantern.
Dream wings
Special item that will unlock the ability to double jump.
Astral wings will appear on the character back when used and remain open until landing, then fading out.
Hazards
Hitting an environmental hazard will instantly kill the player.
Most of the hazards will be environmental:
Falling into the void.
Spiky climbing plants that may grow in the most unexpected places.
Lava rivers and waterfalls that defy gravity.
Area of Effect hazards will affect the heart rate of the character:
Purple Myst areas that decrease the heart rate.
Red Myst areas that increase the heart rate.
Enemies
In some special levels, enemies or “nightmares” may appear.
They will mainly have patrolling behavior but some of them will react to the player's heart rate: chasing them if the heart rate is too high or too low.
Hitting an enemy will instantly kill the player.
Story and World
The main character is trapped in an oniric world, where architecture and nature doesn’t work as usual: ships sail through the clouds, cities are built on top of giant trees, waterfalls in floating islands, animals are combined with plants and musical instruments and so on.
A distant castle in the sky seems to be the only way to escape.
The Plot Twist™
The more the game progresses, more hints appear that something is wrong outside the dream. Some distant adult voices, machine noises, the sound of a heart beat monitor. This is not just a dream but a coma. Now the heart rate mechanic makes sense! It’s not about escaping a dream anymore but holding on to life!
The game will end with a climatic, emotional struggle where the kid is moving between both ends of the heart rate and both worlds collide.
Game World References
Rayman Legends 2D art style combined with oniric and surrealist paintings/photos.
Game references
Celeste (Platformer)
Rayman Legends (Platformer)
Sky: Children of the Light (Social adventure)
Ori and the Blind Forest (Platformer metroidvania)
Inside (Plaftormer inspired by music)
Crypt of the Necrodancer (Rhythm roguelike)
APPENDIX - Heart rate implementation
The Dreamer has a heart rate system. The player must balance the amount of actions they perform to stay within the “healthy heart rate” range or the character will die and respawn on the previous checkpoint.
Actions that affect the current heart rate value:
Jumping, double jumping or dashing will increase the heart rate.
Moving or staying airborne will freeze the current value
Staying still will decrease it.
Myst areas may increase it or decrease it.
Being below or above the “healthy heart rate” threshold for too long will result in player death and respawn in the previous checkpoint.
Dying below will make the character sleep.
Dying above will make the character faint.
A moon in the background will show the current heart rate as a UI display. Every time an action is performed, a new pulse will be seen, followed by a soft bass sound.
The main goal of the “healthy threshold” is to make the users play in a steady but not frantic way, not using more actions than needed and vice versa.
Programming requirements
All of the variable names are suggestions, if you’re the programmer in charge of this feature, feel free to choose a better one but remember to edit it here! Also, the default values are orientative and will surely change when we play the prototype.
A system to take care of the heart rate is needed.
The heart rate is a bar that ranges from 0 to 100%.
0% (or less) and 100% (or more) will mean death for the character and respawn on the active checkpoint.
Main variables:
Increasing the heart rate
Performing a jump, double jump or dash will increase the current value of the current heart rate.
These values need to be variable for each action for balancing purposes and must be changed by the designers on the editor (make them serializable, please!).
Every time an action is performed, a new pulse will appear on the heart rate UI and a soft bass sound plays.
Note: These actions can be performed in milliseconds, so we may need to show the pulses with a “fake” delay and avoid breaking the UI. We need to test it ASAP and decide.
Decreasing the heart rate
While the character is still on the ground, the heart rate value will decrease according to the following variable (serializable):
Healthy threshold heart rate
Two values segment the “healthy threshold” area (also serializable):
When the player’s current heart rate value (heartRateCurrent) is outside this range, the following behaviours will trigger:
Above healthy range
If between top healthy range (heartRateHealthyMax) and heart rate max (heartRateMax)
The main character's aura slowly turns red, more intense the higher the current heart rate value.
The soft bass sound of each pulse changes into a distorted bass sound.
When top heart rate (heartRateMax) is reached or surpassed:
The character dies.
The character’s aura has the most intense red value.
“High heart rate death” character animation plays once.
“High heart rate death” sound plays for a couple of seconds (until respawned in checkpoint).
Below healthy range
If between bottom healthy range (heartRateHealthyMin) and heart rate min (heartRateMin):
The main character aura fades out according to the current heart rate value.
The soft bass sound of each pulse changes into a hospital heart rate monitor sound.
When bottom heart rate (heartRateMin) is reached or surpassed:
The character dies.
The character’s white aura completely fades out.
“Low heart rate death” character animation plays once
“Low heart rate death” sound plays for a couple of seconds (until respawned in checkpoint).
Area of effect or Myst areas
Myst areas have an area of effect value that affects the current heart rate value.
When the main character enters the area of effect and every second it stays within, these values are applied (serializable):