Agari

Released June 2026. Still in active development.

A standalone Riichi Mahjong game built from the ground up in Rust with the Bevy game engine, and shipped on Steam for Windows, macOS, and Linux (Steam Deck included). Buy it once, own it, play it offline. No gacha, no battle passes, no premium currency, no account required.

41yaku, every yakuman
4AI play styles
3ways to play
2languages, EN and JP
1wall shared worldwide, daily
0accounts required

Why Build It

My wife grew up playing riichi in Japan, and once she taught me we started playing with real tiles whenever we could get four people to a table. Online was the fallback for the rest of the time, and the existing platforms never quite worked for us, between weak AI with no control over play style, anime-styled presentation that was a real barrier to inviting friends, and a hard requirement on an account and a live internet connection. I wanted a clean table, configurable opponents, private rooms, and a game that works on an airplane.

Three Ways to Play

Singleplayer. Fully offline against three AI opponents, East-only (tonpuusen) or full hanchan. No account, no connection.

Private online multiplayer. Two to four players with AI filling any open seats. Share a room code and sit down. No matchmaking, no accounts. Drops are survivable. A disconnected seat converts to AI mid-round so the table keeps moving, and the player gets their seat back at the next round boundary when they reconnect.

Daily Wall. One round a day, the same wall dealt to every player worldwide, derived deterministically from the date. Resets at UTC midnight. Wordle, for mahjong.

Vertical Integration

The game runs on agari, the open-source Riichi scoring library I wrote first and released as a Rust crate. It handles the entire rule engine, from hand decomposition and yaku detection through fu calculation, shanten and ukeire analysis, and wait recognition, cross-validated against established scoring engines across millions of simulated hands. The game client consumes it directly. There is no third-party game logic anywhere in the stack, so bugs get fixed at the source and anyone can check the math.

The full ruleset ships, including all 41 yaku, every yakuman, han and fu scoring, pao, furiten, ippatsu, rinshan kaihou, haitei, chankan, nagashi mangan, abortive draws, and double and triple ron.

The Table

The centerpiece is a 3D table shot with a telephoto-style camera, a narrow 38° vertical field of view that compresses depth the way a long lens does, so the far player's tiles read at nearly the same size as your own. Hand tiles render as a 2D UI layer to stay crisp at any window size, while discard ponds and called melds stay 3D so they read as physical objects. The central compass keeps scores, round, seat winds, riichi sticks, and remaining tile count in one glanceable place.

Decor is configurable, with multiple table surfaces (felt, fabric, leather), several tile face designs, and color swatches down to black tiles.

AI Opponents

Agari's AI system combines statistical models with hand-crafted heuristics, drawing on published mahjong research and refined through self-play.

At the table that means opponents who weigh tile acceptance, shanten distance, five-block theory, and call and discard decisions, all accounting for visible information across ponds, melds, and dora indicators. Tuned parameters drive four play styles (Offensive, Balanced, Defensive, and Menzen), settable per seat, all at once, or randomized across the table, with an overall difficulty setting on top.

Everything Else In the Box

Design Philosophy

Tech

More