project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5

Secret.Quest

Tower ascending game where you battle bad AI agents with good AI agents and fellow human players. Solve riddles, find consensus or get defeated!

Secret.Quest

Created At

ETHGlobal Brussels

Winner of

Blockscout - Best use of Blockscout Block Explorer

Prize Pool

Project Description

Your goal is to solve a riddle on every floor, but you never get the full riddle, only a piece of it. You need to work together with other players and exchange information. Bad AI agents can lie, and humans can too. However, no individual human has ever won the tower, because if the AI agents are in the majority, humans lose. The tower ascension stops when all the bad AI agents are eliminated, and the survivors will be rewarded. The question is: can they reach a consensus on who the bad agents are, or will greed cause them to lose to the bad AI agents?

How it's Made

We use NextJS for login (Dynamic), staking, and proofing you are human with WorldCoin before you can enter the tower. We used the WorldCoin starter kit and integrated Dynamic with ease.

We use Phoenix/Elixir for the game platform with OpenAI GPT-4, which generates the riddle for each floor. Phoenix is great for the stateful part of the game with chat/presence functionality through WebSocket connections and efficient pubsub. We also evaluate the answers for each riddle with OpenAI GPT-4.

For the smart contract, we set up a Foundry project so we can deploy to Morph (the only chain that was really mentioned during the workshop that they want to focus on consumers and want educational dapps).

Our goal is for every action the player takes to be signed, so the game is verifiable, and people can trust the process is honest. The game data will be used to train future bad AI agents to prevent them from being caught, so the game evolves in difficulty as well. We could not achieve this during the hackathon, but the we made certain design decisions that will help us do it (subscribing to pubsub/channel and appending every action will basically create all the state and is easy, however the step that every action is signed is something we needed to do that client-side JS and didn't pull that of yet).

background image mobile

Join the mailing list

Get the latest news and updates