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.