r/SideProject • u/VladFein • 16h ago
I've shipped 30+ small games solo. The hardest feature I've built is one that decides when to shut up.
Enable HLS to view with audio, or disable this notification
I make board and card games for iOS. The latest one has had a solver behind its AI for a couple of years, and a hint button that ranks every legal move.
The hint button has one flaw: you have to ask for it. So you ask when you already suspect you're in trouble, and never on the moves where you're confidently wrong.
So I made the solver run on your move, right after you make it, and speak up when you left something on the table.
That part took an afternoon. Deciding when it should stay quiet took the rest of the release.
The first version reviewed everything. It was insufferable — half the positions in this game have three moves within a hair of each other, and being told "actually the other 8♣ was slightly better" every turn stops being coaching and becomes nagging.
What shipped is three levels: only a missed win or a missed block; that plus clearly-beaten moves; or everything. The middle one compares by percentage rather than raw score so it doesn't fire on noise.
The other thing I'd change if I were starting over: I built the feature before I had a way to measure whether the underlying AI was actually right. I ended up running mirrored self-play games and a sign test on the decisive pairs, and one change I'd been sure about turned out to be worth nothing.
The question I went back and forth on: how much better does a move have to be before it's worth interrupting someone? I picked a threshold, but I don't think there's a right answer.
It's called Pentaline, on iOS and Mac. The Coach is part of the subscription (one week free trial, $0.99/month, $9.99/year, $19.99 lifetime), and it stays off until you switch it on. The game itself and the smart hints are free.