Casting Hearts

Overview

Casting Hearts is a Fishing Sim RPG built in Unreal Engine 5.3 using Angelscript and Blueprints. Players take on the role of a newcomer in a small town, balancing commercial fishing with environmental conservation.

Progression is driven by equipment upgrades and access to new fishing areas. Players choose between two core paths: a fast-paced commercial route with diminishing returns, or a slower conservation route that yields stronger long-term rewards. This is meant to reflects real-world balance of short term benefit and long term sustainability.

The town features NPCs with daily routines, relationships, and personal storylines. Players can befriend or romance characters to unlock new content and deepen narrative progression.

Details:

Engine: Unreal Engine 5

Languages: Angelscript, Blueprints

Team: Solo

Duration: 1 ½ month

Core Mechanics:

  • Fishing

  • Social Simulation

  • Simulated Day Time

  • Seasonal Cycle

  • NPC Schedules


Fishing

The fishing mechanic in Casting Hearts is meant to expand the system popularized by Stardew Valley, shifting away from a tapping input minigame toward a more intentional, analog-driven interaction. Instead of rapidly pressing buttons to keep a bar aligned, players use a radial 2D targeting system where they move a cursor to overlap with a target representing the fish.

This input is directly mapped to the analog movement of the controller’s left stick, creating a more tactile and responsive experience. The system emphasizes precision, positioning, and subtle control, aiming to offer deeper engagement while maintaining accessibility.

Treasure

Occasionally, treasure can appear during fishing. Treasures have their own capture progress, and successfully collecting one while also catching the fish rewards the player with an additional item that is flung out of the water for pickup.

Fishing Areas

Each body of water is defined as a Fishing Area, which determines what fish, trash, and treasure can be caught in that location.

Each area stores separate arrays for these categories, and the player's equipment influences the outcome of each catch.

The Fishing Area itself is represented by a mesh with a custom collision profile, enabling efficient line tracing to identify the area and retrieve the relevant data.


NPC Behaviour

NPC schedules and dialogue are managed using a data-driven system built around spreadsheets imported as data tables in-engine. Each row in the table defines a single line of dialogue, tied to specific conditions including time of day, location, story progression, and relationship level.

This setup allows for flexible, context-sensitive conversations that evolve with the player’s relationship to the character and their progress in the story. Dialogue entries are further organized by DialogueID and LineIndex, supporting multi-line conversations and branching narrative paths.

By decoupling dialogue logic from hardcoded scripts, the system allows for rapid iteration and fine-tuning of character interactions directly from the spreadsheet, which significantly streamlines content creation for writers and designers.

Each NPC actor includes a Schedule Component that listens for time-of-day updates broadcasted by the Game Mode. When the current time matches a new entry in the NPC’s schedule, the component updates the active schedule slot. The NPC then moves to the specified location and finds an available Activity Spot associated with the scheduled activity.

Afternoon Dialgue Example

Navigation

NPC navigation is powered by Unreal Engine’s built-in AI Navigation system, combined with a custom framework of World Areas and Activity Spots. Inspired by Epic’s Smart Objects, this system allows NPCs to claim Activity Spots while performing scheduled tasks. Once occupied, these spots are marked as unavailable, requiring other NPCs to seek alternative locations for the same activity.

For areas disconnected from the main world, such as interiors, NPCs use Transition Points, special actors they navigate to in order to move between World Areas. Upon reaching a Transition Point, the NPC is teleported to its paired counterpart in the target area.

Evening Dialogue Example

Inside areas of homes and the Inn
Disclaimer: Only located on top of the ocean for development convenience



Cutscenes

The game features an event system that maps Gameplay Tags to cutscene data assets using a hashmap. This allows cutscenes to be triggered dynamically based on player actions or world events, such as the example cutscene playing the day after the player arrives in town.