Flow Team Go!

Flow Team Go!

A mobile-first NFT battle system that turns your device into a classic game console with retro d-pad and onscreen buttons. Build a team of any NFTs then compete with friends or random opponents!

The problem Flow Team Go! solves

Problems Solved

  • Retroactive ability to add utility to existing collections
  • Revive stale NFT collections through gamification
  • Could be used with actual collection stats (e.g., NBA Top Shot NFTs)
  • Add off-chain value to influence collector behavior through gamification
  • Supports NFTs from the entire blockchain
  • Cloud-based multiplayer means data delays aren't a problem
  • Battles are about team building and strategy, not interactive player behavior. This allows server-based competition without the need for both players to be present.
  • Adds discoverability to collections
  • Allows collections to make NFTs to target game mechanics

Main Goals

  • Showcase the power of NFT-aware read-only sites
  • Add value to existing NFTs off-chain via gamification
  • Low friction for new users – no logins. Jump in for a fun NFT experience!
  • Mobile-first collection viewer
  • 8-Bit retro look for mainstream appeal
  • IRL appeal for in-person battles with vs. mode
  • Promotes new collection discovery via random matchmaking

Safety First

  • Does not use wallet logins
  • Uses JWT to establish secure stateless sessions
  • Allows users to claim teams with a pin-code that is encrypted in the database
  • Server-verified logins would be a great addition to a future version

Challenges I ran into

The FLOW peer-to-peer mechanisms make things more difficult when you need to know the collection names you want to query.
I struggled to load a user's public data generically, but eventually, I found the dapper maintained flow catalog list. By using this list, I could loop over known collections to load NFTs from a user's wallet.
Additionally, large wallets were too much for the Cadence collection script I was using. It would hit resource limits for the query and timeout or return no results.
I had to modify the cadence code to page through collections 15 at a time. This fixed the issue for the majority of wallets.
I still think improvements can be made to more accurately target the collections a user has and I hope to add those in a future version.

Discussion