\input texinfo
@setfilename xcdesign.info

@c @set DOUBLEDENSITY
@clear DOUBLEDENSITY

@settitle Designing Games with Xconq
@setchapternewpage odd

@ifinfo
This file documents the design of games for @i{Xconq}.

Copyright (C) 1987, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998 Stanley T. Shebs

Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.

@ignore
Permission is granted to process this file through Tex and print the
results, provided the printed document carries copying permission
notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual).
@end ignore

Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided also that the
section entitled ``GNU General Public License'' is
included exactly as in the original, and provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions,
except that the section entitled ``GNU General Public License'',
and this permission notice, may be included in translations
approved by the Free Software Foundation instead of in the original
English.
@end ifinfo

@c This is one way to make a double-density printout.  Another
@c way is to use the mpage utility on postscript.
@c
@c @ifset DOUBLEDENSITY
@c @iftex
@c @magnification = 833
@c @smallbook
@c @c from @afourpaper:
@c @global@tolerance=700
@c @global@hfuzz=1pt
@c @setleading{12pt}
@c @global@parskip 2pt plus 1pt
@c @global@vsize= 65@baselineskip
@c @advance@vsize by @topskip
@c @global@hsize= 20cm
@c @global@outerhsize=@hsize
@c @global@advance@outerhsize by 0.5in
@c @global@outervsize=@vsize
@c @global@advance@outervsize by 0.6in
@c @global@pagewidth=@hsize
@c @global@pageheight=@vsize
@c @end iftex
@c @end ifset

@titlepage
@sp 6
@center @titlefont{Designing Games with Xconq}
@sp 4
@center The Penultimate Strategy Game
@sp 4
@center Version 7.2
@sp 4
@center April 1998
@sp 5
@center Stanley T. Shebs
@page
@vskip 0pt plus 1filll
Copyright @copyright{} 1987, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998
Stanley T. Shebs

Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.

Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided also that the
section entitled ``GNU General Public License'' is
included exactly as in the original, and provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions,
except that the section entitled ``GNU General Public License'',
and this permission notice, may be included in translations
approved by the Free Software Foundation instead of in the original
English.
@end titlepage

@iftex

@headings off
@everyheading @thistitle @| @thischapter @| @thispage
@everyfooting Version 7.2 @| April 1998 @| (printed @today{})

@end iftex

@ifinfo

@node Top, , (dir), (dir)
@top Top

This manual is a full description of how to design games for @i{Xconq}.
We will assume that you are already familiar with playing games in
@i{Xconq}; if not, you should try a few different games in the standard
library, so as to get more of a feel for the game system.

@menu
* Introduction::
* Game Design::
* Reference Manual::
* Hacking Xconq::
* Summary of GDL Syntax::
* Permuted Index of GDL Symbols::
* Glossary::
* License::
* Index::
@end menu

@end ifinfo

@node Introduction, Game Design, , Top

@chapter Introduction

In this manual, you'll learn how to design new kinds of games with
@i{Xconq}.  @i{Xconq} has been designed to support the use of a variety
of techniques to design, construct, and test your game idea.  These
techniques range from text file editing to online painting; in most
cases, you will use a combination of techniques to build a complete
game.

As the person customizing @i{Xconq}, you will be called the
@dfn{designer}.  This term also indicates the primary activity, which
will be to Design The Game.  The capabilities described in this manual
are merely tools; it is up to you the designer to exercise discretion
and judgement in using them.

You design games using @i{Xconq}'s Game Design Language (GDL).  GDL is
@i{Xconq}'s common language for defining all parts of a game, from the
entry in the menu that players select games from, down to the last tiny
detail of a saved game.  GDL resembles Lisp, although (at the present
time) it is not a procedural language; there are no functions and very
few control constructs.  Instead, the contents of a file guide the
creation or modification of @i{Xconq} objects representing types,
tables, units, and so forth.  While a game is being played, @i{Xconq}
uses this data to decide what to do and what to allow players to do.
Players never actually see GDL directly.

In this manual, ``you'' always means you the designer, and players will
be referred to as ``players'' or ``users''.  The distinction is
important; as the game designer, you will encounter and deal with many
technical issues relating to the inner workings of @i{Xconq}, but if you
master those issues, your players will see only a fun game to play.

A final caveat before plunging in: @i{Xconq} is an experiment in the
design and construction of configurable games.  This means I have had
limited prior art on which to build, and there are lots of odd corners
that have never been tested or even thought about.  In this spirit, I
would like to hear about weird cases, and ideas for how to handle them.

Chapter 1, ``Designing Games with Xconq'' is an explanatory guide for
building and modifying @i{Xconq} game designs, using both Game Design
Language (GDL) and online editing tools.

Chapter 2, ``Reference Manual'' is the complete definition of GDL.  It
includes the syntax and semantics of all parts of the language.

Since @i{Xconq} is still evolving, it may be necessary to extend it in
order to accomplish a desired game design.  Chapter 3, ``Hacking Xconq''
describes the general architecture of @i{Xconq}, and how to extend the
basic program.  This chapter also includes a rationale for the major
design decisions, and some ideas for future development.

@include design.texi

@include refman.texi

@include hacking.texi

@node Summary of GDL Syntax, Permuted Index of GDL Symbols, , Top

@appendix Summary of GDL Syntax

@include syntax.texi

@node Permuted Index of GDL Symbols, Glossary, Summary of GDL Syntax, Top

@appendix Permuted Index of GDL Symbols

@include syms.texi

@node Glossary, License, Permuted Index of GDL Symbols, Top,

@appendix Glossary

@include glossary.texi

@node License, Index, Glossary, Top

@include gpl.texi

@node Index, , License, Top

@appendix Index

@printindex fn

@contents

@bye
