I am trying to find a good approach to create a computer player for the game "Lines" from gamious on Android. The concept of the game is pretty straightforward :
Lines is an abstract ‘zen’ game experience where form is just as important as function. Place or remove Dots to initiate a colourful race that fills a drawing. The colour that dominates the race wins.
The game starts with a drawing (that can be described as a set of "blank" lines, with connection to other lines). Dots of different colour are placed somewhat randomly on the lines. The player get a colour assigned. When the game start, paint start flowing from the dots and filling the (at first blank) lines of the drawing. You win if your colour dominates.
The game gives you different tools to win (the game starts when all of them have been used) :
- [0 to 2] scissor to cut lines
- [0 to 5] additional dot of your own color to place on the drawing
- [0 to 4] enemy dots eraser
- [0 to 3] additional straight lines to connect different part of the drawing
A quick example: the first image is the initial state of a round. "My" colour is the yellow (1 enemy = brown) and I have 4 tools (2 eraser and 2 lines). The second image shows the game running after I used the tools to put my colour in a winning position (yes, we can do better)
If I try to approach this as a classical optimization problem, things get messy pretty fast :
- highly non-linear
- high number of dimensions
AI seems to be the right way to go, but I would like your help to get in the right direction: what would be your approach to create an AI to play this game?
To limit the scope of this question, you can consider that I already have a data structure to represent the game initial state, the use of different tools and the game "physics". What I really want to do is finding how to create an AI which can learn how to efficiently use the tools.
Regarding my experience, I took 2 semesters of AI classes during the last year getting my engineering degree and have used non-linear optimization tools for a while: you can go technical, but I am not fully understand it.