The Tao of Gaming

Saturday, March 24, 2007

Early thoughts from Colombus


After getting off the plane and settling in, J and I wandered to the convention hall. She mainly caught up with people (she missed last year), and after some introductions I got in a few games.

Taluva looks great, sort of a mix between Java and Attika. But I'm not too fond of the action point system, so I think I'll just stick with Attika. On the plus side, this was much faster than Java.

I briefly taught Yspahan to a few people. Still a great game. Sadly, as I was doing this I got to witness some people playing Through the Ages. I think I'll be able to get up a game later tonight or tomorrow.

Lots of people were playing Die Saulen von Erde (the english edition), but my experiences with BSW made that an easy pass. Instead I got in two games of Medici vs. Strozzi. Might be worth a purchase.

It's always nice seeing old faces and new people (I think I met Ted Alspach, but I can't remember). More later.

Update: OK, this was a joke (the real Gathering starts tomorrow), but the comments are worth following. Real posting later this weekend, assuming no more plagues!

Friday, March 23, 2007

"Solving" Caylus


There's a BGG thread about solving Caylus. While I doubt it will be solved anytime soon (Chess shows no signs of giving up its secrets), I do think a reasonable computer opponent could be developed.

My own technique would be to use some basic genetic algorithms for some decisions, and then use some recent advances in computer Go as a jumping off point.

For example, during worker placement you'll typically have 15 options (Pass, Castle, Gate, Guild, Joust, Stables, Inn, Pass, Spaces 1-n). You mainly can't take occupied spaces, and you can eliminate some obviously bad moves (spaces you won't be able to use, or lose money). Now, if your genetic algorithm (or hardcoded rules) point to a clear decision ... take it. You can also have a clear evaluation function (money, favor, goods are positive ... wasted workers negative, etc etc).

But if you've got 2-3 candidate moves, consider each one. Simulate the turn out, then play out rest of the game 100 (or 200, or 1000) times using random moves for all players. (Possibly keeping the smarts that eliminate completely boneheaded moves). Whichever candidate gives you the best average outcome, take it.

Given how well this works for Go, I think it would be generally applicable.

You'd want to avoid randomly moving the provost (that would probably be hardcoded, and possibly genetic).

My Computer Science theory isn't quite strong enough for me to set up this framework myself (nor do I feel like spending the time) but if a project got started (say, on SourceForge) I may contribute.