After playing way too much Angry Birds, I started to observe my own strategies. It turns out that I developed a very specific approach to getting 3 stars on each level.
That made me wonder about the challenges of developing a machine learning system that would be able to play Angry Birds. Interacting with the game and launching the birds is trivial. But one question that I had is about the "building blocks" of the system.
Machine learning systems seem to work with simple concepts or understanding about the problem. This is often encoded as features as inputs. So it seems that the system needs to have the ability to understand some high level concepts to generate a strategy.
Is this true? Also, what are the challenges or difficult parts of developing such a system?
Here's some clarification. Getting 3 stars is a difficult problem because you have to maximize the points. This can be done in two non-exclusive ways: 1) Minimizing the number of birds used (you get 10,000 points for every unused bird). 2) Maximized the destruction of glass, wood and other objects. Each object destroyed gives you points. It is possible to destroy more than 10,000 points worth of objects with a single bird.
Here's a little more explanation about "high level concepts". In order to maximize the points described above, you need to use the special powers of each bird. So, that means launching different birds with different trajectories, depending on the layout of the map. And, while playing I develop a strategy that destroys certain areas with certain birds in a certain order.
It seems that without an understanding of how to use each bird to destroy a specific area the system could not learn to get 3 stars. So, how do you manage and encode something like that? How do you ensure that the system can learn these high level concepts?