Skip to content

Devpanchal37/wall-chess

Repository files navigation

Wall Chess — 3D Quoridor for Android

A polished, offline Quoridor ("wall chess") board game for Android, built with Flutter and a custom, from-scratch 3D renderer written in pure Dart — no game engine, no Unity, no WebView. Race your pawn to the far side of the board while dropping walls to trap your opponent in the maze.

Warm Wood theme Midnight dark theme Ember dark theme

Three built-in themes: Warm Wood (default), Midnight, and Ember.

Features

  • 🎲 Real 3D board — orbit with a drag, pinch to zoom, rendered by a hand-written software 3D pipeline (perspective projection, painter's-algorithm depth sorting, flat Lambert shading) drawn through Canvas.drawVertices. No 3D packages.
  • 🤖 Three AI difficulties — Easy (greedy), Medium (minimax + alpha-beta), and Hard (iterative deepening under a time budget), each running in a background isolate so the UI never stalls. Measured strength: Hard > Medium > Easy.
  • 👥 Pass-and-play — two players share one phone; the board smoothly rotates to face whoever's turn it is.
  • 🎨 Runtime themes — Warm Wood, Midnight, and Ember, with the choice saved between sessions.
  • 💾 Auto-save & resume — every move is persisted; leave any time and pick up exactly where you left off.
  • 📖 In-app How to Play — rules and controls for new players.
  • 🧠 100% offline — no accounts, no ads, no network, no tracking.

How to play

Quoridor is a two-player abstract strategy game. On your turn you either move your pawn one square or place a wall to slow your opponent. First pawn to reach the opposite edge of the 9×9 board wins. You have 10 walls; a wall can never completely seal a player off from their goal.

Controls: tap your pawn to see legal squares → tap one to move. Tap Wall, drag the ghost wall into place, then double-tap the board (or tap Place) to build it. Drag to rotate the camera, pinch to zoom.

Tech highlights

Area Approach
Game engine Pure Dart, immutable GameState, exhaustively rule-tested (jumps, wall path-rule via BFS, win detection)
3D renderer Own Vec3/Mat4 math, orbit camera, code-generated low-poly meshes, ray-cast touch picking
AI Negamax + alpha-beta with a blocking-wall shortlist; isolate-backed so search never blocks the UI
State Plain ChangeNotifier — no heavyweight state-management dependency
Testing ~180 tests including property-based random-playout invariants; visual evidence renders

The engine, renderer, and AI are all pure Dart with zero Flutter imports, which keeps them fully unit-testable.

Build & run

Requires the Flutter SDK.

flutter pub get
flutter run                 # on a connected device or emulator
flutter build apk --release # build an installable Android APK
flutter test                # run the full test suite

flutter run -d windows also works for quick desktop iteration — the app avoids platform-locked APIs.

Project structure

lib/
  core/        immutable game engine (rules, state, path-finding) — pure Dart
  ai/          Easy/Medium/Hard AI + isolate service
  render3d/    custom 3D pipeline: math, camera, meshes, painter, picking
  ui/          screens, HUD, gestures, themes, persistence wiring
  persistence/ auto-save + theme storage
test/          mirrors lib/ ; core rules, AI strength, renderer math, widgets
docs/          rules, architecture (HLD/LLD), UX flows, test plan, decision log

Roadmap

  • Core rules engine + full test suite
  • Custom 3D renderer
  • Playable 2-player pass-and-play
  • AI opponents (Easy / Medium / Hard)
  • Runtime themes (incl. dark modes)
  • 4-player variant
  • Sound, haptics, interactive tutorial, settings
  • Signed release build for the Play Store

License

© 2026 Dev Panchal. All rights reserved.

About

A 3D Quoridor (wall chess) board game for Android — offline vs-AI and pass-and-play, built in Flutter with a custom Dart 3D renderer.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors