Skip to main content

Tiao

Tiao (跳, "jump") is an open-source multiplayer board game platform. Two players place and jump pieces on a 19x19 board, competing to be the first to capture 10 enemy stones.

The Game

Players take turns placing pieces or jumping over enemy pieces to capture them:

  Place a piece:          Jump to capture:

. . . . . . . . . . . . . . .
. . . . . . W . . . . . . . .
. . W . . . . B . . --> . . x . .
. . . . . . . . . . . . . W .
. . . . . . . . . . . . . . .

Jumps can chain -- keep jumping with the same piece if more captures are available. First to 10 captures wins.

Features

  • Local play -- two players on the same device
  • Computer opponent -- play against an AI
  • Online multiplayer -- real-time games over WebSocket
  • Matchmaking -- automatic opponent pairing
  • Friends and invitations -- add friends, invite them to games
  • Game history -- browse your past matches
  • Accounts -- optional signup with profile pictures, or play as a guest

Quick Start

Prerequisites: Node.js 22.x, MongoDB, npm

git clone https://github.com/your-org/tiao.git
cd tiao

# Install all dependencies
npm install
cd server && npm install && cd ..
cd client && npm install && cd ..

# Set up environment
cp server/.env.example server/.env
# Edit server/.env with your MONGODB_URI and TOKEN_SECRET

# Start development servers
npm run dev

Open http://localhost:3000. The Vite frontend runs on port 3000 and proxies API/WebSocket requests to the Express backend on port 5005.

Project Structure

tiao/
├── client/ React + Vite + Tailwind frontend
├── server/ Express + WebSocket backend
├── shared/ Pure TypeScript game engine + protocol types
├── e2e/ Playwright end-to-end tests
├── docs/ Markdown documentation (source for this site)
└── docs-site/ Docusaurus documentation site