Inspiration

The main inspiration comes from the dozens of other simulator-like games that revolve around earning some sort of currency to progress towards various upgrades. We had actually previously planned a game around fishing prior to the event, so we lucked out as it ended up following the theme requirement. We decided to innovate on the genre by adding a dynamic shop NPC which would attempt to barter with the player through Gemini's API to introduce dynamic market prices for the fish to sell for.

What it does

As it stands, Fishinator is a Roblox game where the player starts off with a basic fishing rod. The player can interact near any pool of water along the port to cast a line and attract any fish within the body of water. Once reeled, the player goes through the 'fish minigame' to simulate the difficulties of reeling in various fish. The player can then interact with the 'vendor NPC' to barter with their collected fish in an attempt to get the highest price possible for what they have to offer. Gold earned from these exchanges can be used to upgrade the fishing rod to make future casts easier to reel in.

How we built it

We built this using Roblox Studio which uses the Luau scripting language. We created a proxy server using Node.js and Express that was hosted on Railway for the Gemini 2.5 Flash API calls.

Challenges we ran into

For the AI portion of the project, the main challenges we encountered was difficulties with adjusting the strength of their personalities. A lot of tweaks to the overall prompt needed to be made to make it more fair for the player. At times, the vendor would act too stubborn or complacent in their negotiations which we had to resolve. We also ran into many issues regarding the fishing rod logic not working properly. The physics on the bobber was acting unnatural. Another big challenge was creating a functioning custom UI rather than using the built-in Backpack provided by Roblox. We had to learn how to manage our own inventory items using a folder, and manually clone an object to the Character when we want them to hold the item out.

Accomplishments that we're proud of

We're proud of the the custom made UI that works flawlessly and allows players to hold fishes out. We're also proud of the interactive Gemini AI NPC that negotiates a price for the fish the player is trying to sell. The player is allowed to settle on a price, or argue for a higher price! And, we're most proud of being able to finish a game in a 24 hour window!

What we learned

We learned how to create a custom inventory/hotbar, along with its UI. And we learned how to create a proxy server to host the Gemini AI model that we communicate with through Roblox. This was the first time we've communicated via HTTP requests through Roblox as well. We learned a lot about creating a behavioral prompt for AI to act the way we want, as well as parsing the LLM's responses to fit our needs!

What's next for Fishinator

There's a few things we could attempt to expand on to add more unique variety and game play mechanics to our project. Currently we only have 1 vendor with 1 set personality, we could expand on that by adding different behaviors. Gold also has relatively limited uses, with the main functionality being fishing rod upgrades. Dynamic biomes and fish for each relative biome was something we also wanted to add but simply ran out of time due to the relatively lengthy process it would take which would involve much more world building. Overall, there's tons of room for expansion that we left for ourselves if we ever wanted to continue to add more to any of our core game features.

Built With

Share this project:

Updates