Show HN: Tiao, A two-player turn-based board game (playtiao.com)
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 ] threadSmall 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.
https://en.wikipedia.org/wiki/K%C5%8Dnane
https://boardgamegeek.com/video/482389/shobu/how-to-play-sho...
Nice implementation though, plays pretty well in n my little bitty mobile screen
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.
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 :)
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).
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.
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.
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!
Good fun and a great new way to use a Go board to keep things fresh, thanks for making this.
play it with friends in real life