<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.armagetronad.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=66.31.240.66</id>
	<title>Armagetron Advanced - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.armagetronad.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=66.31.240.66"/>
	<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Special:Contributions/66.31.240.66"/>
	<updated>2026-10-15T23:27:28Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=1307</id>
		<title>Making Maps by Hand</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=1307"/>
		<updated>2005-10-21T18:43:03Z</updated>

		<summary type="html">&lt;p&gt;66.31.240.66: /* Experimental Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is to help map designer to get a grasp of the World&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This tutorial describe the version 0.1 of the World format. As&lt;br /&gt;
it focuses on very basic elements, the possibility of it&lt;br /&gt;
to be understood by later parser should be quite good.&lt;br /&gt;
&lt;br /&gt;
== Format overview ==&lt;br /&gt;
&lt;br /&gt;
The classic Armagetron arena could be described with the following&lt;br /&gt;
map:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE World SYSTEM &amp;quot;map-0.1.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World version=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map name=&amp;quot;Armagetron Classic&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Manuel Moos&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Field&amp;gt;&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;255&amp;quot; y=&amp;quot;50&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;245&amp;quot; y=&amp;quot;450&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;50&amp;quot; y=&amp;quot;245&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;450&amp;quot; y=&amp;quot;255&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;305&amp;quot; y=&amp;quot;100&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;195&amp;quot; y=&amp;quot;400&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;100&amp;quot; y=&amp;quot;195&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;400&amp;quot; y=&amp;quot;305&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;205&amp;quot; y=&amp;quot;100&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;295&amp;quot; y=&amp;quot;400&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;100&amp;quot; y=&amp;quot;295&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;400&amp;quot; y=&amp;quot;205&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;500&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;500&amp;quot; y=&amp;quot;500&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;500&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/Wall&amp;gt;&lt;br /&gt;
    &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/World&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The World format start with a XML header. The actual definition&lt;br /&gt;
start with the Map element. You can see on line 5 that this is has&lt;br /&gt;
been designed by Manuel Moos as the classic arena definition to be&lt;br /&gt;
used for its game. &lt;br /&gt;
&lt;br /&gt;
Inside the Field element, line 7 define that 4 axes are to be&lt;br /&gt;
used. From line 9 to 22, all the spawn points, ie: the points where&lt;br /&gt;
the cycles are located when the match starts, are defined. Finally&lt;br /&gt;
the walls are defined, delimiting the play area.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the Map element is&lt;br /&gt;
the Field element. Only one Field can be defined.&lt;br /&gt;
&lt;br /&gt;
The World element only has one attribute, describing the version&lt;br /&gt;
of the rules and definition used. At the moment, only &amp;quot;0.1&amp;quot; is&lt;br /&gt;
valid.&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
At this moment, the element possible inside of the Map element is&lt;br /&gt;
the Field element. Only one Field can be defined.&lt;br /&gt;
&lt;br /&gt;
The Map element has 3 attributes: name, version and author.&lt;br /&gt;
Store the name of your map in the name field, your name in the&lt;br /&gt;
author, and use the version field to allow others to find the&lt;br /&gt;
latest definition of your fine work.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Map name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Field ==&lt;br /&gt;
The Field element holds the description required to construct the&lt;br /&gt;
play area. Inside the Field, Axes, Spawn and Wall elements can be&lt;br /&gt;
defined. &lt;br /&gt;
&lt;br /&gt;
== Axes ==&lt;br /&gt;
The Axes element define how the cycles will behave on this&lt;br /&gt;
particular Field. The original Armagetron used 4 axes. &lt;br /&gt;
&lt;br /&gt;
The Axes element has 2 field:&lt;br /&gt;
;number&lt;br /&gt;
: This specifies the number of axes that should be used. If not specified, 4 axes are assumed.&lt;br /&gt;
;normalize&lt;br /&gt;
:When set to true, specify that the game should ensure that the direction vectors are scaled to have a size of exactly 1.0. When not specified, the individual axis will be keep at the exact length they are specified. This is covered in section 6. When not specified, it is assumed that normalization is desired.&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot; normalize=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When used without any other information, it is assumed that equally spaced axes should be generated, starting from (1,0) and going clockwise. The number generated is the value specified by the number attribute.&lt;br /&gt;
&lt;br /&gt;
The Axes element can also be used to describe each direction that can be used, instead of relying on the automatic generation. To do this, Axis elements are used to describe each directions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Axis element uses the following fields:&lt;br /&gt;
;x&lt;br /&gt;
: This is size of the displacement along the x&#039;s for this axis&lt;br /&gt;
;y&lt;br /&gt;
: This is size of the displacement along the y&#039;s for this axis&lt;br /&gt;
;angle&lt;br /&gt;
: This allow to describe the Axis in degrees&lt;br /&gt;
;length&lt;br /&gt;
: When the angle is specified, the length can be used to scale the size of the vector described. This value is only used when angle are specified.&lt;br /&gt;
&lt;br /&gt;
If the angle field is found, the length will be queried and used. If the length is absent, a default of 1 is used for the length. If no angle is specified, then both the x and y need to be specified for the Axis to be valid.&lt;br /&gt;
&lt;br /&gt;
The previous example could be re-written with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis angle=&amp;quot;45&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis angle=&amp;quot;135&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;225&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;335&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that even though the length is specified, because the Axes element doesn&#039;t have the normalize=&amp;quot;false&amp;quot;, all the lengths will be scaled back to exactly 1.&lt;br /&gt;
&lt;br /&gt;
The Axes should be specified in clockwise order. The specified axes are stored in the order they appear. When a player want to turn right, it is passed to the next axis on the list, or to the first when turning from the last direction.&lt;br /&gt;
&lt;br /&gt;
You might observe that in Example 5.2, the direction sum up to more than 1.0. For example, the first Axis has a x and a y of 1. The real length of the described Axis is &lt;br /&gt;
&amp;lt;math&amp;gt;\sqrt{x^2+y^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
, which is approximately 1.4142. By specifying the normalize=&amp;quot;true&amp;quot;, or using the default behavior, you ensure that they are scaled back to 1.0.&lt;br /&gt;
&lt;br /&gt;
The number of Axis specified should be the same as the number of axes. Any extra axes will be discarded. Any missing Axis will be assumed to be (1,0). &lt;br /&gt;
&lt;br /&gt;
Note: Some old maps will use Point instead of Axis. The Point is deprecated in this context. New maps should use the Axis element.&lt;br /&gt;
&lt;br /&gt;
== Advanced Axes ==&lt;br /&gt;
&lt;br /&gt;
=== Normalization ===&lt;br /&gt;
&lt;br /&gt;
It is often easier to write directions are (2,1) rather than&lt;br /&gt;
(.89442719099991587856 , .44721359549995793928), which is the&lt;br /&gt;
normalized equivalent. The normalization mechanism ensure that&lt;br /&gt;
displacement is constant on all the axes. This has always been the&lt;br /&gt;
behavior of the game. So what is the effect of having non normalized&lt;br /&gt;
Axis? Before anything else, a bit of understanding how the engine of&lt;br /&gt;
Armagetron operates might be required. &lt;br /&gt;
&lt;br /&gt;
You might recall from your physic class that the distance traveled is&lt;br /&gt;
computed from the speed at which you travel multiplied by the time&lt;br /&gt;
during with you traveled ie: distance = speed * time.&lt;br /&gt;
&lt;br /&gt;
Armagetron has at its core a 2D engine. Vehicle move along a 2D&lt;br /&gt;
surface, changing their x&#039;s and y&#039;s position. To find the new position&lt;br /&gt;
of a vehicle, the distance is multiplied by a 2D vector, the&lt;br /&gt;
direction, before being added to the old position. Because the&lt;br /&gt;
direction is a normalized vector, the resulting displacement is of the&lt;br /&gt;
same size than the calculated distance. But if the direction is a&lt;br /&gt;
non-normalized vector, ie: it has a size that is lesser or greater&lt;br /&gt;
than 1, but not equal, then the displacement gets to have a different&lt;br /&gt;
size than the distance.&lt;br /&gt;
&lt;br /&gt;
By setting the Axis to non-normalized values, the map designer can&lt;br /&gt;
modify displacement in the arena. By defining Axis with a vector size&lt;br /&gt;
of 2, see example 6.1.1, all the cycles would behave as if they where&lt;br /&gt;
moving twice as fast. Setting the Axis a length of 0.5, see example&lt;br /&gt;
6.1.2, the opposite effect occurs. Now the cycle move as if their&lt;br /&gt;
speed was halved.&lt;br /&gt;
&lt;br /&gt;
Example 6.1.2 Axes of size 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;2&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-2&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 6.1.2 Axes of size 0.5&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By setting the normalize attribute to false, the designer ensure&lt;br /&gt;
that the game will use the Axis values as is. While this section has&lt;br /&gt;
used Axis that all have the same size, this is not a requirement. The&lt;br /&gt;
next section will explore setting Axis with different size.&lt;br /&gt;
This permit to affect the displacement on certain axes.&lt;br /&gt;
&lt;br /&gt;
=== Uneven Axes ===&lt;br /&gt;
Up to now, the Axis have always have the same size. This mean that for&lt;br /&gt;
a given speed, the displacement of a cycle is always the same in every&lt;br /&gt;
direction. But nothing permit you to define it differently. &lt;br /&gt;
&lt;br /&gt;
Imagine an arena shaped as a rectangle. The height, along the y&#039;s,&lt;br /&gt;
would be ten times the size of the length, along the x&#039;s. Normally, with&lt;br /&gt;
the Axis all of the same size, it would take a player ten time as long to&lt;br /&gt;
run from one wall to another when cruising along the height of the&lt;br /&gt;
rectangle. &lt;br /&gt;
&lt;br /&gt;
But you could decide to make motion along the height occur at ten time the&lt;br /&gt;
rate, so it would take a player the same time to cover the height of&lt;br /&gt;
the arena than to cover the length, giving it an &amp;quot;Alice in Wonderland&amp;quot;&lt;br /&gt;
feeling (see example 6.2.1). This feeling could be exaggerated even more&lt;br /&gt;
by making traveling along the longest distance occur in half the time&lt;br /&gt;
that travel along the shortest distance. To do this, you could double&lt;br /&gt;
the size of the Axis set in the previous example (see example&lt;br /&gt;
6.2.2). Now, even thou one dimension of the rectangle is 10 time the&lt;br /&gt;
other, travel along this longer dimension occur at a much higher rate,&lt;br /&gt;
compressing this dimension in the player&#039;s mind.&lt;br /&gt;
&lt;br /&gt;
Example 6.2.1 Rectangle of equal travel time&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
	&amp;lt;Wall&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;1000&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;1000&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Wall&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 6.2.2 Rectangle of compressed travel time&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
	&amp;lt;Wall&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;1000&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;1000&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Wall&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The current game play is balanced around the fact that normally,&lt;br /&gt;
the displacement factor is of size 1. By increasing this too much, your&lt;br /&gt;
map might quickly become unplayable. While the example present Axis&lt;br /&gt;
size of 10&#039;s and 20&#039;s, it is only for a pedagogical value. If you want&lt;br /&gt;
to create great difference of displacement among different Axis, you&lt;br /&gt;
might find that augmenting Axes size a little bit and raising others&lt;br /&gt;
also could produce a better effect. The example 6.2.3 offers a ratio of&lt;br /&gt;
6 between the displacement on the x&#039;s and y&#039;s, while keeping the faster&lt;br /&gt;
displacement at only 3 times the regular one.&lt;br /&gt;
&lt;br /&gt;
Example 6.2.3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-3&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Up to now, the Axes where always evenly placed around the&lt;br /&gt;
player. Distributing the Axes in a non-equal fashion can allow for&lt;br /&gt;
different kind of game play. If you where to make a parallelogram&lt;br /&gt;
shaped arena, you might want the players to be able to move along the&lt;br /&gt;
walls of the arena. For this, the different Axis would need to be&lt;br /&gt;
properly set. &lt;br /&gt;
&lt;br /&gt;
Example 6.2.4: Parallelogram arena&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;-0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
	&amp;lt;Wall&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Wall&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Order of the axes ===&lt;br /&gt;
Turning right is translated to passing to the next axis, and&lt;br /&gt;
turning left to the previous axis. But by changing the order that&lt;br /&gt;
the axes are defined, this behavior can be altered.&lt;br /&gt;
&lt;br /&gt;
Example 6.3.1:&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot; normalize=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 6.3.1, in degrees:&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;210&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;270&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;330&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;30&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;90&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This defines a regular 6 axes. Turning right will make the cycle&lt;br /&gt;
face a direction that is 60 degrees to its right. But by changing&lt;br /&gt;
the order, this can be altered.&lt;br /&gt;
&lt;br /&gt;
Example 6.3.2:&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot; normalize=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or, in degrees:&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;210&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;330&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;270&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;30&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;90&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now turning right from the first axis, the player will have the&lt;br /&gt;
impression of turning 120 degrees. Turning right again will turn&lt;br /&gt;
the player by -60 degrees. Continuing, the player would experience&lt;br /&gt;
turn of 120, 120 - 60 and 120 degrees, ending in the first&lt;br /&gt;
direction.&lt;br /&gt;
 &lt;br /&gt;
Also, the order of the axes could be totally reversed. This would&lt;br /&gt;
effectively make the left key turn the player to the right, and&lt;br /&gt;
the right key to the left&lt;br /&gt;
&lt;br /&gt;
Example 6.3.3:&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wall ==&lt;br /&gt;
Wall are those big clunky elements normally associated with the&lt;br /&gt;
rim.&lt;br /&gt;
&lt;br /&gt;
To define a wall, you need to specify all the corners of all its&lt;br /&gt;
segments. A wall segment will be created from one point to the&lt;br /&gt;
next. &lt;br /&gt;
&lt;br /&gt;
Example 7.1:&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;200&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;200&amp;quot; y=&amp;quot;200&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;200&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should notice that for an wall to be closed, you need to loop&lt;br /&gt;
back to the first point. &lt;br /&gt;
&lt;br /&gt;
Any number of walls can be specified inside the field element. A&lt;br /&gt;
Wall need at least 2 Points, but doesn&#039;t have any upper limits.&lt;br /&gt;
&lt;br /&gt;
Walls to not need to be closed. In the arena defined earlier, it&lt;br /&gt;
would be possible to add some obstacle walls. &lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;50&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;150&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible to have walls touching, and even crossing. There is&lt;br /&gt;
no difference between segments assembled from many wall elements,&lt;br /&gt;
or from a single one.&lt;br /&gt;
&lt;br /&gt;
While it is possible to leave the play arena unbounded, this&lt;br /&gt;
behavior should be considered undefined and unsupported. It is&lt;br /&gt;
highly recommended that the play area be bounded by a wall or a&lt;br /&gt;
series of walls leaving no holes.&lt;br /&gt;
&lt;br /&gt;
Also, while it it possible to define &amp;quot;holes&amp;quot; , ie&lt;br /&gt;
completely bounded areas inside a bigger area, or &amp;quot;islands&amp;quot;, ie&lt;br /&gt;
independent bounded areas independent of another play area, these&lt;br /&gt;
behaviors are undefined and unsupported. &lt;br /&gt;
&lt;br /&gt;
== Spawn points ==&lt;br /&gt;
Spawn points are where cycles are first located on the map. At&lt;br /&gt;
game start, the game server will spread the players and AI among&lt;br /&gt;
the different spawn locations described. You should provide&lt;br /&gt;
sufficient spawn location for the number of players you entered to&lt;br /&gt;
play on your map.&lt;br /&gt;
&lt;br /&gt;
Along with the location where the cycles will be placed, you&lt;br /&gt;
need to specify the starting direction of the cycle. This will&lt;br /&gt;
determine the direction that the cycle is facing when it appears.&lt;br /&gt;
&lt;br /&gt;
To specify this, two methods are offered:&lt;br /&gt;
Vector orientation:&lt;br /&gt;
In this method, you specify the direction as a vector, from (0, 0)&lt;br /&gt;
to (xdir, ydir). This will indicate the direction to be face by&lt;br /&gt;
the cycle.&lt;br /&gt;
Angle orientation:&lt;br /&gt;
In this method, you specify the direction as an angle. Degrees are&lt;br /&gt;
used for this.&lt;br /&gt;
&lt;br /&gt;
Because Armagetron is a game where motion occurs on certain axes&lt;br /&gt;
only, starting direction should also be done on those axes. The&lt;br /&gt;
game will use the direction described to find the closest matching&lt;br /&gt;
axis. It is the direction of the chosen axis that is assigned to&lt;br /&gt;
an spawned cycle. The direction specified is only used as a&lt;br /&gt;
recommendation.&lt;br /&gt;
&lt;br /&gt;
A Spawn has six attributes. Only three to four are needed to&lt;br /&gt;
describe a Spawn. Two of them, x and y, are mandatory.&lt;br /&gt;
x= the x coordinate where the cycle is to be created&lt;br /&gt;
y= the y coordinate where the cycle is to be created&lt;br /&gt;
xdir= the x coordinate of the recommended direction the cycle will face at&lt;br /&gt;
creation.&lt;br /&gt;
ydir= the y coordinate of the recommended direction the cycle will face at&lt;br /&gt;
creation.&lt;br /&gt;
angle= the recommended angle to orient the cycle&lt;br /&gt;
&lt;br /&gt;
If the angle attribute is specified, xdir and ydir are&lt;br /&gt;
ignored. When no angle attribute is specified, both xdir and ydir&lt;br /&gt;
are needed.&lt;br /&gt;
&lt;br /&gt;
Example 8.1:&lt;br /&gt;
       &amp;lt;Spawn x=&amp;quot;-15.5&amp;quot; y=&amp;quot;368.0608&amp;quot; xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Spawn x=&amp;quot;-15.5&amp;quot; y=&amp;quot;368.0608&amp;quot; angle=&amp;quot;60&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the direction indicated is used. The size of the direction&lt;br /&gt;
described doesn&#039;t influence the start up speed or displacement of a&lt;br /&gt;
cycle.&lt;br /&gt;
&lt;br /&gt;
It is to be noted that specifying a direction of (0,0) is&lt;br /&gt;
undefined. Also, specifying spawn points outside the play area&lt;br /&gt;
that you defined is undefined and unsupported. &lt;br /&gt;
&lt;br /&gt;
== Experimental Features ==&lt;br /&gt;
A few experimental features have been included in the current version&lt;br /&gt;
of Armagetron Ad. You will find there alternative ways of writing&lt;br /&gt;
Walls in a map, and a last minute addition allowing you to control the&lt;br /&gt;
height of Walls.&lt;br /&gt;
&lt;br /&gt;
It should be noted that these features are experimental. Their&lt;br /&gt;
syntax and presence in other version of the map format thus can&#039;t be&lt;br /&gt;
guarantied. &lt;br /&gt;
&lt;br /&gt;
To make use of these features, your map need to indicate that it want&lt;br /&gt;
to use the experimental dtd. This is specified by &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;!DOCTYPE World SYSTEM &amp;quot;map-0.1-exp.dtd&amp;quot;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doing so allow you to use all the experimental features, while still&lt;br /&gt;
having full access to the standard ones.&lt;br /&gt;
&lt;br /&gt;
The experimental elements part of the map-0.1-exp.dtd are: Line,&lt;br /&gt;
Rectangle, SavePos, RestorePos and ObstacleWall. All but ObstableWall&lt;br /&gt;
are sub elements of Wall. Thus they can only be used inside of a Wall element.&lt;br /&gt;
&lt;br /&gt;
Line: Allows to specify a 2 point line in a single element. The Line&lt;br /&gt;
attributes are :&lt;br /&gt;
startx= The x coordinate of the first point of the line&lt;br /&gt;
starty= The y coordinate of the first point of the line&lt;br /&gt;
endx= The x coordinate of the last point of the line&lt;br /&gt;
endy= The y coordinate of the last point of the line&lt;br /&gt;
&lt;br /&gt;
Rectangle: Allows to specify a rectangle in a single element. The&lt;br /&gt;
Rectangle attributes are:&lt;br /&gt;
startx= The x coordinate of a corner of the rectangle&lt;br /&gt;
starty= The y coordinate of a corner of the rectangle&lt;br /&gt;
endx= The x coordinate of the opposite corner of the rectangle&lt;br /&gt;
endy= The y coordinate of the opposite corner of the rectangle&lt;br /&gt;
&lt;br /&gt;
SavePos/RestorePos: This is a simple, 1 level stack, that can be used&lt;br /&gt;
during the definition of a wall. When declaring SavePos, the x and y&lt;br /&gt;
coordinate are saved. Calling RestorePos will reload the point that&lt;br /&gt;
was saved last and set it as the current point.&lt;br /&gt;
&lt;br /&gt;
ObstacleWall: The obstacle Wall behaves exactly like the Wall element,&lt;br /&gt;
except for a new attribute, the height. This allows you to define&lt;br /&gt;
obstacles in your arena that will not be of rim height. The height of&lt;br /&gt;
the Walls are client defined, either a low rim (most of the time on&lt;br /&gt;
slower computer) or a high rim (faster computer with accelerated&lt;br /&gt;
graphics). With ObstacleWall, you can fully control the height of&lt;br /&gt;
walls. It is now possible to define obstacles that will not limit the&lt;br /&gt;
visibility inside your arena. For comparison purpose, the height of a&lt;br /&gt;
trace is of 1.0, and the height of a low rim is of 4.0. For better&lt;br /&gt;
performance on most clients, ObstacleWall higher than 4.0 should be&lt;br /&gt;
kept to a minimal.&lt;br /&gt;
height= The height to assign to this ObstacleWall. If this parameter is&lt;br /&gt;
absent, a default of 1.5 is used. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Appendix I: Map writing best practice&lt;br /&gt;
I - 1) Comment your work&lt;br /&gt;
You should always comment the various parts of your work. Doing so&lt;br /&gt;
improve maintainability. Something that is obvious during the creation of&lt;br /&gt;
a particular map often becomes very cryptic after a few weeks. A good&lt;br /&gt;
comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comments in xml start with &amp;quot;&amp;lt;!--&amp;quot; (without the quotes) and ends with&lt;br /&gt;
&amp;quot;--&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t&lt;br /&gt;
highlight the commented part, be careful not to exclude a part of&lt;br /&gt;
your map by mistake.&lt;br /&gt;
&lt;br /&gt;
I - 2) Arena size&lt;br /&gt;
The original map is of size 500 by 500. Many servers have setting&lt;br /&gt;
that are oriented toward this size, and players are used to battle&lt;br /&gt;
in such an environment. &lt;br /&gt;
&lt;br /&gt;
A map that is significantly larger or smaller will require the&lt;br /&gt;
server admin to affect the scale facter to be used with the map to&lt;br /&gt;
preserve the gaming experience tailorder to the server. &lt;br /&gt;
&lt;br /&gt;
This is not a hard rule of any sort. One could easily imagine a&lt;br /&gt;
extremely large maze. In this instance, the true factor would be&lt;br /&gt;
the corridor width rather than the total size of the play area.&lt;br /&gt;
&lt;br /&gt;
I - 3) Don&#039;t overload attributes&lt;br /&gt;
Certain elements of the map have attributes that are exclusive. For&lt;br /&gt;
example, in the Axis element, when the attribute angle is defined, the&lt;br /&gt;
x and y attribute are never queried.&lt;br /&gt;
&lt;br /&gt;
While the engine ignore the exceeding data, this practice has the&lt;br /&gt;
following drawbacks:&lt;br /&gt;
- File size: The exceeding information is never used, but need to be&lt;br /&gt;
transmitted as part of the file, and stored.&lt;br /&gt;
- Readability: Exceeding information complicate the reading of a map by&lt;br /&gt;
humans. &lt;br /&gt;
- Maintenance: Maintenance of the map is not much more complex. If the&lt;br /&gt;
author is minimalist, he/she risk updating the part of information&lt;br /&gt;
that is ignored. Extremely good knowledge of the working of the parser&lt;br /&gt;
is required to avoid this pitfall, and the change is only valid if the&lt;br /&gt;
rule of precedences aren&#039;t updated. Specifying only one set of&lt;br /&gt;
information avoid this problem. Also, if both set of information are&lt;br /&gt;
updated, then the task for the author is double, and so are the risks&lt;br /&gt;
for error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Appendix II: Resource file name convention&lt;br /&gt;
Resource are external content that makes the game&lt;br /&gt;
interesting. Textures, sounds, models and maps are all resources for&lt;br /&gt;
Armagetron Ad. While at the time of writing of this tutorial, only maps&lt;br /&gt;
are supported as true resources, soon support for the other types will&lt;br /&gt;
be added. Also, while this section incorporated in the Maps tutorial,&lt;br /&gt;
it might be moved as an independent document, and the standard&lt;br /&gt;
described might be updated in a near future. Please inform yourself.&lt;br /&gt;
&lt;br /&gt;
For ease of administration and to avoid conflicting versions, all&lt;br /&gt;
resources for Armagetron Ad should follow the following naming&lt;br /&gt;
convention. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;AuthorName&amp;gt;/[SubDirectory/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;Extension&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- AuthorName: The name of the person who created the resource. This can&lt;br /&gt;
be the full name, a nick name (such as the ones used on the&lt;br /&gt;
Armagetron Ad forum) of the author. Alternatively, the author can forgo&lt;br /&gt;
his or her name and instead opt for a group name. Group name should be&lt;br /&gt;
used when the author want to indicate that a set of resources are&lt;br /&gt;
associate with a group. Instances of this could be when the resources&lt;br /&gt;
are for a clan, a community, a [set of] server[s].&lt;br /&gt;
&lt;br /&gt;
- SubDirectory: Prolific authors and those are free to set up any&lt;br /&gt;
number of sub directories to help them organize and possibly&lt;br /&gt;
categorize their resources. The Armagetron Ad team recommend you to&lt;br /&gt;
categorize resources by topics (ie: all the resources required for a&lt;br /&gt;
particular movie-pack set in the same sub directory) over other&lt;br /&gt;
categorization, such as categorization by type (ie: all the floor&lt;br /&gt;
tiles set in the same sub directory). Any number of sub directory level &lt;br /&gt;
should be supported. This is not a mandatory item.&lt;br /&gt;
&lt;br /&gt;
- ResourceName: The actual name of the resource. This should be&lt;br /&gt;
descriptive, and somewhat unique to facilitate identification of the&lt;br /&gt;
described resource. The advantage of specifying a somewhat unique name&lt;br /&gt;
here is that should the resource be accidentally moved out of its&lt;br /&gt;
folder, it is still possible to quickly and easily identify it. A&lt;br /&gt;
special note for maps: the ResourceName should be the same as the name&lt;br /&gt;
attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
- VersionNumber: This part should be used by the author to identify&lt;br /&gt;
which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new&lt;br /&gt;
resources, Armagetron Ad rely solely on this part to be updated. Should&lt;br /&gt;
a resource be updated and the old name kept, it would cause problems&lt;br /&gt;
between different clients. Client already having the old resource&lt;br /&gt;
would not get the modifications, as they would expect the content to&lt;br /&gt;
be the same, and only clients that would not have a local copy of file&lt;br /&gt;
would get the latest version. The actual format to be used for the&lt;br /&gt;
VersionNumber is left to the choice of the author. While the&lt;br /&gt;
Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar&lt;br /&gt;
to those used for software&#039;s versions, any other notation can be&lt;br /&gt;
used, such as a simple numeral (GlowStick-1.png, GlowStick-2.png,&lt;br /&gt;
...). Keep in mind that it should be obvious to other as to which is&lt;br /&gt;
the most up to date version of the resource. A special note for maps:&lt;br /&gt;
the VersionNumber should be the same as the version attribute of the&lt;br /&gt;
Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
- Extension: This is the regular type of extension. While Armagetron Ad&lt;br /&gt;
doesn&#039;t verify that the extension describe the right type of content,&lt;br /&gt;
it is favorable for other users that you set it to the appropriate&lt;br /&gt;
type, and thus facilitate the usage of your resource.&lt;br /&gt;
&lt;br /&gt;
A few examples:&lt;br /&gt;
&amp;lt;pre&amp;gt;philippeqc/Firewall-0.3.2.png&lt;br /&gt;
philippeqc/castle-6.aamap.xml&lt;br /&gt;
TigersNetwork/CougarMoviepack/cougar-3.1.aamap.xml&lt;br /&gt;
TigersNetwork/CougarMoviepack/PawTrace-floor-2.png&lt;br /&gt;
AngelOfMercy-Clan/OfficialCycleMode-2.1.7.ace&lt;br /&gt;
AngelOfMercy-Clan/trainingMap-6.aamap.xml&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Appendix III: Resource repository&lt;br /&gt;
&lt;br /&gt;
When a player doesn&#039;t have the map being used on a server, their game will&lt;br /&gt;
automatically download it from the resource repository. To add your completed&lt;br /&gt;
maps to the official resource repository, go to:&lt;br /&gt;
	http://beta.armagetronad.net/028-link/addmaps&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Appendix IV: Examples&lt;br /&gt;
&lt;br /&gt;
II - 1 Parallelogram arena&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE World SYSTEM &amp;quot;map-0.1.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World version=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- A variation on the classic arena --&amp;gt;&lt;br /&gt;
    &amp;lt;Field&amp;gt;&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-0.2&amp;quot; y=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0.2&amp;quot; y=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;265&amp;quot; y=&amp;quot;50&amp;quot; xdir=&amp;quot;0.2&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;335&amp;quot; y=&amp;quot;450&amp;quot; xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;99&amp;quot; y=&amp;quot;245&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;501&amp;quot; y=&amp;quot;255&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;325&amp;quot; y=&amp;quot;100&amp;quot; xdir=&amp;quot;0.2&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;275&amp;quot; y=&amp;quot;400&amp;quot; xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;139&amp;quot; y=&amp;quot;195&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;461&amp;quot; y=&amp;quot;305&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;225&amp;quot; y=&amp;quot;100&amp;quot; xdir=&amp;quot;0.2&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;375&amp;quot; y=&amp;quot;400&amp;quot; xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;159&amp;quot; y=&amp;quot;295&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;441&amp;quot; y=&amp;quot;205&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;500&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;600&amp;quot; y=&amp;quot;500&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;500&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/Wall&amp;gt;&lt;br /&gt;
    &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/World&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
II - 2 HexaTRON&lt;br /&gt;
The HexaTRON map has been developed by Luke-Jr for his HexaTRON&lt;br /&gt;
mod on the code. It has a hexagonal flower and uses 6&lt;br /&gt;
directions. Please not that this is the version 0.2 of the map, and&lt;br /&gt;
that many newer version have been published.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE World SYSTEM &amp;quot;map-0.1.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World version=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Field&amp;gt;&lt;br /&gt;
&amp;lt;!-- This is the Hexa map put in XML. This should work out of the&lt;br /&gt;
box, ie: without changes to the aa engine code beside a flashy new&lt;br /&gt;
parser. Errors might have been introduced during the conversion to&lt;br /&gt;
XML by philippeqc, for your debugging amusement --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;99.5&amp;quot; y=&amp;quot;73.612159&amp;quot; xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;-15.5&amp;quot; y=&amp;quot;368.0608&amp;quot; xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;198.333333&amp;quot; y=&amp;quot;196.29909&amp;quot; xdir=&amp;quot;-1.0&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;-114.333333&amp;quot; y=&amp;quot;245.37387&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;141.666666&amp;quot; y=&amp;quot;343.52341&amp;quot; xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;-57.666666&amp;quot; y=&amp;quot;98.149545&amp;quot; xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;85&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;127.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;212.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;255&amp;quot; y=&amp;quot;147.22432&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;212.5&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;255&amp;quot; y=&amp;quot;294.44864&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;212.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;127.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;85&amp;quot; y=&amp;quot;441.67296&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;441.67296&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-43.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-128.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-170&amp;quot; y=&amp;quot;294.44864&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-128.5&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-170&amp;quot; y=&amp;quot;147.22432&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-128.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-43.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;127.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;113.333333&amp;quot; y=&amp;quot;98.149545&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;212.5&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;184.166666&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;127.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;113.333333&amp;quot; y=&amp;quot;343.52341&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-43.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-29.666666&amp;quot; y=&amp;quot;343.52341&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-128.5&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-100.833333&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-43.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-29.666666&amp;quot; y=&amp;quot;98.149545&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
    &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/World&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
About the &amp;quot;undefined and unsupported&amp;quot;:&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and&lt;br /&gt;
unsupported&amp;quot;. While it may be possible to do them now, and even&lt;br /&gt;
amusing to do it, they are strongly discouraged. Later version of&lt;br /&gt;
the World format will most probably conflict with those&lt;br /&gt;
behaviors. This will make such behaviors difficult to preserve, if&lt;br /&gt;
possible at all. For this reasons, it has been decided that _NO_&lt;br /&gt;
effort would be put to maintain them. Use them if you want, but do&lt;br /&gt;
not come complaining if and when they stop working. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
&lt;br /&gt;
-how to submit resource&lt;br /&gt;
-Extension&lt;/div&gt;</summary>
		<author><name>66.31.240.66</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=1306</id>
		<title>Making Maps by Hand</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=1306"/>
		<updated>2005-10-21T18:40:57Z</updated>

		<summary type="html">&lt;p&gt;66.31.240.66: /* Normalization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is to help map designer to get a grasp of the World&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This tutorial describe the version 0.1 of the World format. As&lt;br /&gt;
it focuses on very basic elements, the possibility of it&lt;br /&gt;
to be understood by later parser should be quite good.&lt;br /&gt;
&lt;br /&gt;
== Format overview ==&lt;br /&gt;
&lt;br /&gt;
The classic Armagetron arena could be described with the following&lt;br /&gt;
map:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE World SYSTEM &amp;quot;map-0.1.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World version=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map name=&amp;quot;Armagetron Classic&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Manuel Moos&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Field&amp;gt;&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;255&amp;quot; y=&amp;quot;50&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;245&amp;quot; y=&amp;quot;450&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;50&amp;quot; y=&amp;quot;245&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;450&amp;quot; y=&amp;quot;255&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;305&amp;quot; y=&amp;quot;100&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;195&amp;quot; y=&amp;quot;400&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;100&amp;quot; y=&amp;quot;195&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;400&amp;quot; y=&amp;quot;305&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;205&amp;quot; y=&amp;quot;100&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;295&amp;quot; y=&amp;quot;400&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;100&amp;quot; y=&amp;quot;295&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;400&amp;quot; y=&amp;quot;205&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;500&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;500&amp;quot; y=&amp;quot;500&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;500&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/Wall&amp;gt;&lt;br /&gt;
    &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/World&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The World format start with a XML header. The actual definition&lt;br /&gt;
start with the Map element. You can see on line 5 that this is has&lt;br /&gt;
been designed by Manuel Moos as the classic arena definition to be&lt;br /&gt;
used for its game. &lt;br /&gt;
&lt;br /&gt;
Inside the Field element, line 7 define that 4 axes are to be&lt;br /&gt;
used. From line 9 to 22, all the spawn points, ie: the points where&lt;br /&gt;
the cycles are located when the match starts, are defined. Finally&lt;br /&gt;
the walls are defined, delimiting the play area.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the Map element is&lt;br /&gt;
the Field element. Only one Field can be defined.&lt;br /&gt;
&lt;br /&gt;
The World element only has one attribute, describing the version&lt;br /&gt;
of the rules and definition used. At the moment, only &amp;quot;0.1&amp;quot; is&lt;br /&gt;
valid.&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
At this moment, the element possible inside of the Map element is&lt;br /&gt;
the Field element. Only one Field can be defined.&lt;br /&gt;
&lt;br /&gt;
The Map element has 3 attributes: name, version and author.&lt;br /&gt;
Store the name of your map in the name field, your name in the&lt;br /&gt;
author, and use the version field to allow others to find the&lt;br /&gt;
latest definition of your fine work.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Map name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Field ==&lt;br /&gt;
The Field element holds the description required to construct the&lt;br /&gt;
play area. Inside the Field, Axes, Spawn and Wall elements can be&lt;br /&gt;
defined. &lt;br /&gt;
&lt;br /&gt;
== Axes ==&lt;br /&gt;
The Axes element define how the cycles will behave on this&lt;br /&gt;
particular Field. The original Armagetron used 4 axes. &lt;br /&gt;
&lt;br /&gt;
The Axes element has 2 field:&lt;br /&gt;
;number&lt;br /&gt;
: This specifies the number of axes that should be used. If not specified, 4 axes are assumed.&lt;br /&gt;
;normalize&lt;br /&gt;
:When set to true, specify that the game should ensure that the direction vectors are scaled to have a size of exactly 1.0. When not specified, the individual axis will be keep at the exact length they are specified. This is covered in section 6. When not specified, it is assumed that normalization is desired.&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot; normalize=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When used without any other information, it is assumed that equally spaced axes should be generated, starting from (1,0) and going clockwise. The number generated is the value specified by the number attribute.&lt;br /&gt;
&lt;br /&gt;
The Axes element can also be used to describe each direction that can be used, instead of relying on the automatic generation. To do this, Axis elements are used to describe each directions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Axis element uses the following fields:&lt;br /&gt;
;x&lt;br /&gt;
: This is size of the displacement along the x&#039;s for this axis&lt;br /&gt;
;y&lt;br /&gt;
: This is size of the displacement along the y&#039;s for this axis&lt;br /&gt;
;angle&lt;br /&gt;
: This allow to describe the Axis in degrees&lt;br /&gt;
;length&lt;br /&gt;
: When the angle is specified, the length can be used to scale the size of the vector described. This value is only used when angle are specified.&lt;br /&gt;
&lt;br /&gt;
If the angle field is found, the length will be queried and used. If the length is absent, a default of 1 is used for the length. If no angle is specified, then both the x and y need to be specified for the Axis to be valid.&lt;br /&gt;
&lt;br /&gt;
The previous example could be re-written with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis angle=&amp;quot;45&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis angle=&amp;quot;135&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;225&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;335&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that even though the length is specified, because the Axes element doesn&#039;t have the normalize=&amp;quot;false&amp;quot;, all the lengths will be scaled back to exactly 1.&lt;br /&gt;
&lt;br /&gt;
The Axes should be specified in clockwise order. The specified axes are stored in the order they appear. When a player want to turn right, it is passed to the next axis on the list, or to the first when turning from the last direction.&lt;br /&gt;
&lt;br /&gt;
You might observe that in Example 5.2, the direction sum up to more than 1.0. For example, the first Axis has a x and a y of 1. The real length of the described Axis is &lt;br /&gt;
&amp;lt;math&amp;gt;\sqrt{x^2+y^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
, which is approximately 1.4142. By specifying the normalize=&amp;quot;true&amp;quot;, or using the default behavior, you ensure that they are scaled back to 1.0.&lt;br /&gt;
&lt;br /&gt;
The number of Axis specified should be the same as the number of axes. Any extra axes will be discarded. Any missing Axis will be assumed to be (1,0). &lt;br /&gt;
&lt;br /&gt;
Note: Some old maps will use Point instead of Axis. The Point is deprecated in this context. New maps should use the Axis element.&lt;br /&gt;
&lt;br /&gt;
== Advanced Axes ==&lt;br /&gt;
&lt;br /&gt;
=== Normalization ===&lt;br /&gt;
&lt;br /&gt;
It is often easier to write directions are (2,1) rather than&lt;br /&gt;
(.89442719099991587856 , .44721359549995793928), which is the&lt;br /&gt;
normalized equivalent. The normalization mechanism ensure that&lt;br /&gt;
displacement is constant on all the axes. This has always been the&lt;br /&gt;
behavior of the game. So what is the effect of having non normalized&lt;br /&gt;
Axis? Before anything else, a bit of understanding how the engine of&lt;br /&gt;
Armagetron operates might be required. &lt;br /&gt;
&lt;br /&gt;
You might recall from your physic class that the distance traveled is&lt;br /&gt;
computed from the speed at which you travel multiplied by the time&lt;br /&gt;
during with you traveled ie: distance = speed * time.&lt;br /&gt;
&lt;br /&gt;
Armagetron has at its core a 2D engine. Vehicle move along a 2D&lt;br /&gt;
surface, changing their x&#039;s and y&#039;s position. To find the new position&lt;br /&gt;
of a vehicle, the distance is multiplied by a 2D vector, the&lt;br /&gt;
direction, before being added to the old position. Because the&lt;br /&gt;
direction is a normalized vector, the resulting displacement is of the&lt;br /&gt;
same size than the calculated distance. But if the direction is a&lt;br /&gt;
non-normalized vector, ie: it has a size that is lesser or greater&lt;br /&gt;
than 1, but not equal, then the displacement gets to have a different&lt;br /&gt;
size than the distance.&lt;br /&gt;
&lt;br /&gt;
By setting the Axis to non-normalized values, the map designer can&lt;br /&gt;
modify displacement in the arena. By defining Axis with a vector size&lt;br /&gt;
of 2, see example 6.1.1, all the cycles would behave as if they where&lt;br /&gt;
moving twice as fast. Setting the Axis a length of 0.5, see example&lt;br /&gt;
6.1.2, the opposite effect occurs. Now the cycle move as if their&lt;br /&gt;
speed was halved.&lt;br /&gt;
&lt;br /&gt;
Example 6.1.2 Axes of size 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;2&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-2&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 6.1.2 Axes of size 0.5&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By setting the normalize attribute to false, the designer ensure&lt;br /&gt;
that the game will use the Axis values as is. While this section has&lt;br /&gt;
used Axis that all have the same size, this is not a requirement. The&lt;br /&gt;
next section will explore setting Axis with different size.&lt;br /&gt;
This permit to affect the displacement on certain axes.&lt;br /&gt;
&lt;br /&gt;
=== Uneven Axes ===&lt;br /&gt;
Up to now, the Axis have always have the same size. This mean that for&lt;br /&gt;
a given speed, the displacement of a cycle is always the same in every&lt;br /&gt;
direction. But nothing permit you to define it differently. &lt;br /&gt;
&lt;br /&gt;
Imagine an arena shaped as a rectangle. The height, along the y&#039;s,&lt;br /&gt;
would be ten times the size of the length, along the x&#039;s. Normally, with&lt;br /&gt;
the Axis all of the same size, it would take a player ten time as long to&lt;br /&gt;
run from one wall to another when cruising along the height of the&lt;br /&gt;
rectangle. &lt;br /&gt;
&lt;br /&gt;
But you could decide to make motion along the height occur at ten time the&lt;br /&gt;
rate, so it would take a player the same time to cover the height of&lt;br /&gt;
the arena than to cover the length, giving it an &amp;quot;Alice in Wonderland&amp;quot;&lt;br /&gt;
feeling (see example 6.2.1). This feeling could be exaggerated even more&lt;br /&gt;
by making traveling along the longest distance occur in half the time&lt;br /&gt;
that travel along the shortest distance. To do this, you could double&lt;br /&gt;
the size of the Axis set in the previous example (see example&lt;br /&gt;
6.2.2). Now, even thou one dimension of the rectangle is 10 time the&lt;br /&gt;
other, travel along this longer dimension occur at a much higher rate,&lt;br /&gt;
compressing this dimension in the player&#039;s mind.&lt;br /&gt;
&lt;br /&gt;
Example 6.2.1 Rectangle of equal travel time&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
	&amp;lt;Wall&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;1000&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;1000&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Wall&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 6.2.2 Rectangle of compressed travel time&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
	&amp;lt;Wall&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;1000&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;1000&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Wall&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The current game play is balanced around the fact that normally,&lt;br /&gt;
the displacement factor is of size 1. By increasing this too much, your&lt;br /&gt;
map might quickly become unplayable. While the example present Axis&lt;br /&gt;
size of 10&#039;s and 20&#039;s, it is only for a pedagogical value. If you want&lt;br /&gt;
to create great difference of displacement among different Axis, you&lt;br /&gt;
might find that augmenting Axes size a little bit and raising others&lt;br /&gt;
also could produce a better effect. The example 6.2.3 offers a ratio of&lt;br /&gt;
6 between the displacement on the x&#039;s and y&#039;s, while keeping the faster&lt;br /&gt;
displacement at only 3 times the regular one.&lt;br /&gt;
&lt;br /&gt;
Example 6.2.3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-3&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Up to now, the Axes where always evenly placed around the&lt;br /&gt;
player. Distributing the Axes in a non-equal fashion can allow for&lt;br /&gt;
different kind of game play. If you where to make a parallelogram&lt;br /&gt;
shaped arena, you might want the players to be able to move along the&lt;br /&gt;
walls of the arena. For this, the different Axis would need to be&lt;br /&gt;
properly set. &lt;br /&gt;
&lt;br /&gt;
Example 6.2.4: Parallelogram arena&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;-0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
	&amp;lt;Wall&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Wall&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Order of the axes ===&lt;br /&gt;
Turning right is translated to passing to the next axis, and&lt;br /&gt;
turning left to the previous axis. But by changing the order that&lt;br /&gt;
the axes are defined, this behavior can be altered.&lt;br /&gt;
&lt;br /&gt;
Example 6.3.1:&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot; normalize=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 6.3.1, in degrees:&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;210&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;270&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;330&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;30&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;90&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This defines a regular 6 axes. Turning right will make the cycle&lt;br /&gt;
face a direction that is 60 degrees to its right. But by changing&lt;br /&gt;
the order, this can be altered.&lt;br /&gt;
&lt;br /&gt;
Example 6.3.2:&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot; normalize=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or, in degrees:&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;210&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;330&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;270&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;30&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;90&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now turning right from the first axis, the player will have the&lt;br /&gt;
impression of turning 120 degrees. Turning right again will turn&lt;br /&gt;
the player by -60 degrees. Continuing, the player would experience&lt;br /&gt;
turn of 120, 120 - 60 and 120 degrees, ending in the first&lt;br /&gt;
direction.&lt;br /&gt;
 &lt;br /&gt;
Also, the order of the axes could be totally reversed. This would&lt;br /&gt;
effectively make the left key turn the player to the right, and&lt;br /&gt;
the right key to the left&lt;br /&gt;
&lt;br /&gt;
Example 6.3.3:&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wall ==&lt;br /&gt;
Wall are those big clunky elements normally associated with the&lt;br /&gt;
rim.&lt;br /&gt;
&lt;br /&gt;
To define a wall, you need to specify all the corners of all its&lt;br /&gt;
segments. A wall segment will be created from one point to the&lt;br /&gt;
next. &lt;br /&gt;
&lt;br /&gt;
Example 7.1:&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;200&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;200&amp;quot; y=&amp;quot;200&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;200&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should notice that for an wall to be closed, you need to loop&lt;br /&gt;
back to the first point. &lt;br /&gt;
&lt;br /&gt;
Any number of walls can be specified inside the field element. A&lt;br /&gt;
Wall need at least 2 Points, but doesn&#039;t have any upper limits.&lt;br /&gt;
&lt;br /&gt;
Walls to not need to be closed. In the arena defined earlier, it&lt;br /&gt;
would be possible to add some obstacle walls. &lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;50&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;150&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible to have walls touching, and even crossing. There is&lt;br /&gt;
no difference between segments assembled from many wall elements,&lt;br /&gt;
or from a single one.&lt;br /&gt;
&lt;br /&gt;
While it is possible to leave the play arena unbounded, this&lt;br /&gt;
behavior should be considered undefined and unsupported. It is&lt;br /&gt;
highly recommended that the play area be bounded by a wall or a&lt;br /&gt;
series of walls leaving no holes.&lt;br /&gt;
&lt;br /&gt;
Also, while it it possible to define &amp;quot;holes&amp;quot; , ie&lt;br /&gt;
completely bounded areas inside a bigger area, or &amp;quot;islands&amp;quot;, ie&lt;br /&gt;
independent bounded areas independent of another play area, these&lt;br /&gt;
behaviors are undefined and unsupported. &lt;br /&gt;
&lt;br /&gt;
== Spawn points ==&lt;br /&gt;
Spawn points are where cycles are first located on the map. At&lt;br /&gt;
game start, the game server will spread the players and AI among&lt;br /&gt;
the different spawn locations described. You should provide&lt;br /&gt;
sufficient spawn location for the number of players you entered to&lt;br /&gt;
play on your map.&lt;br /&gt;
&lt;br /&gt;
Along with the location where the cycles will be placed, you&lt;br /&gt;
need to specify the starting direction of the cycle. This will&lt;br /&gt;
determine the direction that the cycle is facing when it appears.&lt;br /&gt;
&lt;br /&gt;
To specify this, two methods are offered:&lt;br /&gt;
Vector orientation:&lt;br /&gt;
In this method, you specify the direction as a vector, from (0, 0)&lt;br /&gt;
to (xdir, ydir). This will indicate the direction to be face by&lt;br /&gt;
the cycle.&lt;br /&gt;
Angle orientation:&lt;br /&gt;
In this method, you specify the direction as an angle. Degrees are&lt;br /&gt;
used for this.&lt;br /&gt;
&lt;br /&gt;
Because Armagetron is a game where motion occurs on certain axes&lt;br /&gt;
only, starting direction should also be done on those axes. The&lt;br /&gt;
game will use the direction described to find the closest matching&lt;br /&gt;
axis. It is the direction of the chosen axis that is assigned to&lt;br /&gt;
an spawned cycle. The direction specified is only used as a&lt;br /&gt;
recommendation.&lt;br /&gt;
&lt;br /&gt;
A Spawn has six attributes. Only three to four are needed to&lt;br /&gt;
describe a Spawn. Two of them, x and y, are mandatory.&lt;br /&gt;
x= the x coordinate where the cycle is to be created&lt;br /&gt;
y= the y coordinate where the cycle is to be created&lt;br /&gt;
xdir= the x coordinate of the recommended direction the cycle will face at&lt;br /&gt;
creation.&lt;br /&gt;
ydir= the y coordinate of the recommended direction the cycle will face at&lt;br /&gt;
creation.&lt;br /&gt;
angle= the recommended angle to orient the cycle&lt;br /&gt;
&lt;br /&gt;
If the angle attribute is specified, xdir and ydir are&lt;br /&gt;
ignored. When no angle attribute is specified, both xdir and ydir&lt;br /&gt;
are needed.&lt;br /&gt;
&lt;br /&gt;
Example 8.1:&lt;br /&gt;
       &amp;lt;Spawn x=&amp;quot;-15.5&amp;quot; y=&amp;quot;368.0608&amp;quot; xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Spawn x=&amp;quot;-15.5&amp;quot; y=&amp;quot;368.0608&amp;quot; angle=&amp;quot;60&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the direction indicated is used. The size of the direction&lt;br /&gt;
described doesn&#039;t influence the start up speed or displacement of a&lt;br /&gt;
cycle.&lt;br /&gt;
&lt;br /&gt;
It is to be noted that specifying a direction of (0,0) is&lt;br /&gt;
undefined. Also, specifying spawn points outside the play area&lt;br /&gt;
that you defined is undefined and unsupported. &lt;br /&gt;
&lt;br /&gt;
== Experimental Features ==&lt;br /&gt;
A few experimental features have been included in the current version&lt;br /&gt;
of Armagetron Ad. You will find there alternative ways of writing&lt;br /&gt;
Walls in a map, and a last minute addition allowing you to control the&lt;br /&gt;
height of Walls.&lt;br /&gt;
&lt;br /&gt;
It should be noted that these features are experimental. Their&lt;br /&gt;
syntax and presence in other version of the map format thus can&#039;t be&lt;br /&gt;
guarantied. &lt;br /&gt;
&lt;br /&gt;
To make use of these features, your map need to indicate that it want&lt;br /&gt;
to use the experimental dtd. This is specified by &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE World SYSTEM &amp;quot;map-0.1-exp.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doing so allow you to use all the experimental features, while still&lt;br /&gt;
having full access to the standard ones.&lt;br /&gt;
&lt;br /&gt;
The experimental elements part of the map-0.1-exp.dtd are: Line,&lt;br /&gt;
Rectangle, SavePos, RestorePos and ObstacleWall. All but ObstableWall&lt;br /&gt;
are sub elements of Wall. Thus they can only be used inside of a Wall element.&lt;br /&gt;
&lt;br /&gt;
Line: Allows to specify a 2 point line in a single element. The Line&lt;br /&gt;
attributes are :&lt;br /&gt;
startx= The x coordinate of the first point of the line&lt;br /&gt;
starty= The y coordinate of the first point of the line&lt;br /&gt;
endx= The x coordinate of the last point of the line&lt;br /&gt;
endy= The y coordinate of the last point of the line&lt;br /&gt;
&lt;br /&gt;
Rectangle: Allows to specify a rectangle in a single element. The&lt;br /&gt;
Rectangle attributes are:&lt;br /&gt;
startx= The x coordinate of a corner of the rectangle&lt;br /&gt;
starty= The y coordinate of a corner of the rectangle&lt;br /&gt;
endx= The x coordinate of the opposite corner of the rectangle&lt;br /&gt;
endy= The y coordinate of the opposite corner of the rectangle&lt;br /&gt;
&lt;br /&gt;
SavePos/RestorePos: This is a simple, 1 level stack, that can be used&lt;br /&gt;
during the definition of a wall. When declaring SavePos, the x and y&lt;br /&gt;
coordinate are saved. Calling RestorePos will reload the point that&lt;br /&gt;
was saved last and set it as the current point.&lt;br /&gt;
&lt;br /&gt;
ObstacleWall: The obstacle Wall behaves exactly like the Wall element,&lt;br /&gt;
except for a new attribute, the height. This allows you to define&lt;br /&gt;
obstacles in your arena that will not be of rim height. The height of&lt;br /&gt;
the Walls are client defined, either a low rim (most of the time on&lt;br /&gt;
slower computer) or a high rim (faster computer with accelerated&lt;br /&gt;
graphics). With ObstacleWall, you can fully control the height of&lt;br /&gt;
walls. It is now possible to define obstacles that will not limit the&lt;br /&gt;
visibility inside your arena. For comparison purpose, the height of a&lt;br /&gt;
trace is of 1.0, and the height of a low rim is of 4.0. For better&lt;br /&gt;
performance on most clients, ObstacleWall higher than 4.0 should be&lt;br /&gt;
kept to a minimal.&lt;br /&gt;
height= The height to assign to this ObstacleWall. If this parameter is&lt;br /&gt;
absent, a default of 1.5 is used. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Appendix I: Map writing best practice&lt;br /&gt;
I - 1) Comment your work&lt;br /&gt;
You should always comment the various parts of your work. Doing so&lt;br /&gt;
improve maintainability. Something that is obvious during the creation of&lt;br /&gt;
a particular map often becomes very cryptic after a few weeks. A good&lt;br /&gt;
comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comments in xml start with &amp;quot;&amp;lt;!--&amp;quot; (without the quotes) and ends with&lt;br /&gt;
&amp;quot;--&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t&lt;br /&gt;
highlight the commented part, be careful not to exclude a part of&lt;br /&gt;
your map by mistake.&lt;br /&gt;
&lt;br /&gt;
I - 2) Arena size&lt;br /&gt;
The original map is of size 500 by 500. Many servers have setting&lt;br /&gt;
that are oriented toward this size, and players are used to battle&lt;br /&gt;
in such an environment. &lt;br /&gt;
&lt;br /&gt;
A map that is significantly larger or smaller will require the&lt;br /&gt;
server admin to affect the scale facter to be used with the map to&lt;br /&gt;
preserve the gaming experience tailorder to the server. &lt;br /&gt;
&lt;br /&gt;
This is not a hard rule of any sort. One could easily imagine a&lt;br /&gt;
extremely large maze. In this instance, the true factor would be&lt;br /&gt;
the corridor width rather than the total size of the play area.&lt;br /&gt;
&lt;br /&gt;
I - 3) Don&#039;t overload attributes&lt;br /&gt;
Certain elements of the map have attributes that are exclusive. For&lt;br /&gt;
example, in the Axis element, when the attribute angle is defined, the&lt;br /&gt;
x and y attribute are never queried.&lt;br /&gt;
&lt;br /&gt;
While the engine ignore the exceeding data, this practice has the&lt;br /&gt;
following drawbacks:&lt;br /&gt;
- File size: The exceeding information is never used, but need to be&lt;br /&gt;
transmitted as part of the file, and stored.&lt;br /&gt;
- Readability: Exceeding information complicate the reading of a map by&lt;br /&gt;
humans. &lt;br /&gt;
- Maintenance: Maintenance of the map is not much more complex. If the&lt;br /&gt;
author is minimalist, he/she risk updating the part of information&lt;br /&gt;
that is ignored. Extremely good knowledge of the working of the parser&lt;br /&gt;
is required to avoid this pitfall, and the change is only valid if the&lt;br /&gt;
rule of precedences aren&#039;t updated. Specifying only one set of&lt;br /&gt;
information avoid this problem. Also, if both set of information are&lt;br /&gt;
updated, then the task for the author is double, and so are the risks&lt;br /&gt;
for error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Appendix II: Resource file name convention&lt;br /&gt;
Resource are external content that makes the game&lt;br /&gt;
interesting. Textures, sounds, models and maps are all resources for&lt;br /&gt;
Armagetron Ad. While at the time of writing of this tutorial, only maps&lt;br /&gt;
are supported as true resources, soon support for the other types will&lt;br /&gt;
be added. Also, while this section incorporated in the Maps tutorial,&lt;br /&gt;
it might be moved as an independent document, and the standard&lt;br /&gt;
described might be updated in a near future. Please inform yourself.&lt;br /&gt;
&lt;br /&gt;
For ease of administration and to avoid conflicting versions, all&lt;br /&gt;
resources for Armagetron Ad should follow the following naming&lt;br /&gt;
convention. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;AuthorName&amp;gt;/[SubDirectory/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;Extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- AuthorName: The name of the person who created the resource. This can&lt;br /&gt;
be the full name, a nick name (such as the ones used on the&lt;br /&gt;
Armagetron Ad forum) of the author. Alternatively, the author can forgo&lt;br /&gt;
his or her name and instead opt for a group name. Group name should be&lt;br /&gt;
used when the author want to indicate that a set of resources are&lt;br /&gt;
associate with a group. Instances of this could be when the resources&lt;br /&gt;
are for a clan, a community, a [set of] server[s].&lt;br /&gt;
&lt;br /&gt;
- SubDirectory: Prolific authors and those are free to set up any&lt;br /&gt;
number of sub directories to help them organize and possibly&lt;br /&gt;
categorize their resources. The Armagetron Ad team recommend you to&lt;br /&gt;
categorize resources by topics (ie: all the resources required for a&lt;br /&gt;
particular movie-pack set in the same sub directory) over other&lt;br /&gt;
categorization, such as categorization by type (ie: all the floor&lt;br /&gt;
tiles set in the same sub directory). Any number of sub directory level &lt;br /&gt;
should be supported. This is not a mandatory item.&lt;br /&gt;
&lt;br /&gt;
- ResourceName: The actual name of the resource. This should be&lt;br /&gt;
descriptive, and somewhat unique to facilitate identification of the&lt;br /&gt;
described resource. The advantage of specifying a somewhat unique name&lt;br /&gt;
here is that should the resource be accidentally moved out of its&lt;br /&gt;
folder, it is still possible to quickly and easily identify it. A&lt;br /&gt;
special note for maps: the ResourceName should be the same as the name&lt;br /&gt;
attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
- VersionNumber: This part should be used by the author to identify&lt;br /&gt;
which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new&lt;br /&gt;
resources, Armagetron Ad rely solely on this part to be updated. Should&lt;br /&gt;
a resource be updated and the old name kept, it would cause problems&lt;br /&gt;
between different clients. Client already having the old resource&lt;br /&gt;
would not get the modifications, as they would expect the content to&lt;br /&gt;
be the same, and only clients that would not have a local copy of file&lt;br /&gt;
would get the latest version. The actual format to be used for the&lt;br /&gt;
VersionNumber is left to the choice of the author. While the&lt;br /&gt;
Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar&lt;br /&gt;
to those used for software&#039;s versions, any other notation can be&lt;br /&gt;
used, such as a simple numeral (GlowStick-1.png, GlowStick-2.png,&lt;br /&gt;
...). Keep in mind that it should be obvious to other as to which is&lt;br /&gt;
the most up to date version of the resource. A special note for maps:&lt;br /&gt;
the VersionNumber should be the same as the version attribute of the&lt;br /&gt;
Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
- Extension: This is the regular type of extension. While Armagetron Ad&lt;br /&gt;
doesn&#039;t verify that the extension describe the right type of content,&lt;br /&gt;
it is favorable for other users that you set it to the appropriate&lt;br /&gt;
type, and thus facilitate the usage of your resource.&lt;br /&gt;
&lt;br /&gt;
A few examples: &lt;br /&gt;
philippeqc/Firewall-0.3.2.png&lt;br /&gt;
philippeqc/castle-6.aamap.xml&lt;br /&gt;
TigersNetwork/CougarMoviepack/cougar-3.1.aamap.xml&lt;br /&gt;
TigersNetwork/CougarMoviepack/PawTrace-floor-2.png&lt;br /&gt;
AngelOfMercy-Clan/OfficialCycleMode-2.1.7.ace&lt;br /&gt;
AngelOfMercy-Clan/trainingMap-6.aamap.xml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Appendix III: Resource repository&lt;br /&gt;
&lt;br /&gt;
When a player doesn&#039;t have the map being used on a server, their game will&lt;br /&gt;
automatically download it from the resource repository. To add your completed&lt;br /&gt;
maps to the official resource repository, go to:&lt;br /&gt;
	http://beta.armagetronad.net/028-link/addmaps&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Appendix IV: Examples&lt;br /&gt;
&lt;br /&gt;
II - 1 Parallelogram arena&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE World SYSTEM &amp;quot;map-0.1.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World version=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- A variation on the classic arena --&amp;gt;&lt;br /&gt;
    &amp;lt;Field&amp;gt;&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-0.2&amp;quot; y=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0.2&amp;quot; y=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;265&amp;quot; y=&amp;quot;50&amp;quot; xdir=&amp;quot;0.2&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;335&amp;quot; y=&amp;quot;450&amp;quot; xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;99&amp;quot; y=&amp;quot;245&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;501&amp;quot; y=&amp;quot;255&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;325&amp;quot; y=&amp;quot;100&amp;quot; xdir=&amp;quot;0.2&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;275&amp;quot; y=&amp;quot;400&amp;quot; xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;139&amp;quot; y=&amp;quot;195&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;461&amp;quot; y=&amp;quot;305&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;225&amp;quot; y=&amp;quot;100&amp;quot; xdir=&amp;quot;0.2&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;375&amp;quot; y=&amp;quot;400&amp;quot; xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;159&amp;quot; y=&amp;quot;295&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;441&amp;quot; y=&amp;quot;205&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;500&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;600&amp;quot; y=&amp;quot;500&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;500&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/Wall&amp;gt;&lt;br /&gt;
    &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/World&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
II - 2 HexaTRON&lt;br /&gt;
The HexaTRON map has been developed by Luke-Jr for his HexaTRON&lt;br /&gt;
mod on the code. It has a hexagonal flower and uses 6&lt;br /&gt;
directions. Please not that this is the version 0.2 of the map, and&lt;br /&gt;
that many newer version have been published.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE World SYSTEM &amp;quot;map-0.1.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World version=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Field&amp;gt;&lt;br /&gt;
&amp;lt;!-- This is the Hexa map put in XML. This should work out of the&lt;br /&gt;
box, ie: without changes to the aa engine code beside a flashy new&lt;br /&gt;
parser. Errors might have been introduced during the conversion to&lt;br /&gt;
XML by philippeqc, for your debugging amusement --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;99.5&amp;quot; y=&amp;quot;73.612159&amp;quot; xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;-15.5&amp;quot; y=&amp;quot;368.0608&amp;quot; xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;198.333333&amp;quot; y=&amp;quot;196.29909&amp;quot; xdir=&amp;quot;-1.0&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;-114.333333&amp;quot; y=&amp;quot;245.37387&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;141.666666&amp;quot; y=&amp;quot;343.52341&amp;quot; xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;-57.666666&amp;quot; y=&amp;quot;98.149545&amp;quot; xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;85&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;127.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;212.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;255&amp;quot; y=&amp;quot;147.22432&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;212.5&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;255&amp;quot; y=&amp;quot;294.44864&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;212.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;127.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;85&amp;quot; y=&amp;quot;441.67296&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;441.67296&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-43.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-128.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-170&amp;quot; y=&amp;quot;294.44864&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-128.5&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-170&amp;quot; y=&amp;quot;147.22432&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-128.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-43.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;127.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;113.333333&amp;quot; y=&amp;quot;98.149545&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;212.5&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;184.166666&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;127.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;113.333333&amp;quot; y=&amp;quot;343.52341&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-43.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-29.666666&amp;quot; y=&amp;quot;343.52341&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-128.5&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-100.833333&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-43.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-29.666666&amp;quot; y=&amp;quot;98.149545&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
    &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/World&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
About the &amp;quot;undefined and unsupported&amp;quot;:&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and&lt;br /&gt;
unsupported&amp;quot;. While it may be possible to do them now, and even&lt;br /&gt;
amusing to do it, they are strongly discouraged. Later version of&lt;br /&gt;
the World format will most probably conflict with those&lt;br /&gt;
behaviors. This will make such behaviors difficult to preserve, if&lt;br /&gt;
possible at all. For this reasons, it has been decided that _NO_&lt;br /&gt;
effort would be put to maintain them. Use them if you want, but do&lt;br /&gt;
not come complaining if and when they stop working. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
&lt;br /&gt;
-how to submit resource&lt;br /&gt;
-Extension&lt;/div&gt;</summary>
		<author><name>66.31.240.66</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=1305</id>
		<title>Making Maps by Hand</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=1305"/>
		<updated>2005-10-21T18:39:57Z</updated>

		<summary type="html">&lt;p&gt;66.31.240.66: /* Uneven Axes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is to help map designer to get a grasp of the World&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This tutorial describe the version 0.1 of the World format. As&lt;br /&gt;
it focuses on very basic elements, the possibility of it&lt;br /&gt;
to be understood by later parser should be quite good.&lt;br /&gt;
&lt;br /&gt;
== Format overview ==&lt;br /&gt;
&lt;br /&gt;
The classic Armagetron arena could be described with the following&lt;br /&gt;
map:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE World SYSTEM &amp;quot;map-0.1.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World version=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map name=&amp;quot;Armagetron Classic&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Manuel Moos&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Field&amp;gt;&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;255&amp;quot; y=&amp;quot;50&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;245&amp;quot; y=&amp;quot;450&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;50&amp;quot; y=&amp;quot;245&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;450&amp;quot; y=&amp;quot;255&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;305&amp;quot; y=&amp;quot;100&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;195&amp;quot; y=&amp;quot;400&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;100&amp;quot; y=&amp;quot;195&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;400&amp;quot; y=&amp;quot;305&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;205&amp;quot; y=&amp;quot;100&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;295&amp;quot; y=&amp;quot;400&amp;quot; xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;100&amp;quot; y=&amp;quot;295&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;400&amp;quot; y=&amp;quot;205&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;500&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;500&amp;quot; y=&amp;quot;500&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;500&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/Wall&amp;gt;&lt;br /&gt;
    &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/World&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The World format start with a XML header. The actual definition&lt;br /&gt;
start with the Map element. You can see on line 5 that this is has&lt;br /&gt;
been designed by Manuel Moos as the classic arena definition to be&lt;br /&gt;
used for its game. &lt;br /&gt;
&lt;br /&gt;
Inside the Field element, line 7 define that 4 axes are to be&lt;br /&gt;
used. From line 9 to 22, all the spawn points, ie: the points where&lt;br /&gt;
the cycles are located when the match starts, are defined. Finally&lt;br /&gt;
the walls are defined, delimiting the play area.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the Map element is&lt;br /&gt;
the Field element. Only one Field can be defined.&lt;br /&gt;
&lt;br /&gt;
The World element only has one attribute, describing the version&lt;br /&gt;
of the rules and definition used. At the moment, only &amp;quot;0.1&amp;quot; is&lt;br /&gt;
valid.&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
At this moment, the element possible inside of the Map element is&lt;br /&gt;
the Field element. Only one Field can be defined.&lt;br /&gt;
&lt;br /&gt;
The Map element has 3 attributes: name, version and author.&lt;br /&gt;
Store the name of your map in the name field, your name in the&lt;br /&gt;
author, and use the version field to allow others to find the&lt;br /&gt;
latest definition of your fine work.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Map name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Field ==&lt;br /&gt;
The Field element holds the description required to construct the&lt;br /&gt;
play area. Inside the Field, Axes, Spawn and Wall elements can be&lt;br /&gt;
defined. &lt;br /&gt;
&lt;br /&gt;
== Axes ==&lt;br /&gt;
The Axes element define how the cycles will behave on this&lt;br /&gt;
particular Field. The original Armagetron used 4 axes. &lt;br /&gt;
&lt;br /&gt;
The Axes element has 2 field:&lt;br /&gt;
;number&lt;br /&gt;
: This specifies the number of axes that should be used. If not specified, 4 axes are assumed.&lt;br /&gt;
;normalize&lt;br /&gt;
:When set to true, specify that the game should ensure that the direction vectors are scaled to have a size of exactly 1.0. When not specified, the individual axis will be keep at the exact length they are specified. This is covered in section 6. When not specified, it is assumed that normalization is desired.&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot; normalize=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When used without any other information, it is assumed that equally spaced axes should be generated, starting from (1,0) and going clockwise. The number generated is the value specified by the number attribute.&lt;br /&gt;
&lt;br /&gt;
The Axes element can also be used to describe each direction that can be used, instead of relying on the automatic generation. To do this, Axis elements are used to describe each directions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Axis element uses the following fields:&lt;br /&gt;
;x&lt;br /&gt;
: This is size of the displacement along the x&#039;s for this axis&lt;br /&gt;
;y&lt;br /&gt;
: This is size of the displacement along the y&#039;s for this axis&lt;br /&gt;
;angle&lt;br /&gt;
: This allow to describe the Axis in degrees&lt;br /&gt;
;length&lt;br /&gt;
: When the angle is specified, the length can be used to scale the size of the vector described. This value is only used when angle are specified.&lt;br /&gt;
&lt;br /&gt;
If the angle field is found, the length will be queried and used. If the length is absent, a default of 1 is used for the length. If no angle is specified, then both the x and y need to be specified for the Axis to be valid.&lt;br /&gt;
&lt;br /&gt;
The previous example could be re-written with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis angle=&amp;quot;45&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis angle=&amp;quot;135&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;225&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;335&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that even though the length is specified, because the Axes element doesn&#039;t have the normalize=&amp;quot;false&amp;quot;, all the lengths will be scaled back to exactly 1.&lt;br /&gt;
&lt;br /&gt;
The Axes should be specified in clockwise order. The specified axes are stored in the order they appear. When a player want to turn right, it is passed to the next axis on the list, or to the first when turning from the last direction.&lt;br /&gt;
&lt;br /&gt;
You might observe that in Example 5.2, the direction sum up to more than 1.0. For example, the first Axis has a x and a y of 1. The real length of the described Axis is &lt;br /&gt;
&amp;lt;math&amp;gt;\sqrt{x^2+y^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
, which is approximately 1.4142. By specifying the normalize=&amp;quot;true&amp;quot;, or using the default behavior, you ensure that they are scaled back to 1.0.&lt;br /&gt;
&lt;br /&gt;
The number of Axis specified should be the same as the number of axes. Any extra axes will be discarded. Any missing Axis will be assumed to be (1,0). &lt;br /&gt;
&lt;br /&gt;
Note: Some old maps will use Point instead of Axis. The Point is deprecated in this context. New maps should use the Axis element.&lt;br /&gt;
&lt;br /&gt;
== Advanced Axes ==&lt;br /&gt;
&lt;br /&gt;
=== Normalization ===&lt;br /&gt;
&lt;br /&gt;
It is often easier to write directions are (2,1) rather than&lt;br /&gt;
(.89442719099991587856 , .44721359549995793928), which is the&lt;br /&gt;
normalized equivalent. The normalization mechanism ensure that&lt;br /&gt;
displacement is constant on all the axes. This has always been the&lt;br /&gt;
behavior of the game. So what is the effect of having non normalized&lt;br /&gt;
Axis? Before anything else, a bit of understanding how the engine of&lt;br /&gt;
Armagetron operates might be required. &lt;br /&gt;
&lt;br /&gt;
You might recall from your physic class that the distance traveled is&lt;br /&gt;
computed from the speed at which you travel multiplied by the time&lt;br /&gt;
during with you traveled ie: distance = speed * time.&lt;br /&gt;
&lt;br /&gt;
Armagetron has at its core a 2D engine. Vehicle move along a 2D&lt;br /&gt;
surface, changing their x&#039;s and y&#039;s position. To find the new position&lt;br /&gt;
of a vehicle, the distance is multiplied by a 2D vector, the&lt;br /&gt;
direction, before being added to the old position. Because the&lt;br /&gt;
direction is a normalized vector, the resulting displacement is of the&lt;br /&gt;
same size than the calculated distance. But if the direction is a&lt;br /&gt;
non-normalized vector, ie: it has a size that is lesser or greater&lt;br /&gt;
than 1, but not equal, then the displacement gets to have a different&lt;br /&gt;
size than the distance.&lt;br /&gt;
&lt;br /&gt;
By setting the Axis to non-normalized values, the map designer can&lt;br /&gt;
modify displacement in the arena. By defining Axis with a vector size&lt;br /&gt;
of 2, see example 6.1.1, all the cycles would behave as if they where&lt;br /&gt;
moving twice as fast. Setting the Axis a length of 0.5, see example&lt;br /&gt;
6.1.2, the opposite effect occurs. Now the cycle move as if their&lt;br /&gt;
speed was halved.&lt;br /&gt;
&lt;br /&gt;
Example 6.1.2 Axes of size 2&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;2&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-2&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 6.1.2 Axes of size 0.5&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By setting the normalize attribute to false, the designer ensure&lt;br /&gt;
that the game will use the Axis values as is. While this section has&lt;br /&gt;
used Axis that all have the same size, this is not a requirement. The&lt;br /&gt;
next section will explore setting Axis with different size.&lt;br /&gt;
This permit to affect the displacement on certain axes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Uneven Axes ===&lt;br /&gt;
Up to now, the Axis have always have the same size. This mean that for&lt;br /&gt;
a given speed, the displacement of a cycle is always the same in every&lt;br /&gt;
direction. But nothing permit you to define it differently. &lt;br /&gt;
&lt;br /&gt;
Imagine an arena shaped as a rectangle. The height, along the y&#039;s,&lt;br /&gt;
would be ten times the size of the length, along the x&#039;s. Normally, with&lt;br /&gt;
the Axis all of the same size, it would take a player ten time as long to&lt;br /&gt;
run from one wall to another when cruising along the height of the&lt;br /&gt;
rectangle. &lt;br /&gt;
&lt;br /&gt;
But you could decide to make motion along the height occur at ten time the&lt;br /&gt;
rate, so it would take a player the same time to cover the height of&lt;br /&gt;
the arena than to cover the length, giving it an &amp;quot;Alice in Wonderland&amp;quot;&lt;br /&gt;
feeling (see example 6.2.1). This feeling could be exaggerated even more&lt;br /&gt;
by making traveling along the longest distance occur in half the time&lt;br /&gt;
that travel along the shortest distance. To do this, you could double&lt;br /&gt;
the size of the Axis set in the previous example (see example&lt;br /&gt;
6.2.2). Now, even thou one dimension of the rectangle is 10 time the&lt;br /&gt;
other, travel along this longer dimension occur at a much higher rate,&lt;br /&gt;
compressing this dimension in the player&#039;s mind.&lt;br /&gt;
&lt;br /&gt;
Example 6.2.1 Rectangle of equal travel time&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
	&amp;lt;Wall&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;1000&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;1000&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Wall&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 6.2.2 Rectangle of compressed travel time&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
	&amp;lt;Wall&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;1000&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;1000&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Wall&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The current game play is balanced around the fact that normally,&lt;br /&gt;
the displacement factor is of size 1. By increasing this too much, your&lt;br /&gt;
map might quickly become unplayable. While the example present Axis&lt;br /&gt;
size of 10&#039;s and 20&#039;s, it is only for a pedagogical value. If you want&lt;br /&gt;
to create great difference of displacement among different Axis, you&lt;br /&gt;
might find that augmenting Axes size a little bit and raising others&lt;br /&gt;
also could produce a better effect. The example 6.2.3 offers a ratio of&lt;br /&gt;
6 between the displacement on the x&#039;s and y&#039;s, while keeping the faster&lt;br /&gt;
displacement at only 3 times the regular one.&lt;br /&gt;
&lt;br /&gt;
Example 6.2.3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-3&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Up to now, the Axes where always evenly placed around the&lt;br /&gt;
player. Distributing the Axes in a non-equal fashion can allow for&lt;br /&gt;
different kind of game play. If you where to make a parallelogram&lt;br /&gt;
shaped arena, you might want the players to be able to move along the&lt;br /&gt;
walls of the arena. For this, the different Axis would need to be&lt;br /&gt;
properly set. &lt;br /&gt;
&lt;br /&gt;
Example 6.2.4: Parallelogram arena&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;-0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
	&amp;lt;Wall&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Wall&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Order of the axes ===&lt;br /&gt;
Turning right is translated to passing to the next axis, and&lt;br /&gt;
turning left to the previous axis. But by changing the order that&lt;br /&gt;
the axes are defined, this behavior can be altered.&lt;br /&gt;
&lt;br /&gt;
Example 6.3.1:&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot; normalize=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 6.3.1, in degrees:&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;210&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;270&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;330&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;30&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;90&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This defines a regular 6 axes. Turning right will make the cycle&lt;br /&gt;
face a direction that is 60 degrees to its right. But by changing&lt;br /&gt;
the order, this can be altered.&lt;br /&gt;
&lt;br /&gt;
Example 6.3.2:&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot; normalize=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-0.5&amp;quot; y=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0.5&amp;quot; y=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or, in degrees:&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;210&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;330&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;270&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;30&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis angle=&amp;quot;90&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now turning right from the first axis, the player will have the&lt;br /&gt;
impression of turning 120 degrees. Turning right again will turn&lt;br /&gt;
the player by -60 degrees. Continuing, the player would experience&lt;br /&gt;
turn of 120, 120 - 60 and 120 degrees, ending in the first&lt;br /&gt;
direction.&lt;br /&gt;
 &lt;br /&gt;
Also, the order of the axes could be totally reversed. This would&lt;br /&gt;
effectively make the left key turn the player to the right, and&lt;br /&gt;
the right key to the left&lt;br /&gt;
&lt;br /&gt;
Example 6.3.3:&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wall ==&lt;br /&gt;
Wall are those big clunky elements normally associated with the&lt;br /&gt;
rim.&lt;br /&gt;
&lt;br /&gt;
To define a wall, you need to specify all the corners of all its&lt;br /&gt;
segments. A wall segment will be created from one point to the&lt;br /&gt;
next. &lt;br /&gt;
&lt;br /&gt;
Example 7.1:&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;200&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;200&amp;quot; y=&amp;quot;200&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;200&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should notice that for an wall to be closed, you need to loop&lt;br /&gt;
back to the first point. &lt;br /&gt;
&lt;br /&gt;
Any number of walls can be specified inside the field element. A&lt;br /&gt;
Wall need at least 2 Points, but doesn&#039;t have any upper limits.&lt;br /&gt;
&lt;br /&gt;
Walls to not need to be closed. In the arena defined earlier, it&lt;br /&gt;
would be possible to add some obstacle walls. &lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;50&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;150&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible to have walls touching, and even crossing. There is&lt;br /&gt;
no difference between segments assembled from many wall elements,&lt;br /&gt;
or from a single one.&lt;br /&gt;
&lt;br /&gt;
While it is possible to leave the play arena unbounded, this&lt;br /&gt;
behavior should be considered undefined and unsupported. It is&lt;br /&gt;
highly recommended that the play area be bounded by a wall or a&lt;br /&gt;
series of walls leaving no holes.&lt;br /&gt;
&lt;br /&gt;
Also, while it it possible to define &amp;quot;holes&amp;quot; , ie&lt;br /&gt;
completely bounded areas inside a bigger area, or &amp;quot;islands&amp;quot;, ie&lt;br /&gt;
independent bounded areas independent of another play area, these&lt;br /&gt;
behaviors are undefined and unsupported. &lt;br /&gt;
&lt;br /&gt;
== Spawn points ==&lt;br /&gt;
Spawn points are where cycles are first located on the map. At&lt;br /&gt;
game start, the game server will spread the players and AI among&lt;br /&gt;
the different spawn locations described. You should provide&lt;br /&gt;
sufficient spawn location for the number of players you entered to&lt;br /&gt;
play on your map.&lt;br /&gt;
&lt;br /&gt;
Along with the location where the cycles will be placed, you&lt;br /&gt;
need to specify the starting direction of the cycle. This will&lt;br /&gt;
determine the direction that the cycle is facing when it appears.&lt;br /&gt;
&lt;br /&gt;
To specify this, two methods are offered:&lt;br /&gt;
Vector orientation:&lt;br /&gt;
In this method, you specify the direction as a vector, from (0, 0)&lt;br /&gt;
to (xdir, ydir). This will indicate the direction to be face by&lt;br /&gt;
the cycle.&lt;br /&gt;
Angle orientation:&lt;br /&gt;
In this method, you specify the direction as an angle. Degrees are&lt;br /&gt;
used for this.&lt;br /&gt;
&lt;br /&gt;
Because Armagetron is a game where motion occurs on certain axes&lt;br /&gt;
only, starting direction should also be done on those axes. The&lt;br /&gt;
game will use the direction described to find the closest matching&lt;br /&gt;
axis. It is the direction of the chosen axis that is assigned to&lt;br /&gt;
an spawned cycle. The direction specified is only used as a&lt;br /&gt;
recommendation.&lt;br /&gt;
&lt;br /&gt;
A Spawn has six attributes. Only three to four are needed to&lt;br /&gt;
describe a Spawn. Two of them, x and y, are mandatory.&lt;br /&gt;
x= the x coordinate where the cycle is to be created&lt;br /&gt;
y= the y coordinate where the cycle is to be created&lt;br /&gt;
xdir= the x coordinate of the recommended direction the cycle will face at&lt;br /&gt;
creation.&lt;br /&gt;
ydir= the y coordinate of the recommended direction the cycle will face at&lt;br /&gt;
creation.&lt;br /&gt;
angle= the recommended angle to orient the cycle&lt;br /&gt;
&lt;br /&gt;
If the angle attribute is specified, xdir and ydir are&lt;br /&gt;
ignored. When no angle attribute is specified, both xdir and ydir&lt;br /&gt;
are needed.&lt;br /&gt;
&lt;br /&gt;
Example 8.1:&lt;br /&gt;
       &amp;lt;Spawn x=&amp;quot;-15.5&amp;quot; y=&amp;quot;368.0608&amp;quot; xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Spawn x=&amp;quot;-15.5&amp;quot; y=&amp;quot;368.0608&amp;quot; angle=&amp;quot;60&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the direction indicated is used. The size of the direction&lt;br /&gt;
described doesn&#039;t influence the start up speed or displacement of a&lt;br /&gt;
cycle.&lt;br /&gt;
&lt;br /&gt;
It is to be noted that specifying a direction of (0,0) is&lt;br /&gt;
undefined. Also, specifying spawn points outside the play area&lt;br /&gt;
that you defined is undefined and unsupported. &lt;br /&gt;
&lt;br /&gt;
== Experimental Features ==&lt;br /&gt;
A few experimental features have been included in the current version&lt;br /&gt;
of Armagetron Ad. You will find there alternative ways of writing&lt;br /&gt;
Walls in a map, and a last minute addition allowing you to control the&lt;br /&gt;
height of Walls.&lt;br /&gt;
&lt;br /&gt;
It should be noted that these features are experimental. Their&lt;br /&gt;
syntax and presence in other version of the map format thus can&#039;t be&lt;br /&gt;
guarantied. &lt;br /&gt;
&lt;br /&gt;
To make use of these features, your map need to indicate that it want&lt;br /&gt;
to use the experimental dtd. This is specified by &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE World SYSTEM &amp;quot;map-0.1-exp.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doing so allow you to use all the experimental features, while still&lt;br /&gt;
having full access to the standard ones.&lt;br /&gt;
&lt;br /&gt;
The experimental elements part of the map-0.1-exp.dtd are: Line,&lt;br /&gt;
Rectangle, SavePos, RestorePos and ObstacleWall. All but ObstableWall&lt;br /&gt;
are sub elements of Wall. Thus they can only be used inside of a Wall element.&lt;br /&gt;
&lt;br /&gt;
Line: Allows to specify a 2 point line in a single element. The Line&lt;br /&gt;
attributes are :&lt;br /&gt;
startx= The x coordinate of the first point of the line&lt;br /&gt;
starty= The y coordinate of the first point of the line&lt;br /&gt;
endx= The x coordinate of the last point of the line&lt;br /&gt;
endy= The y coordinate of the last point of the line&lt;br /&gt;
&lt;br /&gt;
Rectangle: Allows to specify a rectangle in a single element. The&lt;br /&gt;
Rectangle attributes are:&lt;br /&gt;
startx= The x coordinate of a corner of the rectangle&lt;br /&gt;
starty= The y coordinate of a corner of the rectangle&lt;br /&gt;
endx= The x coordinate of the opposite corner of the rectangle&lt;br /&gt;
endy= The y coordinate of the opposite corner of the rectangle&lt;br /&gt;
&lt;br /&gt;
SavePos/RestorePos: This is a simple, 1 level stack, that can be used&lt;br /&gt;
during the definition of a wall. When declaring SavePos, the x and y&lt;br /&gt;
coordinate are saved. Calling RestorePos will reload the point that&lt;br /&gt;
was saved last and set it as the current point.&lt;br /&gt;
&lt;br /&gt;
ObstacleWall: The obstacle Wall behaves exactly like the Wall element,&lt;br /&gt;
except for a new attribute, the height. This allows you to define&lt;br /&gt;
obstacles in your arena that will not be of rim height. The height of&lt;br /&gt;
the Walls are client defined, either a low rim (most of the time on&lt;br /&gt;
slower computer) or a high rim (faster computer with accelerated&lt;br /&gt;
graphics). With ObstacleWall, you can fully control the height of&lt;br /&gt;
walls. It is now possible to define obstacles that will not limit the&lt;br /&gt;
visibility inside your arena. For comparison purpose, the height of a&lt;br /&gt;
trace is of 1.0, and the height of a low rim is of 4.0. For better&lt;br /&gt;
performance on most clients, ObstacleWall higher than 4.0 should be&lt;br /&gt;
kept to a minimal.&lt;br /&gt;
height= The height to assign to this ObstacleWall. If this parameter is&lt;br /&gt;
absent, a default of 1.5 is used. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Appendix I: Map writing best practice&lt;br /&gt;
I - 1) Comment your work&lt;br /&gt;
You should always comment the various parts of your work. Doing so&lt;br /&gt;
improve maintainability. Something that is obvious during the creation of&lt;br /&gt;
a particular map often becomes very cryptic after a few weeks. A good&lt;br /&gt;
comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comments in xml start with &amp;quot;&amp;lt;!--&amp;quot; (without the quotes) and ends with&lt;br /&gt;
&amp;quot;--&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t&lt;br /&gt;
highlight the commented part, be careful not to exclude a part of&lt;br /&gt;
your map by mistake.&lt;br /&gt;
&lt;br /&gt;
I - 2) Arena size&lt;br /&gt;
The original map is of size 500 by 500. Many servers have setting&lt;br /&gt;
that are oriented toward this size, and players are used to battle&lt;br /&gt;
in such an environment. &lt;br /&gt;
&lt;br /&gt;
A map that is significantly larger or smaller will require the&lt;br /&gt;
server admin to affect the scale facter to be used with the map to&lt;br /&gt;
preserve the gaming experience tailorder to the server. &lt;br /&gt;
&lt;br /&gt;
This is not a hard rule of any sort. One could easily imagine a&lt;br /&gt;
extremely large maze. In this instance, the true factor would be&lt;br /&gt;
the corridor width rather than the total size of the play area.&lt;br /&gt;
&lt;br /&gt;
I - 3) Don&#039;t overload attributes&lt;br /&gt;
Certain elements of the map have attributes that are exclusive. For&lt;br /&gt;
example, in the Axis element, when the attribute angle is defined, the&lt;br /&gt;
x and y attribute are never queried.&lt;br /&gt;
&lt;br /&gt;
While the engine ignore the exceeding data, this practice has the&lt;br /&gt;
following drawbacks:&lt;br /&gt;
- File size: The exceeding information is never used, but need to be&lt;br /&gt;
transmitted as part of the file, and stored.&lt;br /&gt;
- Readability: Exceeding information complicate the reading of a map by&lt;br /&gt;
humans. &lt;br /&gt;
- Maintenance: Maintenance of the map is not much more complex. If the&lt;br /&gt;
author is minimalist, he/she risk updating the part of information&lt;br /&gt;
that is ignored. Extremely good knowledge of the working of the parser&lt;br /&gt;
is required to avoid this pitfall, and the change is only valid if the&lt;br /&gt;
rule of precedences aren&#039;t updated. Specifying only one set of&lt;br /&gt;
information avoid this problem. Also, if both set of information are&lt;br /&gt;
updated, then the task for the author is double, and so are the risks&lt;br /&gt;
for error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Appendix II: Resource file name convention&lt;br /&gt;
Resource are external content that makes the game&lt;br /&gt;
interesting. Textures, sounds, models and maps are all resources for&lt;br /&gt;
Armagetron Ad. While at the time of writing of this tutorial, only maps&lt;br /&gt;
are supported as true resources, soon support for the other types will&lt;br /&gt;
be added. Also, while this section incorporated in the Maps tutorial,&lt;br /&gt;
it might be moved as an independent document, and the standard&lt;br /&gt;
described might be updated in a near future. Please inform yourself.&lt;br /&gt;
&lt;br /&gt;
For ease of administration and to avoid conflicting versions, all&lt;br /&gt;
resources for Armagetron Ad should follow the following naming&lt;br /&gt;
convention. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;AuthorName&amp;gt;/[SubDirectory/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;Extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- AuthorName: The name of the person who created the resource. This can&lt;br /&gt;
be the full name, a nick name (such as the ones used on the&lt;br /&gt;
Armagetron Ad forum) of the author. Alternatively, the author can forgo&lt;br /&gt;
his or her name and instead opt for a group name. Group name should be&lt;br /&gt;
used when the author want to indicate that a set of resources are&lt;br /&gt;
associate with a group. Instances of this could be when the resources&lt;br /&gt;
are for a clan, a community, a [set of] server[s].&lt;br /&gt;
&lt;br /&gt;
- SubDirectory: Prolific authors and those are free to set up any&lt;br /&gt;
number of sub directories to help them organize and possibly&lt;br /&gt;
categorize their resources. The Armagetron Ad team recommend you to&lt;br /&gt;
categorize resources by topics (ie: all the resources required for a&lt;br /&gt;
particular movie-pack set in the same sub directory) over other&lt;br /&gt;
categorization, such as categorization by type (ie: all the floor&lt;br /&gt;
tiles set in the same sub directory). Any number of sub directory level &lt;br /&gt;
should be supported. This is not a mandatory item.&lt;br /&gt;
&lt;br /&gt;
- ResourceName: The actual name of the resource. This should be&lt;br /&gt;
descriptive, and somewhat unique to facilitate identification of the&lt;br /&gt;
described resource. The advantage of specifying a somewhat unique name&lt;br /&gt;
here is that should the resource be accidentally moved out of its&lt;br /&gt;
folder, it is still possible to quickly and easily identify it. A&lt;br /&gt;
special note for maps: the ResourceName should be the same as the name&lt;br /&gt;
attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
- VersionNumber: This part should be used by the author to identify&lt;br /&gt;
which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new&lt;br /&gt;
resources, Armagetron Ad rely solely on this part to be updated. Should&lt;br /&gt;
a resource be updated and the old name kept, it would cause problems&lt;br /&gt;
between different clients. Client already having the old resource&lt;br /&gt;
would not get the modifications, as they would expect the content to&lt;br /&gt;
be the same, and only clients that would not have a local copy of file&lt;br /&gt;
would get the latest version. The actual format to be used for the&lt;br /&gt;
VersionNumber is left to the choice of the author. While the&lt;br /&gt;
Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar&lt;br /&gt;
to those used for software&#039;s versions, any other notation can be&lt;br /&gt;
used, such as a simple numeral (GlowStick-1.png, GlowStick-2.png,&lt;br /&gt;
...). Keep in mind that it should be obvious to other as to which is&lt;br /&gt;
the most up to date version of the resource. A special note for maps:&lt;br /&gt;
the VersionNumber should be the same as the version attribute of the&lt;br /&gt;
Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
- Extension: This is the regular type of extension. While Armagetron Ad&lt;br /&gt;
doesn&#039;t verify that the extension describe the right type of content,&lt;br /&gt;
it is favorable for other users that you set it to the appropriate&lt;br /&gt;
type, and thus facilitate the usage of your resource.&lt;br /&gt;
&lt;br /&gt;
A few examples: &lt;br /&gt;
philippeqc/Firewall-0.3.2.png&lt;br /&gt;
philippeqc/castle-6.aamap.xml&lt;br /&gt;
TigersNetwork/CougarMoviepack/cougar-3.1.aamap.xml&lt;br /&gt;
TigersNetwork/CougarMoviepack/PawTrace-floor-2.png&lt;br /&gt;
AngelOfMercy-Clan/OfficialCycleMode-2.1.7.ace&lt;br /&gt;
AngelOfMercy-Clan/trainingMap-6.aamap.xml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Appendix III: Resource repository&lt;br /&gt;
&lt;br /&gt;
When a player doesn&#039;t have the map being used on a server, their game will&lt;br /&gt;
automatically download it from the resource repository. To add your completed&lt;br /&gt;
maps to the official resource repository, go to:&lt;br /&gt;
	http://beta.armagetronad.net/028-link/addmaps&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Appendix IV: Examples&lt;br /&gt;
&lt;br /&gt;
II - 1 Parallelogram arena&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE World SYSTEM &amp;quot;map-0.1.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World version=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- A variation on the classic arena --&amp;gt;&lt;br /&gt;
    &amp;lt;Field&amp;gt;&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;4&amp;quot; normalize=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-0.2&amp;quot; y=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;-1&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis x=&amp;quot;0.2&amp;quot; y=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Axes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;265&amp;quot; y=&amp;quot;50&amp;quot; xdir=&amp;quot;0.2&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;335&amp;quot; y=&amp;quot;450&amp;quot; xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;99&amp;quot; y=&amp;quot;245&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;501&amp;quot; y=&amp;quot;255&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;325&amp;quot; y=&amp;quot;100&amp;quot; xdir=&amp;quot;0.2&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;275&amp;quot; y=&amp;quot;400&amp;quot; xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;139&amp;quot; y=&amp;quot;195&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;461&amp;quot; y=&amp;quot;305&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;225&amp;quot; y=&amp;quot;100&amp;quot; xdir=&amp;quot;0.2&amp;quot; ydir=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;375&amp;quot; y=&amp;quot;400&amp;quot; xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;159&amp;quot; y=&amp;quot;295&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;Spawn x=&amp;quot;441&amp;quot; y=&amp;quot;205&amp;quot; xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;500&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;600&amp;quot; y=&amp;quot;500&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;500&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/Wall&amp;gt;&lt;br /&gt;
    &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/World&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
II - 2 HexaTRON&lt;br /&gt;
The HexaTRON map has been developed by Luke-Jr for his HexaTRON&lt;br /&gt;
mod on the code. It has a hexagonal flower and uses 6&lt;br /&gt;
directions. Please not that this is the version 0.2 of the map, and&lt;br /&gt;
that many newer version have been published.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE World SYSTEM &amp;quot;map-0.1.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World version=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Field&amp;gt;&lt;br /&gt;
&amp;lt;!-- This is the Hexa map put in XML. This should work out of the&lt;br /&gt;
box, ie: without changes to the aa engine code beside a flashy new&lt;br /&gt;
parser. Errors might have been introduced during the conversion to&lt;br /&gt;
XML by philippeqc, for your debugging amusement --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Axes number=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;99.5&amp;quot; y=&amp;quot;73.612159&amp;quot; xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;-15.5&amp;quot; y=&amp;quot;368.0608&amp;quot; xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;198.333333&amp;quot; y=&amp;quot;196.29909&amp;quot; xdir=&amp;quot;-1.0&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;-114.333333&amp;quot; y=&amp;quot;245.37387&amp;quot; xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;141.666666&amp;quot; y=&amp;quot;343.52341&amp;quot; xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Spawn x=&amp;quot;-57.666666&amp;quot; y=&amp;quot;98.149545&amp;quot; xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;85&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;127.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;212.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;255&amp;quot; y=&amp;quot;147.22432&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;212.5&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;255&amp;quot; y=&amp;quot;294.44864&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;212.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;127.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;85&amp;quot; y=&amp;quot;441.67296&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;441.67296&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-43.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-128.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-170&amp;quot; y=&amp;quot;294.44864&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-128.5&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-170&amp;quot; y=&amp;quot;147.22432&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-128.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-43.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;127.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;113.333333&amp;quot; y=&amp;quot;98.149545&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;212.5&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;184.166666&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;127.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;113.333333&amp;quot; y=&amp;quot;343.52341&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-43.5&amp;quot; y=&amp;quot;368.0608&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-29.666666&amp;quot; y=&amp;quot;343.52341&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-128.5&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-100.833333&amp;quot; y=&amp;quot;220.83648&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
        &amp;lt;Wall&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-43.5&amp;quot; y=&amp;quot;73.612159&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-29.666666&amp;quot; y=&amp;quot;98.149545&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Wall&amp;gt;&lt;br /&gt;
    &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/World&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
About the &amp;quot;undefined and unsupported&amp;quot;:&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and&lt;br /&gt;
unsupported&amp;quot;. While it may be possible to do them now, and even&lt;br /&gt;
amusing to do it, they are strongly discouraged. Later version of&lt;br /&gt;
the World format will most probably conflict with those&lt;br /&gt;
behaviors. This will make such behaviors difficult to preserve, if&lt;br /&gt;
possible at all. For this reasons, it has been decided that _NO_&lt;br /&gt;
effort would be put to maintain them. Use them if you want, but do&lt;br /&gt;
not come complaining if and when they stop working. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
&lt;br /&gt;
-how to submit resource&lt;br /&gt;
-Extension&lt;/div&gt;</summary>
		<author><name>66.31.240.66</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Armagetronad_Advanced:Community_Portal&amp;diff=1304</id>
		<title>Armagetronad Advanced:Community Portal</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Armagetronad_Advanced:Community_Portal&amp;diff=1304"/>
		<updated>2005-10-21T18:37:19Z</updated>

		<summary type="html">&lt;p&gt;66.31.240.66: /* Player Sites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I don&#039;t know what this page is for, so here&#039;s some links you&#039;re probably looking for:&lt;br /&gt;
&lt;br /&gt;
== Project Links ==&lt;br /&gt;
&lt;br /&gt;
[http://www.armagetronad.net Website]&lt;br /&gt;
&lt;br /&gt;
This is the website from which all other things Armagetron Advanced come.&lt;br /&gt;
&lt;br /&gt;
[http://forums.armagetronad.net Forums]&lt;br /&gt;
&lt;br /&gt;
Meet up on the forums, find other players, and stuff.  The developers also use the forums to talk about what they&#039;re doing, what they want to do, and what they like to eat.&lt;br /&gt;
&lt;br /&gt;
== Other Sites ==&lt;br /&gt;
&lt;br /&gt;
These are mostly websites for various servers that have them.&lt;br /&gt;
&lt;br /&gt;
[http://breakfast.servegame.com/ Breakfast off the Grid]&lt;br /&gt;
&lt;br /&gt;
For the servers previously known as &amp;quot;Breakfast Servers&amp;quot;.  Be warned there is a name change being tossed around.  Currently the site includes these servers:&lt;br /&gt;
&lt;br /&gt;
* Swampland&lt;br /&gt;
* Breakfast in Shrunkland&lt;br /&gt;
* The Crack Pipe&lt;br /&gt;
* Belly of the Beast (forthcoming)&lt;br /&gt;
&lt;br /&gt;
== Player Sites ==&lt;br /&gt;
&lt;br /&gt;
Some players have websites, and if you are a player with a website, feel free to edit this page and add your site to the list.&lt;br /&gt;
&lt;br /&gt;
[http://www.davefancella.com/ Lucifer]&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.generalconsumption.org/ nemostultae]&lt;/div&gt;</summary>
		<author><name>66.31.240.66</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Sandbox&amp;diff=1303</id>
		<title>Sandbox</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Sandbox&amp;diff=1303"/>
		<updated>2005-10-21T18:34:53Z</updated>

		<summary type="html">&lt;p&gt;66.31.240.66: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;      sandbox--test out the formatting here&amp;quot;&lt;br /&gt;
      o   ____          :::::::::::::::::: :::::::::::::::::: __|-----|__&lt;br /&gt;
      Y_,_|[]| --++++++ |[][][][][][][][]| |[][][][][][][][]| |  [] []  |&lt;br /&gt;
     {|_|_|__|;|______|;|________________|;|________________|;|_________|;&lt;br /&gt;
      /oo--OO   oo  oo   oo oo      oo oo   oo oo      oo oo   oo     oo &lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>66.31.240.66</name></author>
	</entry>
</feed>