Hey there again. Let's push back the fog of uncertainty a little bit. I may have an answer for the curious people here. Is a search-style tactical AI feasible for civ?
Yup. More or less.
That's how things look, anyway. I've put my dev skills towards the problem and learned a lot (worth, I tell myself

). So here's what's up:
- I haven't been crushed by combinatorics yet (yay)
- I'm actually getting plays that... make sense. It feels weird.
- Adding more pieces doesn't seem to have that big of an effect on practicality. There is a "bulge" in the game tree around the middle of your turn. I think more pieces mostly just add a bunch of useless moves to the bulge and you can cut right through it. At least I've been able to with pretty sloppy pruning at 8+ pieces per side.
I don't have it set up where I can actually play against it yet, but it looks promising. There is still stuff that needs doing, primarily a heavier, "proper" evaluation that's more fine-grained. Some important stuff really depends on that. I don't know what kind of playing strength to expect, but it almost certainly will never throw away units or hp pointlessly. I wonder if I should get it to a state where other people can play against it?
Lastly, I have some comments on implementation if anyone's into that
- Transposition tables are amazing. You NEED to detect the same position and not search it again. Otherwise it slows down your search by a factor of crazy. The more depth, the more crazy. Like, at depth 4 it's 20 times slower. Past that I don't even know because I don't hate my CPU.
- Incremental board state. ie, make moves and undo moves. Use a Zobrist hash and it's pure synergy with a transposition table. Increment position, increment hash, directly look up TT entry that is the node in the game tree. You can do like a million of these per second.
- All in all, getting around 100k nodes per second for civ seems reasonable. Way more than I initially guessed. It's not chess speed where it's more like 1.5M per core, but chess has a
much smaller board state, to where you can have 64-bit bitboards. Then you abuse SSE instructions and the pieces have lots of sliding moves, etc.
- Incremental board state for civ is
really complicated. If you want to be efficient and avoid the most work possible there is a hell of challenges awaiting you

Because remember you need to play
backwards as well as forwards.