I'm currently trying to make a Othello-playing program. My biggest concern at the moment is the evaluation function of game positions. Currently my evaluation function is quite primitive...move counting, looking for corner plays etc.
I tried to read a bunch of papers, Michael Buro's stuff especially, but I failed horribly. It seems as I miss some fundamental knowledge. I neither get to understand how patterns work nor how to create them.
As far as I understand they are used to rate constellations of rows, columns, edges, 3x3 corners etc.
I'd highly appreciate if someone could provide me the following information:
- What data structure has a pattern?
- Given a certain game position how would I make use of this pattern to evaluate the situation?
I think if I get answers to those questions, I'll probably be able to understand the following aswell, but I'll mention them anyway.
- How are patterns created? I saw that an approach is to assign static values to different squares of the game board, dependant of their current properties(color, stability). But then there is some iterative algorithm called.
- So are patterns created on the fly e.g. while searching a tree? Or computed before and used like a mask?
I hope this question isn't too broad, but I got the impression that creation and use of patterns is some obvious common knowledge, that everyone does almost the same way, like use of alphabeta.