XO Brawl: Tic Tac Toe Fighters is a Roblox game I design and build solo. Players pick a square, then fight for it. Each fight rolls one of two styles at random: a Smash-style platform fighter with damage percent, or a Street Fighter III style duel with health bars. Winning squares wins the board. This page covers the product decisions, the scope calls and the tech that made online play work.

Tic-tac-toe has no tension for anyone past age eight: the best move is known and a draw is the usual result. Fighting games have the opposite problem. They have a high skill ceiling and an intimidating on-ramp. XO Brawl puts the two together. The board gives each match a simple shape that anyone understands in five seconds, and the fights make every move matter. A player who loses the fighting can still win the board by choosing squares well, and a strong fighter still has to think about where to play.
The fight logic is pure Luau with no dependence on physics or timing. The same inputs on the same frame always produce the same result. Both styles, Smash and Street, run on the same simulation core with their own rule sets.
The server owns the truth. Clients predict their own inputs for instant response, then roll back and replay when the server disagrees. A checksum every 30 frames catches any drift between client and server.
One message flow covers a single fight, a drawn-fight tiebreak and a Best of Three series: intro, round start, round end, go, fight end. The style swap between rounds takes about two seconds and updates the HUD, camera and floor together.
Each style has its own CPU brain, so solo players always have a match. A Training mode lets players learn a fighter before putting a square on the line.
An online Street fight ran 1,500 frames with 0 mismatches and 0 resyncs between client and server.
The full Best of Three flow, including the style reroll and round pips, ran end to end against the server bot.
The style roll was sampled to confirm it is uniform and that consecutive rounds are independent.
Best of Three has not had a two-human test yet. The Street CPU has no supers. Spectators who join mid-fight see the next fight, not the current one.
A board game for people who do not play fighters, and a fighter for people who do not play board games, built as a spec-driven product with a testable engine underneath.