Created in 48 hours with a team of 5 for the 14th edition of the Creative Jam. The theme was Trauma and the technical challenge was to include procedural generation.
Life is a Bumpy Road is a short 2 players car driving experience symbolizing the healing process after losing a loved one in a car accident.
The players drive through 6 levels: an introductory level followed by 5 levels that depict the 5 stages of grief (Denial, Anger, Bargaining, Depression, Acceptance).
They must continualy collaborate to fix the car as it gets broken in small accidents that represent the difficult moments they are going through.
Blueprints & Level Design
The levels were procedurally generated, assuring that each playthrough was different, using different values for each of the 5 stages of grief.
To do this I started by creating a blueprint that generated a spline to trace the overall structure of the level. Multiple variables were used, like the distance between each point on the spline and the maximum distance of the level, so that each level could be personnalised. For exemple, the second level, Anger, has a road that is mostly straight, to allow the player to drive fast and destroy obstacles along the way. On the other hand, the level representing Bargaining curves from side to side a lot more, to represent that the characters are trying to find another way instead of accepting reality.
When starting a level, the blueprint thus uses those different variables to construct a unique spline.
The initial position of the player is then calculated to make sure the player starts in the center of the road, with just enough road behind him that he doesn't see the start of the road.
The same technique is then used to place a volume at the end of the road that will teleport players to the next level.
A simple StaticMesh is then used to create the actual road on top of the spline, and another one to build an invisible wall to make sure players to go too far off track.
I then add obstacles and props unique to each level. The assets are added procedurally following different parameters selected direction in the level editor.
Since we only had 2 days to complete the project, the blueprint isn't optimal. For example, each object type was treated separately as we were adding new things to the project. This could have been done more efficiently using functions, but for the time we had and the scope of the project, it was faster to treat everything separately.
The first section of the game presents the car accident in which our characters have lost a loved one. To make sure that players feel connected to what is happening, instead of showing the accident in a cinematic we make it happen while they are playing. They are driving the car when all of a sudden they get hit by another car.
This scene also serves as a tutorial by showing how the car can be destroyed and how the players can get out of the car to fix it.
The players then go through 5 levels, each representing one of the 5 stages of grief. If they hit an obstacle, they can either get out of the car to fix it, or they can continue, but the car will be more difficult to control.
When the players exit the car, the screen splits in two.
This split allows each player to move independently of each other without beind limited by the camera.
It also forces the players to collaborate in collecting the broken pieces since they can't enter the other player's zone.
Player will encounter many types of obstacles as they progress.
Some obstacles are solid, like fences, trees and cônes. They damage the car depending on the intensity of the collision.
Other obstacles, like water puddles, make the player momentarily lose control of the car. If the loss of control is too intense, the car can get damaged.
There are also potholes that are simply planes with a normal map that act as holes in the ground.
There are also special fences that can be broken in the Anger level to let he players intentionaly break stuff to represent anger.
Since we wanted to represent the story not only through the gameplay, but also through the environment, we made sure that every level had a different visual style each representing one of the 5 stages of grief.