Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 74fbd0eb33bb08f719b79951bc4e329e > files > 81

xconq-7.5.0-1.20050612.5mdv2009.1.i586.rpm

<HTML>
<HEAD>
<!-- This HTML file has been created by texi2html 1.39
     from ./xcdesign.texi on 12 June 2005 -->

<TITLE>Designing Games with Xconq - Side and Player Forms</TITLE>
</HEAD>
<BODY>
Go to the <A HREF="xcdesign_1.html">first</A>, <A HREF="xcdesign_33.html">previous</A>, <A HREF="xcdesign_35.html">next</A>, <A HREF="xcdesign_61.html">last</A> section, <A HREF="xcdesign_toc.html">table of contents</A>.
<HR>


<H2><A NAME="SEC153" HREF="xcdesign_toc.html#SEC153">Side and Player Forms</A></H2>

<P>
<U>Form:</U> <B><CODE>side</CODE></B> <I>[ id ] properties...</I><P>
<A NAME="IDX84"></A>
This form has the effect of declaring a side to exist.  If the number or
symbol <VAR>id</VAR> is supplied and matches that of a side that has already
been created, then the properties will modify the pre-existing side.
Otherwise a new side object will be created, with a arbitrarily-chosen
numeric id ranging between 1 and <CODE>sides-max</CODE>.  If the given
<VAR>id</VAR> is a symbol, then the side's numeric id will be bound to that
symbol.

</P>
<P>
<U>GlobalVariable:</U> <B><CODE>sides-min</CODE></B> <I>n</I><P>
<A NAME="IDX85"></A>
The minimum number of sides that are required for a game. A new game 
cannot be started with fewer than <CODE>sides-min</CODE> sides. Defaults to 
<CODE>1</CODE>.

</P>
<P>
<U>GlobalVariable:</U> <B><CODE>sides-max</CODE></B> <I>n</I><P>
<A NAME="IDX86"></A>
The maximum number of sides that are allowed in a game. This is a limit 
which is set by the designer of the game module. <I>Xconq</I> also has a 
built-in upper limit (<CODE>MAXSIDES</CODE>), and this is typically <CODE>15</CODE>. 
Defaults to <CODE>MAXSIDES</CODE>.

</P>
<P>
<U>GlobalVariable:</U> <B><CODE>sides-wanted</CODE></B> <I>n</I><P>
<A NAME="IDX87"></A>
The ideal number of sides for a game. This is the initial number of sides 
that a new game will have during side setup. This should be between 
<CODE>sides-min</CODE> and <CODE>sides-max</CODE>, inclusive. Defaults to <CODE>2</CODE>.

</P>
<P>
<U>Form:</U> <B><CODE>side-defaults</CODE></B> <I>properties...</I><P>
<A NAME="IDX88"></A>
This form sets the defaults for all newly-created sides declared
subsequently.  These defaults will be set before the new side's
properties are interpreted.  This form has no effect on existing sides
or on side declarations that modify existing sides.

</P>

<UL>
<LI><A HREF="xcdesign_34.html#SEC154">Side Name Properties</A>
<LI><A HREF="xcdesign_34.html#SEC155">Side Class</A>
<LI><A HREF="xcdesign_34.html#SEC156">Status in Game</A>
<LI><A HREF="xcdesign_34.html#SEC157">Side Relationships</A>
<LI><A HREF="xcdesign_34.html#SEC158">Numbering Units</A>
<LI><A HREF="xcdesign_34.html#SEC159">Side-Specific Namers</A>
<LI><A HREF="xcdesign_34.html#SEC160">Side Tech Levels</A>
<LI><A HREF="xcdesign_34.html#SEC161">Side Views</A>
<LI><A HREF="xcdesign_34.html#SEC162">Interaction</A>
<LI><A HREF="xcdesign_34.html#SEC163">Doctrine</A>
<LI><A HREF="xcdesign_34.html#SEC164">Other Side Properties</A>
<LI><A HREF="xcdesign_34.html#SEC165">Independent Side</A>
<LI><A HREF="xcdesign_34.html#SEC166">Players</A>
<LI><A HREF="xcdesign_34.html#SEC167">Rules of Side Configuration</A>
</UL>



<H3><A NAME="SEC154" HREF="xcdesign_toc.html#SEC154">Side Name Properties</A></H3>

<P>
If the game design allows, all of these properties can be set at startup
by the players (see &#60;side config&#62; and below).  Omission of some of these
results in suppression or substitution, depending on the interface and
the situation.  Omission of all name properties allows the side to go
unmentioned, which is useful when the concept of "side" is useless or
confusing to a player (as in some adventure games).  All of these
properties may be set at any time by any player.

</P>
<P>
<U>SideProperty:</U> <B><CODE>name</CODE></B> <I>str</I><P>
<A NAME="IDX89"></A>
This property is the proper name of a side, as a country or alliance
name.  Examples include <CODE>"Axis"</CODE> and <CODE>"Hyperborea"</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>long-name</CODE></B> <I>str</I><P>
<A NAME="IDX90"></A>
This property is the long form of a side's name, as in <CODE>"People's
Republic of Hyperborea"</CODE>.  Defaults to be the same as the side's name.

</P>
<P>
<U>SideProperty:</U> <B><CODE>short-name</CODE></B> <I>str</I><P>
<A NAME="IDX91"></A>
This property is an short name or acronym for the side, often just the
letters of the long name, as in <CODE>"PRH"</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>noun</CODE></B> <I>str</I><P>
<A NAME="IDX92"></A>
This property is the name of an individual unit or person belonging to
the side.  Defaults to <CODE>""</CODE>, which suppresses any mention of the
side when (textually) describing the individual.

</P>
<P>
<U>SideProperty:</U> <B><CODE>plural-noun</CODE></B> <I>str</I><P>
<A NAME="IDX93"></A>
This property is what you would call a group of individuals.  Defaults
to the most common plural form of the <CODE>noun</CODE> (in English, the
default pluralizer adds an "s"), so any alternative plural noun, such
as <CODE>"Chinese"</CODE>, will need an explicit <CODE>plural-noun</CODE> value.

</P>
<P>
<U>SideProperty:</U> <B><CODE>adjective</CODE></B> <I>str</I><P>
<A NAME="IDX94"></A>
This property is an adjective that can be used of individuals on the
side, as in <CODE>"Spanish"</CODE>.  Defaults to <CODE>""</CODE>, which suppresses
use of the adjective.

</P>
<P>
As a complete example, a side named <CODE>"Poland"</CODE> would have a long
name <CODE>"Kingdom of Poland"</CODE>, short name <CODE>"Po"</CODE>, noun
<CODE>"Pole"</CODE>, plural noun <CODE>"Poles"</CODE>, and adjective
<CODE>"Polish"</CODE>.

</P>
<P>
Alternatively, one can specify a side namer to do the work of naming 
sides.

</P>
<P>
<U>GlobalVariable:</U> <B><CODE>side-namer</CODE></B> <I>namer-id</I><P>
<A NAME="IDX95"></A>
The name of a known namer that will be used to generate the names of 
all the sides (except the independent side). Defaults to 
<CODE>default-side-names</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>color</CODE></B> <I>str</I><P>
<A NAME="IDX96"></A>
This property is a comma-separated list of colors that represents the
side.  Defaults to <CODE>"black"</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>emblem-name</CODE></B> <I>str</I><P>
<A NAME="IDX97"></A>
This property is the name of a graphical icon that represents the side.
An emblem name of <CODE>"none"</CODE> suppresses any emblem display for the
side.  Defaults to <CODE>""</CODE>, which gives the side a randomly-selected
emblem.

</P>
<P>
<U>SideProperty:</U> <B><CODE>names-locked</CODE></B> <I>t/f</I><P>
<A NAME="IDX98"></A>
If the value of this property is <CODE>true</CODE>, then the player cannot
modify any of the side's names.  Defaults to <CODE>false</CODE>.

</P>



<H3><A NAME="SEC155" HREF="xcdesign_toc.html#SEC155">Side Class</A></H3>

<P>
<U>SideProperty:</U> <B><CODE>class</CODE></B> <I>str</I><P>
<A NAME="IDX99"></A>
This property is a side's class, which is a keyword that characterizes
the side.  Any number of sides may be in the same class.

</P>



<H3><A NAME="SEC156" HREF="xcdesign_toc.html#SEC156">Status in Game</A></H3>

<P>
Once a side is in the game, it can never be totally removed.  However,
sides can become inactive.

</P>
<P>
<U>SideProperty:</U> <B><CODE>active</CODE></B> <I>t/f</I><P>
<A NAME="IDX100"></A>
This property is <CODE>true</CODE> if the side is still actively participating
in the game.  If the side has won, lost, or simply withdrew, this will
be <CODE>false</CODE>.  Any units on a side not in the game are effectively
frozen statues; they don't do anything, and are untouchable by anyone
else.  Defaults to <CODE>true</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>status</CODE></B> <I>lose/draw/win</I><P>
<A NAME="IDX101"></A>
This property tells how this side did in the game.  Defaults to
<CODE>draw</CODE>.

</P>
<P>
<U>GlobalConstant:</U> <B><CODE>win</CODE></B><P>
<A NAME="IDX102"></A>
<U>GlobalConstant:</U> <B><CODE>draw</CODE></B><P>
<A NAME="IDX103"></A>
<U>GlobalConstant:</U> <B><CODE>lose</CODE></B><P>
<A NAME="IDX104"></A>
These constants are the different possible values for a side's status.

</P>
<P>
<U>SideProperty:</U> <B><CODE>ever-active</CODE></B> <I>t/f</I><P>
<A NAME="IDX105"></A>
This property records if the side was ever active during the course of a
game.  Sides that were never active (perhaps because they are used in
some scenarios of a game design but not others) will not be recorded in
the scorefile.

</P>
<P>
<U>SideProperty:</U> <B><CODE>advantage</CODE></B> <I>n</I><P>
<A NAME="IDX106"></A>
<U>SideProperty:</U> <B><CODE>advantage-min</CODE></B> <I>n</I><P>
<A NAME="IDX107"></A>
<U>SideProperty:</U> <B><CODE>advantage-max</CODE></B> <I>n</I><P>
<A NAME="IDX108"></A>
Initial and min/max limits on advantage for the side.  All default to
the values of the corresponding global variables.

</P>



<H3><A NAME="SEC157" HREF="xcdesign_toc.html#SEC157">Side Relationships</A></H3>

<P>
By default, sides are neutral with respect to each other.

</P>
<P>
<STRONG>Control</STRONG> is a situation where one side can observe and move another
side's units, but not vice versa.  The controlling side can also just
take the units of the controlled side.  If the controlled side loses or
resigns, then the controlling side automatically gets everything.  Both
sides must agree to this relationship.

</P>
<P>
<U>SideProperty:</U> <B><CODE>controlled-by</CODE></B> <I>side</I><P>
<A NAME="IDX109"></A>
This property refers to the side controlling this one.  If 0, then the
side is not under control.

</P>
<P>
The closest side relationship is one of trust.  A trusted side unit's
may do anything at any time, including entering and leaving units on the
other side, consuming the other side's materials, and so forth.

</P>
<P>
<U>SideProperty:</U> <B><CODE>trusts</CODE></B> <I>side-value-list</I><P>
<A NAME="IDX110"></A>
This property is true for any side that is trusted by this side.  Note
that this relationship need not be symmetrical.  Defaults to
<CODE>false</CODE> for all sides.

</P>
<P>
Note that these parameters apply only to relationships as enforced by
<I>Xconq</I>.  In an actual game, both human and robot sides can make
agreements and have positive/negative opinions about the other sides.

</P>
<P>
<U>SideProperty:</U> <B><CODE>trades</CODE></B> <I>side-value-list</I><P>
<A NAME="IDX111"></A>
This property defines the trading relationship with other sides.

</P>



<H3><A NAME="SEC158" HREF="xcdesign_toc.html#SEC158">Numbering Units</A></H3>

<P>
<U>SideProperty:</U> <B><CODE>next-numbers</CODE></B> <I>utype-value-list</I><P>
<A NAME="IDX112"></A>
This property gives the next serial numbers that will be assigned to
units acquired by this side.  Defaults to <CODE>1</CODE> for each unit type
(Dijkstra notwithstanding, that's still where people start numbering
things).

</P>
<P>
If the unit is of a type that gets numbered (<CODE>assign-number</CODE>
property is true), then any unit of that type, acquired by any means
whatsoever, will be assigned the <CODE>next-numbers</CODE> value for that type
and <CODE>next-numbers</CODE> will be incremented.

</P>



<H3><A NAME="SEC159" HREF="xcdesign_toc.html#SEC159">Side-Specific Namers</A></H3>

<P>
A side can have its own set of namers (see below) that will be used for
units and geographical features associated with that side.

</P>
<P>
<U>SideProperty:</U> <B><CODE>unit-namers</CODE></B> <I>utype-value-list</I><P>
<A NAME="IDX113"></A>
This property specifies which namers will be used with which types that
the side starts out with or creates new units.  These will not be run
automatically on captured units or gifts.

</P>
<P>
<U>SideProperty:</U> <B><CODE>feature-namers</CODE></B> <I>feature-type-value-list</I><P>
<A NAME="IDX114"></A>
This property specifies which namers to use with which geographical
features in the side's initial country (if if has one).  Defaults to
<CODE>()</CODE>.

</P>



<H3><A NAME="SEC160" HREF="xcdesign_toc.html#SEC160">Side Tech Levels</A></H3>

<P>
The tech level of a side determines what it can do with each type of unit.

</P>
<P>
<U>SideProperty:</U> <B><CODE>tech</CODE></B> <I>utype-value-list</I><P>
<A NAME="IDX115"></A>
This property assigns a tech level to each unit type named.

</P>
<P>
<U>SideProperty:</U> <B><CODE>init-tech</CODE></B> <I>utype-value-list</I><P>
<A NAME="IDX116"></A>
This property is the tech level at the beginning of the current turn.

</P>
<P>
<U>SideProperty:</U> <B><CODE>advances-done</CODE></B> <I>atype-value-list</I><P>
<A NAME="IDX117"></A>
This property is the state of the side's research on each advance.  A
value of -1 indicates that the advance has been achieved.

</P>
<P>
<U>SideProperty:</U> <B><CODE>advance-goal</CODE></B> <I>atype</I><P>
<A NAME="IDX118"></A>
The research goal that the side is presently working toward.

</P>
<P>
<U>SideProperty:</U> <B><CODE>current-advance</CODE></B> <I>atype</I><P>
<A NAME="IDX119"></A>
The research topic that the side is presently working on.

</P>



<H3><A NAME="SEC161" HREF="xcdesign_toc.html#SEC161">Side Views</A></H3>

<P>
View-related properties record the side's knowledge about the world,
other units, weather, etc.

</P>
<P>
These properties are necessary only if the relevant globals are set a
certain way (<CODE>see-all</CODE> is false, etc).

</P>
<P>
<U>SideProperty:</U> <B><CODE>terrain-view</CODE></B> <I>layer-data...</I><P>
<A NAME="IDX120"></A>
This property is the side's current knowledge of the world's terrain.
Defaults to <CODE>()</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>terrain-view-dates</CODE></B> <I>layer-data...</I><P>
<A NAME="IDX121"></A>
This property is the dates of the side's current knowledge of the
world's terrain.  Defaults to <CODE>()</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>aux-terrain-view</CODE></B> <I>ttype layer-data...</I><P>
<A NAME="IDX122"></A>
This property is the side's current knowledge of the world's aux terrain
of type <VAR>ttype</VAR>.  Defaults to <CODE>()</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>aux-terrain-view-dates</CODE></B> <I>ttype layer-data...</I><P>
<A NAME="IDX123"></A>
This property is the dates of the side's current knowledge of the
world's aux terrain of type <VAR>ttype</VAR>.  Defaults to <CODE>()</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>unit-views</CODE></B> <I>unit-view...</I><P>
<A NAME="IDX124"></A>
This property is the side's current knowledge of the positions of units
in the world.  It is a list of <VAR>unit-view</VAR> objects, where each has
the forms <CODE>(type side id x y)</CODE>.  Defaults to <CODE>()</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>material-view</CODE></B> <I>mtype layer-data...</I><P>
<A NAME="IDX125"></A>
This property is the side's current knowledge of the amounts of each
type of material at each location in the world.  Defaults to <CODE>()</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>material-view-dates</CODE></B> <I>ttype layer-data...</I><P>
<A NAME="IDX126"></A>
Defaults to <CODE>()</CODE>.

</P>
<P>
If the weather is not always known and up-to-date, then the following
properties what is known and when the information was recorded.

</P>
<P>
<U>SideProperty:</U> <B><CODE>temperature-view</CODE></B> <I>layer-data...</I><P>
<A NAME="IDX127"></A>
Defaults to <CODE>()</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>temperature-view-dates</CODE></B> <I>layer-data...</I><P>
<A NAME="IDX128"></A>
Defaults to <CODE>()</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>cloud-view</CODE></B> <I>layer-data...</I><P>
<A NAME="IDX129"></A>
Defaults to <CODE>()</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>cloud-bottom-view</CODE></B> <I>layer-data...</I><P>
<A NAME="IDX130"></A>
Defaults to <CODE>()</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>cloud-height-view</CODE></B> <I>layer-data...</I><P>
<A NAME="IDX131"></A>
Defaults to <CODE>()</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>cloud-view-dates</CODE></B> <I>layer-data...</I><P>
<A NAME="IDX132"></A>
Defaults to <CODE>()</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>wind-view</CODE></B> <I>layer-data...</I><P>
<A NAME="IDX133"></A>
Defaults to <CODE>()</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>wind-view-dates</CODE></B> <I>layer-data...</I><P>
<A NAME="IDX134"></A>
Defaults to <CODE>()</CODE>.

</P>



<H3><A NAME="SEC162" HREF="xcdesign_toc.html#SEC162">Interaction</A></H3>

<P>
<U>SideProperty:</U> <B><CODE>initial-center-at</CODE></B> <I>x y</I><P>
<A NAME="IDX135"></A>
This property is the preferred location at which to center the first map
displayed by an interface.

</P>
<P>
<U>SideProperty:</U> <B><CODE>turn-time-used</CODE></B> <I>seconds</I><P>
<A NAME="IDX136"></A>
This property is the number of (real) seconds that this side has been
moving units during the present turn.

</P>
<P>
<U>SideProperty:</U> <B><CODE>total-time-used</CODE></B> <I>seconds</I><P>
<A NAME="IDX137"></A>
This property is the number of (real) seconds that this side has been
moving units during the course of the game.

</P>
<P>
<U>SideProperty:</U> <B><CODE>timeouts</CODE></B> <I>n</I><P>
<A NAME="IDX138"></A>
This property is the number of "time outs" a side gets for the game.

</P>
<P>
<U>SideProperty:</U> <B><CODE>timeouts-used</CODE></B> <I>n</I><P>
<A NAME="IDX139"></A>
This property is the number of "time outs" a side has already used up.

</P>
<P>
<U>SideProperty:</U> <B><CODE>finished-turn</CODE></B> <I>t/f</I><P>
<A NAME="IDX140"></A>
This property is true if the side has declared that it is finished
moving things during this turn.  Defaults to <CODE>false</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>willing-to-draw</CODE></B> <I>t/f</I><P>
<A NAME="IDX141"></A>
This property is true if the side will go along with any other side that
wants to end the game in a draw.  Defaults to <CODE>false</CODE>.

</P>



<H3><A NAME="SEC163" HREF="xcdesign_toc.html#SEC163">Doctrine</A></H3>

<P>
Doctrines are objects that units consult to decide about individual
behavior.

</P>
<P>
<U>SideProperty:</U> <B><CODE>doctrines</CODE></B> <I>utype-property-groups...</I><P>
<A NAME="IDX142"></A>
This property is the side's unit-type-specific doctrine.  Each
<VAR>utype-property-group</VAR> has the form <CODE>(<VAR>unit-types</VAR>
doctrine)</CODE>.  Defaults to <CODE>()</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>doctrines-locked</CODE></B> <I>t/f</I><P>
<A NAME="IDX143"></A>
This property says whether the docrine-unit type correspondence for the
side may be altered during the game.  This property does not control
whether or not the properties of the doctrines may be altered.  Defaults
to <CODE>false</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>default-doctrine</CODE></B> <I>doctrine-id</I><P>
<A NAME="IDX144"></A>
This property is the base doctrine that applies to all unit types by
default.

</P>
<P>
<U>Form:</U> <B><CODE>doctrine</CODE></B> <I>[ id ] properties...</I><P>
<A NAME="IDX145"></A>
This form creates a doctrine with the given id and properties.

</P>
<P>
<U>DoctrineProperty:</U> <B><CODE>resupply-percent</CODE></B> <I>n%</I><P>
<A NAME="IDX146"></A>
This property indicates that when the level of a operationally-consumed
material is at <VAR>n%</VAR> of capacity, try to resupply.  Defaults to
<CODE>50</CODE>.

</P>
<P>
<U>DoctrineProperty:</U> <B><CODE>rearm-percent</CODE></B> <I>n%</I><P>
<A NAME="IDX147"></A>
This property indicates that when the level of a combat-consumed
material is at <VAR>n%</VAR> of capacity, try to resupply.

</P>
<P>
<U>DoctrineProperty:</U> <B><CODE>repair-percent</CODE></B> <I>n%</I><P>
<A NAME="IDX148"></A>
This property indicates that when the unit's hp is at <VAR>n%</VAR> of max,
make a plan to repair.

</P>
<P>
<U>DoctrineProperty:</U> <B><CODE>construction-run</CODE></B> <I>type-value-list</I><P>
<A NAME="IDX149"></A>
This property is the default number of units to build when construction
has been requested.

</P>
<P>
<U>DoctrineProperty:</U> <B><CODE>locked</CODE></B> <I>t/f</I><P>
<A NAME="IDX150"></A>
This property is true if the properties of the doctrine cannot be
modified by the side's player during the game.  Defaults to
<CODE>false</CODE>.

</P>



<H3><A NAME="SEC164" HREF="xcdesign_toc.html#SEC164">Other Side Properties</A></H3>

<P>
<U>SideProperty:</U> <B><CODE>self-unit</CODE></B> <I>unit</I><P>
<A NAME="IDX151"></A>
This property identifies a unit that represents the side itself.  The
value may be a unit id, number, string, or symbol.  Defaults to
<CODE>0</CODE>, which means that no unit represents the side.  See below for
more details on self units.

</P>
<P>
<U>SideProperty:</U> <B><CODE>units</CODE></B> <I>list</I><P>
<A NAME="IDX152"></A>
This property is a weighted list of units that could be given to the
side during setup in order to satisfy the side's <CODE>start-with</CODE>
numbers.

</P>
<P>
<U>SideProperty:</U> <B><CODE>treasury</CODE></B> <I>mtype-value-list</I><P>
<A NAME="IDX153"></A>
This property is the quantity of each type of material belonging
to the side as a whole, independent of materials in specific units.

</P>
<P>
<U>SideProperty:</U> <B><CODE>priority</CODE></B> <I>n</I><P>
<A NAME="IDX154"></A>
The order in which the side will get to act, relative to other sides and
to units.  Defaults to <CODE>-1</CODE>.  Note that the <CODE>sequential</CODE>
variant will automatically cause side priority to be set to nonnegative
values, unless the value is already nonnegative.

</P>
<P>
<U>SideProperty:</U> <B><CODE>action-priorities</CODE></B> <I>(utype val)...</I><P>
<A NAME="IDX155"></A>
This property is the acting priority of units belonging to the side.

</P>
<P>
<U>SideProperty:</U> <B><CODE>scores</CODE></B> <I>(skid val)...</I><P>
<A NAME="IDX156"></A>
This property is the current values of any numeric scores being kept for
the side.  It is a list of pairs of scorekeeper id and value.  Defaults
to <CODE>()</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>attack-stats</CODE></B> <I>n...</I><P>
<A NAME="IDX157"></A>
<U>SideProperty:</U> <B><CODE>hit-stats</CODE></B> <I>n...</I><P>
<A NAME="IDX158"></A>
These properties are the raw counts of attacks and hits, by attacking
and defending unit types.  Default to <CODE>()</CODE>.

</P>
<P>
<U>SideProperty:</U> <B><CODE>gain-counts</CODE></B> <I>n...</I><P>
<A NAME="IDX159"></A>
<U>SideProperty:</U> <B><CODE>loss-counts</CODE></B> <I>n...</I><P>
<A NAME="IDX160"></A>
These properties are the raw counts of unit gains and losses, organized
by unit type and gain/loss reason.

</P>
<P>
<U>Form:</U> <B><CODE>independent-units</CODE></B> <I>properties...</I><P>
<A NAME="IDX161"></A>
Like the <CODE>side</CODE> form, but sets properties for independent units.

</P>
<P>
<U>SideProperty:</U> <B><CODE>ui-data</CODE></B> <I>data...</I><P>
<A NAME="IDX162"></A>
This property contains interface-specific data for the side.  This is
mainly for preservation across game save/restores.  The property's value
has the form

<PRE>
<CODE>((interface-type data) (interface-type data) ...)</CODE>
</PRE>

<P>
so that each interface can maintain its own data separately.

</P>
<P>
<U>SideProperty:</U> <B><CODE>ai-data</CODE></B> <I>data...</I><P>
<A NAME="IDX163"></A>
This property is information about the AIs associated with a side.  The
property's value has the form

<PRE>
<CODE>((ai-type data) (ai-type data)
...)</CODE>
</PRE>

<P>
so that each type of AI can maintain its own data separately.  The form
and meaning of each AI's data is specific to it alone.

</P>
<P>
<U>SideProperty:</U> <B><CODE>standing-order</CODE></B> <I>data...</I><P>
<A NAME="IDX164"></A>
This property contains the list of standing orders for the side.

</P>
<P>
<U>GlobalConstant:</U> <B><CODE>always</CODE></B><P>
<A NAME="IDX165"></A>
This symbol indicates a standing order that is always to be executed
by a unit.
<U>GlobalConstant:</U> <B><CODE>@</CODE></B><P>
<A NAME="IDX166"></A>
This symbol indicates a standing order that units of the specified
types are to execute when at a given location.
<U>GlobalConstant:</U> <B><CODE>in</CODE></B><P>
<A NAME="IDX167"></A>
This symbol indicates a standing order that units of the specified
types are to execute when occupying a given unit.
<U>GlobalConstant:</U> <B><CODE>near</CODE></B><P>
<A NAME="IDX168"></A>
This symbol indicates a standing order that units of the specified
types are to execute when within a given distance of a given location.

</P>



<H3><A NAME="SEC165" HREF="xcdesign_toc.html#SEC165">Independent Side</A></H3>

<P>
The independent side is in most ways a side like the others, but
in other ways it is incomplete.  For instance, independent units
act, well, independently of each other.

</P>
<P>
<U>GlobalVariable:</U> <B><CODE>no-indepside-ingame</CODE></B> <I>t/f</I><P>
<A NAME="IDX169"></A>
This variable is true if the game should not allow the players to make
the independent units active.  This is appropriate for historical games
where all the participating side are predefined, for instance.

</P>
<P>
<U>GlobalVariable:</U> <B><CODE>indepside-has-ai</CODE></B> <I>t/f</I><P>
<A NAME="IDX170"></A>
This is true if an AI should be created for the independent side.

</P>
<P>
<U>GlobalVariable:</U> <B><CODE>indepside-can-build</CODE></B> <I>t/f</I><P>
<A NAME="IDX171"></A>
This is true if independent units may construct new units.

</P>
<P>
<U>GlobalVariable:</U> <B><CODE>indepside-can-develop</CODE></B> <I>t/f</I><P>
<A NAME="IDX172"></A>
This is true if independent units may develop their technology.

</P>



<H3><A NAME="SEC166" HREF="xcdesign_toc.html#SEC166">Players</A></H3>

<P>
Player objects are rarely necessary when building game designs; they
typically only appear in saved games, in order to ensure that the same
players get the same sides upon restoration.

</P>
<P>
<U>SideProperty:</U> <B><CODE>player</CODE></B> <I>id</I><P>
<A NAME="IDX173"></A>
This property is the unique identifier of a player that is running this
side.  Defaults to <CODE>0</CODE>, which means that no player has been
assigned to the side.

</P>
<P>
<U>Form:</U> <B><CODE>player</CODE></B> <I>[ id ] properties...</I><P>
<A NAME="IDX174"></A>
This form defines a player.  If the <VAR>id</VAR> is supplied and matches the
id of an existing player, then the player object is updated using the
<VAR>properties</VAR>, otherwise a new player object will be created, using
the given <VAR>id</VAR> if supplied, otherwise creating a new value.

</P>
<P>
<U>GlobalVariable:</U> <B><CODE>player-sides-locked</CODE></B> <I>t/f</I><P>
<A NAME="IDX175"></A>
This variable is <CODE>true</CODE> if the player/side assignment may not be
changed while the game is starting up.  Defaults to <CODE>false</CODE>.

</P>
<P>
The number of players must always be less than the number of sides
(sides without players just don't do anything).

</P>
<P>
<U>PlayerProperty:</U> <B><CODE>name</CODE></B> <I>str</I><P>
<A NAME="IDX176"></A>
This property identifies the player by name.

</P>
<P>
<U>PlayerProperty:</U> <B><CODE>config-name</CODE></B> <I>str</I><P>
<A NAME="IDX177"></A>
This property identifies a particular set of doctrine and other
definitions that the player is using.

</P>
<P>
<U>PlayerProperty:</U> <B><CODE>display-name</CODE></B> <I>str</I><P>
<A NAME="IDX178"></A>
This property identifies the display being used by the player's
interface.  The interpretation of this value is dependent on the
interface in use.

</P>
<P>
<U>PlayerProperty:</U> <B><CODE>ai-type-name</CODE></B> <I>str</I><P>
<A NAME="IDX179"></A>
This property is the type of AI that will play the side if requested or
necessary.  The set of choices depends on what has been compiled into
<I>Xconq</I>.  (The general-purpose AI type <CODE>"mplayer"</CODE> will usually
be available, but is not guaranteed.)  An <CODE>ai-type-name</CODE> of
<CODE>""</CODE> means that no AI will run this player.

</P>
<P>
<U>PlayerProperty:</U> <B><CODE>password</CODE></B> <I>str</I><P>
<A NAME="IDX180"></A>
This property is the encoding of a password that must be entered before
this player object can be reused successfully.

</P>
<P>
<U>PlayerProperty:</U> <B><CODE>initial-advantage</CODE></B> <I>n</I><P>
<A NAME="IDX181"></A>
This property is an initial relative strength at which the player should
start.  Some synthesis methods can use this to give more units or some
other advantage to each player according to the requested strength.
Defaults to <CODE>1</CODE>.

</P>
<P>
<U>GlobalVariable:</U> <B><CODE>advantage-min</CODE></B> <I>n</I><P>
<A NAME="IDX182"></A>
<U>GlobalVariable:</U> <B><CODE>advantage-max</CODE></B> <I>n</I><P>
<A NAME="IDX183"></A>
<U>GlobalVariable:</U> <B><CODE>advantage-default</CODE></B> <I>n</I><P>
<A NAME="IDX184"></A>
These variables set the bounds and default values for players' initial
advantages.  Default to <CODE>1</CODE>, <CODE>9999</CODE>, and <CODE>1</CODE>,
respectively.

</P>
<P>
<I>Xconq</I> is not guaranteed to be able to be able to set up a game with
any combination of player advantages; the limits depend on the
capabilities and characteristics of the synthesis methods that use the
requested advantages in their calculations.

</P>



<H3><A NAME="SEC167" HREF="xcdesign_toc.html#SEC167">Rules of Side Configuration</A></H3>

<P>
The properties of a side can come from a number of different sources
(here listed in order of precedence):

</P>

<UL>

<LI>

Interface-specific sources (X resources, Mac preferences).

<LI>

The <CODE>side</CODE> form for the side.

<LI>

The <CODE>side-defaults</CODE> form for the game.

<LI>

General program defaults.

</UL>

<P>
Note that interface-specific and general config files can never alter
certain properties of a side, and can only alter others if they are not
locked.

</P>

<HR>
Go to the <A HREF="xcdesign_1.html">first</A>, <A HREF="xcdesign_33.html">previous</A>, <A HREF="xcdesign_35.html">next</A>, <A HREF="xcdesign_61.html">last</A> section, <A HREF="xcdesign_toc.html">table of contents</A>.
</BODY>
</HTML>