RethMatch
RethMatch is onchain tournament for bots, inspired by Pac-Man and Agar.io, built with MUD and hosted on the Reth-powered Odyssey testnet.
Table of Contents
Rules
- The RethMatch competition will run from May 30th 12:00 PM PT to June 1st 9 PM PT.
- Don't exploit bugs in the RethMatch contracts! Save your auditing skills for the Paradigm CTF.
- If you exploit live bugs in the RethMatch contracts, we reserve the right to revert your score and/or disqualify you from winning.
- Instead, report any findings to us via direct message on X. Depending on severity we will award points to your top scoring life at competition end as follows:
- High severity: +25% points
- Medium severity: +10% points
- Low severity: +2.5% points
Mechanics
Code: paradigmxyz/rethmatch
Contract: See contract link in the bottom left 'quick links' section on the game site.
Note: We'll be making balance adjustments to keep the game fun and interesting during the competition. Follow us on X to stay up-to-date.
- A RethMatch map is made of many equal width lines. Players can spawn on any line.
- The diameter of a player is a function of their mass (sqrt).
- Players have a horizontal velocity which they can set the direction of at any time.
- Players can switch lines by jumping up or down. You cannot be on multiple lines at once.
- When players hit the end of a line, they bounce off it.
- Players gain mass by eating food, power pellets, or other players.
- Players can die by being eaten, or by colliding with a wall.
- Food
- Food entities exist only to be eaten.
- Even if you are smaller than them, you can still eat them.
- They spawn randomly as a result of collisions.
- Power pellets
- Power pellets spawn randomly like food at much lower odds.
- Eating one gives you the ability to bounce off walls and consume players of any size for a limited amount of time.
- If you collide with another player who is powered up as a result of recently consuming a power pellet, you will bounce off each other.
- Walls:
- There are two walls per line. Different lines have different wall speeds.
- If you overlap with a wall, you die instantly, unless you are powered up from recently consuming a power pellet.
- Eating other players
- You must be bigger than them (have larger mass) or be powered up as a result of recently eating a power pellet.
- Either overlap with them horizontally, or jump on them from the line above or below.
- Eating other players gives you
min(mass_they_consumed, their_current_mass)
mass.
- This is to discourage players from eating newly spawned players.
- Jumping
- You can only jump at most one line per block.
- Jumping decreases your mass by a constant percentage each jump. Do it sparingly.
- Jumping down from the bottommost line will send you to the topmost line, and jumping up from the topmost will send you to the bottommost.
- Leaderboard/Scoring:
- When you die, your life is given a score based on the total mass consumed during that life.
- Your overall score is the sum of your top 10 lifetime scores.
- Your ranking on the leaderboard will be determined by your overall score and any additional points earned by submitting bug reports.
Building / Authenticating a Bot
To increase the difficulty of sybil attacks and link players with their X (Twitter) usernames, players must first sign in with X and then link their X (Twitter) accounts to an Odyssey address before playing.
Detailed steps are as follows:
• Sign in with X (Twitter)
- Visit the game website and click "LOGIN WITH X TO PLAY"
- Complete the X authentication process.
• Choose an wallet address to link
- Your bot needs an Ethereum wallet with funds on the Odyssey testnet
- The wallet address will be permanently linked to your X account
- ⚠️ Warning: You cannot change this address later, so choose carefully!
• Generate your access signature
- After logging in, click "GENERATE ACCESS SIGNATURE"
- Enter your bot's address when prompted (format:
0x...
)
- Our backend will generate a unique access signature
- Copy this signature - you'll need to submit it on-chain to get started.
• Link your X account to your address on-chain
- Call the
access()
method with the access signature from earlier and your lowercased X username.
- e.g. with cast:
cast send <WORLD_CONTRACT> "access(bytes,string)" <ACCESS_SIGNATURE> <LOWERCASED_TWITTER_USERNAME> --rpc-url https://odyssey.ithaca.xyz
- Once successful, your bot is authorized to play the game.
- 🚨 Important: Once you successfully call
access()
, you can no longer link your X username to another address!
• Step 5: Start Playing
- Your authenticated address can now call
spawn()
and other methods to control a player.
- Dive into the code to get started: paradigmxyz/rethmatch
- You may find it helpful to look through the MUD documentation to understand the game implementation.