This work develops a theory of game semantics, a setting for modelling and reasoning about sequential programming languages, suitable for interpreting higher-order functional languages with a rich type structure. It applies it to construct a fully abstract model of the metalanguage FPC.