This project description is also available as a paginated microsite for easier browsing

Inspiration

WWZ is a Web3 game that began as an entry to the 2023 Theta Hackathon. We enjoyed participating and are proud of what we accomplished, but want to take the project further.

This year, we are submitting a major new release that includes:

  • Cross-community, cross-chain gameplay
  • Organized leagues
  • On-Chain, in-game cosmetics
  • Automated TFUEL and TNT20 reward capability

With this update, we believe WWZ can become to Web3 communities what pickleball or softball leagues are to off-chain communities.

Our goal is to become a touchstone for Web3 communities of all shapes and sizes—and to base that shared activity here on Theta.


What It Does

WWZ is a Discord game for supported profile picture (PFP) NFTs. Players choose and train a PFP from their existing collection to fight on their behalf in automated, text-based combat that can be surprisingly fun.

New for Summer 2024

Community vs. Community matches

For the first time, one NFT Community can challenge another to a WWZ match—even across blockchains. Full write-up available in v0.11 Patch Notes.

Community leagues

Web3 communities can now play against peer communities in organized leagues. Game results are tracked against league leaderboards. For more, see the full v0.11 Patch Notes.

On-Chain, In-Game Cosmetics

We first introduced in-game skins in January 2024. As part of our Summer Release, these skins are now NFTs on the Theta Blockchain.

To date, these cosmetics have been earned by attending or winning special WWZ events. Thanks to help from OpenTheta, players may also buy and sell these rewards.

Automated TFUEL/TNT20 Rewards

The game is capable of rewarding players with TFUEL or TN20 tokens in the following ways:

  • Winning a match earns X TFUEL/TNT20 where X is the number of players in the match
  • Defeating a player with a bounty earns Y TFUEL/TNT20 where Y varies as a function of X depending on bounty severity

How We Built It

Architecture

The success of WWZ depends on how well it can support a growing player base. Therefore, most of our architectural design decisions favor some form of auto-scaling or serverless components.

https://s3.amazonaws.com/theta-hackathon-2024.wwz.gg/wwz-architecture-no-grid.png
Overview of WWZ system architecture

UX

Players interact with the game primarily through a Discord app. We made this choice because:

  • most of our potential players already have access to Discord
  • it works on any popular mobile device or PC
  • offloading authentication and account management to Discord enables us to move faster

Knowing we wanted to build for Discord, we attempted to follow UX flows established by the most popular Discord apps such as MidJourney.

For example, many MidJourney users are conditioned to making initial requests and options through Discord application commands.

https://s3.amazonaws.com/theta-hackathon-2024.wwz.gg/sample-mj-vs-wwz-request.png
Comparison of MidJourney and WWZ requests via Discord Application Commands

And just-in-time graphics support form component choices for deeper workflows.

https://s3.amazonaws.com/theta-hackathon-2024.wwz.gg/sample-mj-vs-wwz-output.png
Comparison of MidJourney and WWZ follow-up UIs

Verification

Generally speaking, players are limited to NFTs they own when playing WWZ. However, players do not need to connect a wallet to WWZ to play.

We follow the principle of least privilege (PoLP)

Instead, we perform a Web3 version of a common Web1 security verification method: DNS-based Domain Validation (DNS-01 challenge). We provide players a unique code and ask them to place it in a location only the controller of an account could (ThetaDrop profile, OpenTheta profile, Magic Eden bio, etc.).

An example of this pattern in action can be seen in our guide for verifying a ThetaDrop account with WWZ.

Summer 2024 Enhancements

Most of the Summer 2024 enhancements were built on top of existing WWZ infrastructure. However, there are some notable new components.

Theta Transaction Management

Theta Blockchain JS SDK

Automated TFUEL rewards are made possible by the Theta Blockchain JS SDK running in a nodejs environment.

Chain Readers

InfStones

We read data from the Theta blockchain using the InfStones Theta API service. This service has been so effective, we've started using it to work directly with Ethereum as well.

MagicEden API

For cross-community matches, we leverage the publicly available Magic Eden API for data related to Solana NFTs.

OpenSea API

For cross-community matches, we leverage the OpenSea API for data related to Polygon NFTs.


Challenges We Ran Into

ETH RPC Adaptor

In early June, the game began intermittently having trouble reading data from the Theta blockchain. We were able to trace the issue to our communications with the Theta ETH RPC Adaptor failing.

Theta's documentation on this service is clear: it is only meant for light usage. So we assumed we may be the problem and looked at other options for ETH-to-Theta RPC support, including hosting our own.

This InfStones Partnership Announcement from 2023 piqued our interest. We tried the service, ran a series of simulated games with it, and found it to be reliable and performant. We have been running it in production without issue ever since.

3rd Party On-Chain Data Failure

Between May and mid-June, we depended on a 3rd party, premium service for querying the Solana blockchain in a reliable and efficient manner. On June 18th, it suddenly stopped working. Nothing in our related code changed. Their support offered no response. We still don't know what happened.

We reviewed several Solana data providers and ultimately found everything we needed in the Magic Eden API with one catch. Our busiest game lobbies, where several players take Training actions nearly simultaneously, are likely to violate rate limits for normal API usage. We were lucky enough Magic Eden accepted our request for elevated API usage and have been able to completely circumvent the problem.

Contract Deployment Issues

In June, we began minting the skins awarded to Players on the Theta blockchain. Our first attempts at a contract following an older Theta demonstration led to a couple of smaller challenges.

Error Messages on Deploy

We received errors messages when deploying a contract using the latest version of OpenZeppelin Contract Wizard and Remix. We learned of complexities with using the latest version of the EVM compiler and possible solutions through Discord help messages by @Pizajolo from April 2024.

Popular Toolset (In)Compatibility

With the caveat that we are not experts with the tools in question, using an earlier version of the EVM compiler (per above) meant we could not use some popular applications like the OpenZeppelin Contract Wizard (maybe possible using old builds?).

We ended up piecing our contract together from existing Theta documentation and working examples.

We think if there's a way to bridge this (temporary?) gap - how to use popular, current tools with output Theta accepts today - more groups like us could explore Theta more easily.

Scoring Information Architecture

Cross-Community matches posed a design challenge: how do we quickly convey the state of a Team of arbitrary size?

In previous game formats, we primarily relied on well-formated, text-based lists of combatants and players. These text-based leaderboards don't quickly convey the necessary information in a team vs. team setting. Good for a detailed look, they make viewing a live match tedious or even boring if a viewer simply skips reading scoreboards altogether.

We landed on a visual solution that leverages our strengths in near real-time image processing. We still provide a text-based list of combatants in scoreboards, but we include something we call Facewalls as well.

A Facewall is a grid of all team member PFPs and visual indicators of critical states (low health, energy, death).

https://s3.amazonaws.com/theta-hackathon-2024.wwz.gg/facewall-design.png
Designing the Facewall feature

Accomplishments We're Proud Of

Gym Network Growth

WWZ currently provides gaming utility:

Successful PvP Tournament Nᵒ 1

In early June, we invited the WWZ community to participate in our first organized tournament. Twenty-two players competed for a prize pool that included Theta NFTs, TFUEL, WWZ skins, and a Grand Prize of a ticket to ThetaCon 2024 provided by the Order of the Tigons.

https://s3.amazonaws.com/theta-hackathon-2024.wwz.gg/pvp-tournament-bracket-no-1.png
Final bracket for PvP Tournament Nᵒ 1

First Solana Event

In June, POG Digital hosted a WWZ series. This marked the first WWZ event outside of Theta.

https://s3.amazonaws.com/theta-hackathon-2024.wwz.gg/pog-wwz-series-no-1.png
Promotional flyer for POG Digital WWZ series

Ongoing Solana Expansion

On July 26th, the g00bs NFT Community opened the second WWZ Gym based on a Solana collection (10th Gym overall).

The g00bs community is already averaging close to 30 players per match - the majority of which are new to Theta.

Check out the g00bs Gym launch trailer.

https://s3.amazonaws.com/theta-hackathon-2024.wwz.gg/g00bs-match-result.png
Match results from the g00bs gym

Simulator Results

Proving WWZ is a "skill game" is an important goal to us. So we are happy to have made progress this season with:

  • a simulator capable of running relatively large volumes of games (so far tens of thousands)
  • initial simulator results that point toward strong skill-based elements

Popularity

On July 4th, 2024 WWZ players trained their 100,000th combatant since we began recording around the same time in 2023.


What we learned

RPC Clarity

We did not know the strength of the Theta partner node offerings before we ran into some struggles with Theta's demo ETH RPC Adaptor in late May.

Now we know there is no need to rely on Theta's demo of the ETH RPC Adaptor. InfStones nodes, for example, allow us to interact with the Theta blockchain as an ETH client or a Theta client (two endpoints).

The demo ETH RPC Adaptor serves its purpose well for quick exercises, but any production application (regardless how light the usage) can easily make use of InfStones tiered plans - including a generous free tier.

We appreciate Theta's decision to provide node support through partners like InfStones. We think we learned a little more about how to scale responsibly in the ecosystem.

Graduating from Read-Only

Prior to this release, WWZ was a read-only Web3 application. The game relied heavily on blockchain state data, but to-date only had reason to write data to conventional databases.

Automated TFUEL Reward Transactions

In specific matches, the game is now capable of automatically signing and broadcasting a reward transaction to:

  • the winner
  • anyone claiming a bounty during the match

On-Chain Game Skins

Players can now earn NFT rewards through the game in the form of wearable skins. To meet this goal, we followed Theta documentation and Discord discussions on deploying ERC-721 tokens.


What's next for WWZ

Gym Network Expansion

We intend to steadily grow the WWZ gym network. To date, we have prioritized Discord servers bound to NFT communities, but any Web3 Discord server is a candidate. For example, we would love to put a WWZ gym in the ThetaNetwork and OpenTheta Discord servers where members could use any eligible Theta NFT to play and represent each server in cross-community play.

Community League Play

We plan to launch our first league in Q3 2024. We intend to start with relatively small leagues and short short seasons and grow them as we add expand the Gym Network.

Partner Rewards Integration

We would like to integrate token based rewards (eg. TDROP, KFUEL, POG, TVIBE).

We have demonstrated the game can technically do this now with the Theta Blockchain JS SDK, but we are currently in the process of selecting a partner for KYC/AML services.

On the technical side, we have integrated two prospective services. We hope to have finalized partner selection in August 2024.

Auditable Game Results

We are interested in exploring writing near-live game data on-chain. Ideally, this would include some form of on-chain randomness as well. We are only in the discovery phase here, but believe it to be an important capability going forward.


Zero-Setup Demo

There are a number of places to try or watch WWZ, but the easiest way is to follow these three steps:

  1. Join our Discord
  2. Visit the amoe channel
  3. Run /wwz train

You will be presented with a few NFTs to choose from. Pick one and follow the prompts to join the next match!

Built With

+ 25 more
Share this project:

Updates

Submission history