Today I started seriously working on the AI Wolf project, which got funded by the University for January and February.
The basic client code is much simpler than I thought at first, although the documentation (specially in English) is seriously lacking. I should put in the effort to prepare some sample code and a tutorial (maybe a good topic for next Picotachi?)
However, the more I think about the project, the harder it seems to develop a good AI strategy for the werewolf (Mafia) game. The thing is: The goal of this game is to estimate good models for the identity of the other players — however, all the information you have about the other players comes from the outputs that they exhibit.
When playing against humans, this means that the “tells” that rise up from repeated play reflect human biases and instincts. However, this does not necessarily hold for an agent. It is quite trivial to program an agent that acts randomly, or actively acts against common sense. In the end, the only thing that we can rely is that each agent has a fixed win condition (provided that the agent was not programmed to play against its win con – urgh – but then again, there are humans who do that as well). So a very large part of the game becomes estimating and modeling the behavior of other agents with nothing to go from except this same behavior.
Feels like the classic problem of lifting oneself by one’s own bootstraps.
Maybe a way to cut through this Gordian knot is to not focus so much on winning, but rather on displaying human-like, or at least common-sense like behavior? Establish or try to establish “good-practice” rules based on existing human play logs? And after we have a somewhat “human” player, work from that to build players that can create models of other players from games?
Such a hard, interesting problem…