A competitive 2D multiplayer platformer shooter built on Initia blockchain. Fast-paced PvP matches with on-chain weapon ownership, cosmetic NFTs, and verifiable match results — all with invisible blockchain UX via auto-signing.
- Project Name: MoveShot
MoveShot is a free-to-play competitive 2D platformer shooter where players battle in best-of-3 PvP matches (30 seconds per round) with 5 weapon types, arena shrink mechanics, and aerial sword slash combat. The game runs on a dedicated MoveVM Minitia rollup, recording match results on-chain via server-signed attestation while keeping all real-time gameplay off-chain at 60Hz. Players truly own their weapon skins and character cosmetics as Move resources that can never be duplicated — and they never see a wallet popup during gameplay.
-
The Custom Implementation: MoveShot features a deterministic game simulation engine shared between client and server, Colyseus.js multiplayer with client-side prediction, 5 weapon types (Pistol, Shotgun, Sniper, Rocket Launcher, SMG) as on-chain Move NFTs with mutable provenance stats, server-signed match attestation with on-chain verification, and a pixel art UI inspired by competitive gaming terminals.
-
The Native Feature: Auto-signing (Ghost Wallet) eliminates all wallet popups during gameplay. Players approve a single session transaction that grants authz + feegrant to a derived Ghost Wallet. All subsequent in-game transactions — match result recording, weapon equipping, cosmetic changes — execute seamlessly in the background. This is critical for a competitive shooter where a 1-second popup would be fatal to gameplay flow.
- Prerequisites: Node.js 20+, pnpm 9+, Docker Desktop, Go 1.22+
- Setup: Clone repo, run
pnpm install, thenweave initto deploy your Minitia rollup (follow prompts, save your chain_id) - Start services:
weave rollup start -d, thenpnpm --filter server devandpnpm --filter client dev - Play: Open two browser tabs to
http://localhost:5173, connect wallets, enable auto-sign, and click Quickplay to match against each other
| Layer | Technology |
|---|---|
| Game Engine | Phaser 3 |
| Frontend | React + Vite + TypeScript |
| Game Server | Colyseus.js (WebSocket, 60Hz) |
| Blockchain | MoveVM Minitia Rollup |
| Wallet | InterwovenKit + Auto-Signing |
| Hosting | Cloudflare Pages + Workers |
┌─────────────────┐ WebSocket ┌──────────────────┐ RPC/REST ┌────────────────┐
│ Game Client │◄──── 60Hz ────────►│ Game Server │◄───────────────►│ Minitia Rollup │
│ Phaser 3 + │ (Colyseus) │ (Colyseus.js) │ Server-signed │ (MoveVM) │
│ React + IWKit │ │ Authoritative │ attestation │ │
└─────────────────┘ │ Simulation │ │ Contracts: │
└──────────────────┘ │ - match_registry│
│ - weapon_nft │
│ - cosmetic_nft │
│ - player_profile│
└────────────────┘
MoveShot/
├── apps/client/ # React + Phaser 3 game client
├── packages/sim/ # Shared deterministic simulation (60Hz)
├── services/server/ # Colyseus multiplayer game server
├── contracts/arena/ # Move smart contracts
├── .initia/ # Hackathon submission metadata
└── context/ # Project documentation & specs
MIT