Thursday, March 29, 2007

Yay, School

Another great discussion at school:

Instructor:
I agree. You make good points here. How would you approach designing something so sophisticated like a Chess game or Poker?

Me:
Not that I have ever thought about this before… ;-)

I don’t know what goes into a good Chess AI, as I don’t know much about the game (except the rules).

As far as poker, sophistication would be the key. I think this is why it is never done right. It would take a lot of time and energy (money) away from things like graphics to get a poker game right. You have to pick and choose when you make games sometimes, and I think that developers of single-player poker games have always been fighting uphill against the online poker community. If I want to play poker for no money and I am looking for realism, why wouldn’t I pursue an online game at one of the .net sites that are all play money?

That being said, I think that a successful poker game will rely more on a good “story” as opposed to a believable experience. What I am thinking of is somewhere between Madden’s Superstar mode (where the player manages certain attributes for the avatar so that it has a tendency to perform a certain way during gameplay AND simulation), and the NES’s Vegas Dream, where certain events outside of your avatar’s control influence the “action”.
The AI would ideally need to mimic the spontaneity of real-life players without being cursed with “stupid” decisions that are supposed to be signs of an “aggressive” player. The problem with today’s games is that players expect Gus Hansen to be modeled in the game world as a guy who will push “any two cards”. Any person who plays and pays attention to poker knows that Mr. Hansen takes more into account than just that. He takes in evidence from his environment: the other players’ signs of strength/weakness, his cards, and his position at the table relative to the “dealer”. When he pushes mediocre cards, he usually knows he can push a person to fold.

I learned about the way Lionhead Studios pursued AI in Black and White, and I like their approach to it. [http://www.gameai.com/blackandwhite.html]Basically, their creatures “learned” from the user how to act. They would basically rate each experience in a database of ratings.

Here’s the basic principle:
Eat a rock – “ouch”, -1 point.
Eat a sheep – “tasty”, +1 point, “master slapped me afterwards”, -2 points.
Eat a guy from the other tribe – “yum”, +1 point, “master scratched my ear”, +2 points

I can relate this to poker like this:
Pre-flop hand, points:
A-A - +20
K-K - +16
Q-Q - +16
J-J - +12
A-K suited - +12
A-K off-suit - +11
A-J off suit - +6
Q-J off suit - +6
J-T suit - +8
2-3 suited - -10
2-9 off - -27

You can also have number ratings for things like aggression, player-reading, position play, odds knowledge, etc. For example, an aggressive player might raise with the more mediocre hands before the flop occasionally. Any sort of resistance and he is willing to drop the hand unless there is major improvement after the flop.

Also, priorities can be assigned to different aspects of the game. A player with high odds knowledge might count on his player reading skills more because that is his style of play.

Obviously this would take a lot of work, trial, and error. You would have to do a lot of tinkering to get the bots to be that nice mix of computer logic (which is a desirable poker trait), and spontaneity. I think it would be worth it though. This would also prove to be something that you can have “learning” AI with. Whether in a long tournament or a season, an AI bot can learn a little bit about what a player does in a given situation, and factor that information into its database.

No comments:

Post a Comment