Show HN: Tiao, A two-player turn-based board game (playtiao.com)

77 points by trebeljahr ↗ HN
Hi HN,

I built this digital version of Tiao, a two-player turn based strategy board game. Think Checkers meets Go. It's free, runs in the browser, has multiplayer, AI, over the board mode and a lot of other neat things. The source is on GitHub (AGPL).

The game was originally designed by my friend Andreas Edmeier. He created the rules and has been playtesting and refining the game design for years. I built the website for it. The core in about 2 weeks using TypeScript, Next.js, Express, Websockets, and MongoDB. Fully dockerized, deployed on a Hetzner VPS with Coolify. Authentication with better-auth. Real-time gameplay, ELO matchmaking, OpenPanel analytics, and a fully functional achievements system.

Play it: https://playtiao.com Source: https://github.com/trebeljahr/tiao

Happy to answer questions about the tech, the game design, or anything else.

My hope is that more people will play this game because I think it is genuinely fun and would be cool to one day see people play this on a Go board or on their phones/computers.

Have a good one.

24 comments

[ 3.1 ms ] story [ 53.2 ms ] thread
Hey! I played against a bot and it was pretty fun.

Small suggestion: too many queues can make it very difficult to build up a network of players at first. I'd suggest, for now, lowering the amount of available time control queues so that two players who happen to be on at the same time are more likely to actually find a game.

It's fun! I play some chess but I am not a natural at this game. I think I need an AI easier than easy haha
I can't beat easy, incredibly addictive game :)
I appreciate the tutorial. I thought it was well done. I'd love to see something like that in some board games I've played.
Clever! I really appreciate how well done the tutorial is, it's just about the easiest game intro I've ever experienced.
Cool concept! I play Go, and it's extremely unnerving that all the good shapes you play in Go are essentially the worst shapes you can play in Tiao :D
Oh wow I am terrible at this

Nice implementation though, plays pretty well in n my little bitty mobile screen

Now I am interested in playing a board game that is not turn-based
I loved this.

A shameless plug for myself and my own investigations into the world of old strategy games - https://tom-dickson.com/blog/trias-game-investigation/ - was where I did an investigation into the game called Trias/ternii lapilli which is like an old version of tic tac toe.

hehe shameless plugs are the best. You often get to find new stuff that way and something of the fun of a community like HN is to get to know about all the interesting stuff that other people are doing. Unless you overdo the shameless plugging ofc.

Also it's funny I remember playing this game you solved, but back with friends in high school during Latin classes haha but without knowing it's name.

Also the algorithm you construct for the AI is pretty similar to what Tiao is using as far as I can tell :)

great game and very nice implementation!
Very fun game! Has this been released before? This is the only place I can find that mentions it.
no, this is new. Still in the process of making pages everywhere + submitting to Boardgames Geek and so on :) also my friend is contacting publishers so maybe this might exist as a real, non-digital thing soon too! (I mean it sorta does already because you can play this with a Go board)
Finally won a game against the Easy bot on the 9x9 board after around 10 tries.

Seems like if you want to force a win, you have to think about how to put your opponent in "Zugzwang" (to borrow a Chess term).

Nice implementation. Out of curiosity, how are you handling multiplayer state sync?

For a board game like this I’d imagine sending move events and letting clients recompute the board locally rather than syncing the whole board every turn. Curious what approach you took.

You can look at the repo to find out the details.

Essentially sending moves over web socket and the server having authority to accept/reject them to prevent cheating moves. Client updates optimistically and rolls back if server rejects/network times out etc.

would be great to have a 'learner' mode where I could take back a move after the computer jumps 5 of my pieces :)

I'd also appreciate if illegal moves highlighed in a slightly less intense color, so we could see they were illegal. At the moment, when I'm hovering over the board, I don't know if a move is legal or not until I click-- and then it is too late!

I thought I was winning and then the bot jumped 5 of my pieces to win D:

Good fun and a great new way to use a Go board to keep things fresh, thanks for making this.

yay :)

play it with friends in real life

A really nice game, just the thing to take your mind off things for a few minutes.
That's really cool I enjoyed playing that and love the look of it too.