The most significant characteristic of General Game Playing is that players do not know the rules of games before those games begin. Game rules are communicated at runtime, and the players must be able to read and understand the descriptions they are given in order to play legally and effectively. In General Game Playing, games are defined in a formal language known as GDL. GDL is a logic programming language. (See the Appendix.) It is similar to other logic programming languages, such as Datalog and Prolog, except that (1) its semantics is purely declarative, (2) it has restrictions that assure that all questions of logical entailment for any description in the language are decidable, and (3) it includes some reserved words that specialize it for the description of games. This chapter is an introduction to GDL and the issues that arise in using it to describe games. We start with an introduction to the game model underlying GDL; we then define the language; we look at a sample game description; and we look at the use of this description in simulating a match of the game. We then talk about additional features of games that ensure that they are interesting. Finally, we summarize the prefix syntax for GDL used in most GGP competitions The GDL model of games starts with entities and relations. Entities represent objects presumed or hypothesized to exist in the game. Relations represent properties of those objects or relationships among them. our examples here, we refer to entities and relations using strings of letters, digits, and a few non-alphanumeric characters (e.g. "_"). For reasons described below, we prohibit strings beginning with upper case letters; all other combinations are acceptable. Examples include x, o, 123, and white_king. The set of all entities that can be used in a game is called the domain of the game. The set of all relations in a game is called the signature of the game. In GDL, domains and signatures are always finite (albeit in some cases very, very large). The arity of a relation is the number of objects involved in any instance of that relation. Arity is an inherent property of a relation and never changes. A game schema consists of a domain, a signature, and an assignment of arities for each of the relations in the signature. Given a game schema, we define a proposition to be a structure consisting of an n-ary relation from the signature and n objects from the domain. In what follows, we write propositions using traditional mathematical notation. For example, if r is a binary relation and a and b are entities, then r(a,b) is a proposition. The propositional base for a game is the set of all propositions that can be formed from the relations and the entities in the game's schema. For a schema with entities a and b and relations p and q where p has arity 1 and q has arity 2, the propositional base is {p(a), p(b), q(a,a), q(a,b), q(b,a), q(b,b)}. In GDL, propositions are usually partitioned into disjoint classes, viz. base propositions and effectory propositions (more commonly called actions). Base propositions represent conditions that are true in the state of a game, and effectory propositions represent actions performed by game players. (Later, in order to deal with partial information, we add sensory propositions (or percepts) to this partition. For now, we ignore percepts.) Before proceeding, let's look at these concepts in the context of a specific game, viz. Tic Tac Toe. As entities, we include white and black (the roles of the game), 1, 2, 3 (indices of rows and columns on the Tic Tac Toe board), and x, o, b (meaning blank). We use the ternary relation cell together with a row index and a column index and a mark to designate the proposition that the cell in the specified row and column contains the specified mark. For example, the datum cell(2,3,o) asserts that the cell in row 2 and column 3 contains an o. We use the unary relation control to say whose turn it is to mark a cell. For example, the proposition control(white) asserts that it is white's turn. In Tic Tac Toe, there only two types of actions a player can perform - it can mark a cell or it can do nothing (which is what a player does when it is not his turn to mark a cell). The binary relation mark together with a row m and a column n designates the action of placing a mark in row m and column n. The mark placed there depends on who does the action. The 0-ary relation noop refers to the act of doing nothing. This is my first gameplay for Microsoft Flight Simulator 2020 with our Cambodia map from Bing Map. Everyone can enjoy my video