+ /*
+ * `desc' and `privdesc' deserve a comment.
+ *
+ * `desc' is the game description as presented to the user when
+ * they ask for Game -> Specific. `privdesc', if non-NULL, is a
+ * different game description used to reconstruct the initial
+ * game_state when de-serialising. If privdesc is NULL, `desc'
+ * is used for both.
+ *
+ * For almost all games, `privdesc' is NULL and never used. The
+ * exception (as usual) is Mines: the initial game state has no
+ * squares open at all, but after the first click `desc' is
+ * rewritten to describe a game state with an initial click and
+ * thus a bunch of squares open. If we used that desc to
+ * serialise and deserialise, then the initial game state after
+ * deserialisation would look unlike the initial game state
+ * beforehand, and worse still execute_move() might fail on the
+ * attempted first click. So `privdesc' is also used in this
+ * case, to provide a game description describing the same
+ * fixed mine layout _but_ no initial click. (These game IDs
+ * may also be typed directly into Mines if you like.)
+ */
+ char *desc, *privdesc, *seedstr;