project screenshot 1
project screenshot 2
project screenshot 3

XMarks

Multiplayer on-chain game, with unique NFT prizes for each round. Players compete to guess the location of various landmarks, cities and geographical features from around the world 🌎

XMarks

Created At

ETHGlobal London

Winner of

Arbitrum - Qualifying Arbitrum Submissions

Prize Pool

Worldcoin - Pool Prize

Prize Pool

Project Description

Motivation & Mission

At the heart of our project was the ambition to craft a fun, social consumer dApp with the potential for viral growth, capable of seamlessly onboarding millions of newcomers to the blockchain space. In the end, we were drawn to the idea of a game.

Inspired by the competitive and social elements of GeoGuessr—a game beloved by 65 million users—we set out to create an experience that could be an enticing alternative to the traditional game and genuinely engage and onboard millions of newcomers to the space.

With this X-Marks was born, a game designed to capture the competitive essence and social connectivity of popular web2 games like GeoGussr, while seamlessly bringing the elements uniquely enabled by web3.

Game Overview

The core gameplay of X-Marks is deceptively simple yet infinitely engaging. Each game round begins with the generation of a set of random coordinates. These are not mere numbers but keys to unlocking visual treasures. Powered by DALL·E 3, these coordinates are transformed into images depicting the locations players must identify.

Participants are given a 12-hour window to submit their guesses via the game interface featuring an interactive globe. All players are allocated one guess per game, ensuring a level playing field. For those keen on enhancing their chances, additional guesses (up to 5) can be earned through verification with WorldID.

As the round concludes, the anticipation reaches its peak. All guesses are evaluated, and the player whose guess is nearest to the actual coordinates is declared the winner. The reward? An exclusive NFT of the generated image, minted directly to the winner's wallet. This NFT is not just a digital asset but a trophy of exploration, strategy, and victory.

As each round ends and a new one begins, X-Marks invites players into a never-ending adventure of discovery and competition, all running on-chain unbeknownst to the user themselves.

How it's Made

X-marks architecture is based on three main components consisting of the smart contracts, the game client and the backend for support. We leveraged the technology of ETH Global partners including Arbitrum, WorldCoin, ChainLink and Dynamic to craft the game.

Smart Contract Core Functions

startNewGame: Triggers a new game, generates new coordinates (w/ Chainlink), submitGuess: Enables user guess submissions, recordWinner: Identifies and rewards the game's winner, concluding the round, addVerifiedWallet: Manages wallet verification for additional guesses (w/ WorldCoin), setPrizesContract: Assigns a prize contract address to reward winners

ChainLink Integration

Randomness: Employs Chainlink VRF for fair, random target coordinates, Post Request: Uses Chainlink's FullfillRandomWords for backend integration after generating random numbers,

Frontend / Game Client Core Functions

submitCoordinate: Processes guesses and transaction updates, handleGlobeClick: Captures user guesses with a double-click interface, fetchPastGames: Displays historical game data, fetchCurrentGameData: Shows ongoing game details for player guidance, fetchProfileData: Displays user achievements and wins,

WorldCoin Integration

Proof of Personhood / User Verification with WorldCoin’s IDKit, offering extra guesses & ensuring integrity of game (by limiting Sybil attack vector).

Dynamic Integration

Facilitates seamless onboarding via embedded wallet options for users, key to keeping low barriers of entry for newcomers and improving overall game experience.

Backend Core Functions

calculateDistance: Uses the Haversine formula to compute distances between coordinates, generateRandomCoordinatesLimited: Produces random coordinates (taking input from ChainLink VRF) and identifies the closest city, fetchGameGuessesAndFormat: Gathers and formats game guesses for analysis, findWinner: Determines the winner by proximity to the target, generateImageFromCity: Creates unique city images with DALL-E for NFTs

background image mobile

Join the mailing list

Get the latest news and updates