Crossy Road
A wild 3D blockchain game where the player risks it all in traffic, every close call and high score lives forever on the Monad blockchain.
Videos
Description
Crossy Chain
A blockchain-enabled 3D arcade game where players guide a chicken across lanes of traffic, avoiding vehicles to earn high scores that are permanently recorded on the Monad blockchain using MetaMask Smart Accounts.
Built for the MetaMask Smart Accounts × Monad Dev Cook-Off Hackathon.
Overview
Crossy Chain is a Web3-powered remake of the classic Crossy Road concept. It combines fast-paced, skill-based gameplay with blockchain innovation through account abstraction and gasless user operations. Every score is submitted automatically to a smart contract on the Monad Testnet using MetaMask’s Delegation Toolkit, making on-chain gaming smooth and accessible.
Key Features
3D gameplay built with Three.js
MetaMask Smart Account integration via the Delegation Toolkit SDK
On-chain score storage on the Monad Testnet
Retro pixel-art visuals using Press Start 2P font
Real-time Smart Account balance display
Automatic Smart Account deployment on first transaction
Technology Stack
Frontend
React (TypeScript)
Three.js for 3D rendering
Viem for blockchain interactions
Shadcn/UI + Tailwind CSS for interface
Wouter for routing
Blockchain
Monad Testnet (Chain ID 10143)
MetaMask Delegation Toolkit for Smart Accounts
Alchemy Bundler for ERC-4337 operations
Solidity 0.8.20
Hardhat environment
Smart Contract
ScoreStore.sol
– A simple, gas-efficient contract for storing player scores.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract ScoreStore {
mapping(address => uint256) public scores;
event ScoreSaved(address indexed player, uint256 score, bool isNewHighScore);
function saveScore(uint256 _score) external {
bool isNewHighScore = false;
// Only update if it's a new high score
if (_score > scores[msg.sender]) {
scores[msg.sender] = _score;
isNewHighScore = true;
}
// Always emit the event (useful for analytics or tracking)
emit ScoreSaved(msg.sender, _score, isNewHighScore);
}
function getScore(address _player) external view returns (uint256) {
return scores[_player];
}
}
Only accepts higher scores to prevent manipulation
Emits events for off-chain indexing
Transparent and auditable
How to Play
Click “Connect Wallet” to create a MetaMask Smart Account.
Fund the account with MON tokens on Monad Testnet.
Use arrow keys to move the chicken and dodge traffic.
Each successful crossing increases your score.
When the game ends, your high score is automatically submitted on-chain.
View your transaction on the Monad Explorer.
Progress During Hackathon
Deployed the ScoreStore smart contract to record player high scores on-chain. Integrated wallet connection and Smart Account creation for gasless gameplay, with automatic on-chain score submission and a fallback to the user’s MetaMask EOA wallet if the Smart Account transaction fails.
Tech Stack
Fundraising Status
No Funding Yet