Short Description
In this harpooning prototype, the player catches fish to sell them and earn better upgrades. Fish that are harder to catch bring in more money when sold. The more upgrades the player has, the farther they can swim out to sea and catch more exotic fish. With fish traps and, later on, planned anglers or fishing rods, fish can be caught passively while the player actively harpoons fish.
Background
The idea behind this project was to familiarize myself with Unreal Engine's water/buoyancy system. I have wanted to create a project set in the ocean for a long time, and this prototype was the first step in that direction. I also had to create my own AI movement logic, because the standard Unreal Engine AI pathfinding logic only works when the AI is on the ground.
Gameplay
- The player starts at a pier with a spear and a rowboat. At the end of the pier are shops where the player can buy new upgrades and sell fish.
- The player jumps into the water and catches their first fish. The first catch of each fish species unlocks new upgrades for the player to buy (e.g.: flounder caught: rowboat speed upgrade level 1 unlocked).
- Once the player has saved up enough money, a harpoon can be purchased. With the harpoon, fish that previously escaped when the player got too close can be caught. The harpoon can receive many upgrades through catching new fish (power, firing speed, reeling speed, reload speed, etc.).
- With enough money, the player can buy a new boat and explore new areas.
Features
Boats
Rowboat
The player's standard boat. It can only move within the tutorial area (in other areas, the waves are too strong for the rowboat).
Small Fishing Boat
The player's first "proper" boat for leaving the tutorial area and exploring new regions.
Fishing Tools
Spear
The player's starting/standard fishing tool. It has very short range, enough only to catch flounder, sea urchins, and crabs.
Harpoon
Allows the player to catch more exotic fish.
Fish Trap
A trap that catches fish passively. Initially only crabs and flounder, it can receive upgrades to catch better fish.
Upgrade Shop
Shop
Here the player can buy new upgrades and sell their fish.
Technical Details
- Engine: Unreal Engine (Blueprints / Visual Scripting)
- Source control: GitHub.
- Solo project
Challenge → Solution
- Challenge: Ships did not float stably on the water.
- → Solution: I revised the buoyancy settings. A sensible distribution of buoyancy points and tuning the forces involved is essential for the object to behave as intended.
- Challenge: Nav-mesh pathfinding is insufficient for movement in all directions without contact with the nav mesh.
- → Solution: I created my own AI pathfinding system. Each fish is assigned a specific area (e.g. the tutorial area is split into: tutorial-top and tutorial-bottom). To move, the fish picks a random point in this area and fires a line trace toward it. If the line trace hits something, the fish moves to the impact point. If the line trace hits nothing, the fish moves to the end of the trace. This allowed me to create movement for the fish in all directions while also ensuring they stay within their assigned area.
Learnings
- Masks allow me to hide the water within certain collision zones. This made it possible to remove the water from inside the ships and make them look more realistic.
- Understood the basics of the water plugin.
- Created my own easily extensible AI pathfinding system.