Alt text Inspiration

Our team was inspired by fishing minigames from titles such as Stardew Valley, New World, and Black Desert Online, but we wanted to take them a step further by allowing the user to take the equipment and catches you earned and turn them into fun and unique generative NFTs, which was also inspired from Pineapple Society in how they generate NFTs.

Alt text What it does

In Extreme Fishing you play as your friendly neighborhood otter Ned with a goal to catch all the fish in the sea. Here's the basics of how it works:

  1. You have to make sure you have all your fishing gear equipped!
  2. Cast out your line and wait for a bite
  3. REEL EM IN!
  4. Check out your new catch and decide whether or not to convert it into an NFT using Sand Dollar TNT20 tokens.

You can sign up and play for yourself at the website here extremefishing.turbolift.io!

Alt text How we built it

Extreme Fishing is built upon a combination of Unity WebGL and a web-based framework (Symfony) that, in addition to managing the primary database via an API, acts as a bridge between the game and the Theta Network. We wanted to put a huge emphasis on security of the NFT generation while also making sure it was a fun and level playing field for everyone!

TNT20 Token Sand Dollars We wanted the game to feel more immersive so we decided to create our own TNT20 token called the Sand Dollar. Currently Sand Dollars are used when converting your equipment and catches into NFTs. We have plans to expand on the usage of Sand Dollars in the future by adding more opportunities to spend (item shops) and earn (marketplace, salvaging NFTs).

Contract Address: 0x1400184e14ffceee3179ef108ac2c55344da6868

Generative NFTs At first we set out to create plain-old NFTs of in-game items. However, after seeing all the cool Pineapple Society NFTs on Thetadrop, we were inspired to create our own set of generative NFTs. When a user converts their in-game item our system uses the base-image of the item and augments it by adding backgrounds, patterns, colors, etc. We have plans to expand on this by adding even more variety soon.

Contract Address: 0x679b9425f58ea1e61de24fb984ee1da700767190

NFT Metadata When a user converts their fishing equipment into an NFT they are given a special quest. The quest progress is tracked in the NFT metadata and when completed will add additional bonus stats.

More Info For more information on this and how it all works, our lead blockchain developer Matt created a tutorial video here!

Alt text Challenges we ran into

  • Theta Wallet Browser Extension I ran into an issue integrating the module into the Symfony framework. In the end I ended up digging much deeper than needed, but I learned a lot more about Javascript that I didn't already know. - Matthew R.
  • Debugging Debugging all the database connection issues related to grabbing from a remote resource as this was our first time hosting player items on a remote source rather than on the players system. - Jacob P.
  • Art Uniqueness It takes a while to find a style that is both visually appealing and yet not overly complicated, so you can create all the art you need in a reasonable timeline. Animation takes a while, and sometimes you gotta sleep a little less so your animations don't feel cheap and lazy. - Evan W.

Alt text Accomplishments that we're proud of

  • Successfully storing user data securely on a remote database
  • Creating generative NFTs on the theta blockchain
  • Creating our own Sand Dollar token for users to use in creating NFTs from in game
  • Creating a fun minigame around catching fish that involves a little bit of patience and skill to be the best fisher!

Alt text What we learned

  • Connecting Unity to a remote database. We learned a lot about creating an API to communicate between the game and the web server / database. We also ran into quite a few issues with CORs that we had to manage in order to get the API working properly. - Matthew R.
  • Smart Contracts. This was my first real dev experience with Smart Contracts. This project really pushed me to learn as much as I could in order to get an in-game currency and NFT items working properly. I'm excited to extend what I have learned on this project in future smart contract development. - Matthew R.
  • NFTs.
  • Fishing Mechanics Creating fishing mechanics is not as simple as it would seem and I definitely underestimated the complexity going into this, but we learned a lot about how that all worked! - Jacob P.

Alt text What's next for Extreme Fishing

Our roadmap can also be found on our website here extremefishing.turbolift.io! You can also follow progress better at our discord!

Roadmap:

  • SALVAGING & CRAFTING We are already hard at work on setting up a complete crafting system. Players will be able to salvage their catches into items that they can then use to craft more powerful equipment.
  • ANIMATIONS AND ENVIRONMENTS More 2D art animations will be added for the player and the environment.
  • NFT MARKETPLACE Players will be able to buy and sell their Extreme Fishing NFTs with other players.
  • NPCS AND QUESTS Non-player Characters will be added to the game. Questlines will be introduced through these NPCs
  • ADD MORE FISHING ZONES Fishing doesn't only happen on sandy beaches. Maybe there's a secret fishing spot in the forest, the mountains, or who knows, maybe even somewhere like Mars!?

Built With

+ 7 more
Share this project:

Updates

posted an update

Smart Contracts Update

  • Sand Dollar (SDLR) is complete
  • NFT contract is complete

We have implemented the ability for users to exchange Sand Dollars (SDLR) in order to convert their regular game equipment into NFT equipment. The NFT version of the equipment will have boosted stats and quests attached that will boost the stats even more once completed.

Log in or sign up for Devpost to join the conversation.

posted an update

Smart Contract research is finally coming to fruition! After loads of research and testing multiple contracts, I have integrated the initial functionality for the TNT-20 Smart Contract for game currency (Sand Dollars) into the code. At this time we plan to use Sand Dollars in exchange for in-game NFT items.

Users can connect to their Theta wallets using the Theta Wallet Web Extension. They will be able to buy Sand Dollars on Thetaswap in exchange for Tfuel.

Log in or sign up for Devpost to join the conversation.

posted an update

Week 8

  • Set up HTTPS certificate for website
  • Balance catchables for the minigame
  • Discord started for beta testing management and announcements and git tracking
  • New Player Registration
  • Create a bunch of equipment to start with and balanced them
  • Setup Login Flow
  • Work on Inventory Concepting Inventory Concepting

Log in or sign up for Devpost to join the conversation.

posted an update

Week 7

  • API Unity <-> Database: Created calls for the base minigame to the database for security
  • Collect Basic game sounds for now
  • Footstep Sounds
  • Basic Charge sound (looping)
  • Casting sounds
  • Plop in water and illegal landing sounds
  • Hook and reel in sounds
  • Cheer on catch sounds
  • Record Cast Distance and Display it
  • Integrate Unity build into Symfony page

Log in or sign up for Devpost to join the conversation.

posted an update

Week 6

  • Integrate and test ThetaJS SDK
  • Expand the map to walk up and down the beach
  • Camera follows bobber
  • Camera splitting when bobber goes far out Camera Split
  • Render a fishing line
  • NFT Discussions on how to implement (results below)
  • NFT Equipment You can turn any equipment item into an NFT using sand dollars and then you will obtain quests attached to that item that when completed give it a buff
  • NFT Catchables You can turn any catchable into an NFT at a weight station using sand dollars to obtain a new NFT catchable with a certain weight and modifier. The weight will go onto a NFT leaderboard for that fish, and the modifiers can be used as a trinket to catch more of that fish and influence the weight of future fish minted.

Log in or sign up for Devpost to join the conversation.

posted an update

Week 5

  • New Player Animation! Player Animation
  • Create some test fish objects that will change how the tension minigame works
  • Equip items via temp equipment menu
  • Draft database layout
  • Smart Contract: Set up test contract to mint NFTs
  • Create Theta/SQL controller to reach out

Log in or sign up for Devpost to join the conversation.

posted an update

Week 4

  • Create test API call to update/retrieve information from remote database
  • GameController code for triggering a fish on the hook
  • On Catch Start Tension event
  • Create Inventory data objects
  • Continued work on new animations for player

Log in or sign up for Devpost to join the conversation.

posted an update

Week 3

  • Player throwing out fishing line with a power bar The first cast
  • Character Reference Sheet Character Reference Sheet
  • Quick hotfix on the fishing bar stopping or getting out of sync
  • Hookup a base build of the game to git repo to host on webpage
  • MySQL database - Setup on Digital Ocean and Test Connection with Unity

Log in or sign up for Devpost to join the conversation.