Build a Fishing Tycoon Island with Verse
Build a Fishing Tycoon Island with Verse
Do you love fishing? Do you want to make your own mini-game where players catch fish and get cool rewards? Let's build a Fishing Tycoon island!
We will use Verse to make the fishing work. Verse is the coding language for Fortnite Creative. You don't need to be a math whiz. You just need to follow a recipe.
By the end, you will have a working fishing spot. Players will cast their rods. They will catch fish. They will get points!
What You'll Learn
- How to place a Fishing Zone.
- How to use Verse to listen for fish catches.
- How to give players rewards when they catch something.
- How to use Variables to keep score.
How It Works
Think of your island like a stage in a play.
- The Stage (Fishing Zone): This is where the action happens. It is a special area in the water.
- The Actor (Player): The person holding the fishing rod.
- The Director (Verse Code): This is you! You write the rules. You tell the game what to do when a fish is caught.
When a player catches a fish, two things happen. First, the game knows a catch occurred. Second, you want to give them a reward. Maybe they get health back. Maybe they get gold.
We will use a Variable. A variable is like a scoreboard. It changes as the game goes on. We will make a variable called Score. When a fish is caught, we add 1 to the Score.
Let's make this real!
Let's Build It
First, go to Create Mode.
- Place a Fishing Zone in the water. Make it big enough.
- Place a Player Spawn nearby.
- Open the Verse Editor. This is where we write code.
We need to write code that "listens." We want the code to listen for the event: "A player caught a fish."
Here is the code. Copy it into your Verse file.
# This is the main script for our fishing game.
# It connects the fishing zone to the reward system.
using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
# This device class wires up to a fishing_zone_device
# placed on your island in UEFN.
fishing_tycoon_manager := class(creative_device):
# Drag your Fishing Zone device here in the
# UEFN Details Panel after you add this script.
@editable
FishingZone : fishing_zone_device = fishing_zone_device{}
# This is our "Scoreboard" variable.
# It starts at 0. <var> lets us change it later.
var Score : int = 0
# This function runs when the game starts.
OnBegin<override>()<suspends> : void =
# We print a message to the screen.
Print("Fishing Tycoon Started! Catch fish!")
# Tell the Fishing Zone to call OnFishCaught
# every time a player catches a fish.
FishingZone.CaughtEvent.Subscribe(OnFishCaught)
# This function listens for a fish catch.
# It is connected to the Fishing Zone device.
OnFishCaught(FishingPlayer : agent) : void =
# Every time a fish is caught, add 1 to the Score.
set Score = Score + 1
# Tell the player how many points they have.
Print("You caught a fish! Score is now: {Score}")
# Give the player a small health boost as a reward.
# Cast agent to fort_character to access health functions.
# note: fort_character is the real Verse type for a player's body.
if (Character := FishingPlayer.GetFortCharacter[]):
Character.SetHealth(Character.GetHealth() + 10.0)```
### Walkthrough of the Code
* **`var Score : int = 0`**: We created a variable. It is a number. It starts at zero. The `var` keyword means it is allowed to change.
* **`FishingZone.FishCaughtEvent.Subscribe(OnFishCaught)`**: This is the "listening" step. We tell the Fishing Zone device to call our function every time a catch happens.
* **`set Score = Score + 1`**: This is the magic line. It takes the old score. It adds one. It saves the new score. In Verse, `set` is required when you change a `var`.
* **`Character.SetHealth(Character.GetHealth() + 10.0)`**: This reads the player's current health and adds 10. It is a nice reward!
### How to Connect It
1. In the **UEFN Content Browser**, find the Verse file you saved.
2. Compile it with the **Verse** button at the top of the editor.
3. Drag the **fishing_tycoon_manager** device from the Content Browser onto your island.
4. Click the **fishing_tycoon_manager** device you just placed.
5. Look at the **Details Panel** on the right.
6. Find the **FishingZone** slot (the `@editable` field).
7. Click the picker and select the **Fishing Zone** device you placed in the water.
## Try It Yourself
You made a basic fishing game! Now, let's make it better.
**Challenge:** Change the reward. Instead of giving health, give the player a **Shield Fish**.
**Hint:** Look at the `Character` object. Does it have a function to give shield? Try searching for `SetShield` in the Verse documentation. You can call `Character.SetShield(Character.GetShield() + 10.0)` the same way we changed health above.
If you get stuck, ask a friend or check the reference links below.
## Recap
You built a Fishing Tycoon island! You learned how to:
* Use a **Fishing Zone** as the stage for your game.
* Write a **Variable** to keep score.
* Use an **Event** to react to fish catches.
* Give **Rewards** to players.
Great job! You are now a Verse developer. Keep coding and have fun!
## References
* https://dev.epicgames.com/documentation/en-us/fortnite-creative/using-fishing-consumables-in-fortnite-creative
* https://dev.epicgames.com/documentation/en-us/fortnite-creative/using-fish-consumables-in-fortnite-creative
* https://dev.epicgames.com/documentation/en-us/fortnite/using-fishing-items-in-fortnite-creative
* https://dev.epicgames.com/documentation/en-us/fortnite/using-fish-items-in-fortnite-creative
* https://dev.epicgames.com/documentation/en-us/fortnite/using-items-in-fortnite-creative
Verse source files
- 01-device.verse · device
Turn this into a guided course
Add using-fishing-consumables-in-fortnite-creative to your free study plan — we'll suggest related pages and stitch the lot into one compile-checked, self-guided lesson with worked examples and quizzes.
References
Original tutorial generated by Verse Island from the Verse/UEFN knowledge base, with references to the Epic Games sources above. Code is validated against the knowledge base.