Dominion AI: Update 6 (with added thief)

June 18, 2012

Righteo, here’s the new version.

If somebody could be as kind as to play it and keep an eye out for bugs, let me know.

Please note: the AI is sometimes slow. For some reason, it finds weighing up the pros and cons of playing a thief card quite difficult. I’ll try and fix this in the next update.



Dominion AI: Update 5

June 6, 2012

Short update: while there isn’t a new version to play, I have made a lot of progress now that our mini-heatwave has passed. Specifically, the “max random buy” algorithm now plays action cards in sensible way, and can string cards together into combos. And I’ve managed to avoid hard coding any card priority lists, etc. Instead, it randomly simulates the effects of playing different cards and picks the one which has the best pay-off at the end of it’s turn. This has a few weaknesses:

  • the AI wouldn’t know what to do with attack cards, as it doesn’t place any value on making the other players pick up curses
  • it would never play a chapel, as there’s no immediate pay-off that turn.
  • now and then, it plays a smithy instead of a village (it should always play village first)

I’m currently in the process of implementing the thief card, which

  • makes the Big Money strategy less effective.
  • forces me to think about how I’m organising my code, as thethiefcard is more complicated
  • means I can also add the moat card, which is a nice and simple card. And also cheap!

Hopefully i can get the new version up sometime later this week.



Developing Dominion: Day 4

May 26, 2012

(well, it’s really day 5, but post 4).

Anyway, a few small updates. Hopefully you can play it here.

  • The AI is still stupid. And it never takes advantage of any bonus actions.
  • I’ve implemented most of the “simple” core cards. If I’ve missed anything obvious, let me know.
  • I’ve started adding in some flexibility to my code so I can implement cards with “small print.” So far, the only one that I’ve added is the witch.

Plans for the next update mainly involve creating some simple algorithms that will allow the AI to play its current hand sensibly.
ie, instead of picking an action card from its hand at random, it should first play cards such as village which grant it addition actions. It should also aim to maximise the amount of money it will have in the buy phase. This is a pretty simple heuristic, although it doesn’t place any value on making other players pick up curses, or gaining the ability to buy more than one card.