1. A computer-implemented method comprising: obtaining an image of a game playing surface, and of one or more game pieces on the game playing surface; generating, by one or more computers and based on the image, a rectified representation of the game playing surface; determining, based on the image and from among multiple games of different types, a game of a particular type being played in the image; determining, by the one or more computers and based on a relative arrangement of the game pieces on the rectified representation of the game playing surface, a game play state of the game being played in the image; selecting, based on the image and from among a set of game solvers that each provides solutions for a game of a different type, a particular game solver that provides solutions for the game of the particular type being played in the image; providing data indicating the game play state to the particular game solver that provides solutions for the game being played in the image; in response to providing data indicating the game play state to the particular game solver, receiving a solution for the game being played in the image; and providing, for display, a representation of the solution for the game being played in the image.