Team:
- William SALAME: Producer and Gameplay programmer
- Lorena QUARANTA: UI and Character artist
- Aurélie CHARLIER: 3D Animator
- Mathieu DEMANY: Environment and Shader artist
Trailer
Main Challenges
- Make a realistic boat without physics
- Make an A.I proprely to bring life in the ocean without drop FPS
- Sychronize the attack of Monstro and is animation
My Contributions
- Programmation of the boat
- Programmation of the lock system
- Programmation of the upgrade system
- Programmation of the A.I prey and predator
- Programmation of the spawn about Seagulls and Whales
- Programmation of Monstro
Gameplay
Explore
The goal is to make the player discover a new world and to offer everyone an experience that is unique from a camera top view in order to observe the seabed.
Fishing
The main gameplay of Deep Blue is to recover various fish, objects and treasures from the seabed with a mini-game to punctuate the phases of exploration.
Crafting
The boat can be improved with the Craft which is the main system to progress. The player will find and use various resources to have a constant progression
Boat
How it works: Each time the player uses the left joystick, the events “move forward” and “move right” are executed. We check whether the player can move or not. If so, we create a vector to record these inputs. Check again to see if the joystick is tilted enough to move it forward. The boat moves only in one direction: forward.The 3rd check is to know if the left joystick tilt is in the same direction as the boat. If so, the boat will advance and if not, the ship’s course must be changed.
We calculate the number of degrees to go between the forward vector and the direction of the joystick by doing the dot product between them. In order to smooth the rotation, we use the “Ease” function, which interpolates the rotation according to a given curve. We chose the “Ease Out” curve so that, at the end of the interpolation, the boat slows down in its rotation and retains the “Smooth” and natural side of a boat. This requires a float, we converted the number of degrees needed to reach the desired direction into an interpolable alpha.
Finally, we move the boat forward permanently with an AddMovementInput and turn the boat gradually to the left or right, changing its rotation on its vertical axis.
Upgrade boat
How it works:Each improvement allows to pass a lock but also improves the passive characteristics of the boat such as its speed of movement or its speed of rotation. To update these, we multiply the bonus speed with the boat’s default speed and change the value contained in the Movement Component. An additional variable was chosen in order to facilitate interoperability between upgrades improving the same statistics.
The boat can only have 2 improvements equipped simultaneously because there are only 2 slot of provided: the slot of the mast and the hull. Each time we change the improvement, we check if the slot is not occupied. The improvement is replaced if the square is occupied as well as the visual.
The list of improvements:
- the oars (improves the maximum speed of the boat by 50% and allows the passage of the coral reefs)
- reinforced hull (allows passage of shark worms)
- Floats (increases rotation speed by 50% and allows passage of rapids)
- Sailing (improves the max speed of the boat by 100% and allows the passage of anemones)
Lock system
How it works: Each lock allows the transition between 2 levels. To cross them, it is necessary to equip the boat with the good improvement, otherwise, we push the player away. The locks have a similar functioning, we have created a mother lock and from there we make the child locks. Each child lock has a different feedback on how it push away the player.
For example, the rapid stream lock applies a force opposite to the boat while the anemone lock grows to prevent the player from passing. Four parent Blueprints events are redefined in children to create the desired feedback. The master lock, on the other hand, will check whether the player is equipped with the upgrade to allow him to pass or not.
AI Prédator & Prey
How it works: to make the A.I, we used the behavior tree system from Unreal engine. The tree is divided into 2 parts, there is the move sequence and the escape sequence for prey. The predator has got only the move sequence. The move sequence consists of 3 tasks: retrieving a coordinate on the navmesh, moving the actor, up to the coordinate and waiting.
If the AI notices a predator in its field of view, it will cancel the motion sequence and trigger the leakage sequence which is composed of 2 spots and 1 service. The first task is to clean the blackboard, we will reset the variable of TargetActor” which contains the predator. Then it is the moving task that triggers with the leak service. The escape service, will update where the prey must move as long as it is hunted by the predator.
Monstro
Monstro is the king of the ocean of Deep Blue. He is the only threat of the game. If you annoy him too much, he will eventually come and gobble you. It moves through a spline that travels through the entire 2nd zone that is managed by a timeline.
Behavior of Monstro
Each time the player navigates above Monstro, he swims lower and lower to prepare his attack. Also, it turns to go the other way, once out of the player’s screen, the timeline. an attack counter increases with each pass. Once it reaches 3, it eats the player. Except that, instead of a game over, we go back in time to the last base visited by the player.
Attack of Monstro
When the Monstro attack is launched, the player can no longer control the boat. It rises to the surface via a spline and a timeline and its attack animation is triggered. The attack is canceled only in specific cases:
- when the player reaches a safe zone or base
- when he leaves Monstro alone long enough
Seagull & Whale
Spawn
Seagulls and whales are actors to decorate the universe of Deep Blue. They spawn randomly and have specific times of the day. Seagulls appear during the day and whales at night. It is a timer by event that manages their spawn with a minimum and maximum time interval
Behavior
In terms of behavior, they work the same way. Once they spawn, a timer triggers to play the sound of the animal. At the same time, a timeline also triggers so that it crosses the player’s screen. Once the timeline is finished, they disappear.