Inspiration
Online chess connects people, but loses the feeling of sitting across a real board. Physical chess has that presence, but requires both players to be in the same room. We wanted both: a chessboard on your table, with your opponent anywhere.
What it does
AirChess places an interactive 3D chessboard on a real surface through your phone’s camera. Walk around it, tap pieces, see legal moves, and play locally, against Stockfish, or against a friend online.
Stockfish hints appear directly on the board as arrows. Optional view sharing lets opponents see each other’s rendered boards, including the room around an AR board. It shares no microphone audio or other apps.
Devices without AR can use the 3D board. A browser client also supports local, computer, and online play.
How we built it
We built the Android app with Kotlin, Jetpack Compose, ARCore, SceneView, and Filament. The chess rules remain independent of rendering, with tests covering special moves, game outcomes, and undo.
Stockfish runs locally for computer play and hints. A Ktor WebSocket server validates online moves and manages clocks. WebRTC carries optional board-view video between players.
We are extending the app to iOS through Kotlin Multiplatform, sharing the chess logic, game state, networking, and Compose UI while using ARKit and RealityKit for native rendering.
Challenges we ran into
The hardest part was keeping three things aligned: a valid chess position, animated 3D pieces, and a board anchored in the real world. Castling, en passant, promotion, captures, and undo all had to produce the correct visual result.
Cross-platform work added different rendering APIs, camera permissions, engine integration, and lifecycle behavior. Testing real screens also exposed problems that unit tests missed, including a clipped promotion option.
Accomplishments that we're proud of
We built a working Android AR chess experience with complete rules, animated moves, local Stockfish analysis, online multiplayer, and optional board-view sharing.
The same online game works across Android and the browser. The rules and application state now also compile for iOS.
What we learned
AR works best when rendering follows game state rather than owning it. That separation made special moves easier to test and enabled the multiplatform work.
What's next for AirChess
Native iOS verification, test AR placement on an iPhone, and TestFlight distribution. Then focus on placement reliability, performance, and making the first game easier to start.
Log in or sign up for Devpost to join the conversation.