Because Chess and Go have such large game trees from top to bottom, modern computers cannot fully 'brute force' a game tree. You must have some way to cut the game tree off before terminal state, and search for the best possible result some other way. This requires and Evaluation function - "score the board."
A good eval function is never as good as going deeper into the tree. eval needs to be quick.
Eval function Criteria
lose < score < win
Move Generation - Some heuristics to throw away terrible moves, only sensible moves -