<?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=Philippeqc</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=Philippeqc"/>
	<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Special:Contributions/Philippeqc"/>
	<updated>2026-10-16T00:29:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Zones_v2&amp;diff=18961</id>
		<title>Zones v2</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Zones_v2&amp;diff=18961"/>
		<updated>2007-06-21T16:49:38Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Acceleration instead of speed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Preamble ==&lt;br /&gt;
&lt;br /&gt;
You will note that the examples below dont sound that fun. I&#039;d like to think its because my creative power went into building a good system, and now there is little left to put on examples. But I&#039;m sure you will find interesting ways to use the mechanisms in here. My goal with this was to be able to have zones that could have different effect depending on who would use them. For example, having a  fortress that team Blue could conquer, but only 2 of the players of team Red could actually defend. The other Red could still circle it and block the enemy, but they could not lower its value actively. Everything described here works. There are still glitches small and not so small. The code is in my private branch, but feel free to grab a local copy if you want to play with it.&lt;br /&gt;
&lt;br /&gt;
The format is anything but closed. I&#039;d like to hear your opinion on it too (yes it is a PITA to write, but if you have a constructive remark about that, I&#039;d like to know it) &lt;br /&gt;
&lt;br /&gt;
-ph&lt;br /&gt;
&lt;br /&gt;
Most of this is from a forum post by philippeqc. I reworded some stuff and formatted a bit for the wiki. Some stuff might have gotten lost or reworded wrongly so cross refrence with the post if the wording gets hazy and/or just to double check @ http://forums.armagetronad.net/viewtopic.php?p=77491#77491. Some stuff might be in the wrong place. --[[User:Your mom|Your mom]] 11:42, 30 July 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zone element ==&lt;br /&gt;
&lt;br /&gt;
Individual zones may have a name. Entering a name is optional, and re-using a name will be considered to mean &amp;quot;add/override with the following information&amp;quot;. Dont rely on this behavior for anything, in other words &#039;&#039;&#039;Dont re-use the same name.&#039;&#039;&#039; All zones need a shape defined. At the moment only one shape exists, the ShapeCircle. More shapes are planned in the future and are ToDo&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
 &amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
  &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
 &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules and EffectGroups ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A zone can have up to 4 different &amp;quot;rules&amp;quot; (need better name ToDo). Enter, Inside, Leave, Outside. It classifies when the held elements should be inspected. Inside each of the &amp;quot;rules&amp;quot;, one can define EffectGroups. EffectGroup(s) are the fundamental building blocks of  this new system. It associate owners with consequences. Note that ownership is part of effectGroup(s), &#039;&#039;NOT&#039;&#039; the zone. So a zone may have multiple effectGroup(s), each with unique or interlapping owners. There are 2 types of owners: owner (individuals) and ownerTeam (every member of a team). It is possible to define 0,1 or many for each items.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;HACK:&lt;br /&gt;
ATM, only owner is supported, and it must be an exact match with a&lt;br /&gt;
player&#039;s name to associated the effect.&lt;br /&gt;
The real solution will translate the labels used to players based on&lt;br /&gt;
some other logic depending on &amp;quot;game type&amp;quot;. This is to be defined&lt;br /&gt;
later.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;HACK:&lt;br /&gt;
It should be possible to associate individual with teams in some part&lt;br /&gt;
of the map. In this text, I will user lowercase color name + number for&lt;br /&gt;
individual, and uppercase color name for teams. So the individual&lt;br /&gt;
red1, red7 and red90210 should be considered as players of the team&lt;br /&gt;
RED. I will also allow myself to insert _description_ in names to help&lt;br /&gt;
the reader when appropriate.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ShapeCircle ...&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
&amp;lt;Enter&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;red1,red2&amp;quot; ownerTeam=&amp;quot;BLUE,YELLOW&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;&amp;quot; ownerTeam=&amp;quot;RED&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;/Enter&amp;gt;&lt;br /&gt;
&amp;lt;Leave&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;green7&amp;quot; ownerTeam=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;/Leave&amp;gt;&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User element ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inside the EffectGroup, elements User are set. This element offers different readily made rules to determine if a player in the &amp;quot;rule&amp;quot; condition for the zone, is allowed to be considered a user. This is decided based from the following information: owner, ownerTeam and the player matching the rule. Two other conditions can be set for a player to be considered a valid user: positive and marked. These element are of type Triad. The possible values are true, false and ignore. We will come back to these later. If the current player is found to be valid, the processing will continue to the child elements. Otherwise, nothing happens. A valid user will be called triggerer from now on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following users are currently implemented:&lt;br /&gt;
* all: Anybody can be considered a valid user,&lt;br /&gt;
* owner: only a player direcly in the owner list can be considered a valid user,&lt;br /&gt;
* ownerTeam: only a player member of a team mentionned in the ownerTeam list can be considered a valid user,&lt;br /&gt;
* allButOwner only a player NOT mentioned in the owner list can be considered a valid user,&lt;br /&gt;
* allButTeamOwner only a player NOT member of a team mentioned in the ownerTeam list can be considered a valid user, (TO COME, NOT IMPLEMENTED YET)&lt;br /&gt;
* anotherTeammate only a player in the same team as one of the individual owner can be considered a valid user (TO COME, NOT IMPLEMENTED YET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;EffectGroup owner=&amp;quot;red1,red2&amp;quot; ownerTeam=&amp;quot;BLUE,YELLOW&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;all&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Anybody can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;allButOwner&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Anybody but red1 and red2 can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;&amp;quot; ownerTeam=&amp;quot;RED&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;owner&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- No effect as the owner list is empty --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;ownerTeam&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Only players of the RED team can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inside a User element, it is possible to make use of 3 different&lt;br /&gt;
elements. Target, ZoneInfluence and MonitorInfluence.&lt;br /&gt;
&lt;br /&gt;
=== Target ===&lt;br /&gt;
&lt;br /&gt;
The Target element will take the information of the valid user, and&lt;br /&gt;
calculate who will receive the effect of the zone. Depending on the&lt;br /&gt;
described target rule to use and the state of the game, the calculated&lt;br /&gt;
target can be from no players to everybody in game.&lt;br /&gt;
&lt;br /&gt;
The currently implemented target rules are :&lt;br /&gt;
&lt;br /&gt;
*self : the triggerer himself&lt;br /&gt;
*teammate : a randomly selected teammate of the triggerer&lt;br /&gt;
*team : all the member of the team of the triggerer&lt;br /&gt;
*all : everybody in the game&lt;br /&gt;
*allButSelf : everybody in the game BUT the triggerer&lt;br /&gt;
*another : a randomly selected player that is not the triggerer&lt;br /&gt;
*ownerTeamTeammate : a randomly selected player member of one of the teams mentioned in the teamOwner list.&lt;br /&gt;
*owner : all the players owning the effectGroup&lt;br /&gt;
*ownerteam : all the players member of the team owning the effectGroup&lt;br /&gt;
*ownerteamteammate : a single player member from a owning team&lt;br /&gt;
*anydead : any single dead player&lt;br /&gt;
*alldead : all the dead players&lt;br /&gt;
*singledeadowner : one of the owners that is dead&lt;br /&gt;
*anotherteammatedead : a single player member of the team of the triggerer that is dead&lt;br /&gt;
*anothernotteammatedead : a single player that is not member of the team of the triggerer and that is dead&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
*Much more are detailed in a document named zones.txt hidden somewhere&lt;br /&gt;
on the forum.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the targets are selected, they all are applied all the effects&lt;br /&gt;
described under the Target element.&lt;br /&gt;
&lt;br /&gt;
Nota: In a User element, it is possible to user any amount of Target,&lt;br /&gt;
ZoneInfluence and MonitorInfluence.&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User user=&amp;quot;ownerTeam&amp;quot; &amp;gt;&lt;br /&gt;
  &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- The player that is member of one of the team mentionned&lt;br /&gt;
  and that triggered the zone receive the effect --&amp;gt;&lt;br /&gt;
  &amp;lt;/Target&amp;gt;&lt;br /&gt;
  &amp;lt;Target target=&amp;quot;another&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Some random player will receive the effect described --&amp;gt;&lt;br /&gt;
  &amp;lt;/Target&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Effect ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Effect element hold specific effects. The attribute count can limit the number of times a specific effect can be used. By default, the count is unlimited.&lt;br /&gt;
&lt;br /&gt;
valid effect currently implemented are:&lt;br /&gt;
*win : win the round&lt;br /&gt;
*death : kill the target(s)&lt;br /&gt;
*point : give points to the target(s)&lt;br /&gt;
*spawnplayer : Respawns target(s)&lt;br /&gt;
*brakerecharge : Refills target(s) cycle brake (planned)&lt;br /&gt;
*rubberrecharge : Refills target(s) cycle rubber (planned)&lt;br /&gt;
*acceleration: Accelerate the target(s) by this rate,&lt;br /&gt;
*teleport: Instantly move target(s) to a random location (planned)&lt;br /&gt;
*setting : has 2 attributes ; settingName &amp;amp; settingValue&lt;br /&gt;
&lt;br /&gt;
new attribute for all effects: description&lt;br /&gt;
Acceleration uses the rate stored in the attribute named value.&lt;br /&gt;
&lt;br /&gt;
When the effect is triggered, the message is displayed on the console. Somehow I&#039;m not able to do the &amp;quot;parsing&amp;quot; similar to when points are given (player x received y points because he is sooo leet). That should come.&lt;br /&gt;
&lt;br /&gt;
When point is use, an attribute score will mention the amount of point&lt;br /&gt;
to give.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;3&amp;quot; count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- The target receives 3 points and is good for 2 usages --&amp;gt;&lt;br /&gt;
  &amp;lt;/Effect&amp;gt;&lt;br /&gt;
  &amp;lt;Effect ...&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;/Effect&amp;gt;&lt;br /&gt;
&amp;lt;/Target&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Effect effect=&amp;quot;acceleration&amp;quot; value=&amp;quot;20.0&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Would make the target accelerate drastically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Effect effect=&amp;quot;setting&amp;quot; settingName=&amp;quot;cycle_speed&amp;quot; settingValue=&amp;quot;100&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Would change the base speed for all the players.&lt;br /&gt;
&lt;br /&gt;
A reminder about manipulating settings from the map: This mechanism is quite raw and powerful. Use it with care. Not everything is manipulable during a round, nor make sense to manipulate. Reap the benefit but respect the limitations. Consider yourself warned.&lt;br /&gt;
=== ZoneInfluence ===&lt;br /&gt;
&lt;br /&gt;
Inside the User element, the element ZoneInfluence and MonitorInfluence are use to affect back game element. ZoneInfluence allows to affect a zone in play. The name attribute must match exactly a zone&#039;s name elsewhere in the map.&lt;br /&gt;
&lt;br /&gt;
The possible thing to affect on a zone are:&lt;br /&gt;
*Rotation with attribute rotationAngle and rotationSpeed&lt;br /&gt;
*Radius with attribute radius&lt;br /&gt;
*Point with attribute x and y&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ZoneInfluence name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Rotation rotationAngle=&amp;quot;0.3&amp;quot; rotationSpeed=&amp;quot;0.5&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;100&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
  &amp;lt;ZoneInfluence name=&amp;quot;blueFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MonitorInfluence ===&lt;br /&gt;
&lt;br /&gt;
Monitors are simple valiables that can be affected by interaction with different zones. The old &amp;quot;fortress&amp;quot; zone is to be considered as a zone where being inside slowly influence its monitor. Monitors are to be inserted in the map at the same level as Zone. Monitor have a name that is used to refer to from the MonitorInfluence, a initial value, and a drift, that slowly move the value, low and high, which clamp the monitor&#039;s value between their owns.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Field&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
  &amp;lt;Monitor name=&amp;quot;monitorFortressRed&amp;quot; init=&amp;quot;0.2&amp;quot; drift=&amp;quot;-0.1&amp;quot; low=&amp;quot;0.0&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- This monitor&#039;s value is initialised at 0.2, will slowly&lt;br /&gt;
  change at the rate of -0.1 per second, and will be clamped in the&lt;br /&gt;
  range [0.0, 1.0]. --&amp;gt;&lt;br /&gt;
  &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Field&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Monitor as different rules that can be used to inspect and react on its value. They are OnOver, OnUnder, InRange and OutsideRange. Any amount of rules can be used in a monitor.&lt;br /&gt;
&lt;br /&gt;
*OnOver has an attribute named value and will be used when the monitor&#039;s value exceed it,&lt;br /&gt;
*OnUnder has an attribute named value and will be used when the monitor&#039;s value is under it,&lt;br /&gt;
*InRange has attributes low and high and will be used when the monitor&#039;s value fall between both&lt;br /&gt;
*OutRange has attributes low and high and will be used when the monitor&#039;s value is not falling between both&lt;br /&gt;
&lt;br /&gt;
The monitors&#039; rules are similar to the zone&#039;s rule in that they hold EffectGroups that are inspected when the rule conditions are met.&lt;br /&gt;
&lt;br /&gt;
What differs a Monitor from a zone regarding to EffectGroup is who are considered players to be inspected as users. Anyone who contributed to a monitor during a game time step is registered, along with if the contribution was positive (conquering) or negative (defending), and if they where marked. This information is passed along up to the User element. There it can be used on additional tests to determine a valid user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Monitor name=&amp;quot;monitorFortressRed&amp;quot; init=&amp;quot;0.2&amp;quot; drift=&amp;quot;-0.1&amp;quot; low=&amp;quot;0.0&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;OnOver value=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;EffectGroup ...&amp;gt;&lt;br /&gt;
      &amp;lt;User user=&amp;quot;...&amp;quot; positive=&amp;quot;true&amp;quot; marked=&amp;quot;ignore&amp;quot;&amp;gt;&lt;br /&gt;
        ... &amp;lt;!-- to be a valid user, the player must have contributed&lt;br /&gt;
        to this monitor, match the user rule AND have contributed in a&lt;br /&gt;
        positive (conquest) fashion --&amp;gt;&lt;br /&gt;
      &amp;lt;/User&amp;gt;&lt;br /&gt;
      &amp;lt;User ...&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
      &amp;lt;/User&amp;gt;&lt;br /&gt;
    &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
  &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
&amp;lt;/Monitor&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== User ====&lt;br /&gt;
&lt;br /&gt;
The User element always have these attributes, but outside of an EffectGroup from a Monitor, this is always ignored.&lt;br /&gt;
&lt;br /&gt;
MonitorInfluence element is the one where one describe how to affect a monitor. It has an attribute name to point to the monitor to influence. It has a marked attribute which is a Triad, ie: allows for the value true, false or ignore. Players using this MonitorInfluence will carry this mark into their contribution to the monitor.&lt;br /&gt;
&lt;br /&gt;
There are 3 ways to influence the value of a monitor:&lt;br /&gt;
*1 the attribute influenceSlide will affect the monitor&#039;s value in a fashion proportional to the time passed in the zone. This is how the classical fortress operates. This is the same as saying influenceSlide * duration of the current game time step.&lt;br /&gt;
*2 the attribute influenceAdd will affect the monitor&#039;s value by this amount. This is NOT affected by time.&lt;br /&gt;
*3 the attribute influenceSet will set the monitor&#039;s value immediatly to this value.&lt;br /&gt;
&lt;br /&gt;
These can of course be used simulteanously. It is important here that&lt;br /&gt;
attributes that are not desired should not be defined, rather than&lt;br /&gt;
defined at a default value.&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User ...&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressRed&amp;quot; marked=&amp;quot;true&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;!-- conquer the fortress at a rate of 0.5 per second --&amp;gt;&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressGreen&amp;quot; marked=&amp;quot;true&amp;quot; influenceAdd=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;!-- monitorFortressGreen&#039;s value is raised by 2 --&amp;gt;&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressBlue&amp;quot; influenceSet=&amp;quot;0.0&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Reset&#039;s BLUE&#039;s zone to 0 --&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quiz ==&lt;br /&gt;
Respond on the forums after reading through this entire page with any ideas or questions of your own.(Optional)&lt;br /&gt;
&lt;br /&gt;
1 Are you able to express some new ideas with it?&lt;br /&gt;
&lt;br /&gt;
2 Do you see items that could be added, either now or as a later&lt;br /&gt;
version that could improve its value?&lt;br /&gt;
&lt;br /&gt;
3 Anything else?&lt;br /&gt;
&lt;br /&gt;
-ph&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
An example might help you get through the mess of the description&lt;br /&gt;
&lt;br /&gt;
Its blue vs red Each team has zones in opposing corners which are interconnected. As they get conquered, they jump toward the center.&lt;br /&gt;
&lt;br /&gt;
For your convenience:&lt;br /&gt;
MAP_FILE philippeqc/zone/DoubleZoneJumping-1.aamap.xml&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.3.1-a.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;DoubleZoneJumping&amp;quot; version=&amp;quot;1&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;zone&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
  Double fortress exist at opposing corners.&lt;br /&gt;
  As they are conquered, they slowly move to the center of the map.&lt;br /&gt;
  This map was created when the team code was still not available,&lt;br /&gt;
  so exact match association to player name is required.&lt;br /&gt;
 &lt;br /&gt;
  Blue players: azure,cobalt,midnight,royal   &lt;br /&gt;
  Red players : cerise,mauve,rust,sangria&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  &amp;lt;Map version=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
           Converted to XML by philippeqc.&lt;br /&gt;
           License: Public Domain. Do with it what you want.&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
    &amp;lt;World&amp;gt;&lt;br /&gt;
      &amp;lt;Field&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;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;0&amp;quot;  y=&amp;quot;500&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;500&amp;quot;  y=&amp;quot;0&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;Zone name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;1.0&amp;quot; green=&amp;quot;0.1&amp;quot; blue=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;-0.25&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;1.0&amp;quot; green=&amp;quot;0.1&amp;quot; blue=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;-0.25&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Monitor name=&amp;quot;mRed&amp;quot; init=&amp;quot;0.0&amp;quot; drift=&amp;quot;-0.1&amp;quot; &amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.0&amp;quot; high=&amp;quot;0.30&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                 &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                 &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;Point x=&amp;quot;400&amp;quot; y=&amp;quot;400&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                 &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.4&amp;quot; high=&amp;quot;0.60&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;150&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;350&amp;quot; y=&amp;quot;350&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.7&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&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;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;300&amp;quot; y=&amp;quot;300&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;OnOver value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; count=&amp;quot;2&amp;quot; score=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
        &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Same thing for the blue team now --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;0.10&amp;quot; green=&amp;quot;0.10&amp;quot; blue=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;-0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;0.10&amp;quot; green=&amp;quot;0.10&amp;quot; blue=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;-0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Monitor name=&amp;quot;mBlue&amp;quot; init=&amp;quot;0.0&amp;quot; drift=&amp;quot;-0.1&amp;quot; &amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.0&amp;quot; high=&amp;quot;0.30&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;400&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;400&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.4&amp;quot; high=&amp;quot;0.60&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;150&amp;quot; y=&amp;quot;350&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;350&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.7&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;200&amp;quot; y=&amp;quot;300&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;300&amp;quot; y=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;OnOver value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; count=&amp;quot;2&amp;quot; score=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
        &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/Field&amp;gt;&lt;br /&gt;
    &amp;lt;/World&amp;gt;&lt;br /&gt;
  &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
is now&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; alpha=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also added Color as a child of ZoneInfluence:&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;  &amp;lt;ZoneInfluence name=&amp;quot;blueFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; alpha=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This map has 4 zones that activate one another. Only one should be present, and when not there, they are put outside of the arena. They are activated in a crossed fashion.&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;zone&amp;quot; version=&amp;quot;d&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;Map version=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
           Converted to XML by philippeqc.&lt;br /&gt;
           License: Public Domain. Do with it what you want.&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
    &amp;lt;World&amp;gt;&lt;br /&gt;
      &amp;lt;Field&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;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;0&amp;quot;  y=&amp;quot;500&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;500&amp;quot;  y=&amp;quot;0&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;
        &amp;lt;Zone name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
      &amp;lt;/Field&amp;gt;&lt;br /&gt;
    &amp;lt;/World&amp;gt;&lt;br /&gt;
  &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Its a really crude idea, that has been retaken in a much better way by wrt. But it show some things that can be done (influencing individual zones, and using ZoneInfluence from one zone to affect another).&lt;br /&gt;
&lt;br /&gt;
Targets have a count:&lt;br /&gt;
Code:&lt;br /&gt;
The target has an attribute count that will limit the number of time&lt;br /&gt;
it is called. Not having the attribute or setting it to -1 means infinite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-ph&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Zones_v2&amp;diff=18960</id>
		<title>Zones v2</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Zones_v2&amp;diff=18960"/>
		<updated>2007-06-21T16:47:07Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Acceleration instead of speed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Preamble ==&lt;br /&gt;
&lt;br /&gt;
You will note that the examples below dont sound that fun. I&#039;d like to think its because my creative power went into building a good system, and now there is little left to put on examples. But I&#039;m sure you will find interesting ways to use the mechanisms in here. My goal with this was to be able to have zones that could have different effect depending on who would use them. For example, having a  fortress that team Blue could conquer, but only 2 of the players of team Red could actually defend. The other Red could still circle it and block the enemy, but they could not lower its value actively. Everything described here works. There are still glitches small and not so small. The code is in my private branch, but feel free to grab a local copy if you want to play with it.&lt;br /&gt;
&lt;br /&gt;
The format is anything but closed. I&#039;d like to hear your opinion on it too (yes it is a PITA to write, but if you have a constructive remark about that, I&#039;d like to know it) &lt;br /&gt;
&lt;br /&gt;
-ph&lt;br /&gt;
&lt;br /&gt;
Most of this is from a forum post by philippeqc. I reworded some stuff and formatted a bit for the wiki. Some stuff might have gotten lost or reworded wrongly so cross refrence with the post if the wording gets hazy and/or just to double check @ http://forums.armagetronad.net/viewtopic.php?p=77491#77491. Some stuff might be in the wrong place. --[[User:Your mom|Your mom]] 11:42, 30 July 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zone element ==&lt;br /&gt;
&lt;br /&gt;
Individual zones may have a name. Entering a name is optional, and re-using a name will be considered to mean &amp;quot;add/override with the following information&amp;quot;. Dont rely on this behavior for anything, in other words &#039;&#039;&#039;Dont re-use the same name.&#039;&#039;&#039; All zones need a shape defined. At the moment only one shape exists, the ShapeCircle. More shapes are planned in the future and are ToDo&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
 &amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
  &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
 &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules and EffectGroups ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A zone can have up to 4 different &amp;quot;rules&amp;quot; (need better name ToDo). Enter, Inside, Leave, Outside. It classifies when the held elements should be inspected. Inside each of the &amp;quot;rules&amp;quot;, one can define EffectGroups. EffectGroup(s) are the fundamental building blocks of  this new system. It associate owners with consequences. Note that ownership is part of effectGroup(s), &#039;&#039;NOT&#039;&#039; the zone. So a zone may have multiple effectGroup(s), each with unique or interlapping owners. There are 2 types of owners: owner (individuals) and ownerTeam (every member of a team). It is possible to define 0,1 or many for each items.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;HACK:&lt;br /&gt;
ATM, only owner is supported, and it must be an exact match with a&lt;br /&gt;
player&#039;s name to associated the effect.&lt;br /&gt;
The real solution will translate the labels used to players based on&lt;br /&gt;
some other logic depending on &amp;quot;game type&amp;quot;. This is to be defined&lt;br /&gt;
later.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;HACK:&lt;br /&gt;
It should be possible to associate individual with teams in some part&lt;br /&gt;
of the map. In this text, I will user lowercase color name + number for&lt;br /&gt;
individual, and uppercase color name for teams. So the individual&lt;br /&gt;
red1, red7 and red90210 should be considered as players of the team&lt;br /&gt;
RED. I will also allow myself to insert _description_ in names to help&lt;br /&gt;
the reader when appropriate.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ShapeCircle ...&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
&amp;lt;Enter&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;red1,red2&amp;quot; ownerTeam=&amp;quot;BLUE,YELLOW&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;&amp;quot; ownerTeam=&amp;quot;RED&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;/Enter&amp;gt;&lt;br /&gt;
&amp;lt;Leave&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;green7&amp;quot; ownerTeam=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;/Leave&amp;gt;&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User element ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inside the EffectGroup, elements User are set. This element offers different readily made rules to determine if a player in the &amp;quot;rule&amp;quot; condition for the zone, is allowed to be considered a user. This is decided based from the following information: owner, ownerTeam and the player matching the rule. Two other conditions can be set for a player to be considered a valid user: positive and marked. These element are of type Triad. The possible values are true, false and ignore. We will come back to these later. If the current player is found to be valid, the processing will continue to the child elements. Otherwise, nothing happens. A valid user will be called triggerer from now on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following users are currently implemented:&lt;br /&gt;
* all: Anybody can be considered a valid user,&lt;br /&gt;
* owner: only a player direcly in the owner list can be considered a valid user,&lt;br /&gt;
* ownerTeam: only a player member of a team mentionned in the ownerTeam list can be considered a valid user,&lt;br /&gt;
* allButOwner only a player NOT mentioned in the owner list can be considered a valid user,&lt;br /&gt;
* allButTeamOwner only a player NOT member of a team mentioned in the ownerTeam list can be considered a valid user, (TO COME, NOT IMPLEMENTED YET)&lt;br /&gt;
* anotherTeammate only a player in the same team as one of the individual owner can be considered a valid user (TO COME, NOT IMPLEMENTED YET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;EffectGroup owner=&amp;quot;red1,red2&amp;quot; ownerTeam=&amp;quot;BLUE,YELLOW&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;all&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Anybody can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;allButOwner&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Anybody but red1 and red2 can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;&amp;quot; ownerTeam=&amp;quot;RED&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;owner&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- No effect as the owner list is empty --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;ownerTeam&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Only players of the RED team can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inside a User element, it is possible to make use of 3 different&lt;br /&gt;
elements. Target, ZoneInfluence and MonitorInfluence.&lt;br /&gt;
&lt;br /&gt;
=== Target ===&lt;br /&gt;
&lt;br /&gt;
The Target element will take the information of the valid user, and&lt;br /&gt;
calculate who will receive the effect of the zone. Depending on the&lt;br /&gt;
described target rule to use and the state of the game, the calculated&lt;br /&gt;
target can be from no players to everybody in game.&lt;br /&gt;
&lt;br /&gt;
The currently implemented target rules are :&lt;br /&gt;
&lt;br /&gt;
*self : the triggerer himself&lt;br /&gt;
*teammate : a randomly selected teammate of the triggerer&lt;br /&gt;
*team : all the member of the team of the triggerer&lt;br /&gt;
*all : everybody in the game&lt;br /&gt;
*allButSelf : everybody in the game BUT the triggerer&lt;br /&gt;
*another : a randomly selected player that is not the triggerer&lt;br /&gt;
*ownerTeamTeammate : a randomly selected player member of one of the teams mentioned in the teamOwner list.&lt;br /&gt;
*owner : all the players owning the effectGroup&lt;br /&gt;
*ownerteam : all the players member of the team owning the effectGroup&lt;br /&gt;
*ownerteamteammate : a single player member from a owning team&lt;br /&gt;
*anydead : any single dead player&lt;br /&gt;
*alldead : all the dead players&lt;br /&gt;
*singledeadowner : one of the owners that is dead&lt;br /&gt;
*anotherteammatedead : a single player member of the team of the triggerer that is dead&lt;br /&gt;
*anothernotteammatedead : a single player that is not member of the team of the triggerer and that is dead&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
*Much more are detailed in a document named zones.txt hidden somewhere&lt;br /&gt;
on the forum.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the targets are selected, they all are applied all the effects&lt;br /&gt;
described under the Target element.&lt;br /&gt;
&lt;br /&gt;
Nota: In a User element, it is possible to user any amount of Target,&lt;br /&gt;
ZoneInfluence and MonitorInfluence.&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User user=&amp;quot;ownerTeam&amp;quot; &amp;gt;&lt;br /&gt;
  &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- The player that is member of one of the team mentionned&lt;br /&gt;
  and that triggered the zone receive the effect --&amp;gt;&lt;br /&gt;
  &amp;lt;/Target&amp;gt;&lt;br /&gt;
  &amp;lt;Target target=&amp;quot;another&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Some random player will receive the effect described --&amp;gt;&lt;br /&gt;
  &amp;lt;/Target&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Effect ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Effect element hold specific effects. The attribute count can limit the number of times a specific effect can be used. By default, the count is unlimited.&lt;br /&gt;
&lt;br /&gt;
valid effect currently implemented are:&lt;br /&gt;
*win : win the round&lt;br /&gt;
*death : kill the target(s)&lt;br /&gt;
*point : give points to the target(s)&lt;br /&gt;
*spawnplayer : Respawns target(s)&lt;br /&gt;
*brakerecharge : Refills target(s) cycle brake (planned)&lt;br /&gt;
*rubberrecharge : Refills target(s) cycle rubber (planned)&lt;br /&gt;
*acceleration: Accelerate the target(s) by this rate,&lt;br /&gt;
*teleport: Instantly move target(s) to a random location (planned)&lt;br /&gt;
*setting : has 2 attributes ; settingName &amp;amp; settingValue&lt;br /&gt;
&lt;br /&gt;
new attribute for all effects: description&lt;br /&gt;
&lt;br /&gt;
When the effect is triggered, the message is displayed on the console. Somehow I&#039;m not able to do the &amp;quot;parsing&amp;quot; similar to when points are given (player x received y points because he is sooo leet). That should come.&lt;br /&gt;
&lt;br /&gt;
When point is use, an attribute score will mention the amount of point&lt;br /&gt;
to give.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;3&amp;quot; count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- The target receives 3 points and is good for 2 usages --&amp;gt;&lt;br /&gt;
  &amp;lt;/Effect&amp;gt;&lt;br /&gt;
  &amp;lt;Effect ...&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;/Effect&amp;gt;&lt;br /&gt;
&amp;lt;/Target&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Effect effect=&amp;quot;setting&amp;quot; settingName=&amp;quot;cycle_speed&amp;quot; settingValue=&amp;quot;100&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Would change the base speed for all the players.&lt;br /&gt;
&lt;br /&gt;
A reminder about manipulating settings from the map: This mechanism is quite raw and powerful. Use it with care. Not everything is manipulable during a round, nor make sense to manipulate. Reap the benefit but respect the limitations. Consider yourself warned.&lt;br /&gt;
=== ZoneInfluence ===&lt;br /&gt;
&lt;br /&gt;
Inside the User element, the element ZoneInfluence and MonitorInfluence are use to affect back game element. ZoneInfluence allows to affect a zone in play. The name attribute must match exactly a zone&#039;s name elsewhere in the map.&lt;br /&gt;
&lt;br /&gt;
The possible thing to affect on a zone are:&lt;br /&gt;
*Rotation with attribute rotationAngle and rotationSpeed&lt;br /&gt;
*Radius with attribute radius&lt;br /&gt;
*Point with attribute x and y&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ZoneInfluence name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Rotation rotationAngle=&amp;quot;0.3&amp;quot; rotationSpeed=&amp;quot;0.5&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;100&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
  &amp;lt;ZoneInfluence name=&amp;quot;blueFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MonitorInfluence ===&lt;br /&gt;
&lt;br /&gt;
Monitors are simple valiables that can be affected by interaction with different zones. The old &amp;quot;fortress&amp;quot; zone is to be considered as a zone where being inside slowly influence its monitor. Monitors are to be inserted in the map at the same level as Zone. Monitor have a name that is used to refer to from the MonitorInfluence, a initial value, and a drift, that slowly move the value, low and high, which clamp the monitor&#039;s value between their owns.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Field&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
  &amp;lt;Monitor name=&amp;quot;monitorFortressRed&amp;quot; init=&amp;quot;0.2&amp;quot; drift=&amp;quot;-0.1&amp;quot; low=&amp;quot;0.0&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- This monitor&#039;s value is initialised at 0.2, will slowly&lt;br /&gt;
  change at the rate of -0.1 per second, and will be clamped in the&lt;br /&gt;
  range [0.0, 1.0]. --&amp;gt;&lt;br /&gt;
  &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Field&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Monitor as different rules that can be used to inspect and react on its value. They are OnOver, OnUnder, InRange and OutsideRange. Any amount of rules can be used in a monitor.&lt;br /&gt;
&lt;br /&gt;
*OnOver has an attribute named value and will be used when the monitor&#039;s value exceed it,&lt;br /&gt;
*OnUnder has an attribute named value and will be used when the monitor&#039;s value is under it,&lt;br /&gt;
*InRange has attributes low and high and will be used when the monitor&#039;s value fall between both&lt;br /&gt;
*OutRange has attributes low and high and will be used when the monitor&#039;s value is not falling between both&lt;br /&gt;
&lt;br /&gt;
The monitors&#039; rules are similar to the zone&#039;s rule in that they hold EffectGroups that are inspected when the rule conditions are met.&lt;br /&gt;
&lt;br /&gt;
What differs a Monitor from a zone regarding to EffectGroup is who are considered players to be inspected as users. Anyone who contributed to a monitor during a game time step is registered, along with if the contribution was positive (conquering) or negative (defending), and if they where marked. This information is passed along up to the User element. There it can be used on additional tests to determine a valid user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Monitor name=&amp;quot;monitorFortressRed&amp;quot; init=&amp;quot;0.2&amp;quot; drift=&amp;quot;-0.1&amp;quot; low=&amp;quot;0.0&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;OnOver value=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;EffectGroup ...&amp;gt;&lt;br /&gt;
      &amp;lt;User user=&amp;quot;...&amp;quot; positive=&amp;quot;true&amp;quot; marked=&amp;quot;ignore&amp;quot;&amp;gt;&lt;br /&gt;
        ... &amp;lt;!-- to be a valid user, the player must have contributed&lt;br /&gt;
        to this monitor, match the user rule AND have contributed in a&lt;br /&gt;
        positive (conquest) fashion --&amp;gt;&lt;br /&gt;
      &amp;lt;/User&amp;gt;&lt;br /&gt;
      &amp;lt;User ...&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
      &amp;lt;/User&amp;gt;&lt;br /&gt;
    &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
  &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
&amp;lt;/Monitor&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== User ====&lt;br /&gt;
&lt;br /&gt;
The User element always have these attributes, but outside of an EffectGroup from a Monitor, this is always ignored.&lt;br /&gt;
&lt;br /&gt;
MonitorInfluence element is the one where one describe how to affect a monitor. It has an attribute name to point to the monitor to influence. It has a marked attribute which is a Triad, ie: allows for the value true, false or ignore. Players using this MonitorInfluence will carry this mark into their contribution to the monitor.&lt;br /&gt;
&lt;br /&gt;
There are 3 ways to influence the value of a monitor:&lt;br /&gt;
*1 the attribute influenceSlide will affect the monitor&#039;s value in a fashion proportional to the time passed in the zone. This is how the classical fortress operates. This is the same as saying influenceSlide * duration of the current game time step.&lt;br /&gt;
*2 the attribute influenceAdd will affect the monitor&#039;s value by this amount. This is NOT affected by time.&lt;br /&gt;
*3 the attribute influenceSet will set the monitor&#039;s value immediatly to this value.&lt;br /&gt;
&lt;br /&gt;
These can of course be used simulteanously. It is important here that&lt;br /&gt;
attributes that are not desired should not be defined, rather than&lt;br /&gt;
defined at a default value.&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User ...&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressRed&amp;quot; marked=&amp;quot;true&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;!-- conquer the fortress at a rate of 0.5 per second --&amp;gt;&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressGreen&amp;quot; marked=&amp;quot;true&amp;quot; influenceAdd=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;!-- monitorFortressGreen&#039;s value is raised by 2 --&amp;gt;&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressBlue&amp;quot; influenceSet=&amp;quot;0.0&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Reset&#039;s BLUE&#039;s zone to 0 --&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quiz ==&lt;br /&gt;
Respond on the forums after reading through this entire page with any ideas or questions of your own.(Optional)&lt;br /&gt;
&lt;br /&gt;
1 Are you able to express some new ideas with it?&lt;br /&gt;
&lt;br /&gt;
2 Do you see items that could be added, either now or as a later&lt;br /&gt;
version that could improve its value?&lt;br /&gt;
&lt;br /&gt;
3 Anything else?&lt;br /&gt;
&lt;br /&gt;
-ph&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
An example might help you get through the mess of the description&lt;br /&gt;
&lt;br /&gt;
Its blue vs red Each team has zones in opposing corners which are interconnected. As they get conquered, they jump toward the center.&lt;br /&gt;
&lt;br /&gt;
For your convenience:&lt;br /&gt;
MAP_FILE philippeqc/zone/DoubleZoneJumping-1.aamap.xml&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.3.1-a.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;DoubleZoneJumping&amp;quot; version=&amp;quot;1&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;zone&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
  Double fortress exist at opposing corners.&lt;br /&gt;
  As they are conquered, they slowly move to the center of the map.&lt;br /&gt;
  This map was created when the team code was still not available,&lt;br /&gt;
  so exact match association to player name is required.&lt;br /&gt;
 &lt;br /&gt;
  Blue players: azure,cobalt,midnight,royal   &lt;br /&gt;
  Red players : cerise,mauve,rust,sangria&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  &amp;lt;Map version=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
           Converted to XML by philippeqc.&lt;br /&gt;
           License: Public Domain. Do with it what you want.&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
    &amp;lt;World&amp;gt;&lt;br /&gt;
      &amp;lt;Field&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;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;0&amp;quot;  y=&amp;quot;500&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;500&amp;quot;  y=&amp;quot;0&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;Zone name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;1.0&amp;quot; green=&amp;quot;0.1&amp;quot; blue=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;-0.25&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;1.0&amp;quot; green=&amp;quot;0.1&amp;quot; blue=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;-0.25&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Monitor name=&amp;quot;mRed&amp;quot; init=&amp;quot;0.0&amp;quot; drift=&amp;quot;-0.1&amp;quot; &amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.0&amp;quot; high=&amp;quot;0.30&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                 &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                 &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;Point x=&amp;quot;400&amp;quot; y=&amp;quot;400&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                 &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.4&amp;quot; high=&amp;quot;0.60&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;150&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;350&amp;quot; y=&amp;quot;350&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.7&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&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;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;300&amp;quot; y=&amp;quot;300&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;OnOver value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; count=&amp;quot;2&amp;quot; score=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
        &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Same thing for the blue team now --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;0.10&amp;quot; green=&amp;quot;0.10&amp;quot; blue=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;-0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;0.10&amp;quot; green=&amp;quot;0.10&amp;quot; blue=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;-0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Monitor name=&amp;quot;mBlue&amp;quot; init=&amp;quot;0.0&amp;quot; drift=&amp;quot;-0.1&amp;quot; &amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.0&amp;quot; high=&amp;quot;0.30&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;400&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;400&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.4&amp;quot; high=&amp;quot;0.60&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;150&amp;quot; y=&amp;quot;350&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;350&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.7&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;200&amp;quot; y=&amp;quot;300&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;300&amp;quot; y=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;OnOver value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; count=&amp;quot;2&amp;quot; score=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
        &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/Field&amp;gt;&lt;br /&gt;
    &amp;lt;/World&amp;gt;&lt;br /&gt;
  &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
is now&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; alpha=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also added Color as a child of ZoneInfluence:&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;  &amp;lt;ZoneInfluence name=&amp;quot;blueFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; alpha=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This map has 4 zones that activate one another. Only one should be present, and when not there, they are put outside of the arena. They are activated in a crossed fashion.&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;zone&amp;quot; version=&amp;quot;d&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;Map version=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
           Converted to XML by philippeqc.&lt;br /&gt;
           License: Public Domain. Do with it what you want.&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
    &amp;lt;World&amp;gt;&lt;br /&gt;
      &amp;lt;Field&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;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;0&amp;quot;  y=&amp;quot;500&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;500&amp;quot;  y=&amp;quot;0&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;
        &amp;lt;Zone name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
      &amp;lt;/Field&amp;gt;&lt;br /&gt;
    &amp;lt;/World&amp;gt;&lt;br /&gt;
  &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Its a really crude idea, that has been retaken in a much better way by wrt. But it show some things that can be done (influencing individual zones, and using ZoneInfluence from one zone to affect another).&lt;br /&gt;
&lt;br /&gt;
Targets have a count:&lt;br /&gt;
Code:&lt;br /&gt;
The target has an attribute count that will limit the number of time&lt;br /&gt;
it is called. Not having the attribute or setting it to -1 means infinite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-ph&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Zones_v2&amp;diff=18619</id>
		<title>Zones v2</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Zones_v2&amp;diff=18619"/>
		<updated>2007-06-08T21:27:20Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Updated the attribute for the start-up angle and speed of rotation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Preamble ==&lt;br /&gt;
&lt;br /&gt;
You will note that the examples below dont sound that fun. I&#039;d like to think its because my creative power went into building a good system, and now there is little left to put on examples. But I&#039;m sure you will find interesting ways to use the mechanisms in here. My goal with this was to be able to have zones that could have different effect depending on who would use them. For example, having a  fortress that team Blue could conquer, but only 2 of the players of team Red could actually defend. The other Red could still circle it and block the enemy, but they could not lower its value actively. Everything described here works. There are still glitches small and not so small. The code is in my private branch, but feel free to grab a local copy if you want to play with it.&lt;br /&gt;
&lt;br /&gt;
The format is anything but closed. I&#039;d like to hear your opinion on it too (yes it is a PITA to write, but if you have a constructive remark about that, I&#039;d like to know it) &lt;br /&gt;
&lt;br /&gt;
-ph&lt;br /&gt;
&lt;br /&gt;
Most of this is from a forum post by philippeqc. I reworded some stuff and formatted a bit for the wiki. Some stuff might have gotten lost or reworded wrongly so cross refrence with the post if the wording gets hazy and/or just to double check @ http://forums.armagetronad.net/viewtopic.php?p=77491#77491. Some stuff might be in the wrong place. --[[User:Your mom|Your mom]] 11:42, 30 July 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zone element ==&lt;br /&gt;
&lt;br /&gt;
Individual zones may have a name. Entering a name is optional, and re-using a name will be considered to mean &amp;quot;add/override with the following information&amp;quot;. Dont rely on this behavior for anything, in other words &#039;&#039;&#039;Dont re-use the same name.&#039;&#039;&#039; All zones need a shape defined. At the moment only one shape exists, the ShapeCircle. More shapes are planned in the future and are ToDo&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
 &amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
  &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
 &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules and EffectGroups ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A zone can have up to 4 different &amp;quot;rules&amp;quot; (need better name ToDo). Enter, Inside, Leave, Outside. It classifies when the held elements should be inspected. Inside each of the &amp;quot;rules&amp;quot;, one can define EffectGroups. EffectGroup(s) are the fundamental building blocks of  this new system. It associate owners with consequences. Note that ownership is part of effectGroup(s), &#039;&#039;NOT&#039;&#039; the zone. So a zone may have multiple effectGroup(s), each with unique or interlapping owners. There are 2 types of owners: owner (individuals) and ownerTeam (every member of a team). It is possible to define 0,1 or many for each items.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;HACK:&lt;br /&gt;
ATM, only owner is supported, and it must be an exact match with a&lt;br /&gt;
player&#039;s name to associated the effect.&lt;br /&gt;
The real solution will translate the labels used to players based on&lt;br /&gt;
some other logic depending on &amp;quot;game type&amp;quot;. This is to be defined&lt;br /&gt;
later.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;HACK:&lt;br /&gt;
It should be possible to associate individual with teams in some part&lt;br /&gt;
of the map. In this text, I will user lowercase color name + number for&lt;br /&gt;
individual, and uppercase color name for teams. So the individual&lt;br /&gt;
red1, red7 and red90210 should be considered as players of the team&lt;br /&gt;
RED. I will also allow myself to insert _description_ in names to help&lt;br /&gt;
the reader when appropriate.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ShapeCircle ...&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
&amp;lt;Enter&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;red1,red2&amp;quot; ownerTeam=&amp;quot;BLUE,YELLOW&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;&amp;quot; ownerTeam=&amp;quot;RED&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;/Enter&amp;gt;&lt;br /&gt;
&amp;lt;Leave&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;green7&amp;quot; ownerTeam=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;/Leave&amp;gt;&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User element ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inside the EffectGroup, elements User are set. This element offers different readily made rules to determine if a player in the &amp;quot;rule&amp;quot; condition for the zone, is allowed to be considered a user. This is decided based from the following information: owner, ownerTeam and the player matching the rule. Two other conditions can be set for a player to be considered a valid user: positive and marked. These element are of type Triad. The possible values are true, false and ignore. We will come back to these later. If the current player is found to be valid, the processing will continue to the child elements. Otherwise, nothing happens. A valid user will be called triggerer from now on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following users are currently implemented:&lt;br /&gt;
* all: Anybody can be considered a valid user,&lt;br /&gt;
* owner: only a player direcly in the owner list can be considered a valid user,&lt;br /&gt;
* ownerTeam: only a player member of a team mentionned in the ownerTeam list can be considered a valid user,&lt;br /&gt;
* allButOwner only a player NOT mentioned in the owner list can be considered a valid user,&lt;br /&gt;
* allButTeamOwner only a player NOT member of a team mentioned in the ownerTeam list can be considered a valid user, (TO COME, NOT IMPLEMENTED YET)&lt;br /&gt;
* anotherTeammate only a player in the same team as one of the individual owner can be considered a valid user (TO COME, NOT IMPLEMENTED YET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;EffectGroup owner=&amp;quot;red1,red2&amp;quot; ownerTeam=&amp;quot;BLUE,YELLOW&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;all&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Anybody can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;allButOwner&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Anybody but red1 and red2 can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;&amp;quot; ownerTeam=&amp;quot;RED&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;owner&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- No effect as the owner list is empty --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;ownerTeam&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Only players of the RED team can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inside a User element, it is possible to make use of 3 different&lt;br /&gt;
elements. Target, ZoneInfluence and MonitorInfluence.&lt;br /&gt;
&lt;br /&gt;
=== Target ===&lt;br /&gt;
&lt;br /&gt;
The Target element will take the information of the valid user, and&lt;br /&gt;
calculate who will receive the effect of the zone. Depending on the&lt;br /&gt;
described target rule to use and the state of the game, the calculated&lt;br /&gt;
target can be from no players to everybody in game.&lt;br /&gt;
&lt;br /&gt;
The currently implemented target rules are :&lt;br /&gt;
&lt;br /&gt;
*self : the triggerer himself&lt;br /&gt;
*teammate : a randomly selected teammate of the triggerer&lt;br /&gt;
*team : all the member of the team of the triggerer&lt;br /&gt;
*all : everybody in the game&lt;br /&gt;
*allButSelf : everybody in the game BUT the triggerer&lt;br /&gt;
*another : a randomly selected player that is not the triggerer&lt;br /&gt;
*ownerTeamTeammate : a randomly selected player member of one of the teams mentioned in the teamOwner list.&lt;br /&gt;
*owner : all the players owning the effectGroup&lt;br /&gt;
*ownerteam : all the players member of the team owning the effectGroup&lt;br /&gt;
*ownerteamteammate : a single player member from a owning team&lt;br /&gt;
*anydead : any single dead player&lt;br /&gt;
*alldead : all the dead players&lt;br /&gt;
*singledeadowner : one of the owners that is dead&lt;br /&gt;
*anotherteammatedead : a single player member of the team of the triggerer that is dead&lt;br /&gt;
*anothernotteammatedead : a single player that is not member of the team of the triggerer and that is dead&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
*Much more are detailed in a document named zones.txt hidden somewhere&lt;br /&gt;
on the forum.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the targets are selected, they all are applied all the effects&lt;br /&gt;
described under the Target element.&lt;br /&gt;
&lt;br /&gt;
Nota: In a User element, it is possible to user any amount of Target,&lt;br /&gt;
ZoneInfluence and MonitorInfluence.&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User user=&amp;quot;ownerTeam&amp;quot; &amp;gt;&lt;br /&gt;
  &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- The player that is member of one of the team mentionned&lt;br /&gt;
  and that triggered the zone receive the effect --&amp;gt;&lt;br /&gt;
  &amp;lt;/Target&amp;gt;&lt;br /&gt;
  &amp;lt;Target target=&amp;quot;another&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Some random player will receive the effect described --&amp;gt;&lt;br /&gt;
  &amp;lt;/Target&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Effect ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Effect element hold specific effects. The attribute count can limit the number of times a specific effect can be used. By default, the count is unlimited.&lt;br /&gt;
&lt;br /&gt;
valid effect currently implemented are:&lt;br /&gt;
*win : win the round&lt;br /&gt;
*death : kill the target(s)&lt;br /&gt;
*point : give points to the target(s)&lt;br /&gt;
*spawnplayer : Respawns target(s)&lt;br /&gt;
*brakerecharge : Refills target(s) cycle brake&lt;br /&gt;
*rubberrecharge : Refills target(s) cycle rubber&lt;br /&gt;
*setting : has 2 attributes ; settingName &amp;amp; settingValue&lt;br /&gt;
&lt;br /&gt;
new attribute for all effects: description&lt;br /&gt;
&lt;br /&gt;
When the effect is triggered, the message is displayed on the console. Somehow I&#039;m not able to do the &amp;quot;parsing&amp;quot; similar to when points are given (player x received y points because he is sooo leet). That should come.&lt;br /&gt;
&lt;br /&gt;
When point is use, an attribute score will mention the amount of point&lt;br /&gt;
to give.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;3&amp;quot; count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- The target receives 3 points and is good for 2 usages --&amp;gt;&lt;br /&gt;
  &amp;lt;/Effect&amp;gt;&lt;br /&gt;
  &amp;lt;Effect ...&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;/Effect&amp;gt;&lt;br /&gt;
&amp;lt;/Target&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Effect effect=&amp;quot;setting&amp;quot; settingName=&amp;quot;cycle_speed&amp;quot; settingValue=&amp;quot;100&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ZoneInfluence ===&lt;br /&gt;
&lt;br /&gt;
Inside the User element, the element ZoneInfluence and MonitorInfluence are use to affect back game element. ZoneInfluence allows to affect a zone in play. The name attribute must match exactly a zone&#039;s name elsewhere in the map.&lt;br /&gt;
&lt;br /&gt;
The possible thing to affect on a zone are:&lt;br /&gt;
*Rotation with attribute rotationAngle and rotationSpeed&lt;br /&gt;
*Radius with attribute radius&lt;br /&gt;
*Point with attribute x and y&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ZoneInfluence name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Rotation rotationAngle=&amp;quot;0.3&amp;quot; rotationSpeed=&amp;quot;0.5&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;100&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
  &amp;lt;ZoneInfluence name=&amp;quot;blueFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MonitorInfluence ===&lt;br /&gt;
&lt;br /&gt;
Monitors are simple valiables that can be affected by interaction with different zones. The old &amp;quot;fortress&amp;quot; zone is to be considered as a zone where being inside slowly influence its monitor. Monitors are to be inserted in the map at the same level as Zone. Monitor have a name that is used to refer to from the MonitorInfluence, a initial value, and a drift, that slowly move the value, low and high, which clamp the monitor&#039;s value between their owns.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Field&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
  &amp;lt;Monitor name=&amp;quot;monitorFortressRed&amp;quot; init=&amp;quot;0.2&amp;quot; drift=&amp;quot;-0.1&amp;quot; low=&amp;quot;0.0&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- This monitor&#039;s value is initialised at 0.2, will slowly&lt;br /&gt;
  change at the rate of -0.1 per second, and will be clamped in the&lt;br /&gt;
  range [0.0, 1.0]. --&amp;gt;&lt;br /&gt;
  &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Field&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Monitor as different rules that can be used to inspect and react on its value. They are OnOver, OnUnder, InRange and OutsideRange. Any amount of rules can be used in a monitor.&lt;br /&gt;
&lt;br /&gt;
*OnOver has an attribute named value and will be used when the monitor&#039;s value exceed it,&lt;br /&gt;
*OnUnder has an attribute named value and will be used when the monitor&#039;s value is under it,&lt;br /&gt;
*InRange has attributes low and high and will be used when the monitor&#039;s value fall between both&lt;br /&gt;
*OutRange has attributes low and high and will be used when the monitor&#039;s value is not falling between both&lt;br /&gt;
&lt;br /&gt;
The monitors&#039; rules are similar to the zone&#039;s rule in that they hold EffectGroups that are inspected when the rule conditions are met.&lt;br /&gt;
&lt;br /&gt;
What differs a Monitor from a zone regarding to EffectGroup is who are considered players to be inspected as users. Anyone who contributed to a monitor during a game time step is registered, along with if the contribution was positive (conquering) or negative (defending), and if they where marked. This information is passed along up to the User element. There it can be used on additional tests to determine a valid user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Monitor name=&amp;quot;monitorFortressRed&amp;quot; init=&amp;quot;0.2&amp;quot; drift=&amp;quot;-0.1&amp;quot; low=&amp;quot;0.0&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;OnOver value=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;EffectGroup ...&amp;gt;&lt;br /&gt;
      &amp;lt;User user=&amp;quot;...&amp;quot; positive=&amp;quot;true&amp;quot; marked=&amp;quot;ignore&amp;quot;&amp;gt;&lt;br /&gt;
        ... &amp;lt;!-- to be a valid user, the player must have contributed&lt;br /&gt;
        to this monitor, match the user rule AND have contributed in a&lt;br /&gt;
        positive (conquest) fashion --&amp;gt;&lt;br /&gt;
      &amp;lt;/User&amp;gt;&lt;br /&gt;
      &amp;lt;User ...&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
      &amp;lt;/User&amp;gt;&lt;br /&gt;
    &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
  &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
&amp;lt;/Monitor&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== User ====&lt;br /&gt;
&lt;br /&gt;
The User element always have these attributes, but outside of an EffectGroup from a Monitor, this is always ignored.&lt;br /&gt;
&lt;br /&gt;
MonitorInfluence element is the one where one describe how to affect a monitor. It has an attribute name to point to the monitor to influence. It has a marked attribute which is a Triad, ie: allows for the value true, false or ignore. Players using this MonitorInfluence will carry this mark into their contribution to the monitor.&lt;br /&gt;
&lt;br /&gt;
There are 3 ways to influence the value of a monitor:&lt;br /&gt;
*1 the attribute influenceSlide will affect the monitor&#039;s value in a fashion proportional to the time passed in the zone. This is how the classical fortress operates. This is the same as saying influenceSlide * duration of the current game time step.&lt;br /&gt;
*2 the attribute influenceAdd will affect the monitor&#039;s value by this amount. This is NOT affected by time.&lt;br /&gt;
*3 the attribute influenceSet will set the monitor&#039;s value immediatly to this value.&lt;br /&gt;
&lt;br /&gt;
These can of course be used simulteanously. It is important here that&lt;br /&gt;
attributes that are not desired should not be defined, rather than&lt;br /&gt;
defined at a default value.&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User ...&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressRed&amp;quot; marked=&amp;quot;true&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;!-- conquer the fortress at a rate of 0.5 per second --&amp;gt;&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressGreen&amp;quot; marked=&amp;quot;true&amp;quot; influenceAdd=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;!-- monitorFortressGreen&#039;s value is raised by 2 --&amp;gt;&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressBlue&amp;quot; influenceSet=&amp;quot;0.0&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Reset&#039;s BLUE&#039;s zone to 0 --&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quiz ==&lt;br /&gt;
Respond on the forums after reading through this entire page with any ideas or questions of your own.(Optional)&lt;br /&gt;
&lt;br /&gt;
1 Are you able to express some new ideas with it?&lt;br /&gt;
&lt;br /&gt;
2 Do you see items that could be added, either now or as a later&lt;br /&gt;
version that could improve its value?&lt;br /&gt;
&lt;br /&gt;
3 Anything else?&lt;br /&gt;
&lt;br /&gt;
-ph&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
An example might help you get through the mess of the description&lt;br /&gt;
&lt;br /&gt;
Its blue vs red Each team has zones in opposing corners which are interconnected. As they get conquered, they jump toward the center.&lt;br /&gt;
&lt;br /&gt;
For your convenience:&lt;br /&gt;
MAP_FILE philippeqc/zone/DoubleZoneJumping-1.aamap.xml&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.3.1-a.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;DoubleZoneJumping&amp;quot; version=&amp;quot;1&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;zone&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
  Double fortress exist at opposing corners.&lt;br /&gt;
  As they are conquered, they slowly move to the center of the map.&lt;br /&gt;
  This map was created when the team code was still not available,&lt;br /&gt;
  so exact match association to player name is required.&lt;br /&gt;
 &lt;br /&gt;
  Blue players: azure,cobalt,midnight,royal   &lt;br /&gt;
  Red players : cerise,mauve,rust,sangria&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  &amp;lt;Map version=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
           Converted to XML by philippeqc.&lt;br /&gt;
           License: Public Domain. Do with it what you want.&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
    &amp;lt;World&amp;gt;&lt;br /&gt;
      &amp;lt;Field&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;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;0&amp;quot;  y=&amp;quot;500&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;500&amp;quot;  y=&amp;quot;0&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;Zone name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;1.0&amp;quot; green=&amp;quot;0.1&amp;quot; blue=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;-0.25&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;1.0&amp;quot; green=&amp;quot;0.1&amp;quot; blue=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;-0.25&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Monitor name=&amp;quot;mRed&amp;quot; init=&amp;quot;0.0&amp;quot; drift=&amp;quot;-0.1&amp;quot; &amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.0&amp;quot; high=&amp;quot;0.30&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                 &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                 &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;Point x=&amp;quot;400&amp;quot; y=&amp;quot;400&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                 &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.4&amp;quot; high=&amp;quot;0.60&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;150&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;350&amp;quot; y=&amp;quot;350&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.7&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&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;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;300&amp;quot; y=&amp;quot;300&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;OnOver value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; count=&amp;quot;2&amp;quot; score=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
        &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Same thing for the blue team now --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;0.10&amp;quot; green=&amp;quot;0.10&amp;quot; blue=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;-0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;0.10&amp;quot; green=&amp;quot;0.10&amp;quot; blue=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;-0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Monitor name=&amp;quot;mBlue&amp;quot; init=&amp;quot;0.0&amp;quot; drift=&amp;quot;-0.1&amp;quot; &amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.0&amp;quot; high=&amp;quot;0.30&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;400&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;400&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.4&amp;quot; high=&amp;quot;0.60&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;150&amp;quot; y=&amp;quot;350&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;350&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.7&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;200&amp;quot; y=&amp;quot;300&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;300&amp;quot; y=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;OnOver value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; count=&amp;quot;2&amp;quot; score=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
        &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/Field&amp;gt;&lt;br /&gt;
    &amp;lt;/World&amp;gt;&lt;br /&gt;
  &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
is now&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; alpha=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also added Color as a child of ZoneInfluence:&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;  &amp;lt;ZoneInfluence name=&amp;quot;blueFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; alpha=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This map has 4 zones that activate one another. Only one should be present, and when not there, they are put outside of the arena. They are activated in a crossed fashion.&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;zone&amp;quot; version=&amp;quot;d&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;Map version=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
           Converted to XML by philippeqc.&lt;br /&gt;
           License: Public Domain. Do with it what you want.&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
    &amp;lt;World&amp;gt;&lt;br /&gt;
      &amp;lt;Field&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;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;0&amp;quot;  y=&amp;quot;500&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;500&amp;quot;  y=&amp;quot;0&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;
        &amp;lt;Zone name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
      &amp;lt;/Field&amp;gt;&lt;br /&gt;
    &amp;lt;/World&amp;gt;&lt;br /&gt;
  &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Its a really crude idea, that has been retaken in a much better way by wrt. But it show some things that can be done (influencing individual zones, and using ZoneInfluence from one zone to affect another).&lt;br /&gt;
&lt;br /&gt;
Targets have a count:&lt;br /&gt;
Code:&lt;br /&gt;
The target has an attribute count that will limit the number of time&lt;br /&gt;
it is called. Not having the attribute or setting it to -1 means infinite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-ph&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Zones_v2&amp;diff=18615</id>
		<title>Zones v2</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Zones_v2&amp;diff=18615"/>
		<updated>2007-06-08T16:12:45Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Changed attribute name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Preamble ==&lt;br /&gt;
&lt;br /&gt;
You will note that the examples below dont sound that fun. I&#039;d like to think its because my creative power went into building a good system, and now there is little left to put on examples. But I&#039;m sure you will find interesting ways to use the mechanisms in here. My goal with this was to be able to have zones that could have different effect depending on who would use them. For example, having a  fortress that team Blue could conquer, but only 2 of the players of team Red could actually defend. The other Red could still circle it and block the enemy, but they could not lower its value actively. Everything described here works. There are still glitches small and not so small. The code is in my private branch, but feel free to grab a local copy if you want to play with it.&lt;br /&gt;
&lt;br /&gt;
The format is anything but closed. I&#039;d like to hear your opinion on it too (yes it is a PITA to write, but if you have a constructive remark about that, I&#039;d like to know it) &lt;br /&gt;
&lt;br /&gt;
-ph&lt;br /&gt;
&lt;br /&gt;
Most of this is from a forum post by philippeqc. I reworded some stuff and formatted a bit for the wiki. Some stuff might have gotten lost or reworded wrongly so cross refrence with the post if the wording gets hazy and/or just to double check @ http://forums.armagetronad.net/viewtopic.php?p=77491#77491. Some stuff might be in the wrong place. --[[User:Your mom|Your mom]] 11:42, 30 July 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zone element ==&lt;br /&gt;
&lt;br /&gt;
Individual zones may have a name. Entering a name is optional, and re-using a name will be considered to mean &amp;quot;add/override with the following information&amp;quot;. Dont rely on this behavior for anything, in other words &#039;&#039;&#039;Dont re-use the same name.&#039;&#039;&#039; All zones need a shape defined. At the moment only one shape exists, the ShapeCircle. More shapes are planned in the future and are ToDo&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
 &amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
  &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
 &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules and EffectGroups ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A zone can have up to 4 different &amp;quot;rules&amp;quot; (need better name ToDo). Enter, Inside, Leave, Outside. It classifies when the held elements should be inspected. Inside each of the &amp;quot;rules&amp;quot;, one can define EffectGroups. EffectGroup(s) are the fundamental building blocks of  this new system. It associate owners with consequences. Note that ownership is part of effectGroup(s), &#039;&#039;NOT&#039;&#039; the zone. So a zone may have multiple effectGroup(s), each with unique or interlapping owners. There are 2 types of owners: owner (individuals) and ownerTeam (every member of a team). It is possible to define 0,1 or many for each items.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;HACK:&lt;br /&gt;
ATM, only owner is supported, and it must be an exact match with a&lt;br /&gt;
player&#039;s name to associated the effect.&lt;br /&gt;
The real solution will translate the labels used to players based on&lt;br /&gt;
some other logic depending on &amp;quot;game type&amp;quot;. This is to be defined&lt;br /&gt;
later.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;HACK:&lt;br /&gt;
It should be possible to associate individual with teams in some part&lt;br /&gt;
of the map. In this text, I will user lowercase color name + number for&lt;br /&gt;
individual, and uppercase color name for teams. So the individual&lt;br /&gt;
red1, red7 and red90210 should be considered as players of the team&lt;br /&gt;
RED. I will also allow myself to insert _description_ in names to help&lt;br /&gt;
the reader when appropriate.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ShapeCircle ...&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
&amp;lt;Enter&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;red1,red2&amp;quot; ownerTeam=&amp;quot;BLUE,YELLOW&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;&amp;quot; ownerTeam=&amp;quot;RED&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;/Enter&amp;gt;&lt;br /&gt;
&amp;lt;Leave&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;green7&amp;quot; ownerTeam=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;/Leave&amp;gt;&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User element ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inside the EffectGroup, elements User are set. This element offers different readily made rules to determine if a player in the &amp;quot;rule&amp;quot; condition for the zone, is allowed to be considered a user. This is decided based from the following information: owner, ownerTeam and the player matching the rule. Two other conditions can be set for a player to be considered a valid user: positive and marked. These element are of type Triad. The possible values are true, false and ignore. We will come back to these later. If the current player is found to be valid, the processing will continue to the child elements. Otherwise, nothing happens. A valid user will be called triggerer from now on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following users are currently implemented:&lt;br /&gt;
* all: Anybody can be considered a valid user,&lt;br /&gt;
* owner: only a player direcly in the owner list can be considered a valid user,&lt;br /&gt;
* ownerTeam: only a player member of a team mentionned in the ownerTeam list can be considered a valid user,&lt;br /&gt;
* allButOwner only a player NOT mentioned in the owner list can be considered a valid user,&lt;br /&gt;
* allButTeamOwner only a player NOT member of a team mentioned in the ownerTeam list can be considered a valid user, (TO COME, NOT IMPLEMENTED YET)&lt;br /&gt;
* anotherTeammate only a player in the same team as one of the individual owner can be considered a valid user (TO COME, NOT IMPLEMENTED YET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;EffectGroup owner=&amp;quot;red1,red2&amp;quot; ownerTeam=&amp;quot;BLUE,YELLOW&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;all&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Anybody can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;allButOwner&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Anybody but red1 and red2 can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;&amp;quot; ownerTeam=&amp;quot;RED&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;owner&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- No effect as the owner list is empty --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;ownerTeam&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Only players of the RED team can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inside a User element, it is possible to make use of 3 different&lt;br /&gt;
elements. Target, ZoneInfluence and MonitorInfluence.&lt;br /&gt;
&lt;br /&gt;
=== Target ===&lt;br /&gt;
&lt;br /&gt;
The Target element will take the information of the valid user, and&lt;br /&gt;
calculate who will receive the effect of the zone. Depending on the&lt;br /&gt;
described target rule to use and the state of the game, the calculated&lt;br /&gt;
target can be from no players to everybody in game.&lt;br /&gt;
&lt;br /&gt;
The currently implemented target rules are :&lt;br /&gt;
&lt;br /&gt;
*self : the triggerer himself&lt;br /&gt;
*teammate : a randomly selected teammate of the triggerer&lt;br /&gt;
*team : all the member of the team of the triggerer&lt;br /&gt;
*all : everybody in the game&lt;br /&gt;
*allButSelf : everybody in the game BUT the triggerer&lt;br /&gt;
*another : a randomly selected player that is not the triggerer&lt;br /&gt;
*ownerTeamTeammate : a randomly selected player member of one of the teams mentioned in the teamOwner list.&lt;br /&gt;
*owner : all the players owning the effectGroup&lt;br /&gt;
*ownerteam : all the players member of the team owning the effectGroup&lt;br /&gt;
*ownerteamteammate : a single player member from a owning team&lt;br /&gt;
*anydead : any single dead player&lt;br /&gt;
*alldead : all the dead players&lt;br /&gt;
*singledeadowner : one of the owners that is dead&lt;br /&gt;
*anotherteammatedead : a single player member of the team of the triggerer that is dead&lt;br /&gt;
*anothernotteammatedead : a single player that is not member of the team of the triggerer and that is dead&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
*Much more are detailed in a document named zones.txt hidden somewhere&lt;br /&gt;
on the forum.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the targets are selected, they all are applied all the effects&lt;br /&gt;
described under the Target element.&lt;br /&gt;
&lt;br /&gt;
Nota: In a User element, it is possible to user any amount of Target,&lt;br /&gt;
ZoneInfluence and MonitorInfluence.&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User user=&amp;quot;ownerTeam&amp;quot; &amp;gt;&lt;br /&gt;
  &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- The player that is member of one of the team mentionned&lt;br /&gt;
  and that triggered the zone receive the effect --&amp;gt;&lt;br /&gt;
  &amp;lt;/Target&amp;gt;&lt;br /&gt;
  &amp;lt;Target target=&amp;quot;another&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Some random player will receive the effect described --&amp;gt;&lt;br /&gt;
  &amp;lt;/Target&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Effect ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Effect element hold specific effects. The attribute count can limit the number of times a specific effect can be used. By default, the count is unlimited.&lt;br /&gt;
&lt;br /&gt;
valid effect currently implemented are:&lt;br /&gt;
*win : win the round&lt;br /&gt;
*death : kill the target(s)&lt;br /&gt;
*point : give points to the target(s)&lt;br /&gt;
*spawnplayer : Respawns target(s)&lt;br /&gt;
*brakerecharge : Refills target(s) cycle brake&lt;br /&gt;
*rubberrecharge : Refills target(s) cycle rubber&lt;br /&gt;
*setting : has 2 attributes ; settingName &amp;amp; settingValue&lt;br /&gt;
&lt;br /&gt;
new attribute for all effects: description&lt;br /&gt;
&lt;br /&gt;
When the effect is triggered, the message is displayed on the console. Somehow I&#039;m not able to do the &amp;quot;parsing&amp;quot; similar to when points are given (player x received y points because he is sooo leet). That should come.&lt;br /&gt;
&lt;br /&gt;
When point is use, an attribute score will mention the amount of point&lt;br /&gt;
to give.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;3&amp;quot; count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- The target receives 3 points and is good for 2 usages --&amp;gt;&lt;br /&gt;
  &amp;lt;/Effect&amp;gt;&lt;br /&gt;
  &amp;lt;Effect ...&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;/Effect&amp;gt;&lt;br /&gt;
&amp;lt;/Target&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Effect effect=&amp;quot;setting&amp;quot; settingName=&amp;quot;cycle_speed&amp;quot; settingValue=&amp;quot;100&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ZoneInfluence ===&lt;br /&gt;
&lt;br /&gt;
Inside the User element, the element ZoneInfluence and MonitorInfluence are use to affect back game element. ZoneInfluence allows to affect a zone in play. The name attribute must match exactly a zone&#039;s name elsewhere in the map.&lt;br /&gt;
&lt;br /&gt;
The possible thing to affect on a zone are:&lt;br /&gt;
*Rotation with attribute rotationBaseAngle, rotationValueAngle, rotationBaseSpeed and rotationValueSpeed&lt;br /&gt;
*Radius with attribute radius&lt;br /&gt;
*Point with attribute x and y&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ZoneInfluence name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Rotation rotationBaseSpeed=&amp;quot;0.3&amp;quot; rotationValueSpeed=&amp;quot;0.5&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;100&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
  &amp;lt;ZoneInfluence name=&amp;quot;blueFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MonitorInfluence ===&lt;br /&gt;
&lt;br /&gt;
Monitors are simple valiables that can be affected by interaction with different zones. The old &amp;quot;fortress&amp;quot; zone is to be considered as a zone where being inside slowly influence its monitor. Monitors are to be inserted in the map at the same level as Zone. Monitor have a name that is used to refer to from the MonitorInfluence, a initial value, and a drift, that slowly move the value, low and high, which clamp the monitor&#039;s value between their owns.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Field&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
  &amp;lt;Monitor name=&amp;quot;monitorFortressRed&amp;quot; init=&amp;quot;0.2&amp;quot; drift=&amp;quot;-0.1&amp;quot; low=&amp;quot;0.0&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- This monitor&#039;s value is initialised at 0.2, will slowly&lt;br /&gt;
  change at the rate of -0.1 per second, and will be clamped in the&lt;br /&gt;
  range [0.0, 1.0]. --&amp;gt;&lt;br /&gt;
  &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Field&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Monitor as different rules that can be used to inspect and react on its value. They are OnOver, OnUnder, InRange and OutsideRange. Any amount of rules can be used in a monitor.&lt;br /&gt;
&lt;br /&gt;
*OnOver has an attribute named value and will be used when the monitor&#039;s value exceed it,&lt;br /&gt;
*OnUnder has an attribute named value and will be used when the monitor&#039;s value is under it,&lt;br /&gt;
*InRange has attributes low and high and will be used when the monitor&#039;s value fall between both&lt;br /&gt;
*OutRange has attributes low and high and will be used when the monitor&#039;s value is not falling between both&lt;br /&gt;
&lt;br /&gt;
The monitors&#039; rules are similar to the zone&#039;s rule in that they hold EffectGroups that are inspected when the rule conditions are met.&lt;br /&gt;
&lt;br /&gt;
What differs a Monitor from a zone regarding to EffectGroup is who are considered players to be inspected as users. Anyone who contributed to a monitor during a game time step is registered, along with if the contribution was positive (conquering) or negative (defending), and if they where marked. This information is passed along up to the User element. There it can be used on additional tests to determine a valid user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Monitor name=&amp;quot;monitorFortressRed&amp;quot; init=&amp;quot;0.2&amp;quot; drift=&amp;quot;-0.1&amp;quot; low=&amp;quot;0.0&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;OnOver value=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;EffectGroup ...&amp;gt;&lt;br /&gt;
      &amp;lt;User user=&amp;quot;...&amp;quot; positive=&amp;quot;true&amp;quot; marked=&amp;quot;ignore&amp;quot;&amp;gt;&lt;br /&gt;
        ... &amp;lt;!-- to be a valid user, the player must have contributed&lt;br /&gt;
        to this monitor, match the user rule AND have contributed in a&lt;br /&gt;
        positive (conquest) fashion --&amp;gt;&lt;br /&gt;
      &amp;lt;/User&amp;gt;&lt;br /&gt;
      &amp;lt;User ...&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
      &amp;lt;/User&amp;gt;&lt;br /&gt;
    &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
  &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
&amp;lt;/Monitor&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== User ====&lt;br /&gt;
&lt;br /&gt;
The User element always have these attributes, but outside of an EffectGroup from a Monitor, this is always ignored.&lt;br /&gt;
&lt;br /&gt;
MonitorInfluence element is the one where one describe how to affect a monitor. It has an attribute name to point to the monitor to influence. It has a marked attribute which is a Triad, ie: allows for the value true, false or ignore. Players using this MonitorInfluence will carry this mark into their contribution to the monitor.&lt;br /&gt;
&lt;br /&gt;
There are 3 ways to influence the value of a monitor:&lt;br /&gt;
*1 the attribute influenceSlide will affect the monitor&#039;s value in a fashion proportional to the time passed in the zone. This is how the classical fortress operates. This is the same as saying influenceSlide * duration of the current game time step.&lt;br /&gt;
*2 the attribute influenceAdd will affect the monitor&#039;s value by this amount. This is NOT affected by time.&lt;br /&gt;
*3 the attribute influenceSet will set the monitor&#039;s value immediatly to this value.&lt;br /&gt;
&lt;br /&gt;
These can of course be used simulteanously. It is important here that&lt;br /&gt;
attributes that are not desired should not be defined, rather than&lt;br /&gt;
defined at a default value.&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User ...&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressRed&amp;quot; marked=&amp;quot;true&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;!-- conquer the fortress at a rate of 0.5 per second --&amp;gt;&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressGreen&amp;quot; marked=&amp;quot;true&amp;quot; influenceAdd=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;!-- monitorFortressGreen&#039;s value is raised by 2 --&amp;gt;&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressBlue&amp;quot; influenceSet=&amp;quot;0.0&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Reset&#039;s BLUE&#039;s zone to 0 --&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quiz ==&lt;br /&gt;
Respond on the forums after reading through this entire page with any ideas or questions of your own.(Optional)&lt;br /&gt;
&lt;br /&gt;
1 Are you able to express some new ideas with it?&lt;br /&gt;
&lt;br /&gt;
2 Do you see items that could be added, either now or as a later&lt;br /&gt;
version that could improve its value?&lt;br /&gt;
&lt;br /&gt;
3 Anything else?&lt;br /&gt;
&lt;br /&gt;
-ph&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
An example might help you get through the mess of the description&lt;br /&gt;
&lt;br /&gt;
Its blue vs red Each team has zones in opposing corners which are interconnected. As they get conquered, they jump toward the center.&lt;br /&gt;
&lt;br /&gt;
For your convenience:&lt;br /&gt;
MAP_FILE philippeqc/zone/DoubleZoneJumping-1.aamap.xml&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.3.1-a.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;DoubleZoneJumping&amp;quot; version=&amp;quot;1&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;zone&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
  Double fortress exist at opposing corners.&lt;br /&gt;
  As they are conquered, they slowly move to the center of the map.&lt;br /&gt;
  This map was created when the team code was still not available,&lt;br /&gt;
  so exact match association to player name is required.&lt;br /&gt;
 &lt;br /&gt;
  Blue players: azure,cobalt,midnight,royal   &lt;br /&gt;
  Red players : cerise,mauve,rust,sangria&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  &amp;lt;Map version=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
           Converted to XML by philippeqc.&lt;br /&gt;
           License: Public Domain. Do with it what you want.&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
    &amp;lt;World&amp;gt;&lt;br /&gt;
      &amp;lt;Field&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;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;0&amp;quot;  y=&amp;quot;500&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;500&amp;quot;  y=&amp;quot;0&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;Zone name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;1.0&amp;quot; green=&amp;quot;0.1&amp;quot; blue=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;-0.25&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;1.0&amp;quot; green=&amp;quot;0.1&amp;quot; blue=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;-0.25&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Monitor name=&amp;quot;mRed&amp;quot; init=&amp;quot;0.0&amp;quot; drift=&amp;quot;-0.1&amp;quot; &amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.0&amp;quot; high=&amp;quot;0.30&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                 &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                 &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;Point x=&amp;quot;400&amp;quot; y=&amp;quot;400&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                 &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.4&amp;quot; high=&amp;quot;0.60&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;150&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;350&amp;quot; y=&amp;quot;350&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.7&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&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;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;300&amp;quot; y=&amp;quot;300&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;OnOver value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; count=&amp;quot;2&amp;quot; score=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
        &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Same thing for the blue team now --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;0.10&amp;quot; green=&amp;quot;0.10&amp;quot; blue=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;-0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;0.10&amp;quot; green=&amp;quot;0.10&amp;quot; blue=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;-0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Monitor name=&amp;quot;mBlue&amp;quot; init=&amp;quot;0.0&amp;quot; drift=&amp;quot;-0.1&amp;quot; &amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.0&amp;quot; high=&amp;quot;0.30&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;400&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;400&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.4&amp;quot; high=&amp;quot;0.60&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;150&amp;quot; y=&amp;quot;350&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;350&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.7&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;200&amp;quot; y=&amp;quot;300&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;300&amp;quot; y=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;OnOver value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; count=&amp;quot;2&amp;quot; score=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
        &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/Field&amp;gt;&lt;br /&gt;
    &amp;lt;/World&amp;gt;&lt;br /&gt;
  &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
is now&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; alpha=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also added Color as a child of ZoneInfluence:&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;  &amp;lt;ZoneInfluence name=&amp;quot;blueFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; alpha=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This map has 4 zones that activate one another. Only one should be present, and when not there, they are put outside of the arena. They are activated in a crossed fashion.&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;zone&amp;quot; version=&amp;quot;d&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;Map version=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
           Converted to XML by philippeqc.&lt;br /&gt;
           License: Public Domain. Do with it what you want.&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
    &amp;lt;World&amp;gt;&lt;br /&gt;
      &amp;lt;Field&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;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;0&amp;quot;  y=&amp;quot;500&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;500&amp;quot;  y=&amp;quot;0&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;
        &amp;lt;Zone name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
      &amp;lt;/Field&amp;gt;&lt;br /&gt;
    &amp;lt;/World&amp;gt;&lt;br /&gt;
  &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Its a really crude idea, that has been retaken in a much better way by wrt. But it show some things that can be done (influencing individual zones, and using ZoneInfluence from one zone to affect another).&lt;br /&gt;
&lt;br /&gt;
Targets have a count:&lt;br /&gt;
Code:&lt;br /&gt;
The target has an attribute count that will limit the number of time&lt;br /&gt;
it is called. Not having the attribute or setting it to -1 means infinite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-ph&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Zones_v2&amp;diff=18560</id>
		<title>Zones v2</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Zones_v2&amp;diff=18560"/>
		<updated>2007-06-06T12:22:37Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: /* ZoneInfluence */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Preamble ==&lt;br /&gt;
&lt;br /&gt;
You will note that the examples below dont sound that fun. I&#039;d like to think its because my creative power went into building a good system, and now there is little left to put on examples. But I&#039;m sure you will find interesting ways to use the mechanisms in here. My goal with this was to be able to have zones that could have different effect depending on who would use them. For example, having a  fortress that team Blue could conquer, but only 2 of the players of team Red could actually defend. The other Red could still circle it and block the enemy, but they could not lower its value actively. Everything described here works. There are still glitches small and not so small. The code is in my private branch, but feel free to grab a local copy if you want to play with it.&lt;br /&gt;
&lt;br /&gt;
The format is anything but closed. I&#039;d like to hear your opinion on it too (yes it is a PITA to write, but if you have a constructive remark about that, I&#039;d like to know it) &lt;br /&gt;
&lt;br /&gt;
-ph&lt;br /&gt;
&lt;br /&gt;
Most of this is from a forum post by philippeqc. I reworded some stuff and formatted a bit for the wiki. Some stuff might have gotten lost or reworded wrongly so cross refrence with the post if the wording gets hazy and/or just to double check @ http://forums.armagetronad.net/viewtopic.php?p=77491#77491. Some stuff might be in the wrong place. --[[User:Your mom|Your mom]] 11:42, 30 July 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zone element ==&lt;br /&gt;
&lt;br /&gt;
Individual zones may have a name. Entering a name is optional, and re-using a name will be considered to mean &amp;quot;add/override with the following information&amp;quot;. Dont rely on this behavior for anything, in other words &#039;&#039;&#039;Dont re-use the same name.&#039;&#039;&#039; All zones need a shape defined. At the moment only one shape exists, the ShapeCircle. More shapes are planned in the future and are ToDo&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
 &amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
  &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
 &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules and EffectGroups ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A zone can have up to 4 different &amp;quot;rules&amp;quot; (need better name ToDo). Enter, Inside, Leave, Outside. It classifies when the held elements should be inspected. Inside each of the &amp;quot;rules&amp;quot;, one can define EffectGroups. EffectGroup(s) are the fundamental building blocks of  this new system. It associate owners with consequences. Note that ownership is part of effectGroup(s), &#039;&#039;NOT&#039;&#039; the zone. So a zone may have multiple effectGroup(s), each with unique or interlapping owners. There are 2 types of owners: owner (individuals) and ownerTeam (every member of a team). It is possible to define 0,1 or many for each items.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;HACK:&lt;br /&gt;
ATM, only owner is supported, and it must be an exact match with a&lt;br /&gt;
player&#039;s name to associated the effect.&lt;br /&gt;
The real solution will translate the labels used to players based on&lt;br /&gt;
some other logic depending on &amp;quot;game type&amp;quot;. This is to be defined&lt;br /&gt;
later.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;HACK:&lt;br /&gt;
It should be possible to associate individual with teams in some part&lt;br /&gt;
of the map. In this text, I will user lowercase color name + number for&lt;br /&gt;
individual, and uppercase color name for teams. So the individual&lt;br /&gt;
red1, red7 and red90210 should be considered as players of the team&lt;br /&gt;
RED. I will also allow myself to insert _description_ in names to help&lt;br /&gt;
the reader when appropriate.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ShapeCircle ...&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
&amp;lt;Enter&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;red1,red2&amp;quot; ownerTeam=&amp;quot;BLUE,YELLOW&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;&amp;quot; ownerTeam=&amp;quot;RED&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;/Enter&amp;gt;&lt;br /&gt;
&amp;lt;Leave&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;green7&amp;quot; ownerTeam=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;/Leave&amp;gt;&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User element ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inside the EffectGroup, elements User are set. This element offers different readily made rules to determine if a player in the &amp;quot;rule&amp;quot; condition for the zone, is allowed to be considered a user. This is decided based from the following information: owner, ownerTeam and the player matching the rule. Two other conditions can be set for a player to be considered a valid user: positive and marked. These element are of type Triad. The possible values are true, false and ignore. We will come back to these later. If the current player is found to be valid, the processing will continue to the child elements. Otherwise, nothing happens. A valid user will be called triggerer from now on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following users are currently implemented:&lt;br /&gt;
* all: Anybody can be considered a valid user,&lt;br /&gt;
* owner: only a player direcly in the owner list can be considered a valid user,&lt;br /&gt;
* ownerTeam: only a player member of a team mentionned in the ownerTeam list can be considered a valid user,&lt;br /&gt;
* allButOwner only a player NOT mentioned in the owner list can be considered a valid user,&lt;br /&gt;
* allButTeamOwner only a player NOT member of a team mentioned in the ownerTeam list can be considered a valid user, (TO COME, NOT IMPLEMENTED YET)&lt;br /&gt;
* anotherTeammate only a player in the same team as one of the individual owner can be considered a valid user (TO COME, NOT IMPLEMENTED YET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;EffectGroup owner=&amp;quot;red1,red2&amp;quot; ownerTeam=&amp;quot;BLUE,YELLOW&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;all&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Anybody can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;allButOwner&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Anybody but red1 and red2 can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;&amp;quot; ownerTeam=&amp;quot;RED&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;owner&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- No effect as the owner list is empty --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;ownerTeam&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Only players of the RED team can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inside a User element, it is possible to make use of 3 different&lt;br /&gt;
elements. Target, ZoneInfluence and MonitorInfluence.&lt;br /&gt;
&lt;br /&gt;
=== Target ===&lt;br /&gt;
&lt;br /&gt;
The Target element will take the information of the valid user, and&lt;br /&gt;
calculate who will receive the effect of the zone. Depending on the&lt;br /&gt;
described target rule to use and the state of the game, the calculated&lt;br /&gt;
target can be from no players to everybody in game.&lt;br /&gt;
&lt;br /&gt;
The currently implemented target rules are :&lt;br /&gt;
&lt;br /&gt;
*self : the triggerer himself&lt;br /&gt;
*teammate : a randomly selected teammate of the triggerer&lt;br /&gt;
*team : all the member of the team of the triggerer&lt;br /&gt;
*all : everybody in the game&lt;br /&gt;
*allButSelf : everybody in the game BUT the triggerer&lt;br /&gt;
*another : a randomly selected player that is not the triggerer&lt;br /&gt;
*ownerTeamTeammate : a randomly selected player member of one of the teams mentioned in the teamOwner list.&lt;br /&gt;
*owner : all the players owning the effectGroup&lt;br /&gt;
*ownerteam : all the players member of the team owning the effectGroup&lt;br /&gt;
*ownerteamteammate : a single player member from a owning team&lt;br /&gt;
*anydead : any single dead player&lt;br /&gt;
*alldead : all the dead players&lt;br /&gt;
*singledeadowner : one of the owners that is dead&lt;br /&gt;
*anotherteammatedead : a single player member of the team of the triggerer that is dead&lt;br /&gt;
*anothernotteammatedead : a single player that is not member of the team of the triggerer and that is dead&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
*Much more are detailed in a document named zones.txt hidden somewhere&lt;br /&gt;
on the forum.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the targets are selected, they all are applied all the effects&lt;br /&gt;
described under the Target element.&lt;br /&gt;
&lt;br /&gt;
Nota: In a User element, it is possible to user any amount of Target,&lt;br /&gt;
ZoneInfluence and MonitorInfluence.&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User user=&amp;quot;ownerTeam&amp;quot; &amp;gt;&lt;br /&gt;
  &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- The player that is member of one of the team mentionned&lt;br /&gt;
  and that triggered the zone receive the effect --&amp;gt;&lt;br /&gt;
  &amp;lt;/Target&amp;gt;&lt;br /&gt;
  &amp;lt;Target target=&amp;quot;another&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Some random player will receive the effect described --&amp;gt;&lt;br /&gt;
  &amp;lt;/Target&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Effect ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Effect element hold specific effects. The attribute count can limit the number of times a specific effect can be used. By default, the count is unlimited.&lt;br /&gt;
&lt;br /&gt;
valid effect currently implemented are:&lt;br /&gt;
*win : win the round&lt;br /&gt;
*death : kill the target(s)&lt;br /&gt;
*point : give points to the target(s)&lt;br /&gt;
*respawnplayer : Respawns target(s)&lt;br /&gt;
*brakerecharge : Refills target(s) cycle brake&lt;br /&gt;
*rubberrecharge : Refills target(s) cycle rubber&lt;br /&gt;
*setting : has 2 attributes ; settingName &amp;amp; settingValue&lt;br /&gt;
&lt;br /&gt;
new attribute for all effects: description&lt;br /&gt;
&lt;br /&gt;
When the effect is triggered, the message is displayed on the console. Somehow I&#039;m not able to do the &amp;quot;parsing&amp;quot; similar to when points are given (player x received y points because he is sooo leet). That should come.&lt;br /&gt;
&lt;br /&gt;
When point is use, an attribute score will mention the amount of point&lt;br /&gt;
to give.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;3&amp;quot; count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- The target receives 3 points and is good for 2 usages --&amp;gt;&lt;br /&gt;
  &amp;lt;/Effect&amp;gt;&lt;br /&gt;
  &amp;lt;Effect ...&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;/Effect&amp;gt;&lt;br /&gt;
&amp;lt;/Target&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Effect effect=&amp;quot;setting&amp;quot; settingName=&amp;quot;cycle_speed&amp;quot; settingValue=&amp;quot;100&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ZoneInfluence ===&lt;br /&gt;
&lt;br /&gt;
Inside the User element, the element ZoneInfluence and MonitorInfluence are use to affect back game element. ZoneInfluence allows to affect a zone in play. The name attribute must match exactly a zone&#039;s name elsewhere in the map.&lt;br /&gt;
&lt;br /&gt;
The possible thing to affect on a zone are:&lt;br /&gt;
*Rotation with attribute rotationBaseAngle, rotationValueAngle, rotationBaseSpeed and rotationValueSpeed&lt;br /&gt;
*Radius with attribute radius&lt;br /&gt;
*Point with attribute x and y&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ZoneInfluence name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Rotation rotationBaseSpeed=&amp;quot;0.3&amp;quot; rotationValueSpeed=&amp;quot;0.5&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;100&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
  &amp;lt;ZoneInfluence name=&amp;quot;blueFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MonitorInfluence ===&lt;br /&gt;
&lt;br /&gt;
Monitors are simple valiables that can be affected by interaction with different zones. The old &amp;quot;fortress&amp;quot; zone is to be considered as a zone where being inside slowly influence its monitor. Monitors are to be inserted in the map at the same level as Zone. Monitor have a name that is used to refer to from the MonitorInfluence, a initial value, and a drift, that slowly move the value, low and high, which clamp the monitor&#039;s value between their owns.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Field&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
  &amp;lt;Monitor name=&amp;quot;monitorFortressRed&amp;quot; init=&amp;quot;0.2&amp;quot; drift=&amp;quot;-0.1&amp;quot; low=&amp;quot;0.0&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- This monitor&#039;s value is initialised at 0.2, will slowly&lt;br /&gt;
  change at the rate of -0.1 per second, and will be clamped in the&lt;br /&gt;
  range [0.0, 1.0]. --&amp;gt;&lt;br /&gt;
  &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Field&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Monitor as different rules that can be used to inspect and react on its value. They are OnOver, OnUnder, InRange and OutsideRange. Any amount of rules can be used in a monitor.&lt;br /&gt;
&lt;br /&gt;
*OnOver has an attribute named value and will be used when the monitor&#039;s value exceed it,&lt;br /&gt;
*OnUnder has an attribute named value and will be used when the monitor&#039;s value is under it,&lt;br /&gt;
*InRange has attributes low and high and will be used when the monitor&#039;s value fall between both&lt;br /&gt;
*OutRange has attributes low and high and will be used when the monitor&#039;s value is not falling between both&lt;br /&gt;
&lt;br /&gt;
The monitors&#039; rules are similar to the zone&#039;s rule in that they hold EffectGroups that are inspected when the rule conditions are met.&lt;br /&gt;
&lt;br /&gt;
What differs a Monitor from a zone regarding to EffectGroup is who are considered players to be inspected as users. Anyone who contributed to a monitor during a game time step is registered, along with if the contribution was positive (conquering) or negative (defending), and if they where marked. This information is passed along up to the User element. There it can be used on additional tests to determine a valid user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Monitor name=&amp;quot;monitorFortressRed&amp;quot; init=&amp;quot;0.2&amp;quot; drift=&amp;quot;-0.1&amp;quot; low=&amp;quot;0.0&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;OnOver value=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;EffectGroup ...&amp;gt;&lt;br /&gt;
      &amp;lt;User user=&amp;quot;...&amp;quot; positive=&amp;quot;true&amp;quot; marked=&amp;quot;ignore&amp;quot;&amp;gt;&lt;br /&gt;
        ... &amp;lt;!-- to be a valid user, the player must have contributed&lt;br /&gt;
        to this monitor, match the user rule AND have contributed in a&lt;br /&gt;
        positive (conquest) fashion --&amp;gt;&lt;br /&gt;
      &amp;lt;/User&amp;gt;&lt;br /&gt;
      &amp;lt;User ...&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
      &amp;lt;/User&amp;gt;&lt;br /&gt;
    &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
  &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
&amp;lt;/Monitor&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== User ====&lt;br /&gt;
&lt;br /&gt;
The User element always have these attributes, but outside of an EffectGroup from a Monitor, this is always ignored.&lt;br /&gt;
&lt;br /&gt;
MonitorInfluence element is the one where one describe how to affect a monitor. It has an attribute name to point to the monitor to influence. It has a marked attribute which is a Triad, ie: allows for the value true, false or ignore. Players using this MonitorInfluence will carry this mark into their contribution to the monitor.&lt;br /&gt;
&lt;br /&gt;
There are 3 ways to influence the value of a monitor:&lt;br /&gt;
*1 the attribute influenceSlide will affect the monitor&#039;s value in a fashion proportional to the time passed in the zone. This is how the classical fortress operates. This is the same as saying influenceSlide * duration of the current game time step.&lt;br /&gt;
*2 the attribute influenceAdd will affect the monitor&#039;s value by this amount. This is NOT affected by time.&lt;br /&gt;
*3 the attribute influenceSet will set the monitor&#039;s value immediatly to this value.&lt;br /&gt;
&lt;br /&gt;
These can of course be used simulteanously. It is important here that&lt;br /&gt;
attributes that are not desired should not be defined, rather than&lt;br /&gt;
defined at a default value.&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User ...&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressRed&amp;quot; marked=&amp;quot;true&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;!-- conquer the fortress at a rate of 0.5 per second --&amp;gt;&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressGreen&amp;quot; marked=&amp;quot;true&amp;quot; influenceAdd=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;!-- monitorFortressGreen&#039;s value is raised by 2 --&amp;gt;&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressBlue&amp;quot; influenceSet=&amp;quot;0.0&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Reset&#039;s BLUE&#039;s zone to 0 --&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quiz ==&lt;br /&gt;
Respond on the forums after reading through this entire page with any ideas or questions of your own.(Optional)&lt;br /&gt;
&lt;br /&gt;
1 Are you able to express some new ideas with it?&lt;br /&gt;
&lt;br /&gt;
2 Do you see items that could be added, either now or as a later&lt;br /&gt;
version that could improve its value?&lt;br /&gt;
&lt;br /&gt;
3 Anything else?&lt;br /&gt;
&lt;br /&gt;
-ph&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
An example might help you get through the mess of the description&lt;br /&gt;
&lt;br /&gt;
Its blue vs red Each team has zones in opposing corners which are interconnected. As they get conquered, they jump toward the center.&lt;br /&gt;
&lt;br /&gt;
For your convenience:&lt;br /&gt;
MAP_FILE philippeqc/zone/DoubleZoneJumping-1.aamap.xml&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.3.1-a.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;DoubleZoneJumping&amp;quot; version=&amp;quot;1&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;zone&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
  Double fortress exist at opposing corners.&lt;br /&gt;
  As they are conquered, they slowly move to the center of the map.&lt;br /&gt;
  This map was created when the team code was still not available,&lt;br /&gt;
  so exact match association to player name is required.&lt;br /&gt;
 &lt;br /&gt;
  Blue players: azure,cobalt,midnight,royal   &lt;br /&gt;
  Red players : cerise,mauve,rust,sangria&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  &amp;lt;Map version=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
           Converted to XML by philippeqc.&lt;br /&gt;
           License: Public Domain. Do with it what you want.&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
    &amp;lt;World&amp;gt;&lt;br /&gt;
      &amp;lt;Field&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;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;0&amp;quot;  y=&amp;quot;500&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;500&amp;quot;  y=&amp;quot;0&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;Zone name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;1.0&amp;quot; green=&amp;quot;0.1&amp;quot; blue=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;-0.25&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;1.0&amp;quot; green=&amp;quot;0.1&amp;quot; blue=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;-0.25&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Monitor name=&amp;quot;mRed&amp;quot; init=&amp;quot;0.0&amp;quot; drift=&amp;quot;-0.1&amp;quot; &amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.0&amp;quot; high=&amp;quot;0.30&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                 &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                 &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;Point x=&amp;quot;400&amp;quot; y=&amp;quot;400&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                 &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.4&amp;quot; high=&amp;quot;0.60&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;150&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;350&amp;quot; y=&amp;quot;350&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.7&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&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;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;300&amp;quot; y=&amp;quot;300&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;OnOver value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; count=&amp;quot;2&amp;quot; score=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
        &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Same thing for the blue team now --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;0.10&amp;quot; green=&amp;quot;0.10&amp;quot; blue=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;-0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;0.10&amp;quot; green=&amp;quot;0.10&amp;quot; blue=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;-0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Monitor name=&amp;quot;mBlue&amp;quot; init=&amp;quot;0.0&amp;quot; drift=&amp;quot;-0.1&amp;quot; &amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.0&amp;quot; high=&amp;quot;0.30&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;400&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;400&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.4&amp;quot; high=&amp;quot;0.60&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;150&amp;quot; y=&amp;quot;350&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;350&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.7&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;200&amp;quot; y=&amp;quot;300&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;300&amp;quot; y=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;OnOver value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; count=&amp;quot;2&amp;quot; score=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
        &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/Field&amp;gt;&lt;br /&gt;
    &amp;lt;/World&amp;gt;&lt;br /&gt;
  &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
is now&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; alpha=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also added Color as a child of ZoneInfluence:&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;  &amp;lt;ZoneInfluence name=&amp;quot;blueFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; alpha=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This map has 4 zones that activate one another. Only one should be present, and when not there, they are put outside of the arena. They are activated in a crossed fashion.&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;zone&amp;quot; version=&amp;quot;d&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;Map version=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
           Converted to XML by philippeqc.&lt;br /&gt;
           License: Public Domain. Do with it what you want.&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
    &amp;lt;World&amp;gt;&lt;br /&gt;
      &amp;lt;Field&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;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;0&amp;quot;  y=&amp;quot;500&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;500&amp;quot;  y=&amp;quot;0&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;
        &amp;lt;Zone name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
      &amp;lt;/Field&amp;gt;&lt;br /&gt;
    &amp;lt;/World&amp;gt;&lt;br /&gt;
  &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Its a really crude idea, that has been retaken in a much better way by wrt. But it show some things that can be done (influencing individual zones, and using ZoneInfluence from one zone to affect another).&lt;br /&gt;
&lt;br /&gt;
Targets have a count:&lt;br /&gt;
Code:&lt;br /&gt;
The target has an attribute count that will limit the number of time&lt;br /&gt;
it is called. Not having the attribute or setting it to -1 means infinite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-ph&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Zones_v2&amp;diff=18557</id>
		<title>Zones v2</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Zones_v2&amp;diff=18557"/>
		<updated>2007-06-06T09:37:40Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Layed the rotationValueSpeed attribute to the Rotation element&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Preamble ==&lt;br /&gt;
&lt;br /&gt;
You will note that the examples below dont sound that fun. I&#039;d like to think its because my creative power went into building a good system, and now there is little left to put on examples. But I&#039;m sure you will find interesting ways to use the mechanisms in here. My goal with this was to be able to have zones that could have different effect depending on who would use them. For example, having a  fortress that team Blue could conquer, but only 2 of the players of team Red could actually defend. The other Red could still circle it and block the enemy, but they could not lower its value actively. Everything described here works. There are still glitches small and not so small. The code is in my private branch, but feel free to grab a local copy if you want to play with it.&lt;br /&gt;
&lt;br /&gt;
The format is anything but closed. I&#039;d like to hear your opinion on it too (yes it is a PITA to write, but if you have a constructive remark about that, I&#039;d like to know it) &lt;br /&gt;
&lt;br /&gt;
-ph&lt;br /&gt;
&lt;br /&gt;
Most of this is from a forum post by philippeqc. I reworded some stuff and formatted a bit for the wiki. Some stuff might have gotten lost or reworded wrongly so cross refrence with the post if the wording gets hazy and/or just to double check @ http://forums.armagetronad.net/viewtopic.php?p=77491#77491. Some stuff might be in the wrong place. --[[User:Your mom|Your mom]] 11:42, 30 July 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zone element ==&lt;br /&gt;
&lt;br /&gt;
Individual zones may have a name. Entering a name is optional, and re-using a name will be considered to mean &amp;quot;add/override with the following information&amp;quot;. Dont rely on this behavior for anything, in other words &#039;&#039;&#039;Dont re-use the same name.&#039;&#039;&#039; All zones need a shape defined. At the moment only one shape exists, the ShapeCircle. More shapes are planned in the future and are ToDo&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
 &amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
  &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
 &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules and EffectGroups ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A zone can have up to 4 different &amp;quot;rules&amp;quot; (need better name ToDo). Enter, Inside, Leave, Outside. It classifies when the held elements should be inspected. Inside each of the &amp;quot;rules&amp;quot;, one can define EffectGroups. EffectGroup(s) are the fundamental building blocks of  this new system. It associate owners with consequences. Note that ownership is part of effectGroup(s), &#039;&#039;NOT&#039;&#039; the zone. So a zone may have multiple effectGroup(s), each with unique or interlapping owners. There are 2 types of owners: owner (individuals) and ownerTeam (every member of a team). It is possible to define 0,1 or many for each items.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;HACK:&lt;br /&gt;
ATM, only owner is supported, and it must be an exact match with a&lt;br /&gt;
player&#039;s name to associated the effect.&lt;br /&gt;
The real solution will translate the labels used to players based on&lt;br /&gt;
some other logic depending on &amp;quot;game type&amp;quot;. This is to be defined&lt;br /&gt;
later.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;HACK:&lt;br /&gt;
It should be possible to associate individual with teams in some part&lt;br /&gt;
of the map. In this text, I will user lowercase color name + number for&lt;br /&gt;
individual, and uppercase color name for teams. So the individual&lt;br /&gt;
red1, red7 and red90210 should be considered as players of the team&lt;br /&gt;
RED. I will also allow myself to insert _description_ in names to help&lt;br /&gt;
the reader when appropriate.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ShapeCircle ...&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
&amp;lt;Enter&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;red1,red2&amp;quot; ownerTeam=&amp;quot;BLUE,YELLOW&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;&amp;quot; ownerTeam=&amp;quot;RED&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;/Enter&amp;gt;&lt;br /&gt;
&amp;lt;Leave&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;green7&amp;quot; ownerTeam=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;/Leave&amp;gt;&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User element ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inside the EffectGroup, elements User are set. This element offers different readily made rules to determine if a player in the &amp;quot;rule&amp;quot; condition for the zone, is allowed to be considered a user. This is decided based from the following information: owner, ownerTeam and the player matching the rule. Two other conditions can be set for a player to be considered a valid user: positive and marked. These element are of type Triad. The possible values are true, false and ignore. We will come back to these later. If the current player is found to be valid, the processing will continue to the child elements. Otherwise, nothing happens. A valid user will be called triggerer from now on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following users are currently implemented:&lt;br /&gt;
* all: Anybody can be considered a valid user,&lt;br /&gt;
* owner: only a player direcly in the owner list can be considered a valid user,&lt;br /&gt;
* ownerTeam: only a player member of a team mentionned in the ownerTeam list can be considered a valid user,&lt;br /&gt;
* allButOwner only a player NOT mentioned in the owner list can be considered a valid user,&lt;br /&gt;
* allButTeamOwner only a player NOT member of a team mentioned in the ownerTeam list can be considered a valid user, (TO COME, NOT IMPLEMENTED YET)&lt;br /&gt;
* anotherTeammate only a player in the same team as one of the individual owner can be considered a valid user (TO COME, NOT IMPLEMENTED YET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;EffectGroup owner=&amp;quot;red1,red2&amp;quot; ownerTeam=&amp;quot;BLUE,YELLOW&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;all&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Anybody can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;allButOwner&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Anybody but red1 and red2 can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;&amp;quot; ownerTeam=&amp;quot;RED&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;owner&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- No effect as the owner list is empty --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;ownerTeam&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Only players of the RED team can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inside a User element, it is possible to make use of 3 different&lt;br /&gt;
elements. Target, ZoneInfluence and MonitorInfluence.&lt;br /&gt;
&lt;br /&gt;
=== Target ===&lt;br /&gt;
&lt;br /&gt;
The Target element will take the information of the valid user, and&lt;br /&gt;
calculate who will receive the effect of the zone. Depending on the&lt;br /&gt;
described target rule to use and the state of the game, the calculated&lt;br /&gt;
target can be from no players to everybody in game.&lt;br /&gt;
&lt;br /&gt;
The currently implemented target rules are :&lt;br /&gt;
&lt;br /&gt;
*self : the triggerer himself&lt;br /&gt;
*teammate : a randomly selected teammate of the triggerer&lt;br /&gt;
*team : all the member of the team of the triggerer&lt;br /&gt;
*all : everybody in the game&lt;br /&gt;
*allButSelf : everybody in the game BUT the triggerer&lt;br /&gt;
*another : a randomly selected player that is not the triggerer&lt;br /&gt;
*ownerTeamTeammate : a randomly selected player member of one of the teams mentioned in the teamOwner list.&lt;br /&gt;
*owner : all the players owning the effectGroup&lt;br /&gt;
*ownerteam : all the players member of the team owning the effectGroup&lt;br /&gt;
*ownerteamteammate : a single player member from a owning team&lt;br /&gt;
*anydead : any single dead player&lt;br /&gt;
*alldead : all the dead players&lt;br /&gt;
*singledeadowner : one of the owners that is dead&lt;br /&gt;
*anotherteammatedead : a single player member of the team of the triggerer that is dead&lt;br /&gt;
*anothernotteammatedead : a single player that is not member of the team of the triggerer and that is dead&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
*Much more are detailed in a document named zones.txt hidden somewhere&lt;br /&gt;
on the forum.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the targets are selected, they all are applied all the effects&lt;br /&gt;
described under the Target element.&lt;br /&gt;
&lt;br /&gt;
Nota: In a User element, it is possible to user any amount of Target,&lt;br /&gt;
ZoneInfluence and MonitorInfluence.&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User user=&amp;quot;ownerTeam&amp;quot; &amp;gt;&lt;br /&gt;
  &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- The player that is member of one of the team mentionned&lt;br /&gt;
  and that triggered the zone receive the effect --&amp;gt;&lt;br /&gt;
  &amp;lt;/Target&amp;gt;&lt;br /&gt;
  &amp;lt;Target target=&amp;quot;another&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Some random player will receive the effect described --&amp;gt;&lt;br /&gt;
  &amp;lt;/Target&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Effect ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Effect element hold specific effects. The attribute count can limit the number of times a specific effect can be used. By default, the count is unlimited.&lt;br /&gt;
&lt;br /&gt;
valid effect currently implemented are:&lt;br /&gt;
*win : win the round&lt;br /&gt;
*death : kill the target(s)&lt;br /&gt;
*point : give points to the target(s)&lt;br /&gt;
*respawnplayer : Respawns target(s)&lt;br /&gt;
*brakerecharge : Refills target(s) cycle brake&lt;br /&gt;
*rubberrecharge : Refills target(s) cycle rubber&lt;br /&gt;
*setting : has 2 attributes ; settingName &amp;amp; settingValue&lt;br /&gt;
&lt;br /&gt;
new attribute for all effects: description&lt;br /&gt;
&lt;br /&gt;
When the effect is triggered, the message is displayed on the console. Somehow I&#039;m not able to do the &amp;quot;parsing&amp;quot; similar to when points are given (player x received y points because he is sooo leet). That should come.&lt;br /&gt;
&lt;br /&gt;
When point is use, an attribute score will mention the amount of point&lt;br /&gt;
to give.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;3&amp;quot; count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- The target receives 3 points and is good for 2 usages --&amp;gt;&lt;br /&gt;
  &amp;lt;/Effect&amp;gt;&lt;br /&gt;
  &amp;lt;Effect ...&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;/Effect&amp;gt;&lt;br /&gt;
&amp;lt;/Target&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Effect effect=&amp;quot;setting&amp;quot; settingName=&amp;quot;cycle_speed&amp;quot; settingValue=&amp;quot;100&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ZoneInfluence ===&lt;br /&gt;
&lt;br /&gt;
Inside the User element, the element ZoneInfluence and MonitorInfluence are use to affect back game element. ZoneInfluence allows to affect a zone in play. The name attribute must match exactly a zone&#039;s name elsewhere in the map.&lt;br /&gt;
&lt;br /&gt;
The possible thing to affect on a zone are:&lt;br /&gt;
*Rotation with attribute rotationBaseSpeed, rotationValueSpeed and rotationAcceleration&lt;br /&gt;
*Radius with attribute radius&lt;br /&gt;
*Point with attribute x and y&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ZoneInfluence name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Rotation rotationBaseSpeed=&amp;quot;1&amp;quot; rotationValueSpeed=&amp;quot;0.5&amp;quot; rotationAcceleration=&amp;quot;0.0&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;100&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
  &amp;lt;ZoneInfluence name=&amp;quot;blueFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MonitorInfluence ===&lt;br /&gt;
&lt;br /&gt;
Monitors are simple valiables that can be affected by interaction with different zones. The old &amp;quot;fortress&amp;quot; zone is to be considered as a zone where being inside slowly influence its monitor. Monitors are to be inserted in the map at the same level as Zone. Monitor have a name that is used to refer to from the MonitorInfluence, a initial value, and a drift, that slowly move the value, low and high, which clamp the monitor&#039;s value between their owns.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Field&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
  &amp;lt;Monitor name=&amp;quot;monitorFortressRed&amp;quot; init=&amp;quot;0.2&amp;quot; drift=&amp;quot;-0.1&amp;quot; low=&amp;quot;0.0&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- This monitor&#039;s value is initialised at 0.2, will slowly&lt;br /&gt;
  change at the rate of -0.1 per second, and will be clamped in the&lt;br /&gt;
  range [0.0, 1.0]. --&amp;gt;&lt;br /&gt;
  &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Field&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Monitor as different rules that can be used to inspect and react on its value. They are OnOver, OnUnder, InRange and OutsideRange. Any amount of rules can be used in a monitor.&lt;br /&gt;
&lt;br /&gt;
*OnOver has an attribute named value and will be used when the monitor&#039;s value exceed it,&lt;br /&gt;
*OnUnder has an attribute named value and will be used when the monitor&#039;s value is under it,&lt;br /&gt;
*InRange has attributes low and high and will be used when the monitor&#039;s value fall between both&lt;br /&gt;
*OutRange has attributes low and high and will be used when the monitor&#039;s value is not falling between both&lt;br /&gt;
&lt;br /&gt;
The monitors&#039; rules are similar to the zone&#039;s rule in that they hold EffectGroups that are inspected when the rule conditions are met.&lt;br /&gt;
&lt;br /&gt;
What differs a Monitor from a zone regarding to EffectGroup is who are considered players to be inspected as users. Anyone who contributed to a monitor during a game time step is registered, along with if the contribution was positive (conquering) or negative (defending), and if they where marked. This information is passed along up to the User element. There it can be used on additional tests to determine a valid user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Monitor name=&amp;quot;monitorFortressRed&amp;quot; init=&amp;quot;0.2&amp;quot; drift=&amp;quot;-0.1&amp;quot; low=&amp;quot;0.0&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;OnOver value=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;EffectGroup ...&amp;gt;&lt;br /&gt;
      &amp;lt;User user=&amp;quot;...&amp;quot; positive=&amp;quot;true&amp;quot; marked=&amp;quot;ignore&amp;quot;&amp;gt;&lt;br /&gt;
        ... &amp;lt;!-- to be a valid user, the player must have contributed&lt;br /&gt;
        to this monitor, match the user rule AND have contributed in a&lt;br /&gt;
        positive (conquest) fashion --&amp;gt;&lt;br /&gt;
      &amp;lt;/User&amp;gt;&lt;br /&gt;
      &amp;lt;User ...&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
      &amp;lt;/User&amp;gt;&lt;br /&gt;
    &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
  &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
&amp;lt;/Monitor&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== User ====&lt;br /&gt;
&lt;br /&gt;
The User element always have these attributes, but outside of an EffectGroup from a Monitor, this is always ignored.&lt;br /&gt;
&lt;br /&gt;
MonitorInfluence element is the one where one describe how to affect a monitor. It has an attribute name to point to the monitor to influence. It has a marked attribute which is a Triad, ie: allows for the value true, false or ignore. Players using this MonitorInfluence will carry this mark into their contribution to the monitor.&lt;br /&gt;
&lt;br /&gt;
There are 3 ways to influence the value of a monitor:&lt;br /&gt;
*1 the attribute influenceSlide will affect the monitor&#039;s value in a fashion proportional to the time passed in the zone. This is how the classical fortress operates. This is the same as saying influenceSlide * duration of the current game time step.&lt;br /&gt;
*2 the attribute influenceAdd will affect the monitor&#039;s value by this amount. This is NOT affected by time.&lt;br /&gt;
*3 the attribute influenceSet will set the monitor&#039;s value immediatly to this value.&lt;br /&gt;
&lt;br /&gt;
These can of course be used simulteanously. It is important here that&lt;br /&gt;
attributes that are not desired should not be defined, rather than&lt;br /&gt;
defined at a default value.&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User ...&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressRed&amp;quot; marked=&amp;quot;true&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;!-- conquer the fortress at a rate of 0.5 per second --&amp;gt;&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressGreen&amp;quot; marked=&amp;quot;true&amp;quot; influenceAdd=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;!-- monitorFortressGreen&#039;s value is raised by 2 --&amp;gt;&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressBlue&amp;quot; influenceSet=&amp;quot;0.0&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Reset&#039;s BLUE&#039;s zone to 0 --&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quiz ==&lt;br /&gt;
Respond on the forums after reading through this entire page with any ideas or questions of your own.(Optional)&lt;br /&gt;
&lt;br /&gt;
1 Are you able to express some new ideas with it?&lt;br /&gt;
&lt;br /&gt;
2 Do you see items that could be added, either now or as a later&lt;br /&gt;
version that could improve its value?&lt;br /&gt;
&lt;br /&gt;
3 Anything else?&lt;br /&gt;
&lt;br /&gt;
-ph&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
An example might help you get through the mess of the description&lt;br /&gt;
&lt;br /&gt;
Its blue vs red Each team has zones in opposing corners which are interconnected. As they get conquered, they jump toward the center.&lt;br /&gt;
&lt;br /&gt;
For your convenience:&lt;br /&gt;
MAP_FILE philippeqc/zone/DoubleZoneJumping-1.aamap.xml&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.3.1-a.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;DoubleZoneJumping&amp;quot; version=&amp;quot;1&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;zone&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
  Double fortress exist at opposing corners.&lt;br /&gt;
  As they are conquered, they slowly move to the center of the map.&lt;br /&gt;
  This map was created when the team code was still not available,&lt;br /&gt;
  so exact match association to player name is required.&lt;br /&gt;
 &lt;br /&gt;
  Blue players: azure,cobalt,midnight,royal   &lt;br /&gt;
  Red players : cerise,mauve,rust,sangria&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  &amp;lt;Map version=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
           Converted to XML by philippeqc.&lt;br /&gt;
           License: Public Domain. Do with it what you want.&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
    &amp;lt;World&amp;gt;&lt;br /&gt;
      &amp;lt;Field&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;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;0&amp;quot;  y=&amp;quot;500&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;500&amp;quot;  y=&amp;quot;0&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;Zone name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;1.0&amp;quot; green=&amp;quot;0.1&amp;quot; blue=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;-0.25&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;1.0&amp;quot; green=&amp;quot;0.1&amp;quot; blue=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;-0.25&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Monitor name=&amp;quot;mRed&amp;quot; init=&amp;quot;0.0&amp;quot; drift=&amp;quot;-0.1&amp;quot; &amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.0&amp;quot; high=&amp;quot;0.30&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                 &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                 &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;Point x=&amp;quot;400&amp;quot; y=&amp;quot;400&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                 &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.4&amp;quot; high=&amp;quot;0.60&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;150&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;350&amp;quot; y=&amp;quot;350&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.7&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&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;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;300&amp;quot; y=&amp;quot;300&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;OnOver value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; count=&amp;quot;2&amp;quot; score=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
        &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Same thing for the blue team now --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;0.10&amp;quot; green=&amp;quot;0.10&amp;quot; blue=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;-0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;0.10&amp;quot; green=&amp;quot;0.10&amp;quot; blue=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;-0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Monitor name=&amp;quot;mBlue&amp;quot; init=&amp;quot;0.0&amp;quot; drift=&amp;quot;-0.1&amp;quot; &amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.0&amp;quot; high=&amp;quot;0.30&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;400&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;400&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.4&amp;quot; high=&amp;quot;0.60&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;150&amp;quot; y=&amp;quot;350&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;350&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.7&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;200&amp;quot; y=&amp;quot;300&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;300&amp;quot; y=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;OnOver value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; count=&amp;quot;2&amp;quot; score=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
        &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/Field&amp;gt;&lt;br /&gt;
    &amp;lt;/World&amp;gt;&lt;br /&gt;
  &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
is now&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; alpha=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also added Color as a child of ZoneInfluence:&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;  &amp;lt;ZoneInfluence name=&amp;quot;blueFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; alpha=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This map has 4 zones that activate one another. Only one should be present, and when not there, they are put outside of the arena. They are activated in a crossed fashion.&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;zone&amp;quot; version=&amp;quot;d&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;Map version=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
           Converted to XML by philippeqc.&lt;br /&gt;
           License: Public Domain. Do with it what you want.&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
    &amp;lt;World&amp;gt;&lt;br /&gt;
      &amp;lt;Field&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;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;0&amp;quot;  y=&amp;quot;500&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;500&amp;quot;  y=&amp;quot;0&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;
        &amp;lt;Zone name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
      &amp;lt;/Field&amp;gt;&lt;br /&gt;
    &amp;lt;/World&amp;gt;&lt;br /&gt;
  &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Its a really crude idea, that has been retaken in a much better way by wrt. But it show some things that can be done (influencing individual zones, and using ZoneInfluence from one zone to affect another).&lt;br /&gt;
&lt;br /&gt;
Targets have a count:&lt;br /&gt;
Code:&lt;br /&gt;
The target has an attribute count that will limit the number of time&lt;br /&gt;
it is called. Not having the attribute or setting it to -1 means infinite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-ph&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Map_Making&amp;diff=18554</id>
		<title>Map Making</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Map_Making&amp;diff=18554"/>
		<updated>2007-06-06T09:13:47Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Grouped all the tools together&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are ways to make maps, and there are ways to make maps.&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
=== [[Making Maps for Beginners|A beginners tutorial]] ===&lt;br /&gt;
&lt;br /&gt;
This is an alternative tutorial written by kyle and syllabear that&#039;s more intended for beginners who haven&#039;t dealt with XML before. It basically contains duplicate information to the page above, so for technical matters [[Making Maps by Hand]] should be consulted.&lt;br /&gt;
&lt;br /&gt;
=== [[Making Maps by Hand|The complete description of the map format]] ===&lt;br /&gt;
&lt;br /&gt;
This is the only supported way to make maps right now.  It is a tutorial that is created by the Map Master himself and hopefully maintained by him (with everyone&#039;s help).  It is your first and best resource to what exactly goes into a map, how to put it there, and how it works in the game.  Even if you choose to use a graphical map maker, you still need to read this, so consider it required reading.&lt;br /&gt;
&lt;br /&gt;
== Tools and Generators ==&lt;br /&gt;
* [[Acme]] — Acme is a currently experimental mostly-doesn&#039;t-work graphical map editor that&#039;s in Armagetron Advanced&#039;s cvs.  If you&#039;d like to fool with it, go to this page and read about it, but be warned, it mostly doesn&#039;t work.&lt;br /&gt;
&lt;br /&gt;
* [[ArmaBell&#039;s MapEditor]] — ArmaBell&#039;s MapEditor is a currently experimental graphical Win32 map editor.  If you&#039;d like to fool with it, go to this page and read about it.&lt;br /&gt;
&lt;br /&gt;
* [http://generalconsumption.org/armagetronad/ellipse-maker/ Ellipse Maker]&lt;br /&gt;
* [http://generalconsumption.org/armagetronad/svg2aamap/ SVG2AAMap] — Convert SVG documents to aamaps. See [[http://forums.armagetronad.net/viewtopic.php?t=6311 aaforums:6311]].&lt;br /&gt;
&lt;br /&gt;
== Viewing Maps ==&lt;br /&gt;
&lt;br /&gt;
[http://www.generalconsumption.org/armagetron/map-preview/ Map Previewer]&lt;br /&gt;
&lt;br /&gt;
Nemostultae made a neat little web application that renders a map to a picture right in your browser.  When used in conjunction with a text editor, it is a powerful tool to help make maps.  In fact, the output of this page is currently considered required information if you want any server administrator to use your map on his server.&lt;br /&gt;
&lt;br /&gt;
== [[Playing Maps]] ==&lt;br /&gt;
&lt;br /&gt;
So you&#039;ve made your killer map, now how do you play it?&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Map_Making&amp;diff=18553</id>
		<title>Map Making</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Map_Making&amp;diff=18553"/>
		<updated>2007-06-06T09:11:38Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: re-grouping&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are ways to make maps, and there are ways to make maps.&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
=== [[Making Maps for Beginners|A beginners tutorial]] ===&lt;br /&gt;
&lt;br /&gt;
This is an alternative tutorial written by kyle and syllabear that&#039;s more intended for beginners who haven&#039;t dealt with XML before. It basically contains duplicate information to the page above, so for technical matters [[Making Maps by Hand]] should be consulted.&lt;br /&gt;
&lt;br /&gt;
=== [[Making Maps by Hand|The complete description of the map format]] ===&lt;br /&gt;
&lt;br /&gt;
This is the only supported way to make maps right now.  It is a tutorial that is created by the Map Master himself and hopefully maintained by him (with everyone&#039;s help).  It is your first and best resource to what exactly goes into a map, how to put it there, and how it works in the game.  Even if you choose to use a graphical map maker, you still need to read this, so consider it required reading.&lt;br /&gt;
&lt;br /&gt;
== Tools and Generators ==&lt;br /&gt;
* [http://generalconsumption.org/armagetronad/ellipse-maker/ Ellipse Maker]&lt;br /&gt;
* [http://generalconsumption.org/armagetronad/svg2aamap/ SVG2AAMap] — Convert SVG documents to aamaps. See [[http://forums.armagetronad.net/viewtopic.php?t=6311 aaforums:6311]].&lt;br /&gt;
&lt;br /&gt;
== Viewing Maps ==&lt;br /&gt;
&lt;br /&gt;
[http://www.generalconsumption.org/armagetron/map-preview/ Map Previewer]&lt;br /&gt;
&lt;br /&gt;
Nemostultae made a neat little web application that renders a map to a picture right in your browser.  When used in conjunction with a text editor, it is a powerful tool to help make maps.  In fact, the output of this page is currently considered required information if you want any server administrator to use your map on his server.&lt;br /&gt;
&lt;br /&gt;
== [[Playing Maps]] ==&lt;br /&gt;
&lt;br /&gt;
So you&#039;ve made your killer map, now how do you play it?&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Map_Making&amp;diff=18552</id>
		<title>Map Making</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Map_Making&amp;diff=18552"/>
		<updated>2007-06-06T09:09:23Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: re-arranged summary for clearer grouping&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are ways to make maps, and there are ways to make maps.&lt;br /&gt;
&lt;br /&gt;
== Making Maps ==&lt;br /&gt;
&lt;br /&gt;
There are a number of resources available to help you make maps right now and start using them.&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
==== [[Making Maps for Beginners|A beginners tutorial]] ====&lt;br /&gt;
&lt;br /&gt;
This is an alternative tutorial written by kyle and syllabear that&#039;s more intended for beginners who haven&#039;t dealt with XML before. It basically contains duplicate information to the page above, so for technical matters [[Making Maps by Hand]] should be consulted.&lt;br /&gt;
&lt;br /&gt;
==== [[Making Maps by Hand|The complete description of the map format]] ====&lt;br /&gt;
&lt;br /&gt;
This is the only supported way to make maps right now.  It is a tutorial that is created by the Map Master himself and hopefully maintained by him (with everyone&#039;s help).  It is your first and best resource to what exactly goes into a map, how to put it there, and how it works in the game.  Even if you choose to use a graphical map maker, you still need to read this, so consider it required reading.&lt;br /&gt;
&lt;br /&gt;
=== Map Making Tools ===&lt;br /&gt;
&lt;br /&gt;
=== [[Acme]] ===&lt;br /&gt;
&lt;br /&gt;
Acme is a currently experimental mostly-doesn&#039;t-work graphical map editor that&#039;s in Armagetron Advanced&#039;s cvs.  If you&#039;d like to fool with it, go to this page and read about it, but be warned, it mostly doesn&#039;t work.&lt;br /&gt;
&lt;br /&gt;
=== [[ArmaBell&#039;s MapEditor]] ===&lt;br /&gt;
&lt;br /&gt;
ArmaBell&#039;s MapEditor is a currently experimental graphical Win32 map editor.  If you&#039;d like to fool with it, go to this page and read about it.&lt;br /&gt;
&lt;br /&gt;
== Tools and Generators ==&lt;br /&gt;
* [http://generalconsumption.org/armagetronad/ellipse-maker/ Ellipse Maker]&lt;br /&gt;
* [http://generalconsumption.org/armagetronad/svg2aamap/ SVG2AAMap] — Convert SVG documents to aamaps. See [[http://forums.armagetronad.net/viewtopic.php?t=6311 aaforums:6311]].&lt;br /&gt;
&lt;br /&gt;
== Viewing Maps ==&lt;br /&gt;
&lt;br /&gt;
[http://www.generalconsumption.org/armagetron/map-preview/ Map Previewer]&lt;br /&gt;
&lt;br /&gt;
Nemostultae made a neat little web application that renders a map to a picture right in your browser.  When used in conjunction with a text editor, it is a powerful tool to help make maps.  In fact, the output of this page is currently considered required information if you want any server administrator to use your map on his server.&lt;br /&gt;
&lt;br /&gt;
== [[Playing Maps]] ==&lt;br /&gt;
&lt;br /&gt;
So you&#039;ve made your killer map, now how do you play it?&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=18340</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=18340"/>
		<updated>2007-05-26T17:12:24Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is to help map designer to get a grasp of the Map&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This version of the tutorial address the syntax defined by map-0.2.8_beta3.dtd and present the rules of interpreting the syntax as used by the parsing engine in the version 0.2.8 of Armagetron Advance.&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;
[[Image:original-1.0.1.png|right|thumbnail|Original Armagetron 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;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
	         Converted to XML by philippeqc.&lt;br /&gt;
	         License: Do with it what you want.                          --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
	&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Map format start with a XML header. The actual definition&lt;br /&gt;
of the Map is wrapped in a Resource. The Resource gives a&lt;br /&gt;
description of the content, such as the author and the version of&lt;br /&gt;
the map included. This particuliar map is the xml version of the&lt;br /&gt;
original map that supported directly in the game before version&lt;br /&gt;
0.2.8 (Arthemis). &lt;br /&gt;
&lt;br /&gt;
Skippin ahead in to the Field element, line 11 defines that &lt;br /&gt;
that 4 axes are to be&lt;br /&gt;
used. From line 13 to 26, 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;
== Header ==&lt;br /&gt;
The header of the map can nearly be considered as constant. It is&lt;br /&gt;
composed of 2 lines.&lt;br /&gt;
&lt;br /&gt;
Header for Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only element you need to consider is the name of the dtd. The&lt;br /&gt;
dtd should always be named after the version it targets. For&lt;br /&gt;
Arthemis, it should be &amp;quot;map-0.2.8.dtd&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Nota: during the beta process, version can change often and have&lt;br /&gt;
great difference between them. To limit the scope of the problem&lt;br /&gt;
during the beta phase, the name of the dtd should include the beta&lt;br /&gt;
it targets. &lt;br /&gt;
&lt;br /&gt;
Header for the beta 3 of Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resource ==&lt;br /&gt;
The Resource element describe some meta-information of the Map,&lt;br /&gt;
such as who created it, how should the resource file be named and&lt;br /&gt;
what type of information is to be expected.&lt;br /&gt;
&lt;br /&gt;
One part of the Resource details describe who made this map a&lt;br /&gt;
reality. In the Resource element, it is possible to differenciate&lt;br /&gt;
between the person or organism that comissioned the map, the&lt;br /&gt;
commisionner, and the person who executed the request and coded&lt;br /&gt;
it, the author. &lt;br /&gt;
&lt;br /&gt;
Both operations might be carried by the same and only person, in&lt;br /&gt;
this instance both entities are the same and the commissioner&lt;br /&gt;
field should be left blank. The commissioner field should be used&lt;br /&gt;
when the concept of a map and its execution are performed by two&lt;br /&gt;
different persons or entities. It could range from anything from&lt;br /&gt;
&amp;quot;could someone make a map where the feeling of &amp;lt;X&amp;gt; is emphased&amp;quot; to&lt;br /&gt;
coding from a hand-drawn sketch. The commissioner could also be&lt;br /&gt;
implied. Without him/it ever placing an open request, a&lt;br /&gt;
commisioner could be assign to a map when the author whan to&lt;br /&gt;
express an assumed sharing of the creation of the map. This can be&lt;br /&gt;
the case, for example, when the member of a Clan wrote a map that&lt;br /&gt;
falls in the ideals of the Clan.&lt;br /&gt;
&lt;br /&gt;
Maps can be implicitly grouped together. The category field is&lt;br /&gt;
there for this purpose. Prolific authors and their public will&lt;br /&gt;
appreciate a clear grouping of similar themed maps.&lt;br /&gt;
&lt;br /&gt;
As ever refining one&#039;s work is a very respected quality in the&lt;br /&gt;
Armagetron community, the latest changes need to be properly&lt;br /&gt;
propagated to everybody. The version field allow an author to&lt;br /&gt;
identify each specific instance of her work, and also insure that&lt;br /&gt;
a client will receive the exact version used by a server when&lt;br /&gt;
playing on it.&lt;br /&gt;
&lt;br /&gt;
The type specifies that the file hold an Armagetron Advance&lt;br /&gt;
map. While this is the only type available at the moment, the&lt;br /&gt;
development team is eager to expand this in the furture.&lt;br /&gt;
&lt;br /&gt;
Finally, and most importantly, the name of the &#039;&#039;ouvrage&#039;&#039; being&lt;br /&gt;
presented. &lt;br /&gt;
&lt;br /&gt;
The fields for Resource are:&lt;br /&gt;
;name&lt;br /&gt;
:The name of the map, mandatory.&lt;br /&gt;
;type&lt;br /&gt;
:The only valid type is &amp;quot;aamap&amp;quot;. This field is defaulted &amp;quot;aamap&amp;quot; when absent.&lt;br /&gt;
;version &lt;br /&gt;
:The version of the map described in this particuliar file. This value needs to be modified each time a change is applied to the map to ensure everybody have the proper copy.&lt;br /&gt;
;author&lt;br /&gt;
:The current maintainer of this map, usually the author who produced it. This either should be a user name registered with the central resource repository, or, for lone wolves who don&#039;t want to register, a valid email address encoded in the spambot safe as &amp;quot;unofficial/mailto/&amp;lt;Domain&amp;gt;/&amp;lt;User&amp;gt;&amp;quot;, where &amp;quot;&amp;lt;User&amp;gt;@&amp;lt;Domain&amp;gt;&amp;quot; would be the address.&lt;br /&gt;
:This field is defaulted to &amp;quot;Anonymous&amp;quot; when absent.&lt;br /&gt;
;commisioner&lt;br /&gt;
:The entity who dreamt, requested or even inspired in any way this map. This field is optional and has no default value. &lt;br /&gt;
;category&lt;br /&gt;
:How this map should be categorised. This field can have any number of sub categories, each separated by a &amp;quot;/&amp;quot; (a forward slash). An example could be &amp;quot;category/subcategory/subsubcategory&amp;quot;. This field is defaulted to &amp;quot;unsorted&amp;quot; when absent. &lt;br /&gt;
&lt;br /&gt;
Example: The castle map made by philippeqc&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;Castle&amp;quot; type=&amp;quot;aamap&amp;quot; version=&amp;quot;1.1&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;examples&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The StarTron (&amp;quot;5ptstar&amp;quot;) map made by Your_mom (note that while &#039;beta&#039; is more or less correct for the &#039;version&#039; attribute, it should not be in the &#039;category&#039; as it is here)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;5ptstar&amp;quot; version=&amp;quot;beta&amp;quot; author=&amp;quot;Your_mom&amp;quot; category=&amp;quot;beta&amp;quot; type=&amp;quot;aamap&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The MBC training map, made by Zorgul&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;TrainingDay&amp;quot; version=&amp;quot;1.6&amp;quot; author=&amp;quot;Zorgul&amp;quot; category=&amp;quot;MBC&amp;quot; type=&amp;quot;aamap&amp;quot; commisioner=&amp;quot;Micro Bus City&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The Reverso map, writen by Nemosultra based on a drawing by lucifer, for the Crack Pipe server&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;Reverso&amp;quot; version=&amp;quot;1.1-b&amp;quot; author=&amp;quot;Nemosultra&amp;quot; category=&amp;quot;CrackPipe&amp;quot; type=&amp;quot;aamap&amp;quot; commisioner=&amp;quot;lucifer&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To facilitate manipulation of the file over distributed systems,&lt;br /&gt;
the Resource holds explicit information about the naming and&lt;br /&gt;
storing of the file. This information can be used by tools such as&lt;br /&gt;
scripts and resource repositories to manipulate the file. &lt;br /&gt;
&lt;br /&gt;
A resource has a unique filepath determined by these attributes. The resource must be the &#039;&#039;only&#039;&#039; one to ever appear as this filepath and any changes must affect the &#039;version&#039; and the person making the change must place their name in the &#039;author&#039; attribute unless given permission by the original author.&lt;br /&gt;
&lt;br /&gt;
The filepath is formed by the attributes in the following syntax:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Author&amp;gt;/[Category/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;ResourceType&amp;gt;.xml&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
This element is the basic holder of the description of the&lt;br /&gt;
Map. From the opening element to the closing one, all the&lt;br /&gt;
information will be used to construct an in-game representation&lt;br /&gt;
for the players to explore and possibly compete in.&lt;br /&gt;
&lt;br /&gt;
The version attribute of the map indicate an specific parsing&lt;br /&gt;
engine version that should be used to express the map in the exact&lt;br /&gt;
manners that are desired by the map creator. &lt;br /&gt;
&lt;br /&gt;
Example: Map element&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sooner in the file,&lt;br /&gt;
the dtd has already specified a version. The difference between&lt;br /&gt;
both version is one specify the version of the syntax to be use,&lt;br /&gt;
and the other, the version of the rules to be used to interprete&lt;br /&gt;
the syntax.&lt;br /&gt;
&lt;br /&gt;
The dtd control the syntax, what keywords are valid and in which&lt;br /&gt;
arrangement. The parsing engine has specific rules how to read the&lt;br /&gt;
syntax and create the game elements. It is possible for different&lt;br /&gt;
parsing engine to operate from the same syntax, be it because the syntax&lt;br /&gt;
allows for many interpretation, or because a specific&lt;br /&gt;
interpretation has been found faulty in some case. Because each&lt;br /&gt;
interpretation could lead to very different instantiation, it is&lt;br /&gt;
best for the map designer to specify the one that should be&lt;br /&gt;
used. Even when no alternative interpretation exist, ie: there is&lt;br /&gt;
only one version available, it is best for the map designer to&lt;br /&gt;
specify it. Should a new one be implemented at a later time, the&lt;br /&gt;
map defined would continue to be instanciated properly.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, the only parsing engine version is&lt;br /&gt;
&amp;quot;0.2.8&amp;quot;. Maps using a version that is not understood by the&lt;br /&gt;
parsing engine of a specific client or server will be&lt;br /&gt;
automatically rejected by said application, on the ground that the&lt;br /&gt;
parsing engine doesn&#039;t know how to operate on it.&lt;br /&gt;
&lt;br /&gt;
Even if only one value exist, it is impossible to provide it as a&lt;br /&gt;
default, as there are no assurance that a new interpretation of&lt;br /&gt;
the syntax will not arrive at a future time.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It is possible for a map designer to indicate specific game&lt;br /&gt;
settings, similar to the ones available through the configuration&lt;br /&gt;
files of the application, to be used with the map. When&lt;br /&gt;
this is not desired, the Settings element can be safely removed&lt;br /&gt;
from the map definition.&lt;br /&gt;
&lt;br /&gt;
Any number of Setting can be defined inside of the Settings&lt;br /&gt;
element. Each Setting defined will overwrite the value previously&lt;br /&gt;
defined in the game. Each new Setting addressing a specific&lt;br /&gt;
configuration item will keep on overwriting previously defined&lt;br /&gt;
values. The Settings items are processed in order, from the top to&lt;br /&gt;
the bottom one.&lt;br /&gt;
&lt;br /&gt;
The Settings should be considered to be global to the World and&lt;br /&gt;
its sub-elements. This has very little relevance at the moment as&lt;br /&gt;
only one World and one Field can exist in the game. It is not&lt;br /&gt;
excluded that future version of the game could support multiple&lt;br /&gt;
elements such as World and Field. Each such elements and sub-elements would&lt;br /&gt;
receive the Settings defined in its parents, but would also be&lt;br /&gt;
able to overwrite parent received Settings for itself and its&lt;br /&gt;
sub-elements. &lt;br /&gt;
&lt;br /&gt;
One such overwriting capacity already exist, in the form of the&lt;br /&gt;
Axes element. This element can and will overwrite the value passed&lt;br /&gt;
by the Setting ARENA_AXES.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, there are no known case where the order of&lt;br /&gt;
writing Setting should matter. There are no garanties of it being&lt;br /&gt;
the case. Be carefull of the order of the Setting provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Settings element is inserted in the Map element, before the World element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Map ...&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		...&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
	&amp;lt;World&amp;gt;&lt;br /&gt;
		...&lt;br /&gt;
	&amp;lt;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting ==&lt;br /&gt;
Each individual Setting defines a specific element normally&lt;br /&gt;
configurable throught the config files of the game&lt;br /&gt;
application. For a full list and description of the setting&lt;br /&gt;
available, consult the [[Console Commands]] page. As config items&lt;br /&gt;
are the same as console commands, you will find all the&lt;br /&gt;
information there.&lt;br /&gt;
&lt;br /&gt;
The Setting has two attributes, the name and the value. The name&lt;br /&gt;
field hold the setting name as found in the various configuration&lt;br /&gt;
files. The value field will be assigned to the designated setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Setting name=&amp;quot;CYCLE_BRAKE_REFILL&amp;quot; value=&amp;quot;.1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will assing .1 to the configuration item CYCLE_BRAKE_REFILL.&lt;br /&gt;
&lt;br /&gt;
No validation are done on either fields by the parsing engine. The&lt;br /&gt;
values are passed directly to the setting engine, where the usual&lt;br /&gt;
validation is performed. Unexisting or misspelled settings names&lt;br /&gt;
will be ignored. Setting with valid names and invalid values have&lt;br /&gt;
an undetermined effect.&lt;br /&gt;
&lt;br /&gt;
The different Setting used have the potential of overwriding&lt;br /&gt;
client or server ones. While this behavior offers great capacity&lt;br /&gt;
to custom behavior for a specific map, users playing locally on&lt;br /&gt;
their machine and server administrator might find it a disruption&lt;br /&gt;
of their craftfully designed settings. Use with care and&lt;br /&gt;
moderation.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the World element is&lt;br /&gt;
the Field element. Only one Field can be defined. No parameters&lt;br /&gt;
are available at the moment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;World&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
	&amp;lt;/World&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;
The field define the zone on a 2D plane where the gaming can&lt;br /&gt;
occur. The full support of this definition will be developed under&lt;br /&gt;
Bacchus. In Arthemis, the old philosophy of &amp;quot;the play zone has to&lt;br /&gt;
be bounded by walls&amp;quot; is somewhat preserved. A secondary mechanism&lt;br /&gt;
also exist to prevent the players from escaping the rim. This is a&lt;br /&gt;
bried description of the mechanism used.&lt;br /&gt;
&lt;br /&gt;
While setting all the walls to be used during a round, the engine&lt;br /&gt;
will keep track of the minimal and maximal x&#039;s and y&#039;s values&lt;br /&gt;
encountered through wall coordinates.&lt;br /&gt;
A logical box will be formed, using the coordinate&lt;br /&gt;
(minX, minY), (maxX, minY), (maxX, maxY) and (minX, maxY) as its&lt;br /&gt;
corners.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around the classical arena.&lt;br /&gt;
The classical arena has the coordinates (0,0), (0,500), (500,500)&lt;br /&gt;
and (500, 0). This means that minX=0, minY=0, maxX=500 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around a square arena moved by 20 on the x&#039;s.&lt;br /&gt;
The classical arena has the coordinates (20,0), (20,500), (520,500)&lt;br /&gt;
and (520, 0). This means that minX=20, minY=0, maxX=520 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around a trapeze arena&lt;br /&gt;
A trapeze has a base lenght of 300, a top lenght of 200 and a&lt;br /&gt;
height of 200 with the following coordinates: (0, 0), (300, 0),&lt;br /&gt;
(250, 200), (50, 200). This means that minX=0, minY=0, maxX=300,&lt;br /&gt;
maxY=200.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around 2 walls of the classical arena&lt;br /&gt;
Should the south and west walls of the classical arena be ommited,&lt;br /&gt;
and only the north (from (0,500) to (500,500)) and east one (from&lt;br /&gt;
(500,0) to (500,500)) remain, the logical box is still the same&lt;br /&gt;
around it. This means that minX=0, minY=0, maxX=500 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: 2 walls at strange angle&lt;br /&gt;
If two walls, organised at strange angle and not even meeting,&lt;br /&gt;
compose the arena, are described as (200,200) to (600, 400) and&lt;br /&gt;
(350, 350) to (-10, 720). This means that minX=-10, minY=200,&lt;br /&gt;
maxX=600 and maxY=720.&lt;br /&gt;
&lt;br /&gt;
A no-motion logical box will be put at 10 game units outside of the&lt;br /&gt;
logical box. Should a player meet this no-motion zone, she will&lt;br /&gt;
find herself pushing agains a coussin of air. Rubber has undefined&lt;br /&gt;
effect agains this no-motion box.&lt;br /&gt;
&lt;br /&gt;
A second logical box will be put at 20 games units from the first&lt;br /&gt;
logical box. Should any players be outside of this logical box,&lt;br /&gt;
they are automatically killed.&lt;br /&gt;
&lt;br /&gt;
In game terms, should the players not be bounded by a continous&lt;br /&gt;
wall, they are free to roam around it but they will find an&lt;br /&gt;
invisible barrier keeping them from excaping into the infinite.&lt;br /&gt;
&lt;br /&gt;
Should you want to allow your players to roam without&lt;br /&gt;
restrictions, exploring the infinity of the grid, you have to&lt;br /&gt;
specify to use an infinite field.&lt;br /&gt;
&lt;br /&gt;
The Field support a single parameter, named logicalBox, which&lt;br /&gt;
control if the logical box should be used to limit roaming on the&lt;br /&gt;
Field. &lt;br /&gt;
;logicalBox&lt;br /&gt;
:When set to true, the motion will be restrained by the logical box, and when set to false, no logical box will be used. This field is optional and default to true.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box bounded Field&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
            &amp;lt;Field&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: Field with its logical box disabled&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
            &amp;lt;Field logicalBox=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following 2 paragraph are post map-0.1 and 0.2.8_beta2.&lt;br /&gt;
&lt;br /&gt;
For clarity purpose, the Axes element, if defined, need to be&lt;br /&gt;
defined first. After this, Spawn point, Walls and Zones can be&lt;br /&gt;
defined in any order.&lt;br /&gt;
&lt;br /&gt;
While a Field without any Spawn points is syntaxly valid, and&lt;br /&gt;
the parsing engine doesnt report any error, the effect is&lt;br /&gt;
undetermined. While a Field without any Wall is syntaxly valid,&lt;br /&gt;
and the parsing engine doesn&#039;t report any error, the effect is&lt;br /&gt;
undetermined.&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;
;xdir&lt;br /&gt;
: This is size of the displacement along the x&#039;s for this axis&lt;br /&gt;
;ydir&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 xdir and ydir 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 angle=&amp;quot;225&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis angle=&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 xdir and a ydir of 1. The real length of the described Axis is &lt;br /&gt;
&amp;lt;math&amp;gt;\sqrt{xdir^2+ydir^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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;2&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-2&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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 following example 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. This reduce the&lt;br /&gt;
effect of playing at very high speed while having a huge&lt;br /&gt;
difference between directions.&lt;br /&gt;
&lt;br /&gt;
Example: Factor of 6 between displacement, centered around a speed&lt;br /&gt;
of ~1.&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 xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-3&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
Example: Factor of 6 between displacement, centered around a speed&lt;br /&gt;
of ~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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-6&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;6&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;
While the ratio of speed is the same between both examples, the&lt;br /&gt;
later one has speed that might be difficult to control in one&lt;br /&gt;
direction. The first example produce the same difference, but&lt;br /&gt;
present the players with a more balanced alternative.&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;&lt;br /&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 Axis in cartesian, in the order 4, 5, 6, 1, 2, 3&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&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 Axis in degrees, in the order 4, 5, 6, 1, 2, 3&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both define 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 Axis in cartesian, in the order 4, 6, 5, 1, 3, 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&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 Axis in degrees, in the order 4, 6, 5, 1, 3, 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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: 4 Axis counter clockwise&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
== Wall ==&lt;br /&gt;
Walls 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: A square Wall of size 200&lt;br /&gt;
&amp;lt;pre&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;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;
&amp;lt;/pre&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;
&lt;br /&gt;
Example: A 2 points wall, possibly as an obstacle&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;
The Wall element has one attribute, the height. Controlling the&lt;br /&gt;
height affect the rendering height of a wall. A height of 1.0 is&lt;br /&gt;
about the same as the height of the original cycle model. A height&lt;br /&gt;
of 4.0 correspond to the Walls rendered with the lowRim setting on&lt;br /&gt;
the client. When no height is defined, the client defined setting&lt;br /&gt;
of either lowRim or highRim is used. This has the advantage of&lt;br /&gt;
respecting the players choice and often, capacity to render high&lt;br /&gt;
walls. When a height of 0 or less (ie: negative value) is given, an unresonably large value is substitued.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;height&#039;&#039;&lt;br /&gt;
: The height used for the rendering of the Wall. Positive value only.&lt;br /&gt;
&lt;br /&gt;
Example : Using the client default height&lt;br /&gt;
&amp;lt;pre&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;10&amp;quot; y=&amp;quot;10&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 : Controling the height&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Wall height=&amp;quot;2.13&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;Point x=&amp;quot;10&amp;quot; y=&amp;quot;10&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;
== 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: Basic Spawn presentation&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;
== Zones ==&lt;br /&gt;
Zone are interactive areas on the Field. They manifest themself as&lt;br /&gt;
huge circles slowly rotating. The players can interact with the&lt;br /&gt;
Zones by entering or being inside them.&lt;br /&gt;
&lt;br /&gt;
The Zone has an attribute effect which allows 3 values: win, death and&lt;br /&gt;
fortress. Entering a Zone of effect win makes the player the round&lt;br /&gt;
winner. Entering a Zone of effect death automatically kills the&lt;br /&gt;
player. Zones of effect fortress need to be occupied to be&lt;br /&gt;
triggered, and once triggered, they make the team the round winner.&lt;br /&gt;
&lt;br /&gt;
;effect&lt;br /&gt;
:Any of win, death or fortress. When ommited, the value is defaulted to death&lt;br /&gt;
&lt;br /&gt;
Example: Zone syntax&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Zone requires a sub element named ShapeCircle. &lt;br /&gt;
&lt;br /&gt;
The ShapeCircle has 2 attributes, the radius and the growth. The&lt;br /&gt;
radius attribute describe the size of the CircleShape and is&lt;br /&gt;
required. The unit used is the same game unit that are used as map&lt;br /&gt;
coordinates. A ShapeCircle with a radius of 10 will extend of 10&lt;br /&gt;
game units in every direction from its center.&lt;br /&gt;
&lt;br /&gt;
The growth describe how the radius of the ShapeCircle changes over&lt;br /&gt;
time. This unit is game units per second from the moment the Zone&lt;br /&gt;
is create, which is the round start.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify a negative growth, in which case the ShapeCircle will&lt;br /&gt;
slowly shrink. Should at any time the radius be of 0 or less, the&lt;br /&gt;
Zone is removed without effect.&lt;br /&gt;
The growth is optional and defaults to 0, which hold the&lt;br /&gt;
ShapeCircle at a constant size during the round.&lt;br /&gt;
&lt;br /&gt;
;radius&lt;br /&gt;
:The initial radius of the circle defining the Zone. This field is mandatory.&lt;br /&gt;
;growth&lt;br /&gt;
:The growth of the circle. The values can be positive, negative or 0. This field is optional and is defaulted to 0.&lt;br /&gt;
&lt;br /&gt;
Example: Zone with CircleShape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot; growth=&amp;quot;0.17&amp;quot;&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ShapeCircle requires a Point sub-element which describe the&lt;br /&gt;
center of the ShapeCircle. The syntax of the Point is the same as&lt;br /&gt;
the one used for the Wall.&lt;br /&gt;
&lt;br /&gt;
Example: A non-growing death zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;120&amp;quot; y=&amp;quot;86&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A growing fortress zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;fortress&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot; growth=&amp;quot;1.09&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;250&amp;quot; y=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A shrinking win zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;200&amp;quot; growth=&amp;quot;-0.2&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;440&amp;quot; y=&amp;quot;325&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible and valid to place the center of the Zone in a&lt;br /&gt;
location that is not accessible to the players, such as in a&lt;br /&gt;
walled compound or outside of the play area. This behavior might&lt;br /&gt;
change in future version. Consult the appropriate documentation.&lt;br /&gt;
&lt;br /&gt;
Example: A death zone outside the rim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;-25&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&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;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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A death zone partially outside the rim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;-15&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&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;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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: It is important to note that while Zones are introduced in&lt;br /&gt;
Arthemis, a more complete implementation will follow in&lt;br /&gt;
Bacchus. Curious minds consulting the documentation presenting the&lt;br /&gt;
Bacchus implementation of Zones will notice that fortress isn&#039;t an&lt;br /&gt;
effect, but rather a trigger type. The Arthemis implementation of&lt;br /&gt;
Zones falsely uses it as an effect instead of exposing a trigger&lt;br /&gt;
mechanism. Map designers are to be warned this will no longer be&lt;br /&gt;
possible in maps defined for Bacchus.&lt;br /&gt;
&lt;br /&gt;
=== Fortress Zone ===&lt;br /&gt;
The fortress Zone is particuliar because it uses a scoring system&lt;br /&gt;
to determine if and when the Zone is triggered. The score is&lt;br /&gt;
affected by the time passed in it by attackers and defenders.&lt;br /&gt;
&lt;br /&gt;
At start time, the score is set to 0.0. While the score can move&lt;br /&gt;
freely, 2 restrictions are always applied. First, the score can&lt;br /&gt;
never drop below 0.0. Second, if the score reaches or exceed 1.0,&lt;br /&gt;
the Zone is triggered.&lt;br /&gt;
&lt;br /&gt;
Each single adversary in the Zone add to the score for their time&lt;br /&gt;
passed in it. Each single defender in the Zone remove to the score&lt;br /&gt;
for their time passed in it. Also, the score always decays. Each&lt;br /&gt;
of these aspect is controlled by a different setting,&lt;br /&gt;
CONQUEST_RATE, DEFEND_RATE and CONQUEST_DECAY_RATE. They all&lt;br /&gt;
express a rate in points per seconds.&lt;br /&gt;
&lt;br /&gt;
;CONQUEST_RATE&lt;br /&gt;
: Any single attacking player in the Zone add points to the score at this rate. &lt;br /&gt;
;DEFEND_RATE&lt;br /&gt;
: Any single defending player in the Zone removes points to the score at this rate. &lt;br /&gt;
;CONQUEST_DECAY_RATE&lt;br /&gt;
: The score of a Zone decays at this rate, irrelevantly of the numbers of attackers and defenders in the Zone. &lt;br /&gt;
&lt;br /&gt;
These 3 settings are global for all the Zones on a map.&lt;br /&gt;
&lt;br /&gt;
Example: Configuring Fortress from the config file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CONQUEST_RATE 0.5&lt;br /&gt;
DEFEND_RATE 0.3&lt;br /&gt;
CONQUEST_DECAY_RATE 0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: Configuring Fortress from the settings in the map&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Settings&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;CONQUEST_RATE&amp;quot; value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;DEFEND_RATE&amp;quot; value=&amp;quot;0.3&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;CONQUEST_DECAY_RATE&amp;quot; value=&amp;quot;0.1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Map writing best practice ===&lt;br /&gt;
&lt;br /&gt;
==== Comment your work ====&lt;br /&gt;
&lt;br /&gt;
You should always comment the various parts of your work. Doing so improve maintainability. Something that is obvious during the creation of a particular map often becomes very cryptic after a few weeks. A good comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comment in xml start with &amp;quot;&amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;lt;/nowiki&amp;gt;&amp;quot; (without the quotes) and ends with &amp;quot;&amp;lt;nowiki&amp;gt;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t highlight the commented part, be careful not to exclude a part of your map by mistake.&lt;br /&gt;
&lt;br /&gt;
==== Arena size ====&lt;br /&gt;
&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;
Also, arenas with many divisions or made of many interconnecting&lt;br /&gt;
rooms might find the efficace play space shrunk. Giving them a bit&lt;br /&gt;
more surface might help balance this. &lt;br /&gt;
&lt;br /&gt;
For example, if rooms are organised in a 3 by 4 pattern, with&lt;br /&gt;
corridors connecting them, many of the space between the rooms is&lt;br /&gt;
lost. The map designer might try to have a total&lt;br /&gt;
surface of for all the rooms that is of 250 000 square game units&lt;br /&gt;
(the same surface than a 500 by 500 room). He might feel that&lt;br /&gt;
ignoring the surface of the corridors compensate for the large&lt;br /&gt;
amount of walls reducing the motion.&lt;br /&gt;
&lt;br /&gt;
On the other hand, 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;
There are no hard rules of any sort about the size of an&lt;br /&gt;
arena. Experiment and adjust to produce the effect desired, and&lt;br /&gt;
the players will most probably appreciate your efforts.&lt;br /&gt;
&lt;br /&gt;
==== Don&#039;t overload attributes ====&lt;br /&gt;
&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;
xdir and ydir attribute are never queried.&lt;br /&gt;
&lt;br /&gt;
While the engine ignore the exceeding data, this practice has the following drawbacks:&lt;br /&gt;
&lt;br /&gt;
* File size: The exceeding information is never used, but need to be transmitted as part of the file, and stored.&lt;br /&gt;
* Readability: Exceeding information complicate the reading of a map by humans. &lt;br /&gt;
* Maintenance: Maintenance of the map is not much more complex. If the author is minimalist, he/she risk updating the part of information that is ignored. Extremely good knowledge of the working of the parser is required to avoid this pitfall, and the change is only valid if the rule of precedences aren&#039;t updated. Specifying only one set of information avoid this problem. Also, if both set of information are updated, then the task for the author is double, and so are the risks for error.&lt;br /&gt;
&lt;br /&gt;
=== Resource Filename Convention ===&lt;br /&gt;
&lt;br /&gt;
Resource are external content that makes the game interesting. Textures, sounds, models and maps are all resources for Armagetron Advanced. While at the time of writing of this tutorial, only maps are supported as true resources, soon support for the other types will be added. Also, while this section incorporated in the &#039;&#039;Maps&#039;&#039; tutorial, it might be moved as an independent document, and the standard described might be updated in a near future.&lt;br /&gt;
&lt;br /&gt;
For ease of administration, and to avoid conflicting versions all resources for Armagetron Advanced should adhere to the following naming 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&lt;br /&gt;
: The name of the person who currently maintains the resource; it needs to match the author attribute of the Resource element described above and either be a forum nickname on forums.armagetronad.net, a user name registered at the central resource repository, or an email address encoded as &amp;lt;code&amp;gt;unofficial/mailto/&amp;lt;Domain&amp;gt;@&amp;lt;User&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Alternatively, the author can forgo his or her name and instead opt for a group-name. The group-name should be used when the author want to indicate that a set of resources are associate with a group. Instances of this could be when the resources are for a clan, a community, or a set of servers.&lt;br /&gt;
&lt;br /&gt;
;SubDirectory&lt;br /&gt;
: Prolific authors and those are free to set up any number of sub directories to help them organize and possibly categorize their resources. The Armagetron Advanced team recommend you to categorize resources by topics (ie: all the resources required for a particular movie-pack set in the same sub directory) over other categorization, such as categorization by type (ie: all the floor tiles set in the same sub directory). Any number of sub directory level should be supported. This is not a mandatory item.&lt;br /&gt;
&lt;br /&gt;
;ResourceName&lt;br /&gt;
: The actual name of the resource. This should be descriptive, and somewhat unique to facilitate identification of the described resource. The advantage of specifying a somewhat unique name here is that should the resource be accidentally moved out of its folder, it is still possible to quickly and easily identify it. A special note for maps: the &#039;&#039;ResourceName&#039;&#039; should be the same as the name attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;VersionNumber&lt;br /&gt;
: This part should be used by the author to identify which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new resources, Armagetron Advanced rely solely on this part to be updated. Should a resource be updated and the old name kept, it would cause problems between different clients. Client already having the old resource 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 would get the latest version. The actual format to be used for the &#039;&#039;VersionNumber&#039;&#039; is left to the choice of the author. While the Armagetron Advanced team recommend a &amp;lt;code&amp;gt;VERSION.MAJOR.MINOR&amp;lt;/code&amp;gt; dot notation similar to those used for software&#039;s versions, any other notation can be&lt;br /&gt;
used, such as a simple numeral: &amp;lt;code&amp;gt;GlowStick-1.png, GlowStick-2.png, ...&amp;lt;/code&amp;gt;. Keep in mind that it should be obvious to other as to which is the most up to date version of the resource. A special note for maps: the &#039;&#039;VersionNumber&#039;&#039; should be the same as the version attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;Extension&lt;br /&gt;
: This is the regular type of extension. While Armagetron Advanced doesn&#039;t verify that the extension describe the right type of content, it is favorable for other users that you set it to the appropriate 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;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 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;
	[[Resource repository]]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Parallelogram arena ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Parallelogram-1.0.png|right|thumbnail|Parallelogram]]&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot; category=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;World&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.2&amp;quot; ydir=&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HexaTRON ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HexaTRON-0.2.png|right|thumbnail|HexaTRON]]&lt;br /&gt;
&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 note that this is 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;&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot; category=&amp;quot;HexaTRON&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About the &amp;quot;undefined and unsupported&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Many possible combinations are marked as &#039;&#039;undefined and unsupported&#039;&#039;. While it may be possible to do them now, and even amusing to do it, they are strongly discouraged. Later version of the World format will most probably conflict with those behaviors. This will make such behaviors difficult to preserve, if possible at all. For this reasons, it has been decided that &#039;&#039;&#039;no&#039;&#039;&#039; effort would be put to maintain them. Use them if you want, but do not come complaining if and when they stop working.&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=18339</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=18339"/>
		<updated>2007-05-26T17:11:21Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Description where the settings goes in the map format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is to help map designer to get a grasp of the Map&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This version of the tutorial address the syntax defined by map-0.2.8_beta3.dtd and present the rules of interpreting the syntax as used by the parsing engine in the version 0.2.8 of Armagetron Advance.&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;
[[Image:original-1.0.1.png|right|thumbnail|Original Armagetron 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;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
	         Converted to XML by philippeqc.&lt;br /&gt;
	         License: Do with it what you want.                          --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
	&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Map format start with a XML header. The actual definition&lt;br /&gt;
of the Map is wrapped in a Resource. The Resource gives a&lt;br /&gt;
description of the content, such as the author and the version of&lt;br /&gt;
the map included. This particuliar map is the xml version of the&lt;br /&gt;
original map that supported directly in the game before version&lt;br /&gt;
0.2.8 (Arthemis). &lt;br /&gt;
&lt;br /&gt;
Skippin ahead in to the Field element, line 11 defines that &lt;br /&gt;
that 4 axes are to be&lt;br /&gt;
used. From line 13 to 26, 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;
== Header ==&lt;br /&gt;
The header of the map can nearly be considered as constant. It is&lt;br /&gt;
composed of 2 lines.&lt;br /&gt;
&lt;br /&gt;
Header for Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only element you need to consider is the name of the dtd. The&lt;br /&gt;
dtd should always be named after the version it targets. For&lt;br /&gt;
Arthemis, it should be &amp;quot;map-0.2.8.dtd&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Nota: during the beta process, version can change often and have&lt;br /&gt;
great difference between them. To limit the scope of the problem&lt;br /&gt;
during the beta phase, the name of the dtd should include the beta&lt;br /&gt;
it targets. &lt;br /&gt;
&lt;br /&gt;
Header for the beta 3 of Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resource ==&lt;br /&gt;
The Resource element describe some meta-information of the Map,&lt;br /&gt;
such as who created it, how should the resource file be named and&lt;br /&gt;
what type of information is to be expected.&lt;br /&gt;
&lt;br /&gt;
One part of the Resource details describe who made this map a&lt;br /&gt;
reality. In the Resource element, it is possible to differenciate&lt;br /&gt;
between the person or organism that comissioned the map, the&lt;br /&gt;
commisionner, and the person who executed the request and coded&lt;br /&gt;
it, the author. &lt;br /&gt;
&lt;br /&gt;
Both operations might be carried by the same and only person, in&lt;br /&gt;
this instance both entities are the same and the commissioner&lt;br /&gt;
field should be left blank. The commissioner field should be used&lt;br /&gt;
when the concept of a map and its execution are performed by two&lt;br /&gt;
different persons or entities. It could range from anything from&lt;br /&gt;
&amp;quot;could someone make a map where the feeling of &amp;lt;X&amp;gt; is emphased&amp;quot; to&lt;br /&gt;
coding from a hand-drawn sketch. The commissioner could also be&lt;br /&gt;
implied. Without him/it ever placing an open request, a&lt;br /&gt;
commisioner could be assign to a map when the author whan to&lt;br /&gt;
express an assumed sharing of the creation of the map. This can be&lt;br /&gt;
the case, for example, when the member of a Clan wrote a map that&lt;br /&gt;
falls in the ideals of the Clan.&lt;br /&gt;
&lt;br /&gt;
Maps can be implicitly grouped together. The category field is&lt;br /&gt;
there for this purpose. Prolific authors and their public will&lt;br /&gt;
appreciate a clear grouping of similar themed maps.&lt;br /&gt;
&lt;br /&gt;
As ever refining one&#039;s work is a very respected quality in the&lt;br /&gt;
Armagetron community, the latest changes need to be properly&lt;br /&gt;
propagated to everybody. The version field allow an author to&lt;br /&gt;
identify each specific instance of her work, and also insure that&lt;br /&gt;
a client will receive the exact version used by a server when&lt;br /&gt;
playing on it.&lt;br /&gt;
&lt;br /&gt;
The type specifies that the file hold an Armagetron Advance&lt;br /&gt;
map. While this is the only type available at the moment, the&lt;br /&gt;
development team is eager to expand this in the furture.&lt;br /&gt;
&lt;br /&gt;
Finally, and most importantly, the name of the &#039;&#039;ouvrage&#039;&#039; being&lt;br /&gt;
presented. &lt;br /&gt;
&lt;br /&gt;
The fields for Resource are:&lt;br /&gt;
;name&lt;br /&gt;
:The name of the map, mandatory.&lt;br /&gt;
;type&lt;br /&gt;
:The only valid type is &amp;quot;aamap&amp;quot;. This field is defaulted &amp;quot;aamap&amp;quot; when absent.&lt;br /&gt;
;version &lt;br /&gt;
:The version of the map described in this particuliar file. This value needs to be modified each time a change is applied to the map to ensure everybody have the proper copy.&lt;br /&gt;
;author&lt;br /&gt;
:The current maintainer of this map, usually the author who produced it. This either should be a user name registered with the central resource repository, or, for lone wolves who don&#039;t want to register, a valid email address encoded in the spambot safe as &amp;quot;unofficial/mailto/&amp;lt;Domain&amp;gt;/&amp;lt;User&amp;gt;&amp;quot;, where &amp;quot;&amp;lt;User&amp;gt;@&amp;lt;Domain&amp;gt;&amp;quot; would be the address.&lt;br /&gt;
:This field is defaulted to &amp;quot;Anonymous&amp;quot; when absent.&lt;br /&gt;
;commisioner&lt;br /&gt;
:The entity who dreamt, requested or even inspired in any way this map. This field is optional and has no default value. &lt;br /&gt;
;category&lt;br /&gt;
:How this map should be categorised. This field can have any number of sub categories, each separated by a &amp;quot;/&amp;quot; (a forward slash). An example could be &amp;quot;category/subcategory/subsubcategory&amp;quot;. This field is defaulted to &amp;quot;unsorted&amp;quot; when absent. &lt;br /&gt;
&lt;br /&gt;
Example: The castle map made by philippeqc&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;Castle&amp;quot; type=&amp;quot;aamap&amp;quot; version=&amp;quot;1.1&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;examples&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The StarTron (&amp;quot;5ptstar&amp;quot;) map made by Your_mom (note that while &#039;beta&#039; is more or less correct for the &#039;version&#039; attribute, it should not be in the &#039;category&#039; as it is here)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;5ptstar&amp;quot; version=&amp;quot;beta&amp;quot; author=&amp;quot;Your_mom&amp;quot; category=&amp;quot;beta&amp;quot; type=&amp;quot;aamap&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The MBC training map, made by Zorgul&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;TrainingDay&amp;quot; version=&amp;quot;1.6&amp;quot; author=&amp;quot;Zorgul&amp;quot; category=&amp;quot;MBC&amp;quot; type=&amp;quot;aamap&amp;quot; commisioner=&amp;quot;Micro Bus City&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The Reverso map, writen by Nemosultra based on a drawing by lucifer, for the Crack Pipe server&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;Reverso&amp;quot; version=&amp;quot;1.1-b&amp;quot; author=&amp;quot;Nemosultra&amp;quot; category=&amp;quot;CrackPipe&amp;quot; type=&amp;quot;aamap&amp;quot; commisioner=&amp;quot;lucifer&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To facilitate manipulation of the file over distributed systems,&lt;br /&gt;
the Resource holds explicit information about the naming and&lt;br /&gt;
storing of the file. This information can be used by tools such as&lt;br /&gt;
scripts and resource repositories to manipulate the file. &lt;br /&gt;
&lt;br /&gt;
A resource has a unique filepath determined by these attributes. The resource must be the &#039;&#039;only&#039;&#039; one to ever appear as this filepath and any changes must affect the &#039;version&#039; and the person making the change must place their name in the &#039;author&#039; attribute unless given permission by the original author.&lt;br /&gt;
&lt;br /&gt;
The filepath is formed by the attributes in the following syntax:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Author&amp;gt;/[Category/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;ResourceType&amp;gt;.xml&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
This element is the basic holder of the description of the&lt;br /&gt;
Map. From the opening element to the closing one, all the&lt;br /&gt;
information will be used to construct an in-game representation&lt;br /&gt;
for the players to explore and possibly compete in.&lt;br /&gt;
&lt;br /&gt;
The version attribute of the map indicate an specific parsing&lt;br /&gt;
engine version that should be used to express the map in the exact&lt;br /&gt;
manners that are desired by the map creator. &lt;br /&gt;
&lt;br /&gt;
Example: Map element&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sooner in the file,&lt;br /&gt;
the dtd has already specified a version. The difference between&lt;br /&gt;
both version is one specify the version of the syntax to be use,&lt;br /&gt;
and the other, the version of the rules to be used to interprete&lt;br /&gt;
the syntax.&lt;br /&gt;
&lt;br /&gt;
The dtd control the syntax, what keywords are valid and in which&lt;br /&gt;
arrangement. The parsing engine has specific rules how to read the&lt;br /&gt;
syntax and create the game elements. It is possible for different&lt;br /&gt;
parsing engine to operate from the same syntax, be it because the syntax&lt;br /&gt;
allows for many interpretation, or because a specific&lt;br /&gt;
interpretation has been found faulty in some case. Because each&lt;br /&gt;
interpretation could lead to very different instantiation, it is&lt;br /&gt;
best for the map designer to specify the one that should be&lt;br /&gt;
used. Even when no alternative interpretation exist, ie: there is&lt;br /&gt;
only one version available, it is best for the map designer to&lt;br /&gt;
specify it. Should a new one be implemented at a later time, the&lt;br /&gt;
map defined would continue to be instanciated properly.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, the only parsing engine version is&lt;br /&gt;
&amp;quot;0.2.8&amp;quot;. Maps using a version that is not understood by the&lt;br /&gt;
parsing engine of a specific client or server will be&lt;br /&gt;
automatically rejected by said application, on the ground that the&lt;br /&gt;
parsing engine doesn&#039;t know how to operate on it.&lt;br /&gt;
&lt;br /&gt;
Even if only one value exist, it is impossible to provide it as a&lt;br /&gt;
default, as there are no assurance that a new interpretation of&lt;br /&gt;
the syntax will not arrive at a future time.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It is possible for a map designer to indicate specific game&lt;br /&gt;
settings, similar to the ones available through the configuration&lt;br /&gt;
files of the application, to be used with the map. When&lt;br /&gt;
this is not desired, the Settings element can be safely removed&lt;br /&gt;
from the map definition.&lt;br /&gt;
&lt;br /&gt;
Any number of Setting can be defined inside of the Settings&lt;br /&gt;
element. Each Setting defined will overwrite the value previously&lt;br /&gt;
defined in the game. Each new Setting addressing a specific&lt;br /&gt;
configuration item will keep on overwriting previously defined&lt;br /&gt;
values. The Settings items are processed in order, from the top to&lt;br /&gt;
the bottom one.&lt;br /&gt;
&lt;br /&gt;
The Settings should be considered to be global to the World and&lt;br /&gt;
its sub-elements. This has very little relevance at the moment as&lt;br /&gt;
only one World and one Field can exist in the game. It is not&lt;br /&gt;
excluded that future version of the game could support multiple&lt;br /&gt;
elements such as World and Field. Each such elements and sub-elements would&lt;br /&gt;
receive the Settings defined in its parents, but would also be&lt;br /&gt;
able to overwrite parent received Settings for itself and its&lt;br /&gt;
sub-elements. &lt;br /&gt;
&lt;br /&gt;
One such overwriting capacity already exist, in the form of the&lt;br /&gt;
Axes element. This element can and will overwrite the value passed&lt;br /&gt;
by the Setting ARENA_AXES.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, there are no known case where the order of&lt;br /&gt;
writing Setting should matter. There are no garanties of it being&lt;br /&gt;
the case. Be carefull of the order of the Setting provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Settings element is inserted in the Map element, before the World element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Map ...&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
	&amp;lt;World&amp;gt;&lt;br /&gt;
	...&lt;br /&gt;
	&amp;lt;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting ==&lt;br /&gt;
Each individual Setting defines a specific element normally&lt;br /&gt;
configurable throught the config files of the game&lt;br /&gt;
application. For a full list and description of the setting&lt;br /&gt;
available, consult the [[Console Commands]] page. As config items&lt;br /&gt;
are the same as console commands, you will find all the&lt;br /&gt;
information there.&lt;br /&gt;
&lt;br /&gt;
The Setting has two attributes, the name and the value. The name&lt;br /&gt;
field hold the setting name as found in the various configuration&lt;br /&gt;
files. The value field will be assigned to the designated setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Setting name=&amp;quot;CYCLE_BRAKE_REFILL&amp;quot; value=&amp;quot;.1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will assing .1 to the configuration item CYCLE_BRAKE_REFILL.&lt;br /&gt;
&lt;br /&gt;
No validation are done on either fields by the parsing engine. The&lt;br /&gt;
values are passed directly to the setting engine, where the usual&lt;br /&gt;
validation is performed. Unexisting or misspelled settings names&lt;br /&gt;
will be ignored. Setting with valid names and invalid values have&lt;br /&gt;
an undetermined effect.&lt;br /&gt;
&lt;br /&gt;
The different Setting used have the potential of overwriding&lt;br /&gt;
client or server ones. While this behavior offers great capacity&lt;br /&gt;
to custom behavior for a specific map, users playing locally on&lt;br /&gt;
their machine and server administrator might find it a disruption&lt;br /&gt;
of their craftfully designed settings. Use with care and&lt;br /&gt;
moderation.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the World element is&lt;br /&gt;
the Field element. Only one Field can be defined. No parameters&lt;br /&gt;
are available at the moment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;World&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
	&amp;lt;/World&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;
The field define the zone on a 2D plane where the gaming can&lt;br /&gt;
occur. The full support of this definition will be developed under&lt;br /&gt;
Bacchus. In Arthemis, the old philosophy of &amp;quot;the play zone has to&lt;br /&gt;
be bounded by walls&amp;quot; is somewhat preserved. A secondary mechanism&lt;br /&gt;
also exist to prevent the players from escaping the rim. This is a&lt;br /&gt;
bried description of the mechanism used.&lt;br /&gt;
&lt;br /&gt;
While setting all the walls to be used during a round, the engine&lt;br /&gt;
will keep track of the minimal and maximal x&#039;s and y&#039;s values&lt;br /&gt;
encountered through wall coordinates.&lt;br /&gt;
A logical box will be formed, using the coordinate&lt;br /&gt;
(minX, minY), (maxX, minY), (maxX, maxY) and (minX, maxY) as its&lt;br /&gt;
corners.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around the classical arena.&lt;br /&gt;
The classical arena has the coordinates (0,0), (0,500), (500,500)&lt;br /&gt;
and (500, 0). This means that minX=0, minY=0, maxX=500 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around a square arena moved by 20 on the x&#039;s.&lt;br /&gt;
The classical arena has the coordinates (20,0), (20,500), (520,500)&lt;br /&gt;
and (520, 0). This means that minX=20, minY=0, maxX=520 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around a trapeze arena&lt;br /&gt;
A trapeze has a base lenght of 300, a top lenght of 200 and a&lt;br /&gt;
height of 200 with the following coordinates: (0, 0), (300, 0),&lt;br /&gt;
(250, 200), (50, 200). This means that minX=0, minY=0, maxX=300,&lt;br /&gt;
maxY=200.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around 2 walls of the classical arena&lt;br /&gt;
Should the south and west walls of the classical arena be ommited,&lt;br /&gt;
and only the north (from (0,500) to (500,500)) and east one (from&lt;br /&gt;
(500,0) to (500,500)) remain, the logical box is still the same&lt;br /&gt;
around it. This means that minX=0, minY=0, maxX=500 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: 2 walls at strange angle&lt;br /&gt;
If two walls, organised at strange angle and not even meeting,&lt;br /&gt;
compose the arena, are described as (200,200) to (600, 400) and&lt;br /&gt;
(350, 350) to (-10, 720). This means that minX=-10, minY=200,&lt;br /&gt;
maxX=600 and maxY=720.&lt;br /&gt;
&lt;br /&gt;
A no-motion logical box will be put at 10 game units outside of the&lt;br /&gt;
logical box. Should a player meet this no-motion zone, she will&lt;br /&gt;
find herself pushing agains a coussin of air. Rubber has undefined&lt;br /&gt;
effect agains this no-motion box.&lt;br /&gt;
&lt;br /&gt;
A second logical box will be put at 20 games units from the first&lt;br /&gt;
logical box. Should any players be outside of this logical box,&lt;br /&gt;
they are automatically killed.&lt;br /&gt;
&lt;br /&gt;
In game terms, should the players not be bounded by a continous&lt;br /&gt;
wall, they are free to roam around it but they will find an&lt;br /&gt;
invisible barrier keeping them from excaping into the infinite.&lt;br /&gt;
&lt;br /&gt;
Should you want to allow your players to roam without&lt;br /&gt;
restrictions, exploring the infinity of the grid, you have to&lt;br /&gt;
specify to use an infinite field.&lt;br /&gt;
&lt;br /&gt;
The Field support a single parameter, named logicalBox, which&lt;br /&gt;
control if the logical box should be used to limit roaming on the&lt;br /&gt;
Field. &lt;br /&gt;
;logicalBox&lt;br /&gt;
:When set to true, the motion will be restrained by the logical box, and when set to false, no logical box will be used. This field is optional and default to true.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box bounded Field&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
            &amp;lt;Field&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: Field with its logical box disabled&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
            &amp;lt;Field logicalBox=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following 2 paragraph are post map-0.1 and 0.2.8_beta2.&lt;br /&gt;
&lt;br /&gt;
For clarity purpose, the Axes element, if defined, need to be&lt;br /&gt;
defined first. After this, Spawn point, Walls and Zones can be&lt;br /&gt;
defined in any order.&lt;br /&gt;
&lt;br /&gt;
While a Field without any Spawn points is syntaxly valid, and&lt;br /&gt;
the parsing engine doesnt report any error, the effect is&lt;br /&gt;
undetermined. While a Field without any Wall is syntaxly valid,&lt;br /&gt;
and the parsing engine doesn&#039;t report any error, the effect is&lt;br /&gt;
undetermined.&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;
;xdir&lt;br /&gt;
: This is size of the displacement along the x&#039;s for this axis&lt;br /&gt;
;ydir&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 xdir and ydir 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 angle=&amp;quot;225&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis angle=&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 xdir and a ydir of 1. The real length of the described Axis is &lt;br /&gt;
&amp;lt;math&amp;gt;\sqrt{xdir^2+ydir^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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;2&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-2&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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 following example 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. This reduce the&lt;br /&gt;
effect of playing at very high speed while having a huge&lt;br /&gt;
difference between directions.&lt;br /&gt;
&lt;br /&gt;
Example: Factor of 6 between displacement, centered around a speed&lt;br /&gt;
of ~1.&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 xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-3&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
Example: Factor of 6 between displacement, centered around a speed&lt;br /&gt;
of ~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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-6&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;6&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;
While the ratio of speed is the same between both examples, the&lt;br /&gt;
later one has speed that might be difficult to control in one&lt;br /&gt;
direction. The first example produce the same difference, but&lt;br /&gt;
present the players with a more balanced alternative.&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;&lt;br /&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 Axis in cartesian, in the order 4, 5, 6, 1, 2, 3&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&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 Axis in degrees, in the order 4, 5, 6, 1, 2, 3&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both define 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 Axis in cartesian, in the order 4, 6, 5, 1, 3, 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&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 Axis in degrees, in the order 4, 6, 5, 1, 3, 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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: 4 Axis counter clockwise&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
== Wall ==&lt;br /&gt;
Walls 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: A square Wall of size 200&lt;br /&gt;
&amp;lt;pre&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;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;
&amp;lt;/pre&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;
&lt;br /&gt;
Example: A 2 points wall, possibly as an obstacle&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;
The Wall element has one attribute, the height. Controlling the&lt;br /&gt;
height affect the rendering height of a wall. A height of 1.0 is&lt;br /&gt;
about the same as the height of the original cycle model. A height&lt;br /&gt;
of 4.0 correspond to the Walls rendered with the lowRim setting on&lt;br /&gt;
the client. When no height is defined, the client defined setting&lt;br /&gt;
of either lowRim or highRim is used. This has the advantage of&lt;br /&gt;
respecting the players choice and often, capacity to render high&lt;br /&gt;
walls. When a height of 0 or less (ie: negative value) is given, an unresonably large value is substitued.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;height&#039;&#039;&lt;br /&gt;
: The height used for the rendering of the Wall. Positive value only.&lt;br /&gt;
&lt;br /&gt;
Example : Using the client default height&lt;br /&gt;
&amp;lt;pre&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;10&amp;quot; y=&amp;quot;10&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 : Controling the height&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Wall height=&amp;quot;2.13&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;Point x=&amp;quot;10&amp;quot; y=&amp;quot;10&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;
== 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: Basic Spawn presentation&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;
== Zones ==&lt;br /&gt;
Zone are interactive areas on the Field. They manifest themself as&lt;br /&gt;
huge circles slowly rotating. The players can interact with the&lt;br /&gt;
Zones by entering or being inside them.&lt;br /&gt;
&lt;br /&gt;
The Zone has an attribute effect which allows 3 values: win, death and&lt;br /&gt;
fortress. Entering a Zone of effect win makes the player the round&lt;br /&gt;
winner. Entering a Zone of effect death automatically kills the&lt;br /&gt;
player. Zones of effect fortress need to be occupied to be&lt;br /&gt;
triggered, and once triggered, they make the team the round winner.&lt;br /&gt;
&lt;br /&gt;
;effect&lt;br /&gt;
:Any of win, death or fortress. When ommited, the value is defaulted to death&lt;br /&gt;
&lt;br /&gt;
Example: Zone syntax&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Zone requires a sub element named ShapeCircle. &lt;br /&gt;
&lt;br /&gt;
The ShapeCircle has 2 attributes, the radius and the growth. The&lt;br /&gt;
radius attribute describe the size of the CircleShape and is&lt;br /&gt;
required. The unit used is the same game unit that are used as map&lt;br /&gt;
coordinates. A ShapeCircle with a radius of 10 will extend of 10&lt;br /&gt;
game units in every direction from its center.&lt;br /&gt;
&lt;br /&gt;
The growth describe how the radius of the ShapeCircle changes over&lt;br /&gt;
time. This unit is game units per second from the moment the Zone&lt;br /&gt;
is create, which is the round start.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify a negative growth, in which case the ShapeCircle will&lt;br /&gt;
slowly shrink. Should at any time the radius be of 0 or less, the&lt;br /&gt;
Zone is removed without effect.&lt;br /&gt;
The growth is optional and defaults to 0, which hold the&lt;br /&gt;
ShapeCircle at a constant size during the round.&lt;br /&gt;
&lt;br /&gt;
;radius&lt;br /&gt;
:The initial radius of the circle defining the Zone. This field is mandatory.&lt;br /&gt;
;growth&lt;br /&gt;
:The growth of the circle. The values can be positive, negative or 0. This field is optional and is defaulted to 0.&lt;br /&gt;
&lt;br /&gt;
Example: Zone with CircleShape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot; growth=&amp;quot;0.17&amp;quot;&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ShapeCircle requires a Point sub-element which describe the&lt;br /&gt;
center of the ShapeCircle. The syntax of the Point is the same as&lt;br /&gt;
the one used for the Wall.&lt;br /&gt;
&lt;br /&gt;
Example: A non-growing death zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;120&amp;quot; y=&amp;quot;86&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A growing fortress zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;fortress&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot; growth=&amp;quot;1.09&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;250&amp;quot; y=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A shrinking win zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;200&amp;quot; growth=&amp;quot;-0.2&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;440&amp;quot; y=&amp;quot;325&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible and valid to place the center of the Zone in a&lt;br /&gt;
location that is not accessible to the players, such as in a&lt;br /&gt;
walled compound or outside of the play area. This behavior might&lt;br /&gt;
change in future version. Consult the appropriate documentation.&lt;br /&gt;
&lt;br /&gt;
Example: A death zone outside the rim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;-25&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&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;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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A death zone partially outside the rim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;-15&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&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;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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: It is important to note that while Zones are introduced in&lt;br /&gt;
Arthemis, a more complete implementation will follow in&lt;br /&gt;
Bacchus. Curious minds consulting the documentation presenting the&lt;br /&gt;
Bacchus implementation of Zones will notice that fortress isn&#039;t an&lt;br /&gt;
effect, but rather a trigger type. The Arthemis implementation of&lt;br /&gt;
Zones falsely uses it as an effect instead of exposing a trigger&lt;br /&gt;
mechanism. Map designers are to be warned this will no longer be&lt;br /&gt;
possible in maps defined for Bacchus.&lt;br /&gt;
&lt;br /&gt;
=== Fortress Zone ===&lt;br /&gt;
The fortress Zone is particuliar because it uses a scoring system&lt;br /&gt;
to determine if and when the Zone is triggered. The score is&lt;br /&gt;
affected by the time passed in it by attackers and defenders.&lt;br /&gt;
&lt;br /&gt;
At start time, the score is set to 0.0. While the score can move&lt;br /&gt;
freely, 2 restrictions are always applied. First, the score can&lt;br /&gt;
never drop below 0.0. Second, if the score reaches or exceed 1.0,&lt;br /&gt;
the Zone is triggered.&lt;br /&gt;
&lt;br /&gt;
Each single adversary in the Zone add to the score for their time&lt;br /&gt;
passed in it. Each single defender in the Zone remove to the score&lt;br /&gt;
for their time passed in it. Also, the score always decays. Each&lt;br /&gt;
of these aspect is controlled by a different setting,&lt;br /&gt;
CONQUEST_RATE, DEFEND_RATE and CONQUEST_DECAY_RATE. They all&lt;br /&gt;
express a rate in points per seconds.&lt;br /&gt;
&lt;br /&gt;
;CONQUEST_RATE&lt;br /&gt;
: Any single attacking player in the Zone add points to the score at this rate. &lt;br /&gt;
;DEFEND_RATE&lt;br /&gt;
: Any single defending player in the Zone removes points to the score at this rate. &lt;br /&gt;
;CONQUEST_DECAY_RATE&lt;br /&gt;
: The score of a Zone decays at this rate, irrelevantly of the numbers of attackers and defenders in the Zone. &lt;br /&gt;
&lt;br /&gt;
These 3 settings are global for all the Zones on a map.&lt;br /&gt;
&lt;br /&gt;
Example: Configuring Fortress from the config file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CONQUEST_RATE 0.5&lt;br /&gt;
DEFEND_RATE 0.3&lt;br /&gt;
CONQUEST_DECAY_RATE 0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: Configuring Fortress from the settings in the map&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Settings&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;CONQUEST_RATE&amp;quot; value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;DEFEND_RATE&amp;quot; value=&amp;quot;0.3&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;CONQUEST_DECAY_RATE&amp;quot; value=&amp;quot;0.1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Map writing best practice ===&lt;br /&gt;
&lt;br /&gt;
==== Comment your work ====&lt;br /&gt;
&lt;br /&gt;
You should always comment the various parts of your work. Doing so improve maintainability. Something that is obvious during the creation of a particular map often becomes very cryptic after a few weeks. A good comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comment in xml start with &amp;quot;&amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;lt;/nowiki&amp;gt;&amp;quot; (without the quotes) and ends with &amp;quot;&amp;lt;nowiki&amp;gt;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t highlight the commented part, be careful not to exclude a part of your map by mistake.&lt;br /&gt;
&lt;br /&gt;
==== Arena size ====&lt;br /&gt;
&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;
Also, arenas with many divisions or made of many interconnecting&lt;br /&gt;
rooms might find the efficace play space shrunk. Giving them a bit&lt;br /&gt;
more surface might help balance this. &lt;br /&gt;
&lt;br /&gt;
For example, if rooms are organised in a 3 by 4 pattern, with&lt;br /&gt;
corridors connecting them, many of the space between the rooms is&lt;br /&gt;
lost. The map designer might try to have a total&lt;br /&gt;
surface of for all the rooms that is of 250 000 square game units&lt;br /&gt;
(the same surface than a 500 by 500 room). He might feel that&lt;br /&gt;
ignoring the surface of the corridors compensate for the large&lt;br /&gt;
amount of walls reducing the motion.&lt;br /&gt;
&lt;br /&gt;
On the other hand, 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;
There are no hard rules of any sort about the size of an&lt;br /&gt;
arena. Experiment and adjust to produce the effect desired, and&lt;br /&gt;
the players will most probably appreciate your efforts.&lt;br /&gt;
&lt;br /&gt;
==== Don&#039;t overload attributes ====&lt;br /&gt;
&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;
xdir and ydir attribute are never queried.&lt;br /&gt;
&lt;br /&gt;
While the engine ignore the exceeding data, this practice has the following drawbacks:&lt;br /&gt;
&lt;br /&gt;
* File size: The exceeding information is never used, but need to be transmitted as part of the file, and stored.&lt;br /&gt;
* Readability: Exceeding information complicate the reading of a map by humans. &lt;br /&gt;
* Maintenance: Maintenance of the map is not much more complex. If the author is minimalist, he/she risk updating the part of information that is ignored. Extremely good knowledge of the working of the parser is required to avoid this pitfall, and the change is only valid if the rule of precedences aren&#039;t updated. Specifying only one set of information avoid this problem. Also, if both set of information are updated, then the task for the author is double, and so are the risks for error.&lt;br /&gt;
&lt;br /&gt;
=== Resource Filename Convention ===&lt;br /&gt;
&lt;br /&gt;
Resource are external content that makes the game interesting. Textures, sounds, models and maps are all resources for Armagetron Advanced. While at the time of writing of this tutorial, only maps are supported as true resources, soon support for the other types will be added. Also, while this section incorporated in the &#039;&#039;Maps&#039;&#039; tutorial, it might be moved as an independent document, and the standard described might be updated in a near future.&lt;br /&gt;
&lt;br /&gt;
For ease of administration, and to avoid conflicting versions all resources for Armagetron Advanced should adhere to the following naming 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&lt;br /&gt;
: The name of the person who currently maintains the resource; it needs to match the author attribute of the Resource element described above and either be a forum nickname on forums.armagetronad.net, a user name registered at the central resource repository, or an email address encoded as &amp;lt;code&amp;gt;unofficial/mailto/&amp;lt;Domain&amp;gt;@&amp;lt;User&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Alternatively, the author can forgo his or her name and instead opt for a group-name. The group-name should be used when the author want to indicate that a set of resources are associate with a group. Instances of this could be when the resources are for a clan, a community, or a set of servers.&lt;br /&gt;
&lt;br /&gt;
;SubDirectory&lt;br /&gt;
: Prolific authors and those are free to set up any number of sub directories to help them organize and possibly categorize their resources. The Armagetron Advanced team recommend you to categorize resources by topics (ie: all the resources required for a particular movie-pack set in the same sub directory) over other categorization, such as categorization by type (ie: all the floor tiles set in the same sub directory). Any number of sub directory level should be supported. This is not a mandatory item.&lt;br /&gt;
&lt;br /&gt;
;ResourceName&lt;br /&gt;
: The actual name of the resource. This should be descriptive, and somewhat unique to facilitate identification of the described resource. The advantage of specifying a somewhat unique name here is that should the resource be accidentally moved out of its folder, it is still possible to quickly and easily identify it. A special note for maps: the &#039;&#039;ResourceName&#039;&#039; should be the same as the name attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;VersionNumber&lt;br /&gt;
: This part should be used by the author to identify which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new resources, Armagetron Advanced rely solely on this part to be updated. Should a resource be updated and the old name kept, it would cause problems between different clients. Client already having the old resource 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 would get the latest version. The actual format to be used for the &#039;&#039;VersionNumber&#039;&#039; is left to the choice of the author. While the Armagetron Advanced team recommend a &amp;lt;code&amp;gt;VERSION.MAJOR.MINOR&amp;lt;/code&amp;gt; dot notation similar to those used for software&#039;s versions, any other notation can be&lt;br /&gt;
used, such as a simple numeral: &amp;lt;code&amp;gt;GlowStick-1.png, GlowStick-2.png, ...&amp;lt;/code&amp;gt;. Keep in mind that it should be obvious to other as to which is the most up to date version of the resource. A special note for maps: the &#039;&#039;VersionNumber&#039;&#039; should be the same as the version attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;Extension&lt;br /&gt;
: This is the regular type of extension. While Armagetron Advanced doesn&#039;t verify that the extension describe the right type of content, it is favorable for other users that you set it to the appropriate 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;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 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;
	[[Resource repository]]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Parallelogram arena ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Parallelogram-1.0.png|right|thumbnail|Parallelogram]]&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot; category=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;World&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.2&amp;quot; ydir=&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HexaTRON ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HexaTRON-0.2.png|right|thumbnail|HexaTRON]]&lt;br /&gt;
&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 note that this is 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;&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot; category=&amp;quot;HexaTRON&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About the &amp;quot;undefined and unsupported&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Many possible combinations are marked as &#039;&#039;undefined and unsupported&#039;&#039;. While it may be possible to do them now, and even amusing to do it, they are strongly discouraged. Later version of the World format will most probably conflict with those behaviors. This will make such behaviors difficult to preserve, if possible at all. For this reasons, it has been decided that &#039;&#039;&#039;no&#039;&#039;&#039; effort would be put to maintain them. Use them if you want, but do not come complaining if and when they stop working.&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=PlayingFAQ&amp;diff=18012</id>
		<title>PlayingFAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=PlayingFAQ&amp;diff=18012"/>
		<updated>2007-05-01T12:55:40Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: /* General terminology */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This FAQ relates to issues about installing, configuring and mostly playing the game.  For issues specific about hosting, consult the [[HostingFAQ|Hosting server FAQ]]&lt;br /&gt;
&lt;br /&gt;
= Installing the Game =&lt;br /&gt;
&lt;br /&gt;
== Where can I download Armagetron Advanced? ==&lt;br /&gt;
&lt;br /&gt;
That depends on what version you want to get. The current stable version is always available [http://www.armagetronad.net/downloads.php on the main web page] or [http://sourceforge.net/project/showfiles.php?group_id=110997 sourceforge]. The latest testing version on [http://beta.armagetronad.net AABeta].&lt;br /&gt;
&lt;br /&gt;
== How do I install... ==&lt;br /&gt;
=== on Windows? ===&lt;br /&gt;
&lt;br /&gt;
Find the exe file you downloaded from the question and answer above this one and double click on it. Answer all dialog boxes with Yes/Next/Finish, whatever applies. On Windows XP, when you first run the game and try to connect to the Internet, a firewall warning will pop up; set it to allow access.&lt;br /&gt;
&lt;br /&gt;
=== on Mac OS? ===&lt;br /&gt;
&lt;br /&gt;
Mount the dmg file, and drag the Armagetron Advanced application to your hard-drive.&lt;br /&gt;
&lt;br /&gt;
=== on Linux? ===&lt;br /&gt;
&lt;br /&gt;
That depends on the distribution you are running. Check out the [[Linux Distribution Field Report]] for details.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m running Linux, but don&#039;t know whether it is 32 or 64 bit. How can I find out? ==&lt;br /&gt;
&lt;br /&gt;
On a console/terminal, type &amp;lt;pre&amp;gt;echo $MACHTYPE&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the output starts with x86_64, you have a 64 bit system. If it starts with i386, i486, i586 or i686 or possibly just x86 or x86_32, you have a 32 bit system. For anything else, we don&#039;t provide binary packages, you have to build from source. If the output is blank, the method failed. Then, see whether you have got the directory /usr/lib64 on your system. If yes, you have a 64 bit system, if no, it&#039;s 32 bit.&lt;br /&gt;
&lt;br /&gt;
== I run a non-Linux UNIX or Linux on hardware not supported by your binary packages or the binaries don&#039;t work, how do I install from source? ==&lt;br /&gt;
&lt;br /&gt;
Basically, you fetch the .tbz2 source archive and do as the superuser root&lt;br /&gt;
&amp;lt;pre&amp;gt;tar -xjf &amp;lt;path to the tbz2 source archive you just fetched&amp;gt;&lt;br /&gt;
cd armagetronad-&amp;lt;VERSION&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
The configure script will tell you what you are missing. In this mode, you always need the &#039;development&#039; packages of our dependencies on most distributions.&lt;br /&gt;
The [[Linux Distribution Field Report]] may have some hints. Ask us if you get stuck.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m working on a Linux PC administered by someone else and don&#039;t have the root password, can I still install the game? ==&lt;br /&gt;
&lt;br /&gt;
Yes. The &amp;quot;package&amp;quot; binary files can install everything in your home directory. If you have to build from source, proceed as in the last FAQ,&lt;br /&gt;
but pass &#039;--prefix=$HOME/usr&#039; to ./configure and run the game later with&lt;br /&gt;
&#039;~/usr/bin/armagetronad&#039;, or run the game from the build directory with &#039;make run&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== So, should I get the latest stable or latest development version? ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;re really asking this question and are not just browsing the FAQ, get the latest stable version.&lt;br /&gt;
&lt;br /&gt;
== Ok, but there are still so many different files to get, which one is right for me? ==&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#Terminology]] for choosing between Client and Server download. If in doubt, choose the Client. If you&#039;re running a PC with Windows, get the exe format, GCC or VC6 should not matter (please report it if only one of them works for you). If you&#039;ve got a Mac, get the dmg; there is a special build available for versions 10.2.8 of OS X. If you&#039;re running 32 bit Intel Linux, get the x86(_32) &amp;quot;package&amp;quot;. If you&#039;re running 64 bit AMD Linux, get the x86_64 &amp;quot;package&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Where are the server sources? ==&lt;br /&gt;
&lt;br /&gt;
The server sources are the same as the client sources. You compile a server from them by giving the additional command line option &#039;--disable-glout&#039; to ./configure.&lt;br /&gt;
&lt;br /&gt;
= Configuring =&lt;br /&gt;
== I heard about moviepacks (graphical modifications), how do I install them? ==&lt;br /&gt;
&lt;br /&gt;
See [[Customizing the game]].&lt;br /&gt;
&lt;br /&gt;
== How do I use a map? ==&lt;br /&gt;
&lt;br /&gt;
Read [[Playing Maps]], and please try to tell us why this question is asked so often and followed by &amp;quot;I read the whole wiki!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Terminology = &lt;br /&gt;
== General terminology ==&lt;br /&gt;
=== What is rubber? ===&lt;br /&gt;
Rubber is a mecanism not unlike a cushion in front of your cycle that allows you to come closer to wall. The closer you move to a wall, the more rubber you consume. The faster you move when approching a wall, the more rubber you consume. If a cycle exceed its rubber limit at any time, it is considered to have crashed in the wall. Rubber normally is regained at a steady pace.&lt;br /&gt;
&lt;br /&gt;
=== What is grinding? ===&lt;br /&gt;
The act of running very close to a cycle trace or sometime an arena wall to benefit from the wall acceleration effect.&lt;br /&gt;
&lt;br /&gt;
=== What is double/tripple binding? ===&lt;br /&gt;
The act of associating multiple keys to the same action, such as turning. By pressing successively multiple keys it is possible to execute tight turns.&lt;br /&gt;
&lt;br /&gt;
==== Is double/tripple binding a sin? ====&lt;br /&gt;
Though it is a side effect of the game support for different keyboard layout, some beleive that as it is supported by the game, it is a valid strategy. Others consider that is of bad taste and encourage players to learn to rapidly tap the same key instead.&lt;br /&gt;
&lt;br /&gt;
=== What is camping? ===&lt;br /&gt;
&lt;br /&gt;
==== Is camping a sin? ====&lt;br /&gt;
&lt;br /&gt;
=== What is waiting for rubber? ===&lt;br /&gt;
&lt;br /&gt;
== Game types terminology ==&lt;br /&gt;
=== What is Fortress? ===&lt;br /&gt;
Fortress is often seen in online playing. Each team has a zone assigned. The object is to capture the enemy zone while defending your own. It has been often observed that mildly skilled but effective team work outclass highly skilled but mildly organized team work on Fortress games. &lt;br /&gt;
&lt;br /&gt;
=== What is CTF/Capture The Flag? ===&lt;br /&gt;
A game configuration where the objective it to capture and carry back to your base (often represented as a wide zone) the enemy flag while your own team flag is still at its starting position.&lt;br /&gt;
&lt;br /&gt;
=== What is Sumo? ===&lt;br /&gt;
Stacked zone, often sharing the exact same location, and configured in a way that the zone decay conquers it. As all the players have to fight each other to get access to a place under the zones, the act often push out some players, which quickly die, in a manner that reminds sumo fighting.&lt;br /&gt;
&lt;br /&gt;
== Network terminology ==&lt;br /&gt;
=== What is ping? ===&lt;br /&gt;
Ping is how long it takes for data to be sent from your computer to the server and back. Higher the ping, more lag.&lt;br /&gt;
==== How do I find my ping? ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== What is lag? ===&lt;br /&gt;
== Multi-player related terminlogy ==&lt;br /&gt;
=== What is the ladder? ===&lt;br /&gt;
TODO&lt;br /&gt;
=== What is tk/team kill? ===&lt;br /&gt;
Often seen at the start of round with many players on a team, a team kill is when a player, by its action or lack of, cause the death of a teammate. Considered a serious lack of respect.&lt;br /&gt;
&lt;br /&gt;
=== What is gank? ===&lt;br /&gt;
The act of overtaking a zone, for example 2 vs 1, without fighting.&lt;br /&gt;
&lt;br /&gt;
= Hosting from the client =&lt;br /&gt;
&lt;br /&gt;
== What is a client?  What is a server?  What&#039;s the difference? ==&lt;br /&gt;
&lt;br /&gt;
Simply put, the game client is the program you run on your computer.  The game server runs on somebody else&#039;s computer.  The difference between the two is like the difference between, say, a lawyer and his client.  The lawyer would be the server, the one who knows all about law and stuff.  So the difference is just like in real life where the terms come from.  The client requests a service from someone who serves.  In our case, that service is a game that is served from a machine running a program called a &amp;quot;server&amp;quot;, but if you requested the same service from a person in a casino, you&#039;d still be running a game client.&lt;br /&gt;
&lt;br /&gt;
== My client can be a server, though, it says so right here. ==&lt;br /&gt;
&lt;br /&gt;
That&#039;s not a question.  In any case, the game client can act as a server if you press &amp;quot;Host Game&amp;quot; from the Internet Game menu.  So technically the client is a client/server hybrid, but let&#039;s not get too technical.&lt;br /&gt;
&lt;br /&gt;
== So are all game servers just clients where people pressed &amp;quot;Host Game&amp;quot;? ==&lt;br /&gt;
&lt;br /&gt;
No.  This is where people get really confused, even to the point where they complain to server operators for doing exactly this thing.  No, most, if not all, game servers available through the master server run a special version of the program that has no graphical display, and no player can play on directly.  That is the server, commonly called the &amp;quot;dedicated server&amp;quot;.  You can run it too, if you&#039;d like.  Server operators chose to run this instead of the regular game client because it has a number of modifications that make it work better as a regular server, just like a mail server or a web server.  It is more convenient and makes for a more reliable game server to do so.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd takes most or all the CPU time, how come? ==&lt;br /&gt;
&lt;br /&gt;
AA takes all the CPU time it needs to simulate and render the scene as fast as you&#039;ll allow it to. There are two conditions under which that makes it take almost everything that is available:&lt;br /&gt;
* You set your graphics card driver not to wait for VSync. AA will then run at the highest possible framerate and therefore also use all the CPU time available. If you enable the FPS display in the HUD options and it shows more than 100 FPS, then that&#039;s your problem.&lt;br /&gt;
* When it tells your video card driver to update the screen now, the driver goes into a special CPU-hogging mode until the command is completed, even though all it does is sit around and wait. Both NVidia and ATI drivers are guilty of this. In the &amp;quot;Performance Tweaks&amp;quot; submenu of the graphics settings, there is the &amp;quot;Flush&amp;quot; menu item where you can tweak AA to not issue the problematic command (with possible side effects).&lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd is unplayable on my AMD Dual Core X2 System (might affect other Dual Cores) ==&lt;br /&gt;
&lt;br /&gt;
Symptoms:&lt;br /&gt;
*The console displays &amp;quot;Timer hick up&amp;quot;&lt;br /&gt;
*FPS are usually ok (above 30).&lt;br /&gt;
*might only occur in network games&lt;br /&gt;
*Game performance is very bad&lt;br /&gt;
&lt;br /&gt;
At least three solutions for this problem are available:&lt;br /&gt;
* To fix this problem use your TaskManager to set ArmagetronAd.exe&#039;s cpu affinity to a single CPU. &lt;br /&gt;
* Disable Cool &amp;amp; Quite in BIOS&lt;br /&gt;
* Install the necessary Microsoft Hotfixes and depending on your System you might have to update your bios and drivers too.&lt;br /&gt;
&lt;br /&gt;
Links (TODO replace links with links to better instructions!):&lt;br /&gt;
* [http://support.microsoft.com/default.aspx?scid=KB;en-us;896256 Microsoft Knowledge base Article about Q896256]&lt;br /&gt;
* [http://www.amd.com/en-us/Processors/TechnicalResources/0,,30_182_871_13118,00.html AMD Dual Core Optimizer] The fix is similiar to Microsofts, but only fixes a small part of it. The Microsoft patch also addresses power saving bugs (of Windows XP).&lt;br /&gt;
&lt;br /&gt;
*Details: Armagetron Advanced 0.2.8.x(?) or later uses the high precision timer on Windows if available. (TODO confirm) This can be a  problem on the new Dual Core Systems or malfunctioning Multiprocessor System. The Timer of each core runs at different speeds which results in a jumping timer! The AMD X2 Systems are affected because they have two separate timers for each CPU (Intels Core Duo CPUs share a single timer). The AMD X2 Systems are only affected with Cool &amp;amp; Quite power saving enabled otherwise both cores have the same timer speed. The Windows kernel schedules Armagetron Advanced between both cores which results in a jumping timer form Armagetron perspective.&lt;br /&gt;
&lt;br /&gt;
= When all else fail =&lt;br /&gt;
What to do when consulting the documents provided on this wiki and consulting this FAQ still doesnt provide an answer.&lt;br /&gt;
&lt;br /&gt;
== The Forums ==&lt;br /&gt;
The [[forums.armagetronad.net|forum]] is a message board where discussion about ArmagetronAd often take part. A great many problems have been discussed and solved there. &lt;br /&gt;
&lt;br /&gt;
The forums is usefull for discussion that spawns under days and weeks. Should you require more immediate assistance, try contacting us on IRC.&lt;br /&gt;
&lt;br /&gt;
=== What should I do to increase my chance of getting help? ===&lt;br /&gt;
First of all, use the search capacities of the forum. It is easy and powerfull, and often will turn your answer without delays.&lt;br /&gt;
&lt;br /&gt;
Second, get your information right. A simple task from you will save many troubles to anyone trying to help you. Be detailed! Nobodyknows your specific setup, nor can guess it. &lt;br /&gt;
&lt;br /&gt;
== IRC channel ==&lt;br /&gt;
TODO&lt;br /&gt;
[[IRC_Channel]]&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=MediaWiki:Sidebar&amp;diff=17988</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=MediaWiki:Sidebar&amp;diff=17988"/>
		<updated>2007-04-29T07:01:24Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
* Playing&lt;br /&gt;
** PlayingGettingStarted|Getting Started&lt;br /&gt;
** Playing the Game|Documentation&lt;br /&gt;
** PlayingFAQ|FAQ&lt;br /&gt;
* Hosting&lt;br /&gt;
** Server_Administration_Guide|Getting Started&lt;br /&gt;
** Server Administration|Documentation&lt;br /&gt;
** Servers|Know Servers&lt;br /&gt;
** HostingFAQ|FAQ&lt;br /&gt;
* Miscellaneous&lt;br /&gt;
** Extending|Extending&lt;br /&gt;
** Development Docs|Development Docs&lt;br /&gt;
** Project Documentation|Project Docs&lt;br /&gt;
* sitehelp&lt;br /&gt;
** helppage|help&lt;br /&gt;
** Armagetron_Advanced_Wiki:Policy|wikipolicy&lt;br /&gt;
* community&lt;br /&gt;
** portal-url|portal&lt;br /&gt;
** Competition Hub|Competitions&lt;br /&gt;
** website-url|website&lt;br /&gt;
** forums-url|forums&lt;br /&gt;
** Armagetron_Advanced_Wiki:Contacts|Network_Information&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=PlayingFAQ&amp;diff=17955</id>
		<title>PlayingFAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=PlayingFAQ&amp;diff=17955"/>
		<updated>2007-04-28T15:30:44Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: /* = How do I find my ping? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This FAQ relates to issues about installing, configuring and mostly playing the game.  For issues specific about hosting, consult the [[HostingFAQ|Hosting server FAQ]]&lt;br /&gt;
&lt;br /&gt;
= Installing the Game =&lt;br /&gt;
&lt;br /&gt;
== Where can I download Armagetron Advanced? ==&lt;br /&gt;
&lt;br /&gt;
That depends on what version you want to get. The current stable version is always available [http://www.armagetronad.net/downloads.php on the main web page] or [http://sourceforge.net/project/showfiles.php?group_id=110997 sourceforge]. The latest testing version on [http://beta.armagetronad.net AABeta].&lt;br /&gt;
&lt;br /&gt;
== How do I install... ==&lt;br /&gt;
=== on Windows? ===&lt;br /&gt;
&lt;br /&gt;
Find the exe file you downloaded from the question and answer above this one and double click on it. Answer all dialog boxes with Yes/Next/Finish, whatever applies. On Windows XP, when you first run the game and try to connect to the Internet, a firewall warning will pop up; set it to allow access.&lt;br /&gt;
&lt;br /&gt;
=== on Mac OS? ===&lt;br /&gt;
&lt;br /&gt;
Mount the dmg file, and drag the Armagetron Advanced application to your hard-drive.&lt;br /&gt;
&lt;br /&gt;
=== on Linux? ===&lt;br /&gt;
&lt;br /&gt;
That depends on the distribution you are running. Check out the [[Linux Distribution Field Report]] for details.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m running Linux, but don&#039;t know whether it is 32 or 64 bit. How can I find out? ==&lt;br /&gt;
&lt;br /&gt;
On a console/terminal, type &amp;lt;pre&amp;gt;echo $MACHTYPE&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the output starts with x86_64, you have a 64 bit system. If it starts with i386, i486, i586 or i686 or possibly just x86 or x86_32, you have a 32 bit system. For anything else, we don&#039;t provide binary packages, you have to build from source. If the output is blank, the method failed. Then, see whether you have got the directory /usr/lib64 on your system. If yes, you have a 64 bit system, if no, it&#039;s 32 bit.&lt;br /&gt;
&lt;br /&gt;
== I run a non-Linux UNIX or Linux on hardware not supported by your binary packages or the binaries don&#039;t work, how do I install from source? ==&lt;br /&gt;
&lt;br /&gt;
Basically, you fetch the .tbz2 source archive and do as the superuser root&lt;br /&gt;
&amp;lt;pre&amp;gt;tar -xjf &amp;lt;path to the tbz2 source archive you just fetched&amp;gt;&lt;br /&gt;
cd armagetronad-&amp;lt;VERSION&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
The configure script will tell you what you are missing. In this mode, you always need the &#039;development&#039; packages of our dependencies on most distributions.&lt;br /&gt;
The [[Linux Distribution Field Report]] may have some hints. Ask us if you get stuck.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m working on a Linux PC administered by someone else and don&#039;t have the root password, can I still install the game? ==&lt;br /&gt;
&lt;br /&gt;
Yes. The &amp;quot;package&amp;quot; binary files can install everything in your home directory. If you have to build from source, proceed as in the last FAQ,&lt;br /&gt;
but pass &#039;--prefix=$HOME/usr&#039; to ./configure and run the game later with&lt;br /&gt;
&#039;~/usr/bin/armagetronad&#039;, or run the game from the build directory with &#039;make run&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== So, should I get the latest stable or latest development version? ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;re really asking this question and are not just browsing the FAQ, get the latest stable version.&lt;br /&gt;
&lt;br /&gt;
== Ok, but there are still so many different files to get, which one is right for me? ==&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#Terminology]] for choosing between Client and Server download. If in doubt, choose the Client. If you&#039;re running a PC with Windows, get the exe format, GCC or VC6 should not matter (please report it if only one of them works for you). If you&#039;ve got a Mac, get the dmg; there is a special build available for versions 10.2.8 of OS X. If you&#039;re running 32 bit Intel Linux, get the x86(_32) &amp;quot;package&amp;quot;. If you&#039;re running 64 bit AMD Linux, get the x86_64 &amp;quot;package&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Where are the server sources? ==&lt;br /&gt;
&lt;br /&gt;
The server sources are the same as the client sources. You compile a server from them by giving the additional command line option &#039;--disable-glout&#039; to ./configure.&lt;br /&gt;
&lt;br /&gt;
= Configuring =&lt;br /&gt;
== I heard about moviepacks (graphical modifications), how do I install them? ==&lt;br /&gt;
&lt;br /&gt;
See [[Customizing the game]].&lt;br /&gt;
&lt;br /&gt;
== How do I use a map? ==&lt;br /&gt;
&lt;br /&gt;
Read [[Playing Maps]], and please try to tell us why this question is asked so often and followed by &amp;quot;I read the whole wiki!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Terminology = &lt;br /&gt;
== General terminology ==&lt;br /&gt;
=== What is rubber? ===&lt;br /&gt;
Rubber is a mecanism not unlike a cushion in front of your cycle that allows you to come closer to wall. The closer you move to a wall, the more rubber you consume. The faster you move when approching a wall, the more rubber you consume. If a cycle exceed its rubber limit at any time, it is considered to have crashed in the wall. Rubber normally is regained at a steady pace.&lt;br /&gt;
&lt;br /&gt;
=== What is grinding? ===&lt;br /&gt;
The act of running very close to a cycle trace or sometime an arena wall to benefit from the wall acceleration effect.&lt;br /&gt;
&lt;br /&gt;
=== What is double/tripple binding? ===&lt;br /&gt;
The act of associating multiple keys to the same action, such as turning. By pressing successively multiple keys it is possible to execute tight turns.&lt;br /&gt;
&lt;br /&gt;
==== Is double/tripple binding a sin? ====&lt;br /&gt;
Though it is a side effect of the game support for different keyboard layout, some beleive that as it is supported by the game, it is a valid strategy. Others consider that is of bad taste and encourage players to learn to rapidly tap the same key instead.&lt;br /&gt;
&lt;br /&gt;
== Game types terminology ==&lt;br /&gt;
=== What is Fortress? ===&lt;br /&gt;
Fortress is often seen in online playing. Each team has a zone assigned. The object is to capture the enemy zone while defending your own. It has been often observed that mildly skilled but effective team work outclass highly skilled but mildly organized team work on Fortress games. &lt;br /&gt;
&lt;br /&gt;
=== What is CTF/Capture The Flag? ===&lt;br /&gt;
A game configuration where the objective it to capture and carry back to your base (often represented as a wide zone) the enemy flag while your own team flag is still at its starting position.&lt;br /&gt;
&lt;br /&gt;
=== What is Sumo? ===&lt;br /&gt;
Stacked zone, often sharing the exact same location, and configured in a way that the zone decay conquers it. As all the players have to fight each other to get access to a place under the zones, the act often push out some players, which quickly die, in a manner that reminds sumo fighting.&lt;br /&gt;
&lt;br /&gt;
== Network terminology ==&lt;br /&gt;
=== What is ping? ===&lt;br /&gt;
==== How do I find my ping? ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== What is lag? ===&lt;br /&gt;
== Multi-player related terminlogy ==&lt;br /&gt;
=== What is the ladder? ===&lt;br /&gt;
TODO&lt;br /&gt;
=== What is tk/team kill? ===&lt;br /&gt;
Often seen at the start of round with many players on a team, a team kill is when a player, by its action or lack of, cause the death of a teammate. Considered a serious lack of respect.&lt;br /&gt;
&lt;br /&gt;
=== What is gank? ===&lt;br /&gt;
The act of overtaking a zone, for example 2 vs 1, without fighting.&lt;br /&gt;
&lt;br /&gt;
= Hosting from the client =&lt;br /&gt;
&lt;br /&gt;
== What is a client?  What is a server?  What&#039;s the difference? ==&lt;br /&gt;
&lt;br /&gt;
Simply put, the game client is the program you run on your computer.  The game server runs on somebody else&#039;s computer.  The difference between the two is like the difference between, say, a lawyer and his client.  The lawyer would be the server, the one who knows all about law and stuff.  So the difference is just like in real life where the terms come from.  The client requests a service from someone who serves.  In our case, that service is a game that is served from a machine running a program called a &amp;quot;server&amp;quot;, but if you requested the same service from a person in a casino, you&#039;d still be running a game client.&lt;br /&gt;
&lt;br /&gt;
== My client can be a server, though, it says so right here. ==&lt;br /&gt;
&lt;br /&gt;
That&#039;s not a question.  In any case, the game client can act as a server if you press &amp;quot;Host Game&amp;quot; from the Internet Game menu.  So technically the client is a client/server hybrid, but let&#039;s not get too technical.&lt;br /&gt;
&lt;br /&gt;
== So are all game servers just clients where people pressed &amp;quot;Host Game&amp;quot;? ==&lt;br /&gt;
&lt;br /&gt;
No.  This is where people get really confused, even to the point where they complain to server operators for doing exactly this thing.  No, most, if not all, game servers available through the master server run a special version of the program that has no graphical display, and no player can play on directly.  That is the server, commonly called the &amp;quot;dedicated server&amp;quot;.  You can run it too, if you&#039;d like.  Server operators chose to run this instead of the regular game client because it has a number of modifications that make it work better as a regular server, just like a mail server or a web server.  It is more convenient and makes for a more reliable game server to do so.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd takes most or all the CPU time, how come? ==&lt;br /&gt;
&lt;br /&gt;
AA takes all the CPU time it needs to simulate and render the scene as fast as you&#039;ll allow it to. There are two conditions under which that makes it take almost everything that is available:&lt;br /&gt;
* You set your graphics card driver not to wait for VSync. AA will then run at the highest possible framerate and therefore also use all the CPU time available. If you enable the FPS display in the HUD options and it shows more than 100 FPS, then that&#039;s your problem.&lt;br /&gt;
* When it tells your video card driver to update the screen now, the driver goes into a special CPU-hogging mode until the command is completed, even though all it does is sit around and wait. Both NVidia and ATI drivers are guilty of this. In the &amp;quot;Performance Tweaks&amp;quot; submenu of the graphics settings, there is the &amp;quot;Flush&amp;quot; menu item where you can tweak AA to not issue the problematic command (with possible side effects).&lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd is unplayable on my AMD Dual Core X2 System (might affect other Dual Cores) ==&lt;br /&gt;
&lt;br /&gt;
Symptoms:&lt;br /&gt;
*The console displays &amp;quot;Timer hick up&amp;quot;&lt;br /&gt;
*FPS are usually ok (above 30).&lt;br /&gt;
*might only occur in network games&lt;br /&gt;
*Game performance is very bad&lt;br /&gt;
&lt;br /&gt;
At least three solutions for this problem are available:&lt;br /&gt;
* To fix this problem use your TaskManager to set ArmagetronAd.exe&#039;s cpu affinity to a single CPU. &lt;br /&gt;
* Disable Cool &amp;amp; Quite in BIOS&lt;br /&gt;
* Install the necessary Microsoft Hotfixes and depending on your System you might have to update your bios and drivers too.&lt;br /&gt;
&lt;br /&gt;
Links (TODO replace links with links to better instructions!):&lt;br /&gt;
* [http://support.microsoft.com/default.aspx?scid=KB;en-us;896256 Microsoft Knowledge base Article about Q896256]&lt;br /&gt;
* [http://www.amd.com/en-us/Processors/TechnicalResources/0,,30_182_871_13118,00.html AMD Dual Core Optimizer] The fix is similiar to Microsofts, but only fixes a small part of it. The Microsoft patch also addresses power saving bugs (of Windows XP).&lt;br /&gt;
&lt;br /&gt;
*Details: Armagetron Advanced 0.2.8.x(?) or later uses the high precision timer on Windows if available. (TODO confirm) This can be a  problem on the new Dual Core Systems or malfunctioning Multiprocessor System. The Timer of each core runs at different speeds which results in a jumping timer! The AMD X2 Systems are affected because they have two separate timers for each CPU (Intels Core Duo CPUs share a single timer). The AMD X2 Systems are only affected with Cool &amp;amp; Quite power saving enabled otherwise both cores have the same timer speed. The Windows kernel schedules Armagetron Advanced between both cores which results in a jumping timer form Armagetron perspective.&lt;br /&gt;
&lt;br /&gt;
= When all else fail =&lt;br /&gt;
What to do when consulting the documents provided on this wiki and consulting this FAQ still doesnt provide an answer.&lt;br /&gt;
&lt;br /&gt;
== The Forums ==&lt;br /&gt;
The [[forums.armagetronad.net|forum]] is a message board where discussion about ArmagetronAd often take part. A great many problems have been discussed and solved there. &lt;br /&gt;
&lt;br /&gt;
The forums is usefull for discussion that spawns under days and weeks. Should you require more immediate assistance, try contacting us on IRC.&lt;br /&gt;
&lt;br /&gt;
=== What should I do to increase my chance of getting help? ===&lt;br /&gt;
First of all, use the search capacities of the forum. It is easy and powerfull, and often will turn your answer without delays.&lt;br /&gt;
&lt;br /&gt;
Second, get your information right. A simple task from you will save many troubles to anyone trying to help you. Be detailed! Nobodyknows your specific setup, nor can guess it. &lt;br /&gt;
&lt;br /&gt;
== IRC channel ==&lt;br /&gt;
TODO&lt;br /&gt;
[[IRC_Channel]]&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=PlayingFAQ&amp;diff=17954</id>
		<title>PlayingFAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=PlayingFAQ&amp;diff=17954"/>
		<updated>2007-04-28T15:30:16Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Added 6 elements and 3 definitions to the terminology. Also broke it down into categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This FAQ relates to issues about installing, configuring and mostly playing the game.  For issues specific about hosting, consult the [[HostingFAQ|Hosting server FAQ]]&lt;br /&gt;
&lt;br /&gt;
= Installing the Game =&lt;br /&gt;
&lt;br /&gt;
== Where can I download Armagetron Advanced? ==&lt;br /&gt;
&lt;br /&gt;
That depends on what version you want to get. The current stable version is always available [http://www.armagetronad.net/downloads.php on the main web page] or [http://sourceforge.net/project/showfiles.php?group_id=110997 sourceforge]. The latest testing version on [http://beta.armagetronad.net AABeta].&lt;br /&gt;
&lt;br /&gt;
== How do I install... ==&lt;br /&gt;
=== on Windows? ===&lt;br /&gt;
&lt;br /&gt;
Find the exe file you downloaded from the question and answer above this one and double click on it. Answer all dialog boxes with Yes/Next/Finish, whatever applies. On Windows XP, when you first run the game and try to connect to the Internet, a firewall warning will pop up; set it to allow access.&lt;br /&gt;
&lt;br /&gt;
=== on Mac OS? ===&lt;br /&gt;
&lt;br /&gt;
Mount the dmg file, and drag the Armagetron Advanced application to your hard-drive.&lt;br /&gt;
&lt;br /&gt;
=== on Linux? ===&lt;br /&gt;
&lt;br /&gt;
That depends on the distribution you are running. Check out the [[Linux Distribution Field Report]] for details.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m running Linux, but don&#039;t know whether it is 32 or 64 bit. How can I find out? ==&lt;br /&gt;
&lt;br /&gt;
On a console/terminal, type &amp;lt;pre&amp;gt;echo $MACHTYPE&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the output starts with x86_64, you have a 64 bit system. If it starts with i386, i486, i586 or i686 or possibly just x86 or x86_32, you have a 32 bit system. For anything else, we don&#039;t provide binary packages, you have to build from source. If the output is blank, the method failed. Then, see whether you have got the directory /usr/lib64 on your system. If yes, you have a 64 bit system, if no, it&#039;s 32 bit.&lt;br /&gt;
&lt;br /&gt;
== I run a non-Linux UNIX or Linux on hardware not supported by your binary packages or the binaries don&#039;t work, how do I install from source? ==&lt;br /&gt;
&lt;br /&gt;
Basically, you fetch the .tbz2 source archive and do as the superuser root&lt;br /&gt;
&amp;lt;pre&amp;gt;tar -xjf &amp;lt;path to the tbz2 source archive you just fetched&amp;gt;&lt;br /&gt;
cd armagetronad-&amp;lt;VERSION&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
The configure script will tell you what you are missing. In this mode, you always need the &#039;development&#039; packages of our dependencies on most distributions.&lt;br /&gt;
The [[Linux Distribution Field Report]] may have some hints. Ask us if you get stuck.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m working on a Linux PC administered by someone else and don&#039;t have the root password, can I still install the game? ==&lt;br /&gt;
&lt;br /&gt;
Yes. The &amp;quot;package&amp;quot; binary files can install everything in your home directory. If you have to build from source, proceed as in the last FAQ,&lt;br /&gt;
but pass &#039;--prefix=$HOME/usr&#039; to ./configure and run the game later with&lt;br /&gt;
&#039;~/usr/bin/armagetronad&#039;, or run the game from the build directory with &#039;make run&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== So, should I get the latest stable or latest development version? ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;re really asking this question and are not just browsing the FAQ, get the latest stable version.&lt;br /&gt;
&lt;br /&gt;
== Ok, but there are still so many different files to get, which one is right for me? ==&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#Terminology]] for choosing between Client and Server download. If in doubt, choose the Client. If you&#039;re running a PC with Windows, get the exe format, GCC or VC6 should not matter (please report it if only one of them works for you). If you&#039;ve got a Mac, get the dmg; there is a special build available for versions 10.2.8 of OS X. If you&#039;re running 32 bit Intel Linux, get the x86(_32) &amp;quot;package&amp;quot;. If you&#039;re running 64 bit AMD Linux, get the x86_64 &amp;quot;package&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Where are the server sources? ==&lt;br /&gt;
&lt;br /&gt;
The server sources are the same as the client sources. You compile a server from them by giving the additional command line option &#039;--disable-glout&#039; to ./configure.&lt;br /&gt;
&lt;br /&gt;
= Configuring =&lt;br /&gt;
== I heard about moviepacks (graphical modifications), how do I install them? ==&lt;br /&gt;
&lt;br /&gt;
See [[Customizing the game]].&lt;br /&gt;
&lt;br /&gt;
== How do I use a map? ==&lt;br /&gt;
&lt;br /&gt;
Read [[Playing Maps]], and please try to tell us why this question is asked so often and followed by &amp;quot;I read the whole wiki!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Terminology = &lt;br /&gt;
== General terminology ==&lt;br /&gt;
=== What is rubber? ===&lt;br /&gt;
Rubber is a mecanism not unlike a cushion in front of your cycle that allows you to come closer to wall. The closer you move to a wall, the more rubber you consume. The faster you move when approching a wall, the more rubber you consume. If a cycle exceed its rubber limit at any time, it is considered to have crashed in the wall. Rubber normally is regained at a steady pace.&lt;br /&gt;
&lt;br /&gt;
=== What is grinding? ===&lt;br /&gt;
The act of running very close to a cycle trace or sometime an arena wall to benefit from the wall acceleration effect.&lt;br /&gt;
&lt;br /&gt;
=== What is double/tripple binding? ===&lt;br /&gt;
The act of associating multiple keys to the same action, such as turning. By pressing successively multiple keys it is possible to execute tight turns.&lt;br /&gt;
&lt;br /&gt;
==== Is double/tripple binding a sin? ====&lt;br /&gt;
Though it is a side effect of the game support for different keyboard layout, some beleive that as it is supported by the game, it is a valid strategy. Others consider that is of bad taste and encourage players to learn to rapidly tap the same key instead.&lt;br /&gt;
&lt;br /&gt;
== Game types terminology ==&lt;br /&gt;
=== What is Fortress? ===&lt;br /&gt;
Fortress is often seen in online playing. Each team has a zone assigned. The object is to capture the enemy zone while defending your own. It has been often observed that mildly skilled but effective team work outclass highly skilled but mildly organized team work on Fortress games. &lt;br /&gt;
&lt;br /&gt;
=== What is CTF/Capture The Flag? ===&lt;br /&gt;
A game configuration where the objective it to capture and carry back to your base (often represented as a wide zone) the enemy flag while your own team flag is still at its starting position.&lt;br /&gt;
&lt;br /&gt;
=== What is Sumo? ===&lt;br /&gt;
Stacked zone, often sharing the exact same location, and configured in a way that the zone decay conquers it. As all the players have to fight each other to get access to a place under the zones, the act often push out some players, which quickly die, in a manner that reminds sumo fighting.&lt;br /&gt;
&lt;br /&gt;
== Network terminology ==&lt;br /&gt;
=== What is ping? ===&lt;br /&gt;
==== How do I find my ping? ===&lt;br /&gt;
=== What is lag? ===&lt;br /&gt;
== Multi-player related terminlogy ==&lt;br /&gt;
=== What is the ladder? ===&lt;br /&gt;
TODO&lt;br /&gt;
=== What is tk/team kill? ===&lt;br /&gt;
Often seen at the start of round with many players on a team, a team kill is when a player, by its action or lack of, cause the death of a teammate. Considered a serious lack of respect.&lt;br /&gt;
&lt;br /&gt;
=== What is gank? ===&lt;br /&gt;
The act of overtaking a zone, for example 2 vs 1, without fighting.&lt;br /&gt;
&lt;br /&gt;
= Hosting from the client =&lt;br /&gt;
&lt;br /&gt;
== What is a client?  What is a server?  What&#039;s the difference? ==&lt;br /&gt;
&lt;br /&gt;
Simply put, the game client is the program you run on your computer.  The game server runs on somebody else&#039;s computer.  The difference between the two is like the difference between, say, a lawyer and his client.  The lawyer would be the server, the one who knows all about law and stuff.  So the difference is just like in real life where the terms come from.  The client requests a service from someone who serves.  In our case, that service is a game that is served from a machine running a program called a &amp;quot;server&amp;quot;, but if you requested the same service from a person in a casino, you&#039;d still be running a game client.&lt;br /&gt;
&lt;br /&gt;
== My client can be a server, though, it says so right here. ==&lt;br /&gt;
&lt;br /&gt;
That&#039;s not a question.  In any case, the game client can act as a server if you press &amp;quot;Host Game&amp;quot; from the Internet Game menu.  So technically the client is a client/server hybrid, but let&#039;s not get too technical.&lt;br /&gt;
&lt;br /&gt;
== So are all game servers just clients where people pressed &amp;quot;Host Game&amp;quot;? ==&lt;br /&gt;
&lt;br /&gt;
No.  This is where people get really confused, even to the point where they complain to server operators for doing exactly this thing.  No, most, if not all, game servers available through the master server run a special version of the program that has no graphical display, and no player can play on directly.  That is the server, commonly called the &amp;quot;dedicated server&amp;quot;.  You can run it too, if you&#039;d like.  Server operators chose to run this instead of the regular game client because it has a number of modifications that make it work better as a regular server, just like a mail server or a web server.  It is more convenient and makes for a more reliable game server to do so.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd takes most or all the CPU time, how come? ==&lt;br /&gt;
&lt;br /&gt;
AA takes all the CPU time it needs to simulate and render the scene as fast as you&#039;ll allow it to. There are two conditions under which that makes it take almost everything that is available:&lt;br /&gt;
* You set your graphics card driver not to wait for VSync. AA will then run at the highest possible framerate and therefore also use all the CPU time available. If you enable the FPS display in the HUD options and it shows more than 100 FPS, then that&#039;s your problem.&lt;br /&gt;
* When it tells your video card driver to update the screen now, the driver goes into a special CPU-hogging mode until the command is completed, even though all it does is sit around and wait. Both NVidia and ATI drivers are guilty of this. In the &amp;quot;Performance Tweaks&amp;quot; submenu of the graphics settings, there is the &amp;quot;Flush&amp;quot; menu item where you can tweak AA to not issue the problematic command (with possible side effects).&lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd is unplayable on my AMD Dual Core X2 System (might affect other Dual Cores) ==&lt;br /&gt;
&lt;br /&gt;
Symptoms:&lt;br /&gt;
*The console displays &amp;quot;Timer hick up&amp;quot;&lt;br /&gt;
*FPS are usually ok (above 30).&lt;br /&gt;
*might only occur in network games&lt;br /&gt;
*Game performance is very bad&lt;br /&gt;
&lt;br /&gt;
At least three solutions for this problem are available:&lt;br /&gt;
* To fix this problem use your TaskManager to set ArmagetronAd.exe&#039;s cpu affinity to a single CPU. &lt;br /&gt;
* Disable Cool &amp;amp; Quite in BIOS&lt;br /&gt;
* Install the necessary Microsoft Hotfixes and depending on your System you might have to update your bios and drivers too.&lt;br /&gt;
&lt;br /&gt;
Links (TODO replace links with links to better instructions!):&lt;br /&gt;
* [http://support.microsoft.com/default.aspx?scid=KB;en-us;896256 Microsoft Knowledge base Article about Q896256]&lt;br /&gt;
* [http://www.amd.com/en-us/Processors/TechnicalResources/0,,30_182_871_13118,00.html AMD Dual Core Optimizer] The fix is similiar to Microsofts, but only fixes a small part of it. The Microsoft patch also addresses power saving bugs (of Windows XP).&lt;br /&gt;
&lt;br /&gt;
*Details: Armagetron Advanced 0.2.8.x(?) or later uses the high precision timer on Windows if available. (TODO confirm) This can be a  problem on the new Dual Core Systems or malfunctioning Multiprocessor System. The Timer of each core runs at different speeds which results in a jumping timer! The AMD X2 Systems are affected because they have two separate timers for each CPU (Intels Core Duo CPUs share a single timer). The AMD X2 Systems are only affected with Cool &amp;amp; Quite power saving enabled otherwise both cores have the same timer speed. The Windows kernel schedules Armagetron Advanced between both cores which results in a jumping timer form Armagetron perspective.&lt;br /&gt;
&lt;br /&gt;
= When all else fail =&lt;br /&gt;
What to do when consulting the documents provided on this wiki and consulting this FAQ still doesnt provide an answer.&lt;br /&gt;
&lt;br /&gt;
== The Forums ==&lt;br /&gt;
The [[forums.armagetronad.net|forum]] is a message board where discussion about ArmagetronAd often take part. A great many problems have been discussed and solved there. &lt;br /&gt;
&lt;br /&gt;
The forums is usefull for discussion that spawns under days and weeks. Should you require more immediate assistance, try contacting us on IRC.&lt;br /&gt;
&lt;br /&gt;
=== What should I do to increase my chance of getting help? ===&lt;br /&gt;
First of all, use the search capacities of the forum. It is easy and powerfull, and often will turn your answer without delays.&lt;br /&gt;
&lt;br /&gt;
Second, get your information right. A simple task from you will save many troubles to anyone trying to help you. Be detailed! Nobodyknows your specific setup, nor can guess it. &lt;br /&gt;
&lt;br /&gt;
== IRC channel ==&lt;br /&gt;
TODO&lt;br /&gt;
[[IRC_Channel]]&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=PlayingFAQ&amp;diff=17951</id>
		<title>PlayingFAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=PlayingFAQ&amp;diff=17951"/>
		<updated>2007-04-28T14:42:32Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Added Fortress and CTF to Terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This FAQ relates to issues about installing, configuring and mostly playing the game.  For issues specific about hosting, consult the [[HostingFAQ|Hosting server FAQ]]&lt;br /&gt;
&lt;br /&gt;
= Installing the Game =&lt;br /&gt;
&lt;br /&gt;
== Where can I download Armagetron Advanced? ==&lt;br /&gt;
&lt;br /&gt;
That depends on what version you want to get. The current stable version is always available [http://www.armagetronad.net/downloads.php on the main web page] or [http://sourceforge.net/project/showfiles.php?group_id=110997 sourceforge]. The latest testing version on [http://beta.armagetronad.net AABeta].&lt;br /&gt;
&lt;br /&gt;
== How do I install... ==&lt;br /&gt;
=== on Windows? ===&lt;br /&gt;
&lt;br /&gt;
Find the exe file you downloaded from the question and answer above this one and double click on it. Answer all dialog boxes with Yes/Next/Finish, whatever applies. On Windows XP, when you first run the game and try to connect to the Internet, a firewall warning will pop up; set it to allow access.&lt;br /&gt;
&lt;br /&gt;
=== on Mac OS? ===&lt;br /&gt;
&lt;br /&gt;
Mount the dmg file, and drag the Armagetron Advanced application to your hard-drive.&lt;br /&gt;
&lt;br /&gt;
=== on Linux? ===&lt;br /&gt;
&lt;br /&gt;
That depends on the distribution you are running. Check out the [[Linux Distribution Field Report]] for details.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m running Linux, but don&#039;t know whether it is 32 or 64 bit. How can I find out? ==&lt;br /&gt;
&lt;br /&gt;
On a console/terminal, type &amp;lt;pre&amp;gt;echo $MACHTYPE&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the output starts with x86_64, you have a 64 bit system. If it starts with i386, i486, i586 or i686 or possibly just x86 or x86_32, you have a 32 bit system. For anything else, we don&#039;t provide binary packages, you have to build from source. If the output is blank, the method failed. Then, see whether you have got the directory /usr/lib64 on your system. If yes, you have a 64 bit system, if no, it&#039;s 32 bit.&lt;br /&gt;
&lt;br /&gt;
== I run a non-Linux UNIX or Linux on hardware not supported by your binary packages or the binaries don&#039;t work, how do I install from source? ==&lt;br /&gt;
&lt;br /&gt;
Basically, you fetch the .tbz2 source archive and do as the superuser root&lt;br /&gt;
&amp;lt;pre&amp;gt;tar -xjf &amp;lt;path to the tbz2 source archive you just fetched&amp;gt;&lt;br /&gt;
cd armagetronad-&amp;lt;VERSION&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
The configure script will tell you what you are missing. In this mode, you always need the &#039;development&#039; packages of our dependencies on most distributions.&lt;br /&gt;
The [[Linux Distribution Field Report]] may have some hints. Ask us if you get stuck.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m working on a Linux PC administered by someone else and don&#039;t have the root password, can I still install the game? ==&lt;br /&gt;
&lt;br /&gt;
Yes. The &amp;quot;package&amp;quot; binary files can install everything in your home directory. If you have to build from source, proceed as in the last FAQ,&lt;br /&gt;
but pass &#039;--prefix=$HOME/usr&#039; to ./configure and run the game later with&lt;br /&gt;
&#039;~/usr/bin/armagetronad&#039;, or run the game from the build directory with &#039;make run&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== So, should I get the latest stable or latest development version? ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;re really asking this question and are not just browsing the FAQ, get the latest stable version.&lt;br /&gt;
&lt;br /&gt;
== Ok, but there are still so many different files to get, which one is right for me? ==&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#Terminology]] for choosing between Client and Server download. If in doubt, choose the Client. If you&#039;re running a PC with Windows, get the exe format, GCC or VC6 should not matter (please report it if only one of them works for you). If you&#039;ve got a Mac, get the dmg; there is a special build available for versions 10.2.8 of OS X. If you&#039;re running 32 bit Intel Linux, get the x86(_32) &amp;quot;package&amp;quot;. If you&#039;re running 64 bit AMD Linux, get the x86_64 &amp;quot;package&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Where are the server sources? ==&lt;br /&gt;
&lt;br /&gt;
The server sources are the same as the client sources. You compile a server from them by giving the additional command line option &#039;--disable-glout&#039; to ./configure.&lt;br /&gt;
&lt;br /&gt;
= Configuring =&lt;br /&gt;
== I heard about moviepacks (graphical modifications), how do I install them? ==&lt;br /&gt;
&lt;br /&gt;
See [[Customizing the game]].&lt;br /&gt;
&lt;br /&gt;
== How do I use a map? ==&lt;br /&gt;
&lt;br /&gt;
Read [[Playing Maps]], and please try to tell us why this question is asked so often and followed by &amp;quot;I read the whole wiki!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Terminology = &lt;br /&gt;
== What is rubber? ==&lt;br /&gt;
Rubber is a mecanism not unlike a cushion in front of your cycle that allows you to come closer to wall. The closer you move to a wall, the more rubber you consume. The faster you move when approching a wall, the more rubber you consume. If a cycle exceed its rubber limit at any time, it is considered to have crashed in the wall. Rubber normally is regained at a steady pace.&lt;br /&gt;
&lt;br /&gt;
== What is grinding? ==&lt;br /&gt;
The act of running very close to a cycle trace or sometime an arena wall to benefit from the wall acceleration effect.&lt;br /&gt;
&lt;br /&gt;
== What is double/tripple binding? ==&lt;br /&gt;
The act of associating multiple keys to the same action, such as turning. By pressing successively multiple keys it is possible to execute tight turns.&lt;br /&gt;
&lt;br /&gt;
=== Is double/tripple binding a sin? ===&lt;br /&gt;
Though it is a side effect of the game support for different keyboard layout, some beleive that as it is supported by the game, it is a valid strategy. Others consider that is of bad taste and encourage players to learn to rapidly tap the same key instead.&lt;br /&gt;
&lt;br /&gt;
== What is Fortress ==&lt;br /&gt;
Fortress is often seen in online playing. Each team has a zone assigned. The object is to capture the enemy zone while defending your own. It has been often observed that mildly skilled but effective team work outclass highly skilled but mildly organized team work on Fortress games. &lt;br /&gt;
&lt;br /&gt;
== What is CTF/Capture The Flag ==&lt;br /&gt;
A game configuration where the objective it to capture and carry back to your base (often represented as a wide zone) the enemy flag while your own team flag is still at its starting position.&lt;br /&gt;
&lt;br /&gt;
= Hosting from the client =&lt;br /&gt;
&lt;br /&gt;
== What is a client?  What is a server?  What&#039;s the difference? ==&lt;br /&gt;
&lt;br /&gt;
Simply put, the game client is the program you run on your computer.  The game server runs on somebody else&#039;s computer.  The difference between the two is like the difference between, say, a lawyer and his client.  The lawyer would be the server, the one who knows all about law and stuff.  So the difference is just like in real life where the terms come from.  The client requests a service from someone who serves.  In our case, that service is a game that is served from a machine running a program called a &amp;quot;server&amp;quot;, but if you requested the same service from a person in a casino, you&#039;d still be running a game client.&lt;br /&gt;
&lt;br /&gt;
== My client can be a server, though, it says so right here. ==&lt;br /&gt;
&lt;br /&gt;
That&#039;s not a question.  In any case, the game client can act as a server if you press &amp;quot;Host Game&amp;quot; from the Internet Game menu.  So technically the client is a client/server hybrid, but let&#039;s not get too technical.&lt;br /&gt;
&lt;br /&gt;
== So are all game servers just clients where people pressed &amp;quot;Host Game&amp;quot;? ==&lt;br /&gt;
&lt;br /&gt;
No.  This is where people get really confused, even to the point where they complain to server operators for doing exactly this thing.  No, most, if not all, game servers available through the master server run a special version of the program that has no graphical display, and no player can play on directly.  That is the server, commonly called the &amp;quot;dedicated server&amp;quot;.  You can run it too, if you&#039;d like.  Server operators chose to run this instead of the regular game client because it has a number of modifications that make it work better as a regular server, just like a mail server or a web server.  It is more convenient and makes for a more reliable game server to do so.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd takes most or all the CPU time, how come? ==&lt;br /&gt;
&lt;br /&gt;
AA takes all the CPU time it needs to simulate and render the scene as fast as you&#039;ll allow it to. There are two conditions under which that makes it take almost everything that is available:&lt;br /&gt;
* You set your graphics card driver not to wait for VSync. AA will then run at the highest possible framerate and therefore also use all the CPU time available. If you enable the FPS display in the HUD options and it shows more than 100 FPS, then that&#039;s your problem.&lt;br /&gt;
* When it tells your video card driver to update the screen now, the driver goes into a special CPU-hogging mode until the command is completed, even though all it does is sit around and wait. Both NVidia and ATI drivers are guilty of this. In the &amp;quot;Performance Tweaks&amp;quot; submenu of the graphics settings, there is the &amp;quot;Flush&amp;quot; menu item where you can tweak AA to not issue the problematic command (with possible side effects).&lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd is unplayable on my AMD Dual Core X2 System (might affect other Dual Cores) ==&lt;br /&gt;
&lt;br /&gt;
Symptoms:&lt;br /&gt;
*The console displays &amp;quot;Timer hick up&amp;quot;&lt;br /&gt;
*FPS are usually ok (above 30).&lt;br /&gt;
*might only occur in network games&lt;br /&gt;
*Game performance is very bad&lt;br /&gt;
&lt;br /&gt;
At least three solutions for this problem are available:&lt;br /&gt;
* To fix this problem use your TaskManager to set ArmagetronAd.exe&#039;s cpu affinity to a single CPU. &lt;br /&gt;
* Disable Cool &amp;amp; Quite in BIOS&lt;br /&gt;
* Install the necessary Microsoft Hotfixes and depending on your System you might have to update your bios and drivers too.&lt;br /&gt;
&lt;br /&gt;
Links (TODO replace links with links to better instructions!):&lt;br /&gt;
* [http://support.microsoft.com/default.aspx?scid=KB;en-us;896256 Microsoft Knowledge base Article about Q896256]&lt;br /&gt;
* [http://www.amd.com/en-us/Processors/TechnicalResources/0,,30_182_871_13118,00.html AMD Dual Core Optimizer] The fix is similiar to Microsofts, but only fixes a small part of it. The Microsoft patch also addresses power saving bugs (of Windows XP).&lt;br /&gt;
&lt;br /&gt;
*Details: Armagetron Advanced 0.2.8.x(?) or later uses the high precision timer on Windows if available. (TODO confirm) This can be a  problem on the new Dual Core Systems or malfunctioning Multiprocessor System. The Timer of each core runs at different speeds which results in a jumping timer! The AMD X2 Systems are affected because they have two separate timers for each CPU (Intels Core Duo CPUs share a single timer). The AMD X2 Systems are only affected with Cool &amp;amp; Quite power saving enabled otherwise both cores have the same timer speed. The Windows kernel schedules Armagetron Advanced between both cores which results in a jumping timer form Armagetron perspective.&lt;br /&gt;
&lt;br /&gt;
= When all else fail =&lt;br /&gt;
What to do when consulting the documents provided on this wiki and consulting this FAQ still doesnt provide an answer.&lt;br /&gt;
&lt;br /&gt;
== The Forums ==&lt;br /&gt;
The [[forums.armagetronad.net|forum]] is a message board where discussion about ArmagetronAd often take part. A great many problems have been discussed and solved there. &lt;br /&gt;
&lt;br /&gt;
The forums is usefull for discussion that spawns under days and weeks. Should you require more immediate assistance, try contacting us on IRC.&lt;br /&gt;
&lt;br /&gt;
=== What should I do to increase my chance of getting help? ===&lt;br /&gt;
First of all, use the search capacities of the forum. It is easy and powerfull, and often will turn your answer without delays.&lt;br /&gt;
&lt;br /&gt;
Second, get your information right. A simple task from you will save many troubles to anyone trying to help you. Be detailed! Nobodyknows your specific setup, nor can guess it. &lt;br /&gt;
&lt;br /&gt;
== IRC channel ==&lt;br /&gt;
TODO&lt;br /&gt;
[[IRC_Channel]]&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=MediaWiki:Sidebar&amp;diff=17950</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=MediaWiki:Sidebar&amp;diff=17950"/>
		<updated>2007-04-28T14:24:52Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Was lacking the hosting getting started link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
* Playing&lt;br /&gt;
** PlayingGettingStarted|Getting Started&lt;br /&gt;
** Playing the Game|Documentation&lt;br /&gt;
** PlayingFAQ|FAQ&lt;br /&gt;
* Hosting&lt;br /&gt;
** HostingGettingStarted|Getting Started&lt;br /&gt;
** Server Administration|Documentation&lt;br /&gt;
** Servers|Know Servers&lt;br /&gt;
** HostingFAQ|FAQ&lt;br /&gt;
* Miscellaneous&lt;br /&gt;
** Extending|Extending&lt;br /&gt;
** Development Docs|Development Docs&lt;br /&gt;
** Project Documentation|Project Docs&lt;br /&gt;
* sitehelp&lt;br /&gt;
** helppage|help&lt;br /&gt;
** Armagetron_Advanced_Wiki:Policy|wikipolicy&lt;br /&gt;
* community&lt;br /&gt;
** portal-url|portal&lt;br /&gt;
** Competition Hub|Competitions&lt;br /&gt;
** website-url|website&lt;br /&gt;
** forums-url|forums&lt;br /&gt;
** Armagetron_Advanced_Wiki:Contacts|Network_Information&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=MediaWiki:Sidebar&amp;diff=17949</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=MediaWiki:Sidebar&amp;diff=17949"/>
		<updated>2007-04-28T14:23:58Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Re-organisation to clearly differ between playing and hosting items&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
* Playing&lt;br /&gt;
** PlayingGettingStarted|Getting Started&lt;br /&gt;
** Playing the Game|Documentation&lt;br /&gt;
** PlayingFAQ|FAQ&lt;br /&gt;
* Hosting&lt;br /&gt;
** Getting Started&lt;br /&gt;
** Server Administration|Documentation&lt;br /&gt;
** Servers|Know Servers&lt;br /&gt;
** HostingFAQ|FAQ&lt;br /&gt;
* Miscellaneous&lt;br /&gt;
** Extending|Extending&lt;br /&gt;
** Development Docs|Development Docs&lt;br /&gt;
** Project Documentation|Project Docs&lt;br /&gt;
* sitehelp&lt;br /&gt;
** helppage|help&lt;br /&gt;
** Armagetron_Advanced_Wiki:Policy|wikipolicy&lt;br /&gt;
* community&lt;br /&gt;
** portal-url|portal&lt;br /&gt;
** Competition Hub|Competitions&lt;br /&gt;
** website-url|website&lt;br /&gt;
** forums-url|forums&lt;br /&gt;
** Armagetron_Advanced_Wiki:Contacts|Network_Information&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=PlayingFAQ&amp;diff=17947</id>
		<title>PlayingFAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=PlayingFAQ&amp;diff=17947"/>
		<updated>2007-04-28T14:20:12Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: /* = on Windows? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This FAQ relates to issues about installing, configuring and mostly playing the game.  For issues specific about hosting, consult the [[HostingFAQ|Hosting server FAQ]]&lt;br /&gt;
&lt;br /&gt;
= Installing the Game =&lt;br /&gt;
&lt;br /&gt;
== Where can I download Armagetron Advanced? ==&lt;br /&gt;
&lt;br /&gt;
That depends on what version you want to get. The current stable version is always available [http://www.armagetronad.net/downloads.php on the main web page] or [http://sourceforge.net/project/showfiles.php?group_id=110997 sourceforge]. The latest testing version on [http://beta.armagetronad.net AABeta].&lt;br /&gt;
&lt;br /&gt;
== How do I install... ==&lt;br /&gt;
=== on Windows? ===&lt;br /&gt;
&lt;br /&gt;
Find the exe file you downloaded from the question and answer above this one and double click on it. Answer all dialog boxes with Yes/Next/Finish, whatever applies. On Windows XP, when you first run the game and try to connect to the Internet, a firewall warning will pop up; set it to allow access.&lt;br /&gt;
&lt;br /&gt;
=== on Mac OS? ===&lt;br /&gt;
&lt;br /&gt;
Mount the dmg file, and drag the Armagetron Advanced application to your hard-drive.&lt;br /&gt;
&lt;br /&gt;
=== on Linux? ===&lt;br /&gt;
&lt;br /&gt;
That depends on the distribution you are running. Check out the [[Linux Distribution Field Report]] for details.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m running Linux, but don&#039;t know whether it is 32 or 64 bit. How can I find out? ==&lt;br /&gt;
&lt;br /&gt;
On a console/terminal, type &amp;lt;pre&amp;gt;echo $MACHTYPE&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the output starts with x86_64, you have a 64 bit system. If it starts with i386, i486, i586 or i686 or possibly just x86 or x86_32, you have a 32 bit system. For anything else, we don&#039;t provide binary packages, you have to build from source. If the output is blank, the method failed. Then, see whether you have got the directory /usr/lib64 on your system. If yes, you have a 64 bit system, if no, it&#039;s 32 bit.&lt;br /&gt;
&lt;br /&gt;
== I run a non-Linux UNIX or Linux on hardware not supported by your binary packages or the binaries don&#039;t work, how do I install from source? ==&lt;br /&gt;
&lt;br /&gt;
Basically, you fetch the .tbz2 source archive and do as the superuser root&lt;br /&gt;
&amp;lt;pre&amp;gt;tar -xjf &amp;lt;path to the tbz2 source archive you just fetched&amp;gt;&lt;br /&gt;
cd armagetronad-&amp;lt;VERSION&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
The configure script will tell you what you are missing. In this mode, you always need the &#039;development&#039; packages of our dependencies on most distributions.&lt;br /&gt;
The [[Linux Distribution Field Report]] may have some hints. Ask us if you get stuck.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m working on a Linux PC administered by someone else and don&#039;t have the root password, can I still install the game? ==&lt;br /&gt;
&lt;br /&gt;
Yes. The &amp;quot;package&amp;quot; binary files can install everything in your home directory. If you have to build from source, proceed as in the last FAQ,&lt;br /&gt;
but pass &#039;--prefix=$HOME/usr&#039; to ./configure and run the game later with&lt;br /&gt;
&#039;~/usr/bin/armagetronad&#039;, or run the game from the build directory with &#039;make run&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== So, should I get the latest stable or latest development version? ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;re really asking this question and are not just browsing the FAQ, get the latest stable version.&lt;br /&gt;
&lt;br /&gt;
== Ok, but there are still so many different files to get, which one is right for me? ==&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#Terminology]] for choosing between Client and Server download. If in doubt, choose the Client. If you&#039;re running a PC with Windows, get the exe format, GCC or VC6 should not matter (please report it if only one of them works for you). If you&#039;ve got a Mac, get the dmg; there is a special build available for versions 10.2.8 of OS X. If you&#039;re running 32 bit Intel Linux, get the x86(_32) &amp;quot;package&amp;quot;. If you&#039;re running 64 bit AMD Linux, get the x86_64 &amp;quot;package&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Where are the server sources? ==&lt;br /&gt;
&lt;br /&gt;
The server sources are the same as the client sources. You compile a server from them by giving the additional command line option &#039;--disable-glout&#039; to ./configure.&lt;br /&gt;
&lt;br /&gt;
= Configuring =&lt;br /&gt;
== I heard about moviepacks (graphical modifications), how do I install them? ==&lt;br /&gt;
&lt;br /&gt;
See [[Customizing the game]].&lt;br /&gt;
&lt;br /&gt;
== How do I use a map? ==&lt;br /&gt;
&lt;br /&gt;
Read [[Playing Maps]], and please try to tell us why this question is asked so often and followed by &amp;quot;I read the whole wiki!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Terminology = &lt;br /&gt;
== What is rubber? ==&lt;br /&gt;
Rubber is a mecanism not unlike a cushion in front of your cycle that allows you to come closer to wall. The closer you move to a wall, the more rubber you consume. The faster you move when approching a wall, the more rubber you consume. If a cycle exceed its rubber limit at any time, it is considered to have crashed in the wall. Rubber normally is regained at a steady pace.&lt;br /&gt;
&lt;br /&gt;
== What is grinding? ==&lt;br /&gt;
The act of running very close to a cycle trace or sometime an arena wall to benefit from the wall acceleration effect.&lt;br /&gt;
&lt;br /&gt;
== What is double/tripple binding? ==&lt;br /&gt;
The act of associating multiple keys to the same action, such as turning. By pressing successively multiple keys it is possible to execute tight turns.&lt;br /&gt;
&lt;br /&gt;
=== Is double/tripple binding a sin? ===&lt;br /&gt;
Though it is a side effect of the game support for different keyboard layout, some beleive that as it is supported by the game, it is a valid strategy. Others consider that is of bad taste and encourage players to learn to rapidly tap the same key instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Hosting from the client =&lt;br /&gt;
&lt;br /&gt;
== What is a client?  What is a server?  What&#039;s the difference? ==&lt;br /&gt;
&lt;br /&gt;
Simply put, the game client is the program you run on your computer.  The game server runs on somebody else&#039;s computer.  The difference between the two is like the difference between, say, a lawyer and his client.  The lawyer would be the server, the one who knows all about law and stuff.  So the difference is just like in real life where the terms come from.  The client requests a service from someone who serves.  In our case, that service is a game that is served from a machine running a program called a &amp;quot;server&amp;quot;, but if you requested the same service from a person in a casino, you&#039;d still be running a game client.&lt;br /&gt;
&lt;br /&gt;
== My client can be a server, though, it says so right here. ==&lt;br /&gt;
&lt;br /&gt;
That&#039;s not a question.  In any case, the game client can act as a server if you press &amp;quot;Host Game&amp;quot; from the Internet Game menu.  So technically the client is a client/server hybrid, but let&#039;s not get too technical.&lt;br /&gt;
&lt;br /&gt;
== So are all game servers just clients where people pressed &amp;quot;Host Game&amp;quot;? ==&lt;br /&gt;
&lt;br /&gt;
No.  This is where people get really confused, even to the point where they complain to server operators for doing exactly this thing.  No, most, if not all, game servers available through the master server run a special version of the program that has no graphical display, and no player can play on directly.  That is the server, commonly called the &amp;quot;dedicated server&amp;quot;.  You can run it too, if you&#039;d like.  Server operators chose to run this instead of the regular game client because it has a number of modifications that make it work better as a regular server, just like a mail server or a web server.  It is more convenient and makes for a more reliable game server to do so.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd takes most or all the CPU time, how come? ==&lt;br /&gt;
&lt;br /&gt;
AA takes all the CPU time it needs to simulate and render the scene as fast as you&#039;ll allow it to. There are two conditions under which that makes it take almost everything that is available:&lt;br /&gt;
* You set your graphics card driver not to wait for VSync. AA will then run at the highest possible framerate and therefore also use all the CPU time available. If you enable the FPS display in the HUD options and it shows more than 100 FPS, then that&#039;s your problem.&lt;br /&gt;
* When it tells your video card driver to update the screen now, the driver goes into a special CPU-hogging mode until the command is completed, even though all it does is sit around and wait. Both NVidia and ATI drivers are guilty of this. In the &amp;quot;Performance Tweaks&amp;quot; submenu of the graphics settings, there is the &amp;quot;Flush&amp;quot; menu item where you can tweak AA to not issue the problematic command (with possible side effects).&lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd is unplayable on my AMD Dual Core X2 System (might affect other Dual Cores) ==&lt;br /&gt;
&lt;br /&gt;
Symptoms:&lt;br /&gt;
*The console displays &amp;quot;Timer hick up&amp;quot;&lt;br /&gt;
*FPS are usually ok (above 30).&lt;br /&gt;
*might only occur in network games&lt;br /&gt;
*Game performance is very bad&lt;br /&gt;
&lt;br /&gt;
At least three solutions for this problem are available:&lt;br /&gt;
* To fix this problem use your TaskManager to set ArmagetronAd.exe&#039;s cpu affinity to a single CPU. &lt;br /&gt;
* Disable Cool &amp;amp; Quite in BIOS&lt;br /&gt;
* Install the necessary Microsoft Hotfixes and depending on your System you might have to update your bios and drivers too.&lt;br /&gt;
&lt;br /&gt;
Links (TODO replace links with links to better instructions!):&lt;br /&gt;
* [http://support.microsoft.com/default.aspx?scid=KB;en-us;896256 Microsoft Knowledge base Article about Q896256]&lt;br /&gt;
* [http://www.amd.com/en-us/Processors/TechnicalResources/0,,30_182_871_13118,00.html AMD Dual Core Optimizer] The fix is similiar to Microsofts, but only fixes a small part of it. The Microsoft patch also addresses power saving bugs (of Windows XP).&lt;br /&gt;
&lt;br /&gt;
*Details: Armagetron Advanced 0.2.8.x(?) or later uses the high precision timer on Windows if available. (TODO confirm) This can be a  problem on the new Dual Core Systems or malfunctioning Multiprocessor System. The Timer of each core runs at different speeds which results in a jumping timer! The AMD X2 Systems are affected because they have two separate timers for each CPU (Intels Core Duo CPUs share a single timer). The AMD X2 Systems are only affected with Cool &amp;amp; Quite power saving enabled otherwise both cores have the same timer speed. The Windows kernel schedules Armagetron Advanced between both cores which results in a jumping timer form Armagetron perspective.&lt;br /&gt;
&lt;br /&gt;
= When all else fail =&lt;br /&gt;
What to do when consulting the documents provided on this wiki and consulting this FAQ still doesnt provide an answer.&lt;br /&gt;
&lt;br /&gt;
== The Forums ==&lt;br /&gt;
The [[forums.armagetronad.net|forum]] is a message board where discussion about ArmagetronAd often take part. A great many problems have been discussed and solved there. &lt;br /&gt;
&lt;br /&gt;
The forums is usefull for discussion that spawns under days and weeks. Should you require more immediate assistance, try contacting us on IRC.&lt;br /&gt;
&lt;br /&gt;
=== What should I do to increase my chance of getting help? ===&lt;br /&gt;
First of all, use the search capacities of the forum. It is easy and powerfull, and often will turn your answer without delays.&lt;br /&gt;
&lt;br /&gt;
Second, get your information right. A simple task from you will save many troubles to anyone trying to help you. Be detailed! Nobodyknows your specific setup, nor can guess it. &lt;br /&gt;
&lt;br /&gt;
== IRC channel ==&lt;br /&gt;
TODO&lt;br /&gt;
[[IRC_Channel]]&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=PlayingFAQ&amp;diff=17946</id>
		<title>PlayingFAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=PlayingFAQ&amp;diff=17946"/>
		<updated>2007-04-28T14:19:38Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: First commit of FAQ specific to playing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This FAQ relates to issues about installing, configuring and mostly playing the game.  For issues specific about hosting, consult the [[HostingFAQ|Hosting server FAQ]]&lt;br /&gt;
&lt;br /&gt;
= Installing the Game =&lt;br /&gt;
&lt;br /&gt;
== Where can I download Armagetron Advanced? ==&lt;br /&gt;
&lt;br /&gt;
That depends on what version you want to get. The current stable version is always available [http://www.armagetronad.net/downloads.php on the main web page] or [http://sourceforge.net/project/showfiles.php?group_id=110997 sourceforge]. The latest testing version on [http://beta.armagetronad.net AABeta].&lt;br /&gt;
&lt;br /&gt;
== How do I install... ==&lt;br /&gt;
=== on Windows? ==&lt;br /&gt;
&lt;br /&gt;
Find the exe file you downloaded from the question and answer above this one and double click on it. Answer all dialog boxes with Yes/Next/Finish, whatever applies. On Windows XP, when you first run the game and try to connect to the Internet, a firewall warning will pop up; set it to allow access.&lt;br /&gt;
&lt;br /&gt;
=== on Mac OS? ===&lt;br /&gt;
&lt;br /&gt;
Mount the dmg file, and drag the Armagetron Advanced application to your hard-drive.&lt;br /&gt;
&lt;br /&gt;
=== on Linux? ===&lt;br /&gt;
&lt;br /&gt;
That depends on the distribution you are running. Check out the [[Linux Distribution Field Report]] for details.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m running Linux, but don&#039;t know whether it is 32 or 64 bit. How can I find out? ==&lt;br /&gt;
&lt;br /&gt;
On a console/terminal, type &amp;lt;pre&amp;gt;echo $MACHTYPE&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the output starts with x86_64, you have a 64 bit system. If it starts with i386, i486, i586 or i686 or possibly just x86 or x86_32, you have a 32 bit system. For anything else, we don&#039;t provide binary packages, you have to build from source. If the output is blank, the method failed. Then, see whether you have got the directory /usr/lib64 on your system. If yes, you have a 64 bit system, if no, it&#039;s 32 bit.&lt;br /&gt;
&lt;br /&gt;
== I run a non-Linux UNIX or Linux on hardware not supported by your binary packages or the binaries don&#039;t work, how do I install from source? ==&lt;br /&gt;
&lt;br /&gt;
Basically, you fetch the .tbz2 source archive and do as the superuser root&lt;br /&gt;
&amp;lt;pre&amp;gt;tar -xjf &amp;lt;path to the tbz2 source archive you just fetched&amp;gt;&lt;br /&gt;
cd armagetronad-&amp;lt;VERSION&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
The configure script will tell you what you are missing. In this mode, you always need the &#039;development&#039; packages of our dependencies on most distributions.&lt;br /&gt;
The [[Linux Distribution Field Report]] may have some hints. Ask us if you get stuck.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m working on a Linux PC administered by someone else and don&#039;t have the root password, can I still install the game? ==&lt;br /&gt;
&lt;br /&gt;
Yes. The &amp;quot;package&amp;quot; binary files can install everything in your home directory. If you have to build from source, proceed as in the last FAQ,&lt;br /&gt;
but pass &#039;--prefix=$HOME/usr&#039; to ./configure and run the game later with&lt;br /&gt;
&#039;~/usr/bin/armagetronad&#039;, or run the game from the build directory with &#039;make run&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== So, should I get the latest stable or latest development version? ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;re really asking this question and are not just browsing the FAQ, get the latest stable version.&lt;br /&gt;
&lt;br /&gt;
== Ok, but there are still so many different files to get, which one is right for me? ==&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#Terminology]] for choosing between Client and Server download. If in doubt, choose the Client. If you&#039;re running a PC with Windows, get the exe format, GCC or VC6 should not matter (please report it if only one of them works for you). If you&#039;ve got a Mac, get the dmg; there is a special build available for versions 10.2.8 of OS X. If you&#039;re running 32 bit Intel Linux, get the x86(_32) &amp;quot;package&amp;quot;. If you&#039;re running 64 bit AMD Linux, get the x86_64 &amp;quot;package&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Where are the server sources? ==&lt;br /&gt;
&lt;br /&gt;
The server sources are the same as the client sources. You compile a server from them by giving the additional command line option &#039;--disable-glout&#039; to ./configure.&lt;br /&gt;
&lt;br /&gt;
= Configuring =&lt;br /&gt;
== I heard about moviepacks (graphical modifications), how do I install them? ==&lt;br /&gt;
&lt;br /&gt;
See [[Customizing the game]].&lt;br /&gt;
&lt;br /&gt;
== How do I use a map? ==&lt;br /&gt;
&lt;br /&gt;
Read [[Playing Maps]], and please try to tell us why this question is asked so often and followed by &amp;quot;I read the whole wiki!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Terminology = &lt;br /&gt;
== What is rubber? ==&lt;br /&gt;
Rubber is a mecanism not unlike a cushion in front of your cycle that allows you to come closer to wall. The closer you move to a wall, the more rubber you consume. The faster you move when approching a wall, the more rubber you consume. If a cycle exceed its rubber limit at any time, it is considered to have crashed in the wall. Rubber normally is regained at a steady pace.&lt;br /&gt;
&lt;br /&gt;
== What is grinding? ==&lt;br /&gt;
The act of running very close to a cycle trace or sometime an arena wall to benefit from the wall acceleration effect.&lt;br /&gt;
&lt;br /&gt;
== What is double/tripple binding? ==&lt;br /&gt;
The act of associating multiple keys to the same action, such as turning. By pressing successively multiple keys it is possible to execute tight turns.&lt;br /&gt;
&lt;br /&gt;
=== Is double/tripple binding a sin? ===&lt;br /&gt;
Though it is a side effect of the game support for different keyboard layout, some beleive that as it is supported by the game, it is a valid strategy. Others consider that is of bad taste and encourage players to learn to rapidly tap the same key instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Hosting from the client =&lt;br /&gt;
&lt;br /&gt;
== What is a client?  What is a server?  What&#039;s the difference? ==&lt;br /&gt;
&lt;br /&gt;
Simply put, the game client is the program you run on your computer.  The game server runs on somebody else&#039;s computer.  The difference between the two is like the difference between, say, a lawyer and his client.  The lawyer would be the server, the one who knows all about law and stuff.  So the difference is just like in real life where the terms come from.  The client requests a service from someone who serves.  In our case, that service is a game that is served from a machine running a program called a &amp;quot;server&amp;quot;, but if you requested the same service from a person in a casino, you&#039;d still be running a game client.&lt;br /&gt;
&lt;br /&gt;
== My client can be a server, though, it says so right here. ==&lt;br /&gt;
&lt;br /&gt;
That&#039;s not a question.  In any case, the game client can act as a server if you press &amp;quot;Host Game&amp;quot; from the Internet Game menu.  So technically the client is a client/server hybrid, but let&#039;s not get too technical.&lt;br /&gt;
&lt;br /&gt;
== So are all game servers just clients where people pressed &amp;quot;Host Game&amp;quot;? ==&lt;br /&gt;
&lt;br /&gt;
No.  This is where people get really confused, even to the point where they complain to server operators for doing exactly this thing.  No, most, if not all, game servers available through the master server run a special version of the program that has no graphical display, and no player can play on directly.  That is the server, commonly called the &amp;quot;dedicated server&amp;quot;.  You can run it too, if you&#039;d like.  Server operators chose to run this instead of the regular game client because it has a number of modifications that make it work better as a regular server, just like a mail server or a web server.  It is more convenient and makes for a more reliable game server to do so.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd takes most or all the CPU time, how come? ==&lt;br /&gt;
&lt;br /&gt;
AA takes all the CPU time it needs to simulate and render the scene as fast as you&#039;ll allow it to. There are two conditions under which that makes it take almost everything that is available:&lt;br /&gt;
* You set your graphics card driver not to wait for VSync. AA will then run at the highest possible framerate and therefore also use all the CPU time available. If you enable the FPS display in the HUD options and it shows more than 100 FPS, then that&#039;s your problem.&lt;br /&gt;
* When it tells your video card driver to update the screen now, the driver goes into a special CPU-hogging mode until the command is completed, even though all it does is sit around and wait. Both NVidia and ATI drivers are guilty of this. In the &amp;quot;Performance Tweaks&amp;quot; submenu of the graphics settings, there is the &amp;quot;Flush&amp;quot; menu item where you can tweak AA to not issue the problematic command (with possible side effects).&lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd is unplayable on my AMD Dual Core X2 System (might affect other Dual Cores) ==&lt;br /&gt;
&lt;br /&gt;
Symptoms:&lt;br /&gt;
*The console displays &amp;quot;Timer hick up&amp;quot;&lt;br /&gt;
*FPS are usually ok (above 30).&lt;br /&gt;
*might only occur in network games&lt;br /&gt;
*Game performance is very bad&lt;br /&gt;
&lt;br /&gt;
At least three solutions for this problem are available:&lt;br /&gt;
* To fix this problem use your TaskManager to set ArmagetronAd.exe&#039;s cpu affinity to a single CPU. &lt;br /&gt;
* Disable Cool &amp;amp; Quite in BIOS&lt;br /&gt;
* Install the necessary Microsoft Hotfixes and depending on your System you might have to update your bios and drivers too.&lt;br /&gt;
&lt;br /&gt;
Links (TODO replace links with links to better instructions!):&lt;br /&gt;
* [http://support.microsoft.com/default.aspx?scid=KB;en-us;896256 Microsoft Knowledge base Article about Q896256]&lt;br /&gt;
* [http://www.amd.com/en-us/Processors/TechnicalResources/0,,30_182_871_13118,00.html AMD Dual Core Optimizer] The fix is similiar to Microsofts, but only fixes a small part of it. The Microsoft patch also addresses power saving bugs (of Windows XP).&lt;br /&gt;
&lt;br /&gt;
*Details: Armagetron Advanced 0.2.8.x(?) or later uses the high precision timer on Windows if available. (TODO confirm) This can be a  problem on the new Dual Core Systems or malfunctioning Multiprocessor System. The Timer of each core runs at different speeds which results in a jumping timer! The AMD X2 Systems are affected because they have two separate timers for each CPU (Intels Core Duo CPUs share a single timer). The AMD X2 Systems are only affected with Cool &amp;amp; Quite power saving enabled otherwise both cores have the same timer speed. The Windows kernel schedules Armagetron Advanced between both cores which results in a jumping timer form Armagetron perspective.&lt;br /&gt;
&lt;br /&gt;
= When all else fail =&lt;br /&gt;
What to do when consulting the documents provided on this wiki and consulting this FAQ still doesnt provide an answer.&lt;br /&gt;
&lt;br /&gt;
== The Forums ==&lt;br /&gt;
The [[forums.armagetronad.net|forum]] is a message board where discussion about ArmagetronAd often take part. A great many problems have been discussed and solved there. &lt;br /&gt;
&lt;br /&gt;
The forums is usefull for discussion that spawns under days and weeks. Should you require more immediate assistance, try contacting us on IRC.&lt;br /&gt;
&lt;br /&gt;
=== What should I do to increase my chance of getting help? ===&lt;br /&gt;
First of all, use the search capacities of the forum. It is easy and powerfull, and often will turn your answer without delays.&lt;br /&gt;
&lt;br /&gt;
Second, get your information right. A simple task from you will save many troubles to anyone trying to help you. Be detailed! Nobodyknows your specific setup, nor can guess it. &lt;br /&gt;
&lt;br /&gt;
== IRC channel ==&lt;br /&gt;
TODO&lt;br /&gt;
[[IRC_Channel]]&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=HostingFAQ&amp;diff=17945</id>
		<title>HostingFAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=HostingFAQ&amp;diff=17945"/>
		<updated>2007-04-28T14:19:14Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Commit of faq specific for hosting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This FAQ relates to issues specific to installing, configuring and administrating servers. For issues about playing the game or generally non-server specific, consult the [[PlayingFAQ|Playing FAQ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Running a Server =&lt;br /&gt;
&lt;br /&gt;
== Which should I run?  The client in hosting mode, or the dedicated server? ==&lt;br /&gt;
&lt;br /&gt;
Generally this depends on how long you want the server to run at a time.  If you just want it running when you&#039;re playing, run the client in hosting mode, it&#039;s easier to deal with.  If you&#039;re running at a LAN party, you might also want to run the client in hosting mode.  But if you want to run a server that operates on the internet, reports to the master server, and runs 24 hours a day, 7 days a week (8 days in a leap week), then you should run the dedicated server.&lt;br /&gt;
&lt;br /&gt;
More information can be found in the [[PlayingFAQ|playing FAQ]] about the difference between client hosting and dedicated server hosting.&lt;br /&gt;
&lt;br /&gt;
== How to start the dedicated server ==&lt;br /&gt;
&lt;br /&gt;
=== ... on Linux/Unix ===&lt;br /&gt;
This section needs to be written.&lt;br /&gt;
&lt;br /&gt;
=== ... on MS Windows ===&lt;br /&gt;
This section needs to be written.&lt;br /&gt;
&lt;br /&gt;
=== ... on Max OS X ===&lt;br /&gt;
There is a very easy way to run the dedicated server on Max OS:&lt;br /&gt;
# Open up Terminal ( Macintosh HD -&amp;gt; Applications -&amp;gt; Utilities -&amp;gt; Terminal )&lt;br /&gt;
# In the terminal window type (without the quotes &amp;amp; don&#039;t forget the space): &#039;cd &#039;&lt;br /&gt;
# Drag the &#039;Armagetron Advanced Dedicated&#039; folder into the terminal window&lt;br /&gt;
# Press Enter&lt;br /&gt;
# Drag the &#039;armagetronad-dedicated&#039; file ( Armagetron Advanced Dedicated -&amp;gt; armagetronad-dedicated ) into the Terminal window&lt;br /&gt;
# Press Enter&lt;br /&gt;
&lt;br /&gt;
== I&#039;ve started the dedicated server, but I don&#039;t see it listed in the master server.  What&#039;s wrong? ==&lt;br /&gt;
&lt;br /&gt;
You need to add the line &amp;lt;pre&amp;gt;TALK_TO_MASTER 1&amp;lt;/pre&amp;gt; to your configuration files to publish your server on the internet. The server needs to be up one or two minutes before it can appear in the server browser, the master server checks whether it is reachable before it gets published.&lt;br /&gt;
&lt;br /&gt;
== I did that, but my server still is not listed. What else can be wrong? ==&lt;br /&gt;
&lt;br /&gt;
Get your server&#039;s IP address; if it is running on the same computer you use for browsing right now, check http://www.whatismyip.com to get it. Fire up the Armagetronad client, enter the internet server browser, wait half a minute, exit the server browser, enter it again, and look for your server&#039;s IP. If it appears (having the list sorted by server name my pressing &amp;quot;right&amp;quot; once helps), you really want to ask [[FAQ#I see my server&#039;s IP in the master server browser, but it says &amp;quot;Unreachable&amp;quot;. What&#039;s wrong?]]. Otherwise, this is the right section for you. This is also the right section if you see your server just fine, but nobody else does.&lt;br /&gt;
&lt;br /&gt;
If your server is connected to the internet via a router box and not directly via a &amp;quot;modem&amp;quot; of sorts, it is likely that network packages from the internet can&#039;t get to your server because the router blocks them. You need to tell your router to forward UDP port 4534 (or whatever SERVER_PORT is set to) to the server. On [http://www.portforward.com], there are nice instructions how to do that for a lot of router models. If the UDP port 4534 thing confuses you, just follow [http://www.portforward.com/english/applications/port_forwarding/F-22Lightning3/F-22Lightning3index.htm these instructions for a different game] that uses a similar connection method. Of course, you need to find out what router model you have, some under-the-table-crawling and cable following may be required for that if you can&#039;t remember what you bought or got the router from your ISP.&lt;br /&gt;
&lt;br /&gt;
== My server still isn&#039;t listed. This sucks, it&#039;s hard to find out where the problem is. What can I do? ==&lt;br /&gt;
&lt;br /&gt;
See [[Server_Administration_Guide#Firewalls|Short Firewall Troubleshooting]] and [[Server_Administration_Guide#Port_forwarding|Short Port Forwarding Troubleshooting]], if this does not solve your problem, read on.&lt;br /&gt;
&lt;br /&gt;
You can ask people to connect to your server directly by giving them [http://www.whatismyip.com your IP] and the port your server is running on. A perfect place to ask is our [[IRC_Channel|IRC]] channel(#armagetron on irc.freenode.org) because you&#039;ll get a real-time answer there. Less perfect is the support section of the [http://forums.armagetronad.net forums]; you&#039;ll need to make sure your server is up and running when people read your post, which can be well 48 hours after you post it. If people can&#039;t connect to your server that way, it means you probably need to set up port forwarding (see last question) correctly.&lt;br /&gt;
&lt;br /&gt;
== Gaaa! This FAQ is useless! Can&#039;t YOU help me get my server up? ==&lt;br /&gt;
&lt;br /&gt;
Sure. Post your trouble on the support section of the [http://forums.armagetronad.net forums]. Be sure to&lt;br /&gt;
* describe exactly what you already tried, and please don&#039;t just say &amp;quot;everything the FAQ told me&amp;quot;&lt;br /&gt;
* state the [http://www.whatismyip.com your IP] your server is running on, we need that to check the master server&#039;s logs&lt;br /&gt;
* state your port if you modified SERVER_PORT&lt;br /&gt;
* state your server&#039;s name, others need that to check for your server in the browser&lt;br /&gt;
* post the complete output of your server from the moment it is started&lt;br /&gt;
Without that info, we can&#039;t help.&lt;br /&gt;
&lt;br /&gt;
Setting up a server is complicated sometimes; don&#039;t be too shy to admit you didn&#039;t understand some part of the process. A lot of trouble comes from people silently skipping steps they don&#039;t understand.&lt;br /&gt;
&lt;br /&gt;
== I see my server&#039;s IP in the master server browser, but it says &amp;quot;Unreachable&amp;quot;.  What&#039;s wrong? ==&lt;br /&gt;
&lt;br /&gt;
Probably the answer is &amp;quot;Nothing is wrong&amp;quot;. A bug in some routers or the NAT specifications (at least, that&#039;s how Z-Man sees this) causes the response to the server query packet used in the server browser to come from the LAN address of your server, not the public address it was sent to. The packet gets ignored then. A workaround will be available in 0.2.8.3, but right now, that means most people can&#039;t see their own servers. Come to the IRC channel (#armagetron on irc.freenode.org) and ask people there if they can see your server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= When all else fail =&lt;br /&gt;
What to do when consulting the documents provided on this wiki and consulting this FAQ still doesnt provide an answer.&lt;br /&gt;
&lt;br /&gt;
== The Forums ==&lt;br /&gt;
The [[forums.armagetronad.net|forum]] is a message board where discussion about ArmagetronAd often take part. A great many problems have been discussed and solved there. &lt;br /&gt;
&lt;br /&gt;
The forums is usefull for discussion that spawns under days and weeks. Should you require more immediate assistance, try contacting us on IRC.&lt;br /&gt;
&lt;br /&gt;
=== What should I do to increase my chance of getting help? ===&lt;br /&gt;
First of all, use the search capacities of the forum. It is easy and powerfull, and often will turn your answer without delays.&lt;br /&gt;
&lt;br /&gt;
Second, get your information right. A simple task from you will save many troubles to anyone trying to help you. Be detailed! Nobodyknows your specific setup, nor can guess it. &lt;br /&gt;
&lt;br /&gt;
== IRC channel ==&lt;br /&gt;
TODO&lt;br /&gt;
[[IRC_Channel]]&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=PlayingGettingStarted&amp;diff=17939</id>
		<title>PlayingGettingStarted</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=PlayingGettingStarted&amp;diff=17939"/>
		<updated>2007-04-28T11:18:06Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Original commit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sections}} &amp;lt;!-- Template:Sections should be at the top of each section --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This document attempts to give the minimal set of knowledge required for a player to enjoy the game. &lt;br /&gt;
&lt;br /&gt;
= Getting ready to play =&lt;br /&gt;
Once you start ArmagetronAd, the game will be launched in fullscreen. To be able to follow this document, press &amp;quot;f&amp;quot; to toggle between fullscreen and windowed mode.&lt;br /&gt;
&lt;br /&gt;
== Select your preferred languages ==&lt;br /&gt;
Once the game is started, you will be asked to select your preferred language. Use the right and left arrows to change it. The secondary language is used when a translated text cannot be found in the primary language. Once selected, use the up and down arrows to move to Accept and press return.&lt;br /&gt;
&lt;br /&gt;
== Hardware detection ==&lt;br /&gt;
A screen indicate the 3D hardware found. It us usually properly detected, so fell free to press return to continue. Even if not detected properly, you will still be able to play the game. &lt;br /&gt;
You should now be at the main menu, labeled &amp;quot;Armagetron Advance&amp;quot; with the items &amp;quot;Game&amp;quot;, &amp;quot;Player Setup&amp;quot;, &amp;quot;System Setup&amp;quot;, &amp;quot;About&amp;quot; and &amp;quot;Exit Game&amp;quot;. Remember this menu, it will be the navigation reference.&lt;br /&gt;
&lt;br /&gt;
== How to move in the game ==&lt;br /&gt;
Before launching into play, here is the minimal keys you will need to know:&lt;br /&gt;
*To turn left, press either z, y or w&lt;br /&gt;
*To turn right, press x&lt;br /&gt;
*While playing, you can always activate the menu by pressing ESC. To stop playing, navigate to &amp;quot;Leave Grid&amp;quot;&lt;br /&gt;
*To navigating back to the main menu after leaving the grid, press ESC once more.&lt;br /&gt;
On most keyboard on the world, it should allow you to use the left most letter on the bottom row of your keyboard to turn left, and the second left most key to turn right.&lt;br /&gt;
&lt;br /&gt;
== Start playing ==&lt;br /&gt;
In its basic form, the game will present you with battling AI. Avoid colliding with the various walls and use the trace you leave behind you to trap and kill the AI. After a few battles, leave the grid and return to this document.&lt;br /&gt;
To start playing, from the main menu:&lt;br /&gt;
*Select the first item, labeled &amp;quot;Game&amp;quot;, and press enter. &lt;br /&gt;
*Select the first item, labeled &amp;quot;Local Game&amp;quot;, in the new menu, and press enter.&lt;br /&gt;
  &lt;br /&gt;
= Rubber and Grinding =&lt;br /&gt;
Battling AI at near constant speed is quite a challenge, but barely allows to overtake a fleeting enemy or to sceal another in a closed area for them to die. These strategies and more are enabled through the usage of rubber and the technique of grinding. Together, they constitute the base of the play.&lt;br /&gt;
&lt;br /&gt;
== [[Rubber]] ==&lt;br /&gt;
Rubber allows you to press yourself to a wall, preventing you from crashing into it for a very short period.&lt;br /&gt;
&lt;br /&gt;
Rubber allows a cycle to near itself to a wall, as if a cushion was laid before it. Press too hard on the cushion and you hit the wall. Turn while you are pressing on it, and you will yourself tightly placed agains the wall, leaving little place for someone to follow.&lt;br /&gt;
&lt;br /&gt;
Each time a cycle uses this cushion, its rubber reserve are consumed. If it reaches its limit, it hits the wall it was pressing on. Coming to a wall at greater speed with consume rubber faster, as pressing to end up tighter with the wall. Normally the cycle will regenerate its own rubber reserve with time.&lt;br /&gt;
&lt;br /&gt;
== Grinding == &lt;br /&gt;
Running a cycle parallel to nearby traces and sometimes walls will accelerate the cycle. The closer you are, the greater the acceleration you get. Useful when attempting to overtake an enemy. Driving between 2 traces will provide greater acceleration.&lt;br /&gt;
&lt;br /&gt;
Use your gained speed advantage promptly, as with time your cycle will return to its regular speed. Each turn you make will further slow you.&lt;br /&gt;
&lt;br /&gt;
== Learning Rubber and Grinding ==&lt;br /&gt;
The default setting of the game give very little rubber. To help you experiment with rubber, we will raise its limit. We will also lower the basic speed for the cycle so you can more carefully observe how rubber is consumed and practice grinding walls.&lt;br /&gt;
&lt;br /&gt;
To change game settings, the console is used. The console is a simple text input field that allows you to redefine all the parameters of the game. It is accessible both during play and in any menu. To activate the console, press either the ^ key or the ` key. The text &amp;quot;Con:&amp;quot; should appear the bottom of the screen. There, type the parameter to affect followed by the value desired. The console is case insensitive, so typing &amp;quot;Cycle_speed 10&amp;quot;, &amp;quot;cycle_speed 10&amp;quot; or CYCLE_SPEED 10&amp;quot; will produce the same result.&lt;br /&gt;
&lt;br /&gt;
Now activate the console and write, without the quotes:&lt;br /&gt;
&amp;quot;cycle_speed 10&amp;quot;&lt;br /&gt;
This will reduce the speed at which the cycle tend to move, giving you more time to think and maneuver. Feel free to adjust to your preference. &lt;br /&gt;
&lt;br /&gt;
The rubber meter is presented on the lower left part of the screen when you are playing. Note that by default the bar goes from 0 to 1, quite a small reserve of rubber. To change this, you will need to pass the command &amp;quot;cycle_rubber&amp;quot; (without the quotes) followed by a number. &lt;br /&gt;
&lt;br /&gt;
Activate the console  and write, without the quotes:&lt;br /&gt;
&amp;quot;cycle_rubber 10&amp;quot;&lt;br /&gt;
This will raise the rubber available to all the cycles. Feel free to adjust to your preference.&lt;br /&gt;
&lt;br /&gt;
Once you have changed the cycle_speed and cycle_rubber settings, practice pressing your cycle agains traces and wall, and getting acceleration by grinding them. In the basic setup, no acceleration is gained from grinding the outer rim even though rubber is consumed when you press on it. Experiment and learn from those settings, but do not to used to them. Such a generous amount of rubber is not often seen on multi-player games.&lt;br /&gt;
&lt;br /&gt;
It is to be noted that setting changes through the use of the console are not saved. When restarting the game, the original values will be restored.&lt;br /&gt;
&lt;br /&gt;
=Zones=&lt;br /&gt;
Zones are the game elements used in ArmagetronAd. As zones can offer perculiar behavior, this section will give you a rough introduction to them.&lt;br /&gt;
&lt;br /&gt;
== Win and Death Zones ==&lt;br /&gt;
The win and death zones offers instant win and instant death to any cycle who enters them.&lt;br /&gt;
&lt;br /&gt;
To try them, you will be required to load a new map. To do this, from the console type map_file followed by the name of the map to be used. In this instance, the file name is AATeam/demo/win-1.aamap.xml, so at the console, type &amp;quot;map_file AATeam/demo/win-1.aamap.xml&amp;quot;, without the quotes. If you dont have this map already on your system, the game will attempt to download it automatically, so you should probably be connected to Internet when you attempt this.&lt;br /&gt;
&lt;br /&gt;
On the next round, the arena should hold a green win zone and a red death zone. Experiment with either zones. Note that for your convenience that there are no AI, as they are too subject to the zones. Also, your trace is not of a finite length, allowing you move freedom of movement.&lt;br /&gt;
&lt;br /&gt;
== Conquest Zones ==&lt;br /&gt;
Zones can be configured so it is not the action of entering them that produce the effect, but rather by the cycle being inside the zone, often or a certain amount of time.&lt;br /&gt;
&lt;br /&gt;
Using the console, type &amp;quot;map_file AATeam/demo/conquest-a-1.aamap.xml&amp;quot;. This will load a map containing a single zone. You have to pass a total of 12 seconds in it in total to conquer it. As you conquer it, you should see it turning faster and faster onto itself, giving you a visual representation of the state of the conquest. Once conquered, the zone collapse and the round is won.&lt;br /&gt;
&lt;br /&gt;
Now load the map named &amp;quot;AATeam/demo/conquest-b-1.aamap.xml&amp;quot;. This time, your conquest of the zone gets eroded with time, meaning that if a partially conquered zone is left alone for a while, it will return to its original status and you will have to re start the conquest. Do not worry, the conquest rate is in your favor at a rate of 4:1. It would take 4 seconds outside of the zone to loose the conquest generated from 1 second inside the zone. Experiment with this zone until you are comfortable with the conquest and decay concepts. Note that when totally left alone, the zone simply turn at its lowerst original rate, indicating that the conquest of this zone has been reset to nothing.&lt;br /&gt;
&lt;br /&gt;
This time the zone is configured in a way that it is the natural decay of the zone that conquers it. Left alone, the zone will naturally conquer itself and you will lose. To prevent this, passing time inside the zone will actually annulate the decay. Again, the odds are in your favor in a 4:1 rate. Each second passed inside will annulate 4 seconds of natural decay. So keep on your guards and do not wander too far. This map is named &amp;quot;AATeam/demo/conquest-c-1.aamap.xml&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In multi-player setups, the following names can be encountered:&lt;br /&gt;
- Fortress: Each team have to defend their own zone while trying to conquer the enemy&#039;s. The decay usually move the status of the zone toward non conquered.&lt;br /&gt;
- Sumo: Multiple zones surimposed with decay set to conquer the zone. Each player has to fight the other players for some space under the common zones in to prevent his own zone of being conquered, or face certain death.&lt;br /&gt;
&lt;br /&gt;
= Multi player =&lt;br /&gt;
Beside rudimentary AI, the ArmagetronAd games allow you to compete again other player on the same computer, on a LAN or over Internet. &lt;br /&gt;
&lt;br /&gt;
== Connecting to a LAN server ==&lt;br /&gt;
For the main menu, navigate to &amp;quot;Game&amp;quot;. There select &amp;quot;Network Game&amp;quot; and then &amp;quot;LAN Game&amp;quot;. The game will query the local network (LAN) for any server, and present them in a list. &lt;br /&gt;
&lt;br /&gt;
It is possible to use the client to host a server. From the list of local servers, click on &amp;quot;Host Game&amp;quot; and then &amp;quot;Host Network Game&amp;quot;. Your copy of ArmagetronAd will allow you to server as a server for other to connect to, while letting you join in the action. The server will run until you exit the menu. &lt;br /&gt;
&lt;br /&gt;
== Connecting to an Internet server ==&lt;br /&gt;
For the main menu, navigate to &amp;quot;Game&amp;quot;. There select &amp;quot;Network Game&amp;quot; followed by &amp;quot;Internet Game&amp;quot;. The application will start querying different servers from all around the world and present you with a list of servers with a few details. It is strongly advised that you read the short description presented for each server at the bottom of your screen. It often gives you valuable information about the server you are about to join.&lt;br /&gt;
&lt;br /&gt;
Selecting one will connect you to it. More information might be presented to you during the connection operation. Read it carefully as it often describe the type of game you are about to try. And dont forget to communicate with the other players present using the chat capacity of the game, available on the &#039;s&#039; key.&lt;br /&gt;
&lt;br /&gt;
Internet access is of course required for this.&lt;br /&gt;
&lt;br /&gt;
== Type of play ==&lt;br /&gt;
The dynamic of the game will be decided by the settings in use. These settings and resulting combinations are too various to cover here. Also, when connecting to a LAN based server or an Internet based one, the server will decide of the configuration.&lt;br /&gt;
&lt;br /&gt;
One rough categorization is possible: Free for all versus Team Play.&lt;br /&gt;
&lt;br /&gt;
When in doubt, do not hesitate to communicate with the other players. Chat capacity is associated with the key &#039;s&#039;. &lt;br /&gt;
&lt;br /&gt;
=== Free for all ===&lt;br /&gt;
In this type of play, all the players compete agains each others. It is left to you to make the best use of your cunning, reflexes, experience and even ad-hoc alliances to raise yourself to the top.&lt;br /&gt;
&lt;br /&gt;
=== Team Play ===&lt;br /&gt;
In this type of play, cooperation between members of a team will usually produce better results than having everybody trying to accomplish the same goals. Often, individualism will actually harm your team mates, and incite their fury toward you. Be observant when joining a server, your team mates might be relying on you and ignoring them might cause great troubles.&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Zones_v2&amp;diff=17858</id>
		<title>Zones v2</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Zones_v2&amp;diff=17858"/>
		<updated>2007-04-17T18:22:15Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Updated the formating of the examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Preamble ==&lt;br /&gt;
&lt;br /&gt;
You will note that the examples below dont sound that fun. I&#039;d like to think its because my creative power went into building a good system, and now there is little left to put on examples. But I&#039;m sure you will find interesting ways to use the mechanisms in here. My goal with this was to be able to have zones that could have different effect depending on who would use them. For example, having a  fortress that team Blue could conquer, but only 2 of the players of team Red could actually defend. The other Red could still circle it and block the enemy, but they could not lower its value actively. Everything described here works. There are still glitches small and not so small. The code is in my private branch, but feel free to grab a local copy if you want to play with it.&lt;br /&gt;
&lt;br /&gt;
The format is anything but closed. I&#039;d like to hear your opinion on it too (yes it is a PITA to write, but if you have a constructive remark about that, I&#039;d like to know it) &lt;br /&gt;
&lt;br /&gt;
-ph&lt;br /&gt;
&lt;br /&gt;
Most of this is from a forum post by philippeqc. I reworded some stuff and formatted a bit for the wiki. Some stuff might have gotten lost or reworded wrongly so cross refrence with the post if the wording gets hazy and/or just to double check @ http://forums.armagetronad.net/viewtopic.php?p=77491#77491. Some stuff might be in the wrong place. --[[User:Your mom|Your mom]] 11:42, 30 July 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zone element ==&lt;br /&gt;
&lt;br /&gt;
Individual zones may have a name. Entering a name is optional, and re-using a name will be considered to mean &amp;quot;add/override with the following information&amp;quot;. Dont rely on this behavior for anything, in other words &#039;&#039;&#039;Dont re-use the same name.&#039;&#039;&#039; All zones need a shape defined. At the moment only one shape exists, the ShapeCircle. More shapes are planned in the future and are ToDo&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
 &amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
  &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
 &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules and EffectGroups ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A zone can have up to 4 different &amp;quot;rules&amp;quot; (need better name ToDo). Enter, Inside, Leave, Outside. It classifies when the held elements should be inspected. Inside each of the &amp;quot;rules&amp;quot;, one can define EffectGroups. EffectGroup(s) are the fundamental building blocks of  this new system. It associate owners with consequences. Note that ownership is part of effectGroup(s), &#039;&#039;NOT&#039;&#039; the zone. So a zone may have multiple effectGroup(s), each with unique or interlapping owners. There are 2 types of owners: owner (individuals) and ownerTeam (every member of a team). It is possible to define 0,1 or many for each items.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;HACK:&lt;br /&gt;
ATM, only owner is supported, and it must be an exact match with a&lt;br /&gt;
player&#039;s name to associated the effect.&lt;br /&gt;
The real solution will translate the labels used to players based on&lt;br /&gt;
some other logic depending on &amp;quot;game type&amp;quot;. This is to be defined&lt;br /&gt;
later.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;HACK:&lt;br /&gt;
It should be possible to associate individual with teams in some part&lt;br /&gt;
of the map. In this text, I will user lowercase color name + number for&lt;br /&gt;
individual, and uppercase color name for teams. So the individual&lt;br /&gt;
red1, red7 and red90210 should be considered as players of the team&lt;br /&gt;
RED. I will also allow myself to insert _description_ in names to help&lt;br /&gt;
the reader when appropriate.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ShapeCircle ...&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
&amp;lt;Enter&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;red1,red2&amp;quot; ownerTeam=&amp;quot;BLUE,YELLOW&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;&amp;quot; ownerTeam=&amp;quot;RED&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;/Enter&amp;gt;&lt;br /&gt;
&amp;lt;Leave&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;green7&amp;quot; ownerTeam=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;/Leave&amp;gt;&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User element ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inside the EffectGroup, elements User are set. This element offers different readily made rules to determine if a player in the &amp;quot;rule&amp;quot; condition for the zone, is allowed to be considered a user. This is decided based from the following information: owner, ownerTeam and the player matching the rule. Two other conditions can be set for a player to be considered a valid user: positive and marked. These element are of type Triad. The possible values are true, false and ignore. We will come back to these later. If the current player is found to be valid, the processing will continue to the child elements. Otherwise, nothing happens. A valid user will be called triggerer from now on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following users are currently implemented:&lt;br /&gt;
* all: Anybody can be considered a valid user,&lt;br /&gt;
* owner: only a player direcly in the owner list can be considered a valid user,&lt;br /&gt;
* ownerTeam: only a player member of a team mentionned in the ownerTeam list can be considered a valid user,&lt;br /&gt;
* allButOwner only a player NOT mentioned in the owner list can be considered a valid user,&lt;br /&gt;
* allButTeamOwner only a player NOT member of a team mentioned in the ownerTeam list can be considered a valid user, (TO COME, NOT IMPLEMENTED YET)&lt;br /&gt;
* anotherTeammate only a player in the same team as one of the individual owner can be considered a valid user (TO COME, NOT IMPLEMENTED YET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;EffectGroup owner=&amp;quot;red1,red2&amp;quot; ownerTeam=&amp;quot;BLUE,YELLOW&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;all&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Anybody can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;allButOwner&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Anybody but red1 and red2 can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;&amp;quot; ownerTeam=&amp;quot;RED&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;owner&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- No effect as the owner list is empty --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;ownerTeam&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Only players of the RED team can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inside a User element, it is possible to make use of 3 different&lt;br /&gt;
elements. Target, ZoneInfluence and MonitorInfluence.&lt;br /&gt;
&lt;br /&gt;
=== Target ===&lt;br /&gt;
&lt;br /&gt;
The Target element will take the information of the valid user, and&lt;br /&gt;
calculate who will receive the effect of the zone. Depending on the&lt;br /&gt;
described target rule to use and the state of the game, the calculated&lt;br /&gt;
target can be from no players to everybody in game.&lt;br /&gt;
&lt;br /&gt;
The currently implemented target rules are :&lt;br /&gt;
&lt;br /&gt;
*self : the triggerer himself&lt;br /&gt;
*teammate : a randomly selected teammate of the triggerer&lt;br /&gt;
*team : all the member of the team of the triggerer&lt;br /&gt;
*all : everybody in the game&lt;br /&gt;
*allButSelf : everybody in the game BUT the triggerer&lt;br /&gt;
*another : a randomly selected player that is not the triggerer&lt;br /&gt;
*ownerTeamTeammate : a randomly selected player member of one of the teams mentioned in the teamOwner list.&lt;br /&gt;
*owner : all the players owning the effectGroup&lt;br /&gt;
*ownerteam : all the players member of the team owning the effectGroup&lt;br /&gt;
*ownerteamteammate : a single player member from a owning team&lt;br /&gt;
*anydead : any single dead player&lt;br /&gt;
*alldead : all the dead players&lt;br /&gt;
*singledeadowner : one of the owners that is dead&lt;br /&gt;
*anotherteammatedead : a single player member of the team of the triggerer that is dead&lt;br /&gt;
*anothernotteammatedead : a single player that is not member of the team of the triggerer and that is dead&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
*Much more are detailed in a document named zones.txt hidden somewhere&lt;br /&gt;
on the forum.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the targets are selected, they all are applied all the effects&lt;br /&gt;
described under the Target element.&lt;br /&gt;
&lt;br /&gt;
Nota: In a User element, it is possible to user any amount of Target,&lt;br /&gt;
ZoneInfluence and MonitorInfluence.&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User user=&amp;quot;ownerTeam&amp;quot; &amp;gt;&lt;br /&gt;
  &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- The player that is member of one of the team mentionned&lt;br /&gt;
  and that triggered the zone receive the effect --&amp;gt;&lt;br /&gt;
  &amp;lt;/Target&amp;gt;&lt;br /&gt;
  &amp;lt;Target target=&amp;quot;another&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Some random player will receive the effect described --&amp;gt;&lt;br /&gt;
  &amp;lt;/Target&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Effect ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Effect element hold specific effects. The attribute count can limit the number of times a specific effect can be used. By default, the count is unlimited.&lt;br /&gt;
&lt;br /&gt;
valid effect currently implemented are:&lt;br /&gt;
*win : win the round&lt;br /&gt;
*death : kill the target(s)&lt;br /&gt;
*point : give points to the target(s)&lt;br /&gt;
*respawnplayer : Respawns target(s)&lt;br /&gt;
*brakerecharge : Refills target(s) cycle brake&lt;br /&gt;
*rubberrecharge : Refills target(s) cycle rubber&lt;br /&gt;
*setting : has 2 attributes ; settingName &amp;amp; settingValue&lt;br /&gt;
&lt;br /&gt;
new attribute for all effects: description&lt;br /&gt;
&lt;br /&gt;
When the effect is triggered, the message is displayed on the console. Somehow I&#039;m not able to do the &amp;quot;parsing&amp;quot; similar to when points are given (player x received y points because he is sooo leet). That should come.&lt;br /&gt;
&lt;br /&gt;
When point is use, an attribute score will mention the amount of point&lt;br /&gt;
to give.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;3&amp;quot; count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- The target receives 3 points and is good for 2 usages --&amp;gt;&lt;br /&gt;
  &amp;lt;/Effect&amp;gt;&lt;br /&gt;
  &amp;lt;Effect ...&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;/Effect&amp;gt;&lt;br /&gt;
&amp;lt;/Target&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Effect effect=&amp;quot;setting&amp;quot; settingName=&amp;quot;cycle_speed&amp;quot; settingValue=&amp;quot;100&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ZoneInfluence ===&lt;br /&gt;
&lt;br /&gt;
Inside the User element, the element ZoneInfluence and MonitorInfluence are use to affect back game element. ZoneInfluence allows to affect a zone in play. The name attribute must match exactly a zone&#039;s name elsewhere in the map.&lt;br /&gt;
&lt;br /&gt;
The possible thing to affect on a zone are:&lt;br /&gt;
*Rotation with attribute rotationSpeed and rotationAcceleration&lt;br /&gt;
*Radius with attribute radius&lt;br /&gt;
*Point with attribute x and y&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ZoneInfluence name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Rotation rotationSpeed=&amp;quot;1&amp;quot; rotationAcceleration=&amp;quot;-0.2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;100&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
  &amp;lt;ZoneInfluence name=&amp;quot;blueFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MonitorInfluence ===&lt;br /&gt;
&lt;br /&gt;
Monitors are simple valiables that can be affected by interaction with different zones. The old &amp;quot;fortress&amp;quot; zone is to be considered as a zone where being inside slowly influence its monitor. Monitors are to be inserted in the map at the same level as Zone. Monitor have a name that is used to refer to from the MonitorInfluence, a initial value, and a drift, that slowly move the value, low and high, which clamp the monitor&#039;s value between their owns.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Field&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
  &amp;lt;Monitor name=&amp;quot;monitorFortressRed&amp;quot; init=&amp;quot;0.2&amp;quot; drift=&amp;quot;-0.1&amp;quot; low=&amp;quot;0.0&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- This monitor&#039;s value is initialised at 0.2, will slowly&lt;br /&gt;
  change at the rate of -0.1 per second, and will be clamped in the&lt;br /&gt;
  range [0.0, 1.0]. --&amp;gt;&lt;br /&gt;
  &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Field&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Monitor as different rules that can be used to inspect and react on its value. They are OnOver, OnUnder, InRange and OutsideRange. Any amount of rules can be used in a monitor.&lt;br /&gt;
&lt;br /&gt;
*OnOver has an attribute named value and will be used when the monitor&#039;s value exceed it,&lt;br /&gt;
*OnUnder has an attribute named value and will be used when the monitor&#039;s value is under it,&lt;br /&gt;
*InRange has attributes low and high and will be used when the monitor&#039;s value fall between both&lt;br /&gt;
*OutRange has attributes low and high and will be used when the monitor&#039;s value is not falling between both&lt;br /&gt;
&lt;br /&gt;
The monitors&#039; rules are similar to the zone&#039;s rule in that they hold EffectGroups that are inspected when the rule conditions are met.&lt;br /&gt;
&lt;br /&gt;
What differs a Monitor from a zone regarding to EffectGroup is who are considered players to be inspected as users. Anyone who contributed to a monitor during a game time step is registered, along with if the contribution was positive (conquering) or negative (defending), and if they where marked. This information is passed along up to the User element. There it can be used on additional tests to determine a valid user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Monitor name=&amp;quot;monitorFortressRed&amp;quot; init=&amp;quot;0.2&amp;quot; drift=&amp;quot;-0.1&amp;quot; low=&amp;quot;0.0&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;OnOver value=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;EffectGroup ...&amp;gt;&lt;br /&gt;
      &amp;lt;User user=&amp;quot;...&amp;quot; positive=&amp;quot;true&amp;quot; marked=&amp;quot;ignore&amp;quot;&amp;gt;&lt;br /&gt;
        ... &amp;lt;!-- to be a valid user, the player must have contributed&lt;br /&gt;
        to this monitor, match the user rule AND have contributed in a&lt;br /&gt;
        positive (conquest) fashion --&amp;gt;&lt;br /&gt;
      &amp;lt;/User&amp;gt;&lt;br /&gt;
      &amp;lt;User ...&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
      &amp;lt;/User&amp;gt;&lt;br /&gt;
    &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
  &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
&amp;lt;/Monitor&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== User ====&lt;br /&gt;
&lt;br /&gt;
The User element always have these attributes, but outside of an EffectGroup from a Monitor, this is always ignored.&lt;br /&gt;
&lt;br /&gt;
MonitorInfluence element is the one where one describe how to affect a monitor. It has an attribute name to point to the monitor to influence. It has a marked attribute which is a Triad, ie: allows for the value true, false or ignore. Players using this MonitorInfluence will carry this mark into their contribution to the monitor.&lt;br /&gt;
&lt;br /&gt;
There are 3 ways to influence the value of a monitor:&lt;br /&gt;
*1 the attribute influenceSlide will affect the monitor&#039;s value in a fashion proportional to the time passed in the zone. This is how the classical fortress operates. This is the same as saying influenceSlide * duration of the current game time step.&lt;br /&gt;
*2 the attribute influenceAdd will affect the monitor&#039;s value by this amount. This is NOT affected by time.&lt;br /&gt;
*3 the attribute influenceSet will set the monitor&#039;s value immediatly to this value.&lt;br /&gt;
&lt;br /&gt;
These can of course be used simulteanously. It is important here that&lt;br /&gt;
attributes that are not desired should not be defined, rather than&lt;br /&gt;
defined at a default value.&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User ...&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressRed&amp;quot; marked=&amp;quot;true&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;!-- conquer the fortress at a rate of 0.5 per second --&amp;gt;&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressGreen&amp;quot; marked=&amp;quot;true&amp;quot; influenceAdd=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;!-- monitorFortressGreen&#039;s value is raised by 2 --&amp;gt;&lt;br /&gt;
  &amp;lt;MonitorInfluence name=&amp;quot;monitorFortressBlue&amp;quot; influenceSet=&amp;quot;0.0&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Reset&#039;s BLUE&#039;s zone to 0 --&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quiz ==&lt;br /&gt;
Respond on the forums after reading through this entire page with any ideas or questions of your own.(Optional)&lt;br /&gt;
&lt;br /&gt;
1 Are you able to express some new ideas with it?&lt;br /&gt;
&lt;br /&gt;
2 Do you see items that could be added, either now or as a later&lt;br /&gt;
version that could improve its value?&lt;br /&gt;
&lt;br /&gt;
3 Anything else?&lt;br /&gt;
&lt;br /&gt;
-ph&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
An example might help you get through the mess of the description&lt;br /&gt;
&lt;br /&gt;
Its blue vs red Each team has zones in opposing corners which are interconnected. As they get conquered, they jump toward the center.&lt;br /&gt;
&lt;br /&gt;
For your convenience:&lt;br /&gt;
MAP_FILE philippeqc/zone/DoubleZoneJumping-1.aamap.xml&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.3.1-a.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;DoubleZoneJumping&amp;quot; version=&amp;quot;1&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;zone&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
  Double fortress exist at opposing corners.&lt;br /&gt;
  As they are conquered, they slowly move to the center of the map.&lt;br /&gt;
  This map was created when the team code was still not available,&lt;br /&gt;
  so exact match association to player name is required.&lt;br /&gt;
 &lt;br /&gt;
  Blue players: azure,cobalt,midnight,royal   &lt;br /&gt;
  Red players : cerise,mauve,rust,sangria&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  &amp;lt;Map version=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
           Converted to XML by philippeqc.&lt;br /&gt;
           License: Public Domain. Do with it what you want.&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
    &amp;lt;World&amp;gt;&lt;br /&gt;
      &amp;lt;Field&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;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;0&amp;quot;  y=&amp;quot;500&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;500&amp;quot;  y=&amp;quot;0&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;Zone name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;1.0&amp;quot; green=&amp;quot;0.1&amp;quot; blue=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;-0.25&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;1.0&amp;quot; green=&amp;quot;0.1&amp;quot; blue=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;-0.25&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Monitor name=&amp;quot;mRed&amp;quot; init=&amp;quot;0.0&amp;quot; drift=&amp;quot;-0.1&amp;quot; &amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.0&amp;quot; high=&amp;quot;0.30&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                 &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                 &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;Point x=&amp;quot;400&amp;quot; y=&amp;quot;400&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                 &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.4&amp;quot; high=&amp;quot;0.60&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;150&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;350&amp;quot; y=&amp;quot;350&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.7&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&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;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;300&amp;quot; y=&amp;quot;300&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;OnOver value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; count=&amp;quot;2&amp;quot; score=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
        &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Same thing for the blue team now --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;0.10&amp;quot; green=&amp;quot;0.10&amp;quot; blue=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;-0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;0.10&amp;quot; green=&amp;quot;0.10&amp;quot; blue=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;-0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Monitor name=&amp;quot;mBlue&amp;quot; init=&amp;quot;0.0&amp;quot; drift=&amp;quot;-0.1&amp;quot; &amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.0&amp;quot; high=&amp;quot;0.30&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;400&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;400&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.4&amp;quot; high=&amp;quot;0.60&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;150&amp;quot; y=&amp;quot;350&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;350&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.7&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;200&amp;quot; y=&amp;quot;300&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;300&amp;quot; y=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;OnOver value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; count=&amp;quot;2&amp;quot; score=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
        &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/Field&amp;gt;&lt;br /&gt;
    &amp;lt;/World&amp;gt;&lt;br /&gt;
  &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
is now&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; alpha=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also added Color as a child of ZoneInfluence:&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;  &amp;lt;ZoneInfluence name=&amp;quot;blueFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; alpha=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This map has 4 zones that activate one another. Only one should be present, and when not there, they are put outside of the arena. They are activated in a crossed fashion.&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;zone&amp;quot; version=&amp;quot;d&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;Map version=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
           Converted to XML by philippeqc.&lt;br /&gt;
           License: Public Domain. Do with it what you want.&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
    &amp;lt;World&amp;gt;&lt;br /&gt;
      &amp;lt;Field&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;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;0&amp;quot;  y=&amp;quot;500&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;500&amp;quot;  y=&amp;quot;0&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;
        &amp;lt;Zone name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
      &amp;lt;/Field&amp;gt;&lt;br /&gt;
    &amp;lt;/World&amp;gt;&lt;br /&gt;
  &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Its a really crude idea, that has been retaken in a much better way by wrt. But it show some things that can be done (influencing individual zones, and using ZoneInfluence from one zone to affect another).&lt;br /&gt;
&lt;br /&gt;
Targets have a count:&lt;br /&gt;
Code:&lt;br /&gt;
The target has an attribute count that will limit the number of time&lt;br /&gt;
it is called. Not having the attribute or setting it to -1 means infinite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-ph&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Zones_v2&amp;diff=17857</id>
		<title>Zones v2</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Zones_v2&amp;diff=17857"/>
		<updated>2007-04-17T18:19:57Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Updated the formating of the examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Preamble ==&lt;br /&gt;
&lt;br /&gt;
You will note that the examples below dont sound that fun. I&#039;d like to think its because my creative power went into building a good system, and now there is little left to put on examples. But I&#039;m sure you will find interesting ways to use the mechanisms in here. My goal with this was to be able to have zones that could have different effect depending on who would use them. For example, having a  fortress that team Blue could conquer, but only 2 of the players of team Red could actually defend. The other Red could still circle it and block the enemy, but they could not lower its value actively. Everything described here works. There are still glitches small and not so small. The code is in my private branch, but feel free to grab a local copy if you want to play with it.&lt;br /&gt;
&lt;br /&gt;
The format is anything but closed. I&#039;d like to hear your opinion on it too (yes it is a PITA to write, but if you have a constructive remark about that, I&#039;d like to know it) &lt;br /&gt;
&lt;br /&gt;
-ph&lt;br /&gt;
&lt;br /&gt;
Most of this is from a forum post by philippeqc. I reworded some stuff and formatted a bit for the wiki. Some stuff might have gotten lost or reworded wrongly so cross refrence with the post if the wording gets hazy and/or just to double check @ http://forums.armagetronad.net/viewtopic.php?p=77491#77491. Some stuff might be in the wrong place. --[[User:Your mom|Your mom]] 11:42, 30 July 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zone element ==&lt;br /&gt;
&lt;br /&gt;
Individual zones may have a name. Entering a name is optional, and re-using a name will be considered to mean &amp;quot;add/override with the following information&amp;quot;. Dont rely on this behavior for anything, in other words &#039;&#039;&#039;Dont re-use the same name.&#039;&#039;&#039; All zones need a shape defined. At the moment only one shape exists, the ShapeCircle. More shapes are planned in the future and are ToDo&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
 &amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
  &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
 &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules and EffectGroups ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A zone can have up to 4 different &amp;quot;rules&amp;quot; (need better name ToDo). Enter, Inside, Leave, Outside. It classifies when the held elements should be inspected. Inside each of the &amp;quot;rules&amp;quot;, one can define EffectGroups. EffectGroup(s) are the fundamental building blocks of  this new system. It associate owners with consequences. Note that ownership is part of effectGroup(s), &#039;&#039;NOT&#039;&#039; the zone. So a zone may have multiple effectGroup(s), each with unique or interlapping owners. There are 2 types of owners: owner (individuals) and ownerTeam (every member of a team). It is possible to define 0,1 or many for each items.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;HACK:&lt;br /&gt;
ATM, only owner is supported, and it must be an exact match with a&lt;br /&gt;
player&#039;s name to associated the effect.&lt;br /&gt;
The real solution will translate the labels used to players based on&lt;br /&gt;
some other logic depending on &amp;quot;game type&amp;quot;. This is to be defined&lt;br /&gt;
later.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;HACK:&lt;br /&gt;
It should be possible to associate individual with teams in some part&lt;br /&gt;
of the map. In this text, I will user lowercase color name + number for&lt;br /&gt;
individual, and uppercase color name for teams. So the individual&lt;br /&gt;
red1, red7 and red90210 should be considered as players of the team&lt;br /&gt;
RED. I will also allow myself to insert _description_ in names to help&lt;br /&gt;
the reader when appropriate.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ShapeCircle ...&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
&amp;lt;Enter&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;red1,red2&amp;quot; ownerTeam=&amp;quot;BLUE,YELLOW&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;&amp;quot; ownerTeam=&amp;quot;RED&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;/Enter&amp;gt;&lt;br /&gt;
&amp;lt;Leave&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;green7&amp;quot; ownerTeam=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;/Leave&amp;gt;&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User element ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inside the EffectGroup, elements User are set. This element offers different readily made rules to determine if a player in the &amp;quot;rule&amp;quot; condition for the zone, is allowed to be considered a user. This is decided based from the following information: owner, ownerTeam and the player matching the rule. Two other conditions can be set for a player to be considered a valid user: positive and marked. These element are of type Triad. The possible values are true, false and ignore. We will come back to these later. If the current player is found to be valid, the processing will continue to the child elements. Otherwise, nothing happens. A valid user will be called triggerer from now on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following users are currently implemented:&lt;br /&gt;
* all: Anybody can be considered a valid user,&lt;br /&gt;
* owner: only a player direcly in the owner list can be considered a valid user,&lt;br /&gt;
* ownerTeam: only a player member of a team mentionned in the ownerTeam list can be considered a valid user,&lt;br /&gt;
* allButOwner only a player NOT mentioned in the owner list can be considered a valid user,&lt;br /&gt;
* allButTeamOwner only a player NOT member of a team mentioned in the ownerTeam list can be considered a valid user, (TO COME, NOT IMPLEMENTED YET)&lt;br /&gt;
* anotherTeammate only a player in the same team as one of the individual owner can be considered a valid user (TO COME, NOT IMPLEMENTED YET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;EffectGroup owner=&amp;quot;red1,red2&amp;quot; ownerTeam=&amp;quot;BLUE,YELLOW&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;all&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Anybody can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;allButOwner&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Anybody but red1 and red2 can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup owner=&amp;quot;&amp;quot; ownerTeam=&amp;quot;RED&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;owner&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- No effect as the owner list is empty --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
  &amp;lt;User user=&amp;quot;ownerTeam&amp;quot; &amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Only players of the RED team can trigger this --&amp;gt;&lt;br /&gt;
  &amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inside a User element, it is possible to make use of 3 different&lt;br /&gt;
elements. Target, ZoneInfluence and MonitorInfluence.&lt;br /&gt;
&lt;br /&gt;
=== Target ===&lt;br /&gt;
&lt;br /&gt;
The Target element will take the information of the valid user, and&lt;br /&gt;
calculate who will receive the effect of the zone. Depending on the&lt;br /&gt;
described target rule to use and the state of the game, the calculated&lt;br /&gt;
target can be from no players to everybody in game.&lt;br /&gt;
&lt;br /&gt;
The currently implemented target rules are :&lt;br /&gt;
&lt;br /&gt;
*self : the triggerer himself&lt;br /&gt;
*teammate : a randomly selected teammate of the triggerer&lt;br /&gt;
*team : all the member of the team of the triggerer&lt;br /&gt;
*all : everybody in the game&lt;br /&gt;
*allButSelf : everybody in the game BUT the triggerer&lt;br /&gt;
*another : a randomly selected player that is not the triggerer&lt;br /&gt;
*ownerTeamTeammate : a randomly selected player member of one of the teams mentioned in the teamOwner list.&lt;br /&gt;
*owner : all the players owning the effectGroup&lt;br /&gt;
*ownerteam : all the players member of the team owning the effectGroup&lt;br /&gt;
*ownerteamteammate : a single player member from a owning team&lt;br /&gt;
*anydead : any single dead player&lt;br /&gt;
*alldead : all the dead players&lt;br /&gt;
*singledeadowner : one of the owners that is dead&lt;br /&gt;
*anotherteammatedead : a single player member of the team of the triggerer that is dead&lt;br /&gt;
*anothernotteammatedead : a single player that is not member of the team of the triggerer and that is dead&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
*Much more are detailed in a document named zones.txt hidden somewhere&lt;br /&gt;
on the forum.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the targets are selected, they all are applied all the effects&lt;br /&gt;
described under the Target element.&lt;br /&gt;
&lt;br /&gt;
Nota: In a User element, it is possible to user any amount of Target,&lt;br /&gt;
ZoneInfluence and MonitorInfluence.&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User user=&amp;quot;ownerTeam&amp;quot; &amp;gt;&lt;br /&gt;
  &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- The player that is member of one of the team mentionned&lt;br /&gt;
  and that triggered the zone receive the effect --&amp;gt;&lt;br /&gt;
  &amp;lt;/Target&amp;gt;&lt;br /&gt;
  &amp;lt;Target target=&amp;quot;another&amp;quot;&amp;gt;&lt;br /&gt;
  ... &amp;lt;!-- Some random player will receive the effect described --&amp;gt;&lt;br /&gt;
  &amp;lt;/Target&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Effect ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Effect element hold specific effects. The attribute count can limit the number of times a specific effect can be used. By default, the count is unlimited.&lt;br /&gt;
&lt;br /&gt;
valid effect currently implemented are:&lt;br /&gt;
*win : win the round&lt;br /&gt;
*death : kill the target(s)&lt;br /&gt;
*point : give points to the target(s)&lt;br /&gt;
*respawnplayer : Respawns target(s)&lt;br /&gt;
*brakerecharge : Refills target(s) cycle brake&lt;br /&gt;
*rubberrecharge : Refills target(s) cycle rubber&lt;br /&gt;
*setting : has 2 attributes ; settingName &amp;amp; settingValue&lt;br /&gt;
&lt;br /&gt;
new attribute for all effects: description&lt;br /&gt;
&lt;br /&gt;
When the effect is triggered, the message is displayed on the console. Somehow I&#039;m not able to do the &amp;quot;parsing&amp;quot; similar to when points are given (player x received y points because he is sooo leet). That should come.&lt;br /&gt;
&lt;br /&gt;
When point is use, an attribute score will mention the amount of point&lt;br /&gt;
to give.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;3&amp;quot; count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
... &amp;lt;!-- The target receives 3 points and is good for 2 usages --&amp;gt;&lt;br /&gt;
&amp;lt;/Effect&amp;gt;&lt;br /&gt;
&amp;lt;Effect ...&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Effect&amp;gt;&lt;br /&gt;
&amp;lt;/Target&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Effect effect=&amp;quot;setting&amp;quot; settingName=&amp;quot;cycle_speed&amp;quot; settingValue=&amp;quot;100&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ZoneInfluence ===&lt;br /&gt;
&lt;br /&gt;
Inside the User element, the element ZoneInfluence and MonitorInfluence are use to affect back game element. ZoneInfluence allows to affect a zone in play. The name attribute must match exactly a zone&#039;s name elsewhere in the map.&lt;br /&gt;
&lt;br /&gt;
The possible thing to affect on a zone are:&lt;br /&gt;
*Rotation with attribute rotationSpeed and rotationAcceleration&lt;br /&gt;
*Radius with attribute radius&lt;br /&gt;
*Point with attribute x and y&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ZoneInfluence name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Rotation rotationSpeed=&amp;quot;1&amp;quot; rotationAcceleration=&amp;quot;-0.2&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Radius radius=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;100&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
&amp;lt;ZoneInfluence name=&amp;quot;blueFortress&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MonitorInfluence ===&lt;br /&gt;
&lt;br /&gt;
Monitors are simple valiables that can be affected by interaction with different zones. The old &amp;quot;fortress&amp;quot; zone is to be considered as a zone where being inside slowly influence its monitor. Monitors are to be inserted in the map at the same level as Zone. Monitor have a name that is used to refer to from the MonitorInfluence, a initial value, and a drift, that slowly move the value, low and high, which clamp the monitor&#039;s value between their owns.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Field&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;Monitor name=&amp;quot;monitorFortressRed&amp;quot; init=&amp;quot;0.2&amp;quot; drift=&amp;quot;-0.1&amp;quot; low=&amp;quot;0.0&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
... &amp;lt;!-- This monitor&#039;s value is initialised at 0.2, will slowly&lt;br /&gt;
change at the rate of -0.1 per second, and will be clamped in the&lt;br /&gt;
range [0.0, 1.0]. --&amp;gt;&lt;br /&gt;
&amp;lt;/Monitor&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Field&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Monitor as different rules that can be used to inspect and react on its value. They are OnOver, OnUnder, InRange and OutsideRange. Any amount of rules can be used in a monitor.&lt;br /&gt;
&lt;br /&gt;
*OnOver has an attribute named value and will be used when the monitor&#039;s value exceed it,&lt;br /&gt;
*OnUnder has an attribute named value and will be used when the monitor&#039;s value is under it,&lt;br /&gt;
*InRange has attributes low and high and will be used when the monitor&#039;s value fall between both&lt;br /&gt;
*OutRange has attributes low and high and will be used when the monitor&#039;s value is not falling between both&lt;br /&gt;
&lt;br /&gt;
The monitors&#039; rules are similar to the zone&#039;s rule in that they hold EffectGroups that are inspected when the rule conditions are met.&lt;br /&gt;
&lt;br /&gt;
What differs a Monitor from a zone regarding to EffectGroup is who are considered players to be inspected as users. Anyone who contributed to a monitor during a game time step is registered, along with if the contribution was positive (conquering) or negative (defending), and if they where marked. This information is passed along up to the User element. There it can be used on additional tests to determine a valid user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Monitor name=&amp;quot;monitorFortressRed&amp;quot; init=&amp;quot;0.2&amp;quot; drift=&amp;quot;-0.1&amp;quot; low=&amp;quot;0.0&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;OnOver value=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;EffectGroup ...&amp;gt;&lt;br /&gt;
&amp;lt;User user=&amp;quot;...&amp;quot; positive=&amp;quot;true&amp;quot; marked=&amp;quot;ignore&amp;quot;&amp;gt;&lt;br /&gt;
... &amp;lt;!-- to be a valid user, the player must have contributed&lt;br /&gt;
to this monitor, match the user rule AND have contributed in a&lt;br /&gt;
positive (conquest) fashion --&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;User ...&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/User&amp;gt;&lt;br /&gt;
&amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
&amp;lt;/OnOver&amp;gt;&lt;br /&gt;
&amp;lt;/Monitor&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== User ====&lt;br /&gt;
&lt;br /&gt;
The User element always have these attributes, but outside of an EffectGroup from a Monitor, this is always ignored.&lt;br /&gt;
&lt;br /&gt;
MonitorInfluence element is the one where one describe how to affect a monitor. It has an attribute name to point to the monitor to influence. It has a marked attribute which is a Triad, ie: allows for the value true, false or ignore. Players using this MonitorInfluence will carry this mark into their contribution to the monitor.&lt;br /&gt;
&lt;br /&gt;
There are 3 ways to influence the value of a monitor:&lt;br /&gt;
*1 the attribute influenceSlide will affect the monitor&#039;s value in a fashion proportional to the time passed in the zone. This is how the classical fortress operates. This is the same as saying influenceSlide * duration of the current game time step.&lt;br /&gt;
*2 the attribute influenceAdd will affect the monitor&#039;s value by this amount. This is NOT affected by time.&lt;br /&gt;
*3 the attribute influenceSet will set the monitor&#039;s value immediatly to this value.&lt;br /&gt;
&lt;br /&gt;
These can of course be used simulteanously. It is important here that&lt;br /&gt;
attributes that are not desired should not be defined, rather than&lt;br /&gt;
defined at a default value.&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;User ...&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;MonitorInfluence name=&amp;quot;monitorFortressRed&amp;quot; marked=&amp;quot;true&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;!-- conquer the fortress at a rate of 0.5 per second --&amp;gt;&lt;br /&gt;
&amp;lt;MonitorInfluence name=&amp;quot;monitorFortressGreen&amp;quot; marked=&amp;quot;true&amp;quot; influenceAdd=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;!-- monitorFortressGreen&#039;s value is raised by 2 --&amp;gt;&lt;br /&gt;
&amp;lt;MonitorInfluence name=&amp;quot;monitorFortressBlue&amp;quot; influenceSet=&amp;quot;0.0&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;!-- Reset&#039;s BLUE&#039;s zone to 0 --&amp;gt;&lt;br /&gt;
&amp;lt;/User&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quiz ==&lt;br /&gt;
Respond on the forums after reading through this entire page with any ideas or questions of your own.(Optional)&lt;br /&gt;
&lt;br /&gt;
1 Are you able to express some new ideas with it?&lt;br /&gt;
&lt;br /&gt;
2 Do you see items that could be added, either now or as a later&lt;br /&gt;
version that could improve its value?&lt;br /&gt;
&lt;br /&gt;
3 Anything else?&lt;br /&gt;
&lt;br /&gt;
-ph&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
An example might help you get through the mess of the description&lt;br /&gt;
&lt;br /&gt;
Its blue vs red Each team has zones in opposing corners which are interconnected. As they get conquered, they jump toward the center.&lt;br /&gt;
&lt;br /&gt;
For your convenience:&lt;br /&gt;
MAP_FILE philippeqc/zone/DoubleZoneJumping-1.aamap.xml&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.3.1-a.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;DoubleZoneJumping&amp;quot; version=&amp;quot;1&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;zone&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
  Double fortress exist at opposing corners.&lt;br /&gt;
  As they are conquered, they slowly move to the center of the map.&lt;br /&gt;
  This map was created when the team code was still not available,&lt;br /&gt;
  so exact match association to player name is required.&lt;br /&gt;
 &lt;br /&gt;
  Blue players: azure,cobalt,midnight,royal   &lt;br /&gt;
  Red players : cerise,mauve,rust,sangria&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  &amp;lt;Map version=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
           Converted to XML by philippeqc.&lt;br /&gt;
           License: Public Domain. Do with it what you want.&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
    &amp;lt;World&amp;gt;&lt;br /&gt;
      &amp;lt;Field&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;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;0&amp;quot;  y=&amp;quot;500&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;500&amp;quot;  y=&amp;quot;0&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;Zone name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;1.0&amp;quot; green=&amp;quot;0.1&amp;quot; blue=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;-0.25&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;1.0&amp;quot; green=&amp;quot;0.1&amp;quot; blue=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;-0.25&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mRed&amp;quot; influenceSlide=&amp;quot;0.5&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Monitor name=&amp;quot;mRed&amp;quot; init=&amp;quot;0.0&amp;quot; drift=&amp;quot;-0.1&amp;quot; &amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.0&amp;quot; high=&amp;quot;0.30&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                 &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                 &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;Point x=&amp;quot;400&amp;quot; y=&amp;quot;400&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                 &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.4&amp;quot; high=&amp;quot;0.60&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;150&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;350&amp;quot; y=&amp;quot;350&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.7&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&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;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;300&amp;quot; y=&amp;quot;300&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;OnOver value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; count=&amp;quot;2&amp;quot; score=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zRed2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
        &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Same thing for the blue team now --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;0.10&amp;quot; green=&amp;quot;0.10&amp;quot; blue=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;-0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;49&amp;quot; red=&amp;quot;0.10&amp;quot; green=&amp;quot;0.10&amp;quot; blue=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Inside&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;azure,cobalt,midnight,royal&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;MonitorInfluence name=&amp;quot;mBlue&amp;quot; influenceSlide=&amp;quot;-0.3&amp;quot; marked=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/User&amp;gt;&lt;br /&gt;
              &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Inside&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Monitor name=&amp;quot;mBlue&amp;quot; init=&amp;quot;0.0&amp;quot; drift=&amp;quot;-0.1&amp;quot; &amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.0&amp;quot; high=&amp;quot;0.30&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;100&amp;quot; y=&amp;quot;400&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;400&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.4&amp;quot; high=&amp;quot;0.60&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;150&amp;quot; y=&amp;quot;350&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;350&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;InRange low=&amp;quot;0.7&amp;quot; high=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;200&amp;quot; y=&amp;quot;300&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;300&amp;quot; y=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;49&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/InRange&amp;gt;&lt;br /&gt;
          &amp;lt;OnOver value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;cerise,mauve,rust,sangria&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;owner&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; count=&amp;quot;2&amp;quot; score=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue1&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;zBlue2&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/OnOver&amp;gt;&lt;br /&gt;
        &amp;lt;/Monitor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/Field&amp;gt;&lt;br /&gt;
    &amp;lt;/World&amp;gt;&lt;br /&gt;
  &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ex:&lt;br /&gt;
Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
is now&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Zone name=&amp;quot;redFortress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; alpha=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Zone&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also added Color as a child of ZoneInfluence:&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;  &amp;lt;ZoneInfluence name=&amp;quot;blueFortress&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Radius radius=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot; alpha=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ZoneInfluence&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This map has 4 zones that activate one another. Only one should be present, and when not there, they are put outside of the arena. They are activated in a crossed fashion.&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;zone&amp;quot; version=&amp;quot;d&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;Map version=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
           Converted to XML by philippeqc.&lt;br /&gt;
           License: Public Domain. Do with it what you want.&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
    &amp;lt;World&amp;gt;&lt;br /&gt;
      &amp;lt;Field&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;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;0&amp;quot;  y=&amp;quot;500&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;500&amp;quot;  y=&amp;quot;0&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;
        &amp;lt;Zone name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;450&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;NW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;450&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Zone name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ShapeCircle radius=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Color red=&amp;quot;0.988&amp;quot; green=&amp;quot;0.059&amp;quot; blue=&amp;quot;0.753&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
          &amp;lt;Enter&amp;gt;&lt;br /&gt;
            &amp;lt;EffectGroup owners=&amp;quot;&amp;quot; teamOwners=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;User user=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Reward user --&amp;gt;&lt;br /&gt;
                &amp;lt;Target target=&amp;quot;self&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Effect effect=&amp;quot;point&amp;quot; score=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Target&amp;gt;&lt;br /&gt;
                &amp;lt;!-- Hide ourself --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SE&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;-150&amp;quot; y=&amp;quot;-150&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Unhide another --&amp;gt;&lt;br /&gt;
                &amp;lt;ZoneInfluence name=&amp;quot;SW&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;Point x=&amp;quot;50&amp;quot; y=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;Radius radius=&amp;quot;29&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/ZoneInfluence&amp;gt;&lt;br /&gt;
              &amp;lt;/User&amp;gt;&lt;br /&gt;
            &amp;lt;/EffectGroup&amp;gt;&lt;br /&gt;
          &amp;lt;/Enter&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
      &amp;lt;/Field&amp;gt;&lt;br /&gt;
    &amp;lt;/World&amp;gt;&lt;br /&gt;
  &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Its a really crude idea, that has been retaken in a much better way by wrt. But it show some things that can be done (influencing individual zones, and using ZoneInfluence from one zone to affect another).&lt;br /&gt;
&lt;br /&gt;
Targets have a count:&lt;br /&gt;
Code:&lt;br /&gt;
The target has an attribute count that will limit the number of time&lt;br /&gt;
it is called. Not having the attribute or setting it to -1 means infinite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-ph&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=FAQ&amp;diff=17844</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=FAQ&amp;diff=17844"/>
		<updated>2007-04-14T11:10:12Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: /* Added description how to start the dedicated server on Max OS, copied from  a post by DDMJ*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Following is a list of Frequently Asked Questions.  Obviously, this is what people ask us the most.  Before asking a question, you should give this list a good read.  If your question isn&#039;t answered here, then by all means come to [[IRC_Channel|IRC]] or the forums or something and ask it.  However, if your question is answered here, don&#039;t be surprised if you get an abrupt or downright rude response.&lt;br /&gt;
&lt;br /&gt;
While we try to give the best answers to the questions asked regardless of pretty much anything else, however there are some general guidelines to follow when asking questions not on this list:&lt;br /&gt;
&lt;br /&gt;
* Don&#039;t ask stupidly.  Ex:  Why can&#039;t I get color on my walls?  (Good example: How do I have a cycle and wall color that are different from each other?)&lt;br /&gt;
* Provide as much information as you have that&#039;s relevant to the question.  Ex: Why doesn&#039;t my server work?  (Good example: My server starts, then stops.  Here&#039;s the errors from the console.  Any idea why it&#039;s shutting down right away?)&lt;br /&gt;
&lt;br /&gt;
For a more detailed discussion, check [http://www.catb.org/~esr/faqs/smart-questions.html this page], with two important points.  First, the page linked is not in any way affiliated with Armagetron Advanced and therefore they &#039;&#039;&#039;can&#039;t answer your question&#039;&#039;&#039;.  Second, the article is probably a bit more negative than it actually works around here.  For the most part, if you can&#039;t ask the question in the smartest possible way, we&#039;d rather you ask the best way that you can than live in the dark and suffer.  Even if you&#039;re an idiot, we still want you to be a comfortable idiot.&lt;br /&gt;
&lt;br /&gt;
If you think your question is actually a bug report and you&#039;ve only just started with the game, chances are it&#039;s not.  We&#039;ll not pretend the game is bug-free, but it is very stable and efficient.  The chances that a new player to the game has discovered a previously unknown bug in a stable release are very very slim.  Astronomically slim, in fact.  In any case, if you wish to continue thinking you have done so, please start with a question that describes what you see and ends with &amp;quot;Is this expected behavior?&amp;quot;  That&#039;s much more likely to get a satisfactory response than &amp;quot;This game sucks!  It has this bug and that bug and it just doesn&#039;t work.  I downloaded it today for the first time on my Windows box, do you not care about Windows?&amp;quot;  Also, since you suspect you found a bug, include all the information a bug report should have.  If you&#039;re unsure, please [http://www.chiark.greenend.org.uk/~sgtatham/bugs.html consult this page] for the best results.  Note, the author of that page is also unaffiliated with Armagetron Advanced, and therefore he will reject any bug reports you send him about our program.&lt;br /&gt;
&lt;br /&gt;
Finally, this FAQ, like all FAQs, is a work in progress.  If it&#039;s not as big as you&#039;re used to seeing, it&#039;s because it&#039;s probably a younger FAQ than what you&#039;re used to seeing.  That&#039;s ok.  We&#039;ll add to it over time, and it&#039;ll get bigger and bigger until the server explodes with so many frequently asked questions that all of the developers decide to pitch in and buy a Caribbean island.  Mmm, coconuts.&lt;br /&gt;
= What is Armagetronad =&lt;br /&gt;
&lt;br /&gt;
[[About | Please read this.]]&lt;br /&gt;
&lt;br /&gt;
= Terminology =&lt;br /&gt;
&lt;br /&gt;
== What is a client?  What is a server?  What&#039;s the difference? ==&lt;br /&gt;
&lt;br /&gt;
Simply put, the game client is the program you run on your computer.  The game server runs on somebody else&#039;s computer.  The difference between the two is like the difference between, say, a lawyer and his client.  The lawyer would be the server, the one who knows all about law and stuff.  So the difference is just like in real life where the terms come from.  The client requests a service from someone who serves.  In our case, that service is a game that is served from a machine running a program called a &amp;quot;server&amp;quot;, but if you requested the same service from a person in a casino, you&#039;d still be running a game client.&lt;br /&gt;
&lt;br /&gt;
== My client can be a server, though, it says so right here. ==&lt;br /&gt;
&lt;br /&gt;
That&#039;s not a question.  In any case, the game client can act as a server if you press &amp;quot;Host Game&amp;quot; from the Internet Game menu.  So technically the client is a client/server hybrid, but let&#039;s not get too technical.&lt;br /&gt;
&lt;br /&gt;
== So are all game servers just clients where people pressed &amp;quot;Host Game&amp;quot;? ==&lt;br /&gt;
&lt;br /&gt;
No.  This is where people get really confused, even to the point where they complain to server operators for doing exactly this thing.  No, most, if not all, game servers available through the master server run a special version of the program that has no graphical display, and no player can play on directly.  That is the server, commonly called the &amp;quot;dedicated server&amp;quot;.  You can run it too, if you&#039;d like.  Server operators chose to run this instead of the regular game client because it has a number of modifications that make it work better as a regular server, just like a mail server or a web server.  It is more convenient and makes for a more reliable game server to do so.&lt;br /&gt;
&lt;br /&gt;
= Installing the Game =&lt;br /&gt;
&lt;br /&gt;
== Where can I download Armagetron Advanced? ==&lt;br /&gt;
&lt;br /&gt;
That depends on what version you want to get. The current stable version is always available [http://www.armagetronad.net/downloads.php on the main web page] or [http://sourceforge.net/project/showfiles.php?group_id=110997 sourceforge]. The latest testing version on [http://beta.armagetronad.net AABeta].&lt;br /&gt;
&lt;br /&gt;
== I&#039;m running Windows, how do I install? ==&lt;br /&gt;
&lt;br /&gt;
Find the exe file you downloaded from the question and answer above this one and double click on it. Answer all dialog boxes with Yes/Next/Finish, whatever applies. On Windows XP, when you first run the game and try to connect to the Internet, a firewall warning will pop up; set it to allow access.&lt;br /&gt;
&lt;br /&gt;
== So, should I get the latest stable or latest development version? ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;re really asking this question and are not just browsing the FAQ, get the latest stable version.&lt;br /&gt;
&lt;br /&gt;
== Ok, but there are still so many different files to get, which one is right for me? ==&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#Terminology]] for choosing between Client and Server download. If in doubt, choose the Client. If you&#039;re running a PC with Windows, get the exe format, GCC or VC6 should not matter (please report it if only one of them works for you). If you&#039;ve got a Mac, get the dmg; there is a special build available for versions 10.2.8 of OS X. If you&#039;re running 32 bit Intel Linux, get the x86(_32) &amp;quot;package&amp;quot;. If you&#039;re running 64 bit AMD Linux, get the x86_64 &amp;quot;package&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m running Linux, but don&#039;t know whether it is 32 or 64 bit. How can I find out? ==&lt;br /&gt;
&lt;br /&gt;
On a console/terminal, type &amp;lt;pre&amp;gt;echo $MACHTYPE&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the output starts with x86_64, you have a 64 bit system. If it starts with i386, i486, i586 or i686 or possibly just x86 or x86_32, you have a 32 bit system. For anything else, we don&#039;t provide binary packages, you have to build from source. If the output is blank, the method failed. Then, see whether you have got the directory /usr/lib64 on your system. If yes, you have a 64 bit system, if no, it&#039;s 32 bit.&lt;br /&gt;
&lt;br /&gt;
== I have a Mac, how do I install? ==&lt;br /&gt;
&lt;br /&gt;
Mount the dmg file, and drag the Armagetron Advanced application to your hard-drive.&lt;br /&gt;
&lt;br /&gt;
== I have Linux, how do I install a binary? ==&lt;br /&gt;
&lt;br /&gt;
That depends on the distribution you are running. Check out the [[Linux Distribution Field Report]] for details.&lt;br /&gt;
&lt;br /&gt;
== I run a non-Linux UNIX or Linux on hardware not supported by your binary packages or the binaries don&#039;t work, how do I install from source? ==&lt;br /&gt;
&lt;br /&gt;
Basically, you fetch the .tbz2 source archive and do as the superuser root&lt;br /&gt;
&amp;lt;pre&amp;gt;tar -xjf &amp;lt;path to the tbz2 source archive you just fetched&amp;gt;&lt;br /&gt;
cd armagetronad-&amp;lt;VERSION&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
The configure script will tell you what you are missing. In this mode, you always need the &#039;development&#039; packages of our dependencies on most distributions.&lt;br /&gt;
The [[Linux Distribution Field Report]] may have some hints. Ask us if you get stuck.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m working on a Linux PC administered by someone else and don&#039;t have the root password, can I still install the game? ==&lt;br /&gt;
&lt;br /&gt;
Yes. The &amp;quot;package&amp;quot; binary files can install everything in your home directory. If you have to build from source, proceed as in the last FAQ,&lt;br /&gt;
but pass &#039;--prefix=$HOME/usr&#039; to ./configure and run the game later with&lt;br /&gt;
&#039;~/usr/bin/armagetronad&#039;, or run the game from the build directory with &#039;make run&#039;.&lt;br /&gt;
&lt;br /&gt;
== Where are the server sources? ==&lt;br /&gt;
&lt;br /&gt;
The server sources are the same as the client sources. You compile a server from them by giving the additional command line option &#039;--disable-glout&#039; to ./configure.&lt;br /&gt;
&lt;br /&gt;
== I heard about moviepacks (graphical modifications), how do I install them? ==&lt;br /&gt;
&lt;br /&gt;
See [[Customizing the game]].&lt;br /&gt;
&lt;br /&gt;
= Playing the Game =&lt;br /&gt;
&lt;br /&gt;
== How do I use a map? ==&lt;br /&gt;
&lt;br /&gt;
Read [[Playing Maps]], and please try to tell us why this question is asked so often and followed by &amp;quot;I read the whole wiki!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd takes most or all the CPU time, how come? ==&lt;br /&gt;
&lt;br /&gt;
AA takes all the CPU time it needs to simulate and render the scene as fast as you&#039;ll allow it to. There are two conditions under which that makes it take almost everything that is available:&lt;br /&gt;
* You set your graphics card driver not to wait for VSync. AA will then run at the highest possible framerate and therefore also use all the CPU time available. If you enable the FPS display in the HUD options and it shows more than 100 FPS, then that&#039;s your problem.&lt;br /&gt;
* When it tells your video card driver to update the screen now, the driver goes into a special CPU-hogging mode until the command is completed, even though all it does is sit around and wait. Both NVidia and ATI drivers are guilty of this. In the &amp;quot;Performance Tweaks&amp;quot; submenu of the graphics settings, there is the &amp;quot;Flush&amp;quot; menu item where you can tweak AA to not issue the problematic command (with possible side effects).&lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd is unplayable on my AMD Dual Core X2 System (might affect other Dual Cores) ==&lt;br /&gt;
&lt;br /&gt;
Symptoms:&lt;br /&gt;
*The console displays &amp;quot;Timer hick up&amp;quot;&lt;br /&gt;
*FPS are usually ok (above 30).&lt;br /&gt;
*might only occur in network games&lt;br /&gt;
*Game performance is very bad&lt;br /&gt;
&lt;br /&gt;
At least three solutions for this problem are available:&lt;br /&gt;
* To fix this problem use your TaskManager to set ArmagetronAd.exe&#039;s cpu affinity to a single CPU. &lt;br /&gt;
* Disable Cool &amp;amp; Quite in BIOS&lt;br /&gt;
* Install the necessary Microsoft Hotfixes and depending on your System you might have to update your bios and drivers too.&lt;br /&gt;
&lt;br /&gt;
Links (TODO replace links with links to better instructions!):&lt;br /&gt;
* [http://support.microsoft.com/default.aspx?scid=KB;en-us;896256 Microsoft Knowledge base Article about Q896256]&lt;br /&gt;
* [http://www.amd.com/en-us/Processors/TechnicalResources/0,,30_182_871_13118,00.html AMD Dual Core Optimizer] The fix is similiar to Microsofts, but only fixes a small part of it. The Microsoft patch also addresses power saving bugs (of Windows XP).&lt;br /&gt;
&lt;br /&gt;
*Details: Armagetron Advanced 0.2.8.x(?) or later uses the high precision timer on Windows if available. (TODO confirm) This can be a  problem on the new Dual Core Systems or malfunctioning Multiprocessor System. The Timer of each core runs at different speeds which results in a jumping timer! The AMD X2 Systems are affected because they have two separate timers for each CPU (Intels Core Duo CPUs share a single timer). The AMD X2 Systems are only affected with Cool &amp;amp; Quite power saving enabled otherwise both cores have the same timer speed. The Windows kernel schedules Armagetron Advanced between both cores which results in a jumping timer form Armagetron perspective.&lt;br /&gt;
&lt;br /&gt;
= Running a Server =&lt;br /&gt;
&lt;br /&gt;
== Which should I run?  The client in hosting mode, or the dedicated server? ==&lt;br /&gt;
&lt;br /&gt;
Generally this depends on how long you want the server to run at a time.  If you just want it running when you&#039;re playing, run the client in hosting mode, it&#039;s easier to deal with.  If you&#039;re running at a LAN party, you might also want to run the client in hosting mode.  But if you want to run a server that operates on the internet, reports to the master server, and runs 24 hours a day, 7 days a week (8 days in a leap week), then you should run the dedicated server.&lt;br /&gt;
&lt;br /&gt;
== How to start the dedicated server ==&lt;br /&gt;
&lt;br /&gt;
=== ... on Linux/Unix ===&lt;br /&gt;
This section needs to be written.&lt;br /&gt;
&lt;br /&gt;
=== ... on MS Windows ===&lt;br /&gt;
This section needs to be written.&lt;br /&gt;
&lt;br /&gt;
=== ... on Max OS X ===&lt;br /&gt;
There is a very easy way to run the dedicated server on Max OS:&lt;br /&gt;
*1. Open up Terminal ( Macintosh HD -&amp;gt; Applications -&amp;gt; Utilities -&amp;gt; Terminal )&lt;br /&gt;
*2. In the terminal window type (without the quotes &amp;amp; don&#039;t forget the space): &#039;cd &#039;&lt;br /&gt;
*3. Drag the &#039;Armagetron Advanced Dedicated&#039; folder into the terminal window&lt;br /&gt;
*4. Press Enter&lt;br /&gt;
*5. Drag the &#039;armagetronad-dedicated&#039; file ( Armagetron Advanced Dedicated -&amp;gt; armagetronad-dedicated ) into the Terminal window&lt;br /&gt;
*6. Press Enter&lt;br /&gt;
&lt;br /&gt;
== I&#039;ve started the dedicated server, but I don&#039;t see it listed in the master server.  What&#039;s wrong? ==&lt;br /&gt;
&lt;br /&gt;
You need to add the line &amp;lt;pre&amp;gt;TALK_TO_MASTER 1&amp;lt;/pre&amp;gt; to your configuration files to publish your server on the internet. The server needs to be up one or two minutes before it can appear in the server browser, the master server checks whether it is reachable before it gets published.&lt;br /&gt;
&lt;br /&gt;
== I did that, but my server still is not listed. What else can be wrong? ==&lt;br /&gt;
&lt;br /&gt;
Get your server&#039;s IP address; if it is running on the same computer you use for browsing right now, check http://www.whatismyip.com to get it. Fire up the Armagetronad client, enter the internet server browser, wait half a minute, exit the server browser, enter it again, and look for your server&#039;s IP. If it appears (having the list sorted by server name my pressing &amp;quot;right&amp;quot; once helps), you really want to ask [[FAQ#I see my server&#039;s IP in the master server browser, but it says &amp;quot;Unreachable&amp;quot;. What&#039;s wrong?]]. Otherwise, this is the right section for you. This is also the right section if you see your server just fine, but nobody else does.&lt;br /&gt;
&lt;br /&gt;
If your server is connected to the internet via a router box and not directly via a &amp;quot;modem&amp;quot; of sorts, it is likely that network packages from the internet can&#039;t get to your server because the router blocks them. You need to tell your router to forward UDP port 4534 (or whatever SERVER_PORT is set to) to the server. On [http://www.portforward.com], there are nice instructions how to do that for a lot of router models. If the UDP port 4534 thing confuses you, just follow [http://www.portforward.com/english/applications/port_forwarding/F-22Lightning3/F-22Lightning3index.htm these instructions for a different game] that uses a similar connection method. Of course, you need to find out what router model you have, some under-the-table-crawling and cable following may be required for that if you can&#039;t remember what you bought or got the router from your ISP.&lt;br /&gt;
&lt;br /&gt;
== My server still isn&#039;t listed. This sucks, it&#039;s hard to find out where the problem is. What can I do? ==&lt;br /&gt;
&lt;br /&gt;
See [[Server_Administration_Guide#Firewalls|Short Firewall Troubleshooting]] and [[Server_Administration_Guide#Port_forwarding|Short Port Forwarding Troubleshooting]], if this does not solve your problem, read on.&lt;br /&gt;
&lt;br /&gt;
You can ask people to connect to your server directly by giving them [http://www.whatismyip.com your IP] and the port your server is running on. A perfect place to ask is our [[IRC_Channel|IRC]] channel(#armagetron on irc.freenode.org) because you&#039;ll get a real-time answer there. Less perfect is the support section of the [http://forums.armagetronad.net forums]; you&#039;ll need to make sure your server is up and running when people read your post, which can be well 48 hours after you post it. If people can&#039;t connect to your server that way, it means you probably need to set up port forwarding (see last question) correctly.&lt;br /&gt;
&lt;br /&gt;
== Gaaa! This FAQ is useless! Can&#039;t YOU help me get my server up? ==&lt;br /&gt;
&lt;br /&gt;
Sure. Post your trouble on the support section of the [http://forums.armagetronad.net forums]. Be sure to&lt;br /&gt;
* describe exactly what you already tried, and please don&#039;t just say &amp;quot;everything the FAQ told me&amp;quot;&lt;br /&gt;
* state the [http://www.whatismyip.com your IP] your server is running on, we need that to check the master server&#039;s logs&lt;br /&gt;
* state your port if you modified SERVER_PORT&lt;br /&gt;
* state your server&#039;s name, others need that to check for your server in the browser&lt;br /&gt;
* post the complete output of your server from the moment it is started&lt;br /&gt;
Without that info, we can&#039;t help.&lt;br /&gt;
&lt;br /&gt;
Setting up a server is complicated sometimes; don&#039;t be too shy to admit you didn&#039;t understand some part of the process. A lot of trouble comes from people silently skipping steps they don&#039;t understand.&lt;br /&gt;
&lt;br /&gt;
== I see my server&#039;s IP in the master server browser, but it says &amp;quot;Unreachable&amp;quot;.  What&#039;s wrong? ==&lt;br /&gt;
&lt;br /&gt;
Probably the answer is &amp;quot;Nothing is wrong&amp;quot;. A bug in some routers or the NAT specifications (at least, that&#039;s how Z-Man sees this) causes the response to the server query packet used in the server browser to come from the LAN address of your server, not the public address it was sent to. The packet gets ignored then. A workaround will be available in 0.2.8.3, but right now, that means most people can&#039;t see their own servers. Come to the IRC channel (#armagetron on irc.freenode.org) and ask people there if they can see your server.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Help]]&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=FAQ&amp;diff=17758</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=FAQ&amp;diff=17758"/>
		<updated>2007-04-02T08:00:14Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: proper formating in place&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Following is a list of Frequently Asked Questions.  Obviously, this is what people ask us the most.  Before asking a question, you should give this list a good read.  If your question isn&#039;t answered here, then by all means come to irc or the forums or something and ask it.  However, if your question is answered here, don&#039;t be surprised if you get an abrupt or downright rude response.&lt;br /&gt;
&lt;br /&gt;
While we try to give the best answers to the questions asked regardless of pretty much anything else, however there are some general guidelines to follow when asking questions not on this list:&lt;br /&gt;
&lt;br /&gt;
* Don&#039;t ask stupidly.  Ex:  Why can&#039;t I get color on my walls?  (Good example: How do I have a cycle and wall color that are different from each other?)&lt;br /&gt;
* Provide as much information as you have that&#039;s relevant to the question.  Ex: Why doesn&#039;t my server work?  (Good example: My server starts, then stops.  Here&#039;s the errors from the console.  Any idea why it&#039;s shutting down right away?)&lt;br /&gt;
&lt;br /&gt;
For a more detailed discussion, check [http://www.catb.org/~esr/faqs/smart-questions.html this page], with two important points.  First, the page linked is not in any way affiliated with Armagetron Advanced and therefore they &#039;&#039;&#039;can&#039;t answer your question&#039;&#039;&#039;.  Second, the article is probably a bit more negative than it actually works around here.  For the most part, if you can&#039;t ask the question in the smartest possible way, we&#039;d rather you ask the best way that you can than live in the dark and suffer.  Even if you&#039;re an idiot, we still want you to be a comfortable idiot.&lt;br /&gt;
&lt;br /&gt;
If you think your question is actually a bug report and you&#039;ve only just started with the game, chances are it&#039;s not.  We&#039;ll not pretend the game is bug-free, but it is very stable and efficient.  The chances that a new player to the game has discovered a previously unknown bug in a stable release are very very slim.  Astronomically slim, in fact.  In any case, if you wish to continue thinking you have done so, please start with a question that describes what you see and ends with &amp;quot;Is this expected behavior?&amp;quot;  That&#039;s much more likely to get a satisfactory response than &amp;quot;This game sucks!  It has this bug and that bug and it just doesn&#039;t work.  I downloaded it today for the first time on my Windows box, do you not care about Windows?&amp;quot;  Also, since you suspect you found a bug, include all the information a bug report should have.  If you&#039;re unsure, please [http://www.chiark.greenend.org.uk/~sgtatham/bugs.html consult this page] for the best results.  Note, the author of that page is also unaffiliated with Armagetron Advanced, and therefore he will reject any bug reports you send him about our program.&lt;br /&gt;
&lt;br /&gt;
Finally, this FAQ, like all FAQs, is a work in progress.  If it&#039;s not as big as you&#039;re used to seeing, it&#039;s because it&#039;s probably a younger FAQ than what you&#039;re used to seeing.  That&#039;s ok.  We&#039;ll add to it over time, and it&#039;ll get bigger and bigger until the server explodes with so many frequently asked questions that all of the developers decide to pitch in and buy a Caribbean island.  Mmm, coconuts.&lt;br /&gt;
= What is Armagetronad =&lt;br /&gt;
&lt;br /&gt;
[[About | Please read this.]]&lt;br /&gt;
&lt;br /&gt;
= Terminology =&lt;br /&gt;
&lt;br /&gt;
== What is a client?  What is a server?  What&#039;s the difference? ==&lt;br /&gt;
&lt;br /&gt;
Simply put, the game client is the program you run on your computer.  The game server runs on somebody else&#039;s computer.  The difference between the two is like the difference between, say, a lawyer and his client.  The lawyer would be the server, the one who knows all about law and stuff.  So the difference is just like in real life where the terms come from.  The client requests a service from someone who serves.  In our case, that service is a game that is served from a machine running a program called a &amp;quot;server&amp;quot;, but if you requested the same service from a person in a casino, you&#039;d still be running a game client.&lt;br /&gt;
&lt;br /&gt;
== My client can be a server, though, it says so right here. ==&lt;br /&gt;
&lt;br /&gt;
That&#039;s not a question.  In any case, the game client can act as a server if you press &amp;quot;Host Game&amp;quot; from the Internet Game menu.  So technically the client is a client/server hybrid, but let&#039;s not get too technical.&lt;br /&gt;
&lt;br /&gt;
== So are all game servers just clients where people pressed &amp;quot;Host Game&amp;quot;? ==&lt;br /&gt;
&lt;br /&gt;
No.  This is where people get really confused, even to the point where they complain to server operators for doing exactly this thing.  No, most, if not all, game servers available through the master server run a special version of the program that has no graphical display, and no player can play on directly.  That is the server, commonly called the &amp;quot;dedicated server&amp;quot;.  You can run it too, if you&#039;d like.  Server operators chose to run this instead of the regular game client because it has a number of modifications that make it work better as a regular server, just like a mail server or a web server.  It is more convenient and makes for a more reliable game server to do so.&lt;br /&gt;
&lt;br /&gt;
= Installing the Game =&lt;br /&gt;
&lt;br /&gt;
== Where can I download Armagetron Advanced? ==&lt;br /&gt;
&lt;br /&gt;
That depends on what version you want to get. The current stable version is always available [http://www.armagetronad.net/downloads.php on the main web page] or [http://sourceforge.net/project/showfiles.php?group_id=110997 sourceforge]. The latest testing version on [http://beta.armagetronad.net AABeta].&lt;br /&gt;
&lt;br /&gt;
== I&#039;m running Windows, how do I install? ==&lt;br /&gt;
&lt;br /&gt;
Find the exe file you downloaded from the question and answer above this one and double click on it. Answer all dialog boxes with Yes/Next/Finish, whatever applies. On Windows XP, when you first run the game and try to connect to the Internet, a firewall warning will pop up; set it to allow access.&lt;br /&gt;
&lt;br /&gt;
== So, should I get the latest stable or latest development version? ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;re really asking this question and are not just browsing the FAQ, get the latest stable version.&lt;br /&gt;
&lt;br /&gt;
== Ok, but there are still so many different files to get, which one is right for me? ==&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#Terminology]] for choosing between Client and Server download. If in doubt, choose the Client. If you&#039;re running a PC with Windows, get the exe format, GCC or VC6 should not matter (please report it if only one of them works for you). If you&#039;ve got a Mac, get the dmg; there is a special buld available for versions 10.2.8 of OS X. If you&#039;re running 32 bit Intel Linux, get the x86(_32) &amp;quot;package&amp;quot;. If you&#039;re running 64 bit AMD Linux, get the x86_64 &amp;quot;package&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m running Linux, but don&#039;t know whether it is 32 or 64 bit. How can I find out? ==&lt;br /&gt;
&lt;br /&gt;
On a console/terminal, type &amp;lt;pre&amp;gt;echo $MACHTYPE&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the output starts with x86_64, you have a 64 bit system. If it starts with i386, i486, i586 or i686 or possibly just x86 or x86_32, you have a 32 bit system. For anything else, we don&#039;t provide binary packages, you have to build from source. If the output is blank, the method failed. Then, see whether you have got the directory /usr/lib64 on your system. If yes, you have a 64 bit system, if no, it&#039;s 32 bit.&lt;br /&gt;
&lt;br /&gt;
== I have a Mac, how do I install? ==&lt;br /&gt;
&lt;br /&gt;
Mount the dmg file, and drag the Armagetron Advanced application to your hard-drive.&lt;br /&gt;
&lt;br /&gt;
== I have Linux, how do I install a binary? ==&lt;br /&gt;
&lt;br /&gt;
That depends on the distribution you are running. Check out the [[Linux Distribution Field Report]] for details.&lt;br /&gt;
&lt;br /&gt;
== I run a non-Linux UNIX or Linux on hardware not supported by your binary packages or the binaries don&#039;t work, how do I install from source? ==&lt;br /&gt;
&lt;br /&gt;
Basically, you fetch the .tbz2 source archive and do as the superuser root&lt;br /&gt;
&amp;lt;pre&amp;gt;tar -xjf &amp;lt;path to the tbz2 source archive you just fetched&amp;gt;&lt;br /&gt;
cd armagetronad-&amp;lt;VERSION&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
The configure script will tell you what you are missing. In this mode, you always need the &#039;development&#039; packages of our dependencies on most distributions.&lt;br /&gt;
The [[Linux Distribution Field Report]] may have some hints. Ask us if you get stuck.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m working on a Linux PC administered by someone else and don&#039;t have the root password, can I still install the game? ==&lt;br /&gt;
&lt;br /&gt;
Yes. The &amp;quot;package&amp;quot; binary files can install everything in your home directory. If you have to build from source, proceed as in the last FAQ,&lt;br /&gt;
but pass &#039;--prefix=$HOME/usr&#039; to ./configure and run the game later with&lt;br /&gt;
&#039;~/usr/bin/armagetronad&#039;, or run the game from the build directory with &#039;make run&#039;.&lt;br /&gt;
&lt;br /&gt;
== Where are the server sources? ==&lt;br /&gt;
&lt;br /&gt;
The server sources are the same as the client sources. You compile a server from them by giving the additional command line option &#039;--disable-glout&#039; to ./configure.&lt;br /&gt;
&lt;br /&gt;
== I heard about moviepacks (graphical modifications), how do I install them? ==&lt;br /&gt;
&lt;br /&gt;
See [[Customizing the game]].&lt;br /&gt;
&lt;br /&gt;
= Playing the Game =&lt;br /&gt;
&lt;br /&gt;
== How do I use a map? ==&lt;br /&gt;
&lt;br /&gt;
Read [[Playing Maps]], and please try to tell us why this question is asked so often and followed by &amp;quot;I read the whole wiki!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd takes most or all the CPU time, how come? ==&lt;br /&gt;
&lt;br /&gt;
AA takes all the CPU time it needs to simulate and render the scene as fast as you&#039;ll allow it to. There are two contitions under which that makes it take almost everything that is available:&lt;br /&gt;
* You set your graphics card driver not to wait for VSync. AA will then run at the highest possible framerate and therefore also use all the CPU time available. If you enable the FPS display in the HUD options and it shows more than 100 FPS, then that&#039;s your problem.&lt;br /&gt;
* When it tells your video card driver to update the screen now, the driver goes into a special CPU-hogging mode until the command is completed, even though all it does is sit around and wait. Both NVidia and ATI drivers are guilty of this. In the &amp;quot;Performance Tweaks&amp;quot; submenu of the graphics settings, there is the &amp;quot;Flush&amp;quot; menu item where you can tweak AA to not issue the problematic command (with possible side effects).&lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd is unplayable on my AMD Dual Core X2 System (might affect other Dual Cores) ==&lt;br /&gt;
&lt;br /&gt;
Symtoms:&lt;br /&gt;
*The console displays &amp;quot;Timer hick up&amp;quot;&lt;br /&gt;
*FPS are usually ok (above 30).&lt;br /&gt;
*might only occur in network games&lt;br /&gt;
*Game performance is very bad&lt;br /&gt;
&lt;br /&gt;
Atleast three solutions for this problem are available:&lt;br /&gt;
* To fix this problem use your TaskManager to set ArmagetronAd.exe&#039;s cpu affinity to a single CPU. &lt;br /&gt;
* Disable Cool &amp;amp; Quite in BIOS&lt;br /&gt;
* Install the neccessary Microsoft Hotfixes and depending on your System you might have to update your bios and drivers too.&lt;br /&gt;
&lt;br /&gt;
Links (TODO replace links with links to better instructions!):&lt;br /&gt;
* [http://support.microsoft.com/default.aspx?scid=KB;en-us;896256 Microsoft Knowledgebase Articel about Q896256]&lt;br /&gt;
* [http://www.amd.com/en-us/Processors/TechnicalResources/0,,30_182_871_13118,00.html AMD Dual Core Optimizer] The fix is similiar to Microsofts, but only fixes a small part of it. The Microsoft patch also addresses power saving bugs (of Windows XP).&lt;br /&gt;
&lt;br /&gt;
*Details: Armagetron Advanced 0.2.8.x(?) or later uses the high precision timer on Windows if avaiable. (TODO confirm) This can be a  problem on the new Dual Core Systems or malfunctioning Multiprocessor System. The Timer of each core runs at different speeds which results in a jumping timer! The AMD X2 Systems are affected because they have two separate timers for each CPU (Intels Core Duo CPUs share a single timer). The AMD X2 Systems are only affected with Cool &amp;amp; Quite power saving enabled otherwise both cores have the same timer speed. The Windows kernel schedules Armagetron Advanced between both cores which results in a jumping timer form Armagetron perspective.&lt;br /&gt;
&lt;br /&gt;
= Running a Server =&lt;br /&gt;
&lt;br /&gt;
== Which should I run?  The client in hosting mode, or the dedicated server? ==&lt;br /&gt;
&lt;br /&gt;
Generally this depends on how long you want the server to run at a time.  If you just want it running when you&#039;re playing, run the client in hosting mode, it&#039;s easier to deal with.  If you&#039;re running at a LAN party, you might also want to run the client in hosting mode.  But if you want to run a server that operates on the internet, reports to the master server, and runs 24 hours a day, 7 days a week (8 days in a leap week), then you should run the dedicated server.&lt;br /&gt;
&lt;br /&gt;
== I&#039;ve started the dedicated server, but I don&#039;t see it listed in the master server.  What&#039;s wrong? ==&lt;br /&gt;
&lt;br /&gt;
You need to add the line &amp;lt;pre&amp;gt;TALK_TO_MASTER 1&amp;lt;/pre&amp;gt; to your configuration files to publish your server on the internet. The server needs to be up one or two minutes before it can appear in the server browser, the master server checks whether it is reachable before it gets published.&lt;br /&gt;
&lt;br /&gt;
== I did that, but my server still is not listed. What else can be wrong? ==&lt;br /&gt;
&lt;br /&gt;
Get your server&#039;s IP address; if it is running on the same computer you use for browsing right now, check http://www.whatismyip.com to get it. Fire up the Armagetronad client, enter the internet server browser, wait half a minute, exit the server browser, enter it again, and look for your server&#039;s IP. If it appears (having the list sorted by server name my pressing &amp;quot;right&amp;quot; once helps), you really want to ask [[FAQ#I see my server&#039;s IP in the master server browser, but it says &amp;quot;Unreachable&amp;quot;. What&#039;s wrong?]]. Otherwise, this is the right section for you. This is also the right section if you see your server just fine, but nobody else does.&lt;br /&gt;
&lt;br /&gt;
If your server is connected to the internet via a router box and not directly via a &amp;quot;modem&amp;quot; of sorts, it is likely that network packages from the internet can&#039;t get to your server because the router blocks them. You need to tell your router to forward UDP port 4534 (or whatever SERVER_PORT is set to) to the server. On [http://www.portforward.com], there are nice instructions how to do that for a lot of router models. If the UDP port 4534 thing confuses you, just follow [http://www.portforward.com/english/applications/port_forwarding/F-22Lightning3/F-22Lightning3index.htm these instructions for a different game] that uses a similar connection method. Of course, you need to find out what router model you have, some under-the-table-crawling and cable following may be required for that if you can&#039;t remember what you bought or got the router from your ISP.&lt;br /&gt;
&lt;br /&gt;
== My server still isn&#039;t listed. This sucks, it&#039;s hard to find out where the problem is. What can I do? ==&lt;br /&gt;
&lt;br /&gt;
See [[Server_Administration_Guide#Firewalls|Short Firewall Troubleshooting]] and [[Server_Administration_Guide#Port_forwarding|Short Port Forwarding Troubleshooting]], if this does not solve your problem, read on.&lt;br /&gt;
&lt;br /&gt;
You can ask people to connect to your server directly by giving them [http://www.whatismyip.com your IP] and the port your server is running on. A perfect place to ask is our IRC channel(#armagetron on irc.freenode.org) because you&#039;ll get a real-time answer there. Less perfect is the support section of the [http://forums.armagetronad.net forums]; you&#039;ll need to make sure your server is up and running when people read your post, which can be well 48 hours after you post it. If people can&#039;t connect to your server that way, it means you probably need to set up port forwarding (see last question) correctly.&lt;br /&gt;
&lt;br /&gt;
== Gaaa! This FAQ is useless! Can&#039;t YOU help me get my server up? ==&lt;br /&gt;
&lt;br /&gt;
Sure. Post your trouble on the support section of the [http://forums.armagetronad.net forums]. Be sure to&lt;br /&gt;
* describe exactly what you already tried, and please don&#039;t just say &amp;quot;everything the FAQ told me&amp;quot;&lt;br /&gt;
* state the [http://www.whatismyip.com your IP] your server is running on, we need that to check the master server&#039;s logs&lt;br /&gt;
* state your port if you modified SERVER_PORT&lt;br /&gt;
* state your server&#039;s name, others need that to check for your server in the browser&lt;br /&gt;
* post the complete output of your server from the moment it is started&lt;br /&gt;
Without that info, we can&#039;t help.&lt;br /&gt;
&lt;br /&gt;
Setting up a server is complicated sometimes; don&#039;t be too shy to admit you didn&#039;t understand some part of the process. A lot of trouble comes from people silently skipping steps they don&#039;t understand.&lt;br /&gt;
&lt;br /&gt;
== I see my server&#039;s IP in the master server browser, but it says &amp;quot;Unreachable&amp;quot;.  What&#039;s wrong? ==&lt;br /&gt;
&lt;br /&gt;
Probably the answer is &amp;quot;Nothing is wrong&amp;quot;. A bug in some routers or the NAT specifications (at least, that&#039;s how Z-Man sees this) causes the response to the server query packet used in the server browser to come from the LAN address of your server, not the public address it was sent to. The packet gets ignored then. A workaround will be available in 0.2.8.3, but right now, that means most people can&#039;t see their own servers. Come to the IRC channel (#armagetron on irc.freenode.org) and ask people there if they can see your server.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Help]]&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=FAQ&amp;diff=17757</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=FAQ&amp;diff=17757"/>
		<updated>2007-04-02T07:59:24Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Added item ArmagetronAd takes most or all the CPU time, how come?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Following is a list of Frequently Asked Questions.  Obviously, this is what people ask us the most.  Before asking a question, you should give this list a good read.  If your question isn&#039;t answered here, then by all means come to irc or the forums or something and ask it.  However, if your question is answered here, don&#039;t be surprised if you get an abrupt or downright rude response.&lt;br /&gt;
&lt;br /&gt;
While we try to give the best answers to the questions asked regardless of pretty much anything else, however there are some general guidelines to follow when asking questions not on this list:&lt;br /&gt;
&lt;br /&gt;
* Don&#039;t ask stupidly.  Ex:  Why can&#039;t I get color on my walls?  (Good example: How do I have a cycle and wall color that are different from each other?)&lt;br /&gt;
* Provide as much information as you have that&#039;s relevant to the question.  Ex: Why doesn&#039;t my server work?  (Good example: My server starts, then stops.  Here&#039;s the errors from the console.  Any idea why it&#039;s shutting down right away?)&lt;br /&gt;
&lt;br /&gt;
For a more detailed discussion, check [http://www.catb.org/~esr/faqs/smart-questions.html this page], with two important points.  First, the page linked is not in any way affiliated with Armagetron Advanced and therefore they &#039;&#039;&#039;can&#039;t answer your question&#039;&#039;&#039;.  Second, the article is probably a bit more negative than it actually works around here.  For the most part, if you can&#039;t ask the question in the smartest possible way, we&#039;d rather you ask the best way that you can than live in the dark and suffer.  Even if you&#039;re an idiot, we still want you to be a comfortable idiot.&lt;br /&gt;
&lt;br /&gt;
If you think your question is actually a bug report and you&#039;ve only just started with the game, chances are it&#039;s not.  We&#039;ll not pretend the game is bug-free, but it is very stable and efficient.  The chances that a new player to the game has discovered a previously unknown bug in a stable release are very very slim.  Astronomically slim, in fact.  In any case, if you wish to continue thinking you have done so, please start with a question that describes what you see and ends with &amp;quot;Is this expected behavior?&amp;quot;  That&#039;s much more likely to get a satisfactory response than &amp;quot;This game sucks!  It has this bug and that bug and it just doesn&#039;t work.  I downloaded it today for the first time on my Windows box, do you not care about Windows?&amp;quot;  Also, since you suspect you found a bug, include all the information a bug report should have.  If you&#039;re unsure, please [http://www.chiark.greenend.org.uk/~sgtatham/bugs.html consult this page] for the best results.  Note, the author of that page is also unaffiliated with Armagetron Advanced, and therefore he will reject any bug reports you send him about our program.&lt;br /&gt;
&lt;br /&gt;
Finally, this FAQ, like all FAQs, is a work in progress.  If it&#039;s not as big as you&#039;re used to seeing, it&#039;s because it&#039;s probably a younger FAQ than what you&#039;re used to seeing.  That&#039;s ok.  We&#039;ll add to it over time, and it&#039;ll get bigger and bigger until the server explodes with so many frequently asked questions that all of the developers decide to pitch in and buy a Caribbean island.  Mmm, coconuts.&lt;br /&gt;
= What is Armagetronad =&lt;br /&gt;
&lt;br /&gt;
[[About | Please read this.]]&lt;br /&gt;
&lt;br /&gt;
= Terminology =&lt;br /&gt;
&lt;br /&gt;
== What is a client?  What is a server?  What&#039;s the difference? ==&lt;br /&gt;
&lt;br /&gt;
Simply put, the game client is the program you run on your computer.  The game server runs on somebody else&#039;s computer.  The difference between the two is like the difference between, say, a lawyer and his client.  The lawyer would be the server, the one who knows all about law and stuff.  So the difference is just like in real life where the terms come from.  The client requests a service from someone who serves.  In our case, that service is a game that is served from a machine running a program called a &amp;quot;server&amp;quot;, but if you requested the same service from a person in a casino, you&#039;d still be running a game client.&lt;br /&gt;
&lt;br /&gt;
== My client can be a server, though, it says so right here. ==&lt;br /&gt;
&lt;br /&gt;
That&#039;s not a question.  In any case, the game client can act as a server if you press &amp;quot;Host Game&amp;quot; from the Internet Game menu.  So technically the client is a client/server hybrid, but let&#039;s not get too technical.&lt;br /&gt;
&lt;br /&gt;
== So are all game servers just clients where people pressed &amp;quot;Host Game&amp;quot;? ==&lt;br /&gt;
&lt;br /&gt;
No.  This is where people get really confused, even to the point where they complain to server operators for doing exactly this thing.  No, most, if not all, game servers available through the master server run a special version of the program that has no graphical display, and no player can play on directly.  That is the server, commonly called the &amp;quot;dedicated server&amp;quot;.  You can run it too, if you&#039;d like.  Server operators chose to run this instead of the regular game client because it has a number of modifications that make it work better as a regular server, just like a mail server or a web server.  It is more convenient and makes for a more reliable game server to do so.&lt;br /&gt;
&lt;br /&gt;
= Installing the Game =&lt;br /&gt;
&lt;br /&gt;
== Where can I download Armagetron Advanced? ==&lt;br /&gt;
&lt;br /&gt;
That depends on what version you want to get. The current stable version is always available [http://www.armagetronad.net/downloads.php on the main web page] or [http://sourceforge.net/project/showfiles.php?group_id=110997 sourceforge]. The latest testing version on [http://beta.armagetronad.net AABeta].&lt;br /&gt;
&lt;br /&gt;
== I&#039;m running Windows, how do I install? ==&lt;br /&gt;
&lt;br /&gt;
Find the exe file you downloaded from the question and answer above this one and double click on it. Answer all dialog boxes with Yes/Next/Finish, whatever applies. On Windows XP, when you first run the game and try to connect to the Internet, a firewall warning will pop up; set it to allow access.&lt;br /&gt;
&lt;br /&gt;
== So, should I get the latest stable or latest development version? ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;re really asking this question and are not just browsing the FAQ, get the latest stable version.&lt;br /&gt;
&lt;br /&gt;
== Ok, but there are still so many different files to get, which one is right for me? ==&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#Terminology]] for choosing between Client and Server download. If in doubt, choose the Client. If you&#039;re running a PC with Windows, get the exe format, GCC or VC6 should not matter (please report it if only one of them works for you). If you&#039;ve got a Mac, get the dmg; there is a special buld available for versions 10.2.8 of OS X. If you&#039;re running 32 bit Intel Linux, get the x86(_32) &amp;quot;package&amp;quot;. If you&#039;re running 64 bit AMD Linux, get the x86_64 &amp;quot;package&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m running Linux, but don&#039;t know whether it is 32 or 64 bit. How can I find out? ==&lt;br /&gt;
&lt;br /&gt;
On a console/terminal, type &amp;lt;pre&amp;gt;echo $MACHTYPE&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the output starts with x86_64, you have a 64 bit system. If it starts with i386, i486, i586 or i686 or possibly just x86 or x86_32, you have a 32 bit system. For anything else, we don&#039;t provide binary packages, you have to build from source. If the output is blank, the method failed. Then, see whether you have got the directory /usr/lib64 on your system. If yes, you have a 64 bit system, if no, it&#039;s 32 bit.&lt;br /&gt;
&lt;br /&gt;
== I have a Mac, how do I install? ==&lt;br /&gt;
&lt;br /&gt;
Mount the dmg file, and drag the Armagetron Advanced application to your hard-drive.&lt;br /&gt;
&lt;br /&gt;
== I have Linux, how do I install a binary? ==&lt;br /&gt;
&lt;br /&gt;
That depends on the distribution you are running. Check out the [[Linux Distribution Field Report]] for details.&lt;br /&gt;
&lt;br /&gt;
== I run a non-Linux UNIX or Linux on hardware not supported by your binary packages or the binaries don&#039;t work, how do I install from source? ==&lt;br /&gt;
&lt;br /&gt;
Basically, you fetch the .tbz2 source archive and do as the superuser root&lt;br /&gt;
&amp;lt;pre&amp;gt;tar -xjf &amp;lt;path to the tbz2 source archive you just fetched&amp;gt;&lt;br /&gt;
cd armagetronad-&amp;lt;VERSION&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
The configure script will tell you what you are missing. In this mode, you always need the &#039;development&#039; packages of our dependencies on most distributions.&lt;br /&gt;
The [[Linux Distribution Field Report]] may have some hints. Ask us if you get stuck.&lt;br /&gt;
&lt;br /&gt;
== I&#039;m working on a Linux PC administered by someone else and don&#039;t have the root password, can I still install the game? ==&lt;br /&gt;
&lt;br /&gt;
Yes. The &amp;quot;package&amp;quot; binary files can install everything in your home directory. If you have to build from source, proceed as in the last FAQ,&lt;br /&gt;
but pass &#039;--prefix=$HOME/usr&#039; to ./configure and run the game later with&lt;br /&gt;
&#039;~/usr/bin/armagetronad&#039;, or run the game from the build directory with &#039;make run&#039;.&lt;br /&gt;
&lt;br /&gt;
== Where are the server sources? ==&lt;br /&gt;
&lt;br /&gt;
The server sources are the same as the client sources. You compile a server from them by giving the additional command line option &#039;--disable-glout&#039; to ./configure.&lt;br /&gt;
&lt;br /&gt;
== I heard about moviepacks (graphical modifications), how do I install them? ==&lt;br /&gt;
&lt;br /&gt;
See [[Customizing the game]].&lt;br /&gt;
&lt;br /&gt;
= Playing the Game =&lt;br /&gt;
&lt;br /&gt;
== How do I use a map? ==&lt;br /&gt;
&lt;br /&gt;
Read [[Playing Maps]], and please try to tell us why this question is asked so often and followed by &amp;quot;I read the whole wiki!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd takes most or all the CPU time, how come? ==&lt;br /&gt;
&lt;br /&gt;
AA takes all the CPU time it needs to simulate and render the scene as fast as you&#039;ll allow it to. There are two contitions under which that makes it take almost everything that is available:&lt;br /&gt;
- You set your graphics card driver not to wait for VSync. AA will then run at the highest possible framerate and therefore also use all the CPU time available. If you enable the FPS display in the HUD options and it shows more than 100 FPS, then that&#039;s your problem.&lt;br /&gt;
- When it tells your video card driver to update the screen now, the driver goes into a special CPU-hogging mode until the command is completed, even though all it does is sit around and wait. Both NVidia and ATI drivers are guilty of this. In the &amp;quot;Performance Tweaks&amp;quot; submenu of the graphics settings, there is the &amp;quot;Flush&amp;quot; menu item where you can tweak AA to not issue the problematic command (with possible side effects). &lt;br /&gt;
&lt;br /&gt;
== ArmagetronAd is unplayable on my AMD Dual Core X2 System (might affect other Dual Cores) ==&lt;br /&gt;
&lt;br /&gt;
Symtoms:&lt;br /&gt;
*The console displays &amp;quot;Timer hick up&amp;quot;&lt;br /&gt;
*FPS are usually ok (above 30).&lt;br /&gt;
*might only occur in network games&lt;br /&gt;
*Game performance is very bad&lt;br /&gt;
&lt;br /&gt;
Atleast three solutions for this problem are available:&lt;br /&gt;
* To fix this problem use your TaskManager to set ArmagetronAd.exe&#039;s cpu affinity to a single CPU. &lt;br /&gt;
* Disable Cool &amp;amp; Quite in BIOS&lt;br /&gt;
* Install the neccessary Microsoft Hotfixes and depending on your System you might have to update your bios and drivers too.&lt;br /&gt;
&lt;br /&gt;
Links (TODO replace links with links to better instructions!):&lt;br /&gt;
* [http://support.microsoft.com/default.aspx?scid=KB;en-us;896256 Microsoft Knowledgebase Articel about Q896256]&lt;br /&gt;
* [http://www.amd.com/en-us/Processors/TechnicalResources/0,,30_182_871_13118,00.html AMD Dual Core Optimizer] The fix is similiar to Microsofts, but only fixes a small part of it. The Microsoft patch also addresses power saving bugs (of Windows XP).&lt;br /&gt;
&lt;br /&gt;
*Details: Armagetron Advanced 0.2.8.x(?) or later uses the high precision timer on Windows if avaiable. (TODO confirm) This can be a  problem on the new Dual Core Systems or malfunctioning Multiprocessor System. The Timer of each core runs at different speeds which results in a jumping timer! The AMD X2 Systems are affected because they have two separate timers for each CPU (Intels Core Duo CPUs share a single timer). The AMD X2 Systems are only affected with Cool &amp;amp; Quite power saving enabled otherwise both cores have the same timer speed. The Windows kernel schedules Armagetron Advanced between both cores which results in a jumping timer form Armagetron perspective.&lt;br /&gt;
&lt;br /&gt;
= Running a Server =&lt;br /&gt;
&lt;br /&gt;
== Which should I run?  The client in hosting mode, or the dedicated server? ==&lt;br /&gt;
&lt;br /&gt;
Generally this depends on how long you want the server to run at a time.  If you just want it running when you&#039;re playing, run the client in hosting mode, it&#039;s easier to deal with.  If you&#039;re running at a LAN party, you might also want to run the client in hosting mode.  But if you want to run a server that operates on the internet, reports to the master server, and runs 24 hours a day, 7 days a week (8 days in a leap week), then you should run the dedicated server.&lt;br /&gt;
&lt;br /&gt;
== I&#039;ve started the dedicated server, but I don&#039;t see it listed in the master server.  What&#039;s wrong? ==&lt;br /&gt;
&lt;br /&gt;
You need to add the line &amp;lt;pre&amp;gt;TALK_TO_MASTER 1&amp;lt;/pre&amp;gt; to your configuration files to publish your server on the internet. The server needs to be up one or two minutes before it can appear in the server browser, the master server checks whether it is reachable before it gets published.&lt;br /&gt;
&lt;br /&gt;
== I did that, but my server still is not listed. What else can be wrong? ==&lt;br /&gt;
&lt;br /&gt;
Get your server&#039;s IP address; if it is running on the same computer you use for browsing right now, check http://www.whatismyip.com to get it. Fire up the Armagetronad client, enter the internet server browser, wait half a minute, exit the server browser, enter it again, and look for your server&#039;s IP. If it appears (having the list sorted by server name my pressing &amp;quot;right&amp;quot; once helps), you really want to ask [[FAQ#I see my server&#039;s IP in the master server browser, but it says &amp;quot;Unreachable&amp;quot;. What&#039;s wrong?]]. Otherwise, this is the right section for you. This is also the right section if you see your server just fine, but nobody else does.&lt;br /&gt;
&lt;br /&gt;
If your server is connected to the internet via a router box and not directly via a &amp;quot;modem&amp;quot; of sorts, it is likely that network packages from the internet can&#039;t get to your server because the router blocks them. You need to tell your router to forward UDP port 4534 (or whatever SERVER_PORT is set to) to the server. On [http://www.portforward.com], there are nice instructions how to do that for a lot of router models. If the UDP port 4534 thing confuses you, just follow [http://www.portforward.com/english/applications/port_forwarding/F-22Lightning3/F-22Lightning3index.htm these instructions for a different game] that uses a similar connection method. Of course, you need to find out what router model you have, some under-the-table-crawling and cable following may be required for that if you can&#039;t remember what you bought or got the router from your ISP.&lt;br /&gt;
&lt;br /&gt;
== My server still isn&#039;t listed. This sucks, it&#039;s hard to find out where the problem is. What can I do? ==&lt;br /&gt;
&lt;br /&gt;
See [[Server_Administration_Guide#Firewalls|Short Firewall Troubleshooting]] and [[Server_Administration_Guide#Port_forwarding|Short Port Forwarding Troubleshooting]], if this does not solve your problem, read on.&lt;br /&gt;
&lt;br /&gt;
You can ask people to connect to your server directly by giving them [http://www.whatismyip.com your IP] and the port your server is running on. A perfect place to ask is our IRC channel(#armagetron on irc.freenode.org) because you&#039;ll get a real-time answer there. Less perfect is the support section of the [http://forums.armagetronad.net forums]; you&#039;ll need to make sure your server is up and running when people read your post, which can be well 48 hours after you post it. If people can&#039;t connect to your server that way, it means you probably need to set up port forwarding (see last question) correctly.&lt;br /&gt;
&lt;br /&gt;
== Gaaa! This FAQ is useless! Can&#039;t YOU help me get my server up? ==&lt;br /&gt;
&lt;br /&gt;
Sure. Post your trouble on the support section of the [http://forums.armagetronad.net forums]. Be sure to&lt;br /&gt;
* describe exactly what you already tried, and please don&#039;t just say &amp;quot;everything the FAQ told me&amp;quot;&lt;br /&gt;
* state the [http://www.whatismyip.com your IP] your server is running on, we need that to check the master server&#039;s logs&lt;br /&gt;
* state your port if you modified SERVER_PORT&lt;br /&gt;
* state your server&#039;s name, others need that to check for your server in the browser&lt;br /&gt;
* post the complete output of your server from the moment it is started&lt;br /&gt;
Without that info, we can&#039;t help.&lt;br /&gt;
&lt;br /&gt;
Setting up a server is complicated sometimes; don&#039;t be too shy to admit you didn&#039;t understand some part of the process. A lot of trouble comes from people silently skipping steps they don&#039;t understand.&lt;br /&gt;
&lt;br /&gt;
== I see my server&#039;s IP in the master server browser, but it says &amp;quot;Unreachable&amp;quot;.  What&#039;s wrong? ==&lt;br /&gt;
&lt;br /&gt;
Probably the answer is &amp;quot;Nothing is wrong&amp;quot;. A bug in some routers or the NAT specifications (at least, that&#039;s how Z-Man sees this) causes the response to the server query packet used in the server browser to come from the LAN address of your server, not the public address it was sent to. The packet gets ignored then. A workaround will be available in 0.2.8.3, but right now, that means most people can&#039;t see their own servers. Come to the IRC channel (#armagetron on irc.freenode.org) and ask people there if they can see your server.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Help]]&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Send_DTD_on_the_resource_repository_through_ssh&amp;diff=14432</id>
		<title>Send DTD on the resource repository through ssh</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Send_DTD_on_the_resource_repository_through_ssh&amp;diff=14432"/>
		<updated>2006-08-07T20:25:39Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: How to send a DTD on the resource repository through ssh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This node is only of use for a very smart target. Be advised.&lt;br /&gt;
&lt;br /&gt;
The various steps&lt;br /&gt;
&lt;br /&gt;
a) Ask Luke-Jr for an account &lt;br /&gt;
b) provide a certificate to Luke-Jr to avoid password login (optional)&lt;br /&gt;
b) ssh hachi.dashjr.org&lt;br /&gt;
c) sudo -u armagetronad cp /tmp/somefile.dtd /var/www/armagetron/resource/resource/AATeam/somefile.dtd&lt;br /&gt;
&lt;br /&gt;
or rather&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tar cf - &amp;lt;in file&amp;gt; | ssh philippeqc@hachi.dashjr.org &amp;quot;tar xf -; sudo -u armagetronad cp &amp;lt;in file&amp;gt; /var/www/armagetron/resource/resource/AATeam/&amp;lt;out file&amp;gt;&amp;quot;&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Spawn_points&amp;diff=8531</id>
		<title>Spawn points</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Spawn_points&amp;diff=8531"/>
		<updated>2006-06-22T19:21:32Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Need to investigate:&lt;br /&gt;
-------- &lt;br /&gt;
[quote]3) Respawn points can be identified by an attribute. For&lt;br /&gt;
example respawning inside a fortress zone is pretty dangerous as&lt;br /&gt;
it&#039;s usually crowed, so the designer might add &amp;quot;respawn points&amp;quot;&lt;br /&gt;
for each team farther away from it.[/quote]&lt;br /&gt;
Point take, I&#039;ll investigate methods to specify if a specific&lt;br /&gt;
Spanw is for &amp;quot;game start only&amp;quot; &amp;quot;respawn only&amp;quot; or both.&lt;br /&gt;
--------&lt;br /&gt;
&lt;br /&gt;
Controling the spawn points from the map:&lt;br /&gt;
&lt;br /&gt;
joda.bot, tell me if you understand properly and if you agree with&lt;br /&gt;
that stuff.&lt;br /&gt;
&lt;br /&gt;
2 new &amp;quot;fields&amp;quot; have to be introduced to properly control spawn&lt;br /&gt;
points. A teamId and a personId. They are independant series, ie:&lt;br /&gt;
teamId=&amp;quot;3&amp;quot; is not refering to the same 3 as personId=&amp;quot;3&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
the id&#039;s have 2 tasks.&lt;br /&gt;
First, they associate spawn points that are equaly owned. 2 or&lt;br /&gt;
more spawn points sharing an identical id of the same type can be&lt;br /&gt;
used by the same owner, and only that owner. &lt;br /&gt;
Second, they associate players and teams with certain game&lt;br /&gt;
elements. If a game element has an id reference to a personId or a&lt;br /&gt;
teamId, it is considered to be owned by said team or person. At&lt;br /&gt;
the moment, this is only used in the context of Zones.&lt;br /&gt;
&lt;br /&gt;
Association:&lt;br /&gt;
A team should be associated at least one teamId. A player should&lt;br /&gt;
be associated at least one playerId. Should this be impossible to&lt;br /&gt;
furfill, the behavior the behavior for teams and players that did&lt;br /&gt;
not received their respective id&#039;s is undefined.&lt;br /&gt;
&lt;br /&gt;
The map can link a playerId to a teamId. A playerId is not&lt;br /&gt;
required to be linked to a teamId. A teamId can have multiple&lt;br /&gt;
playerId linked to it. Assigning the same playerId to multiple&lt;br /&gt;
teamId is not allowed, and a map showing this behavior will be&lt;br /&gt;
automatically rejected. &lt;br /&gt;
&lt;br /&gt;
A team associated to a specific teamId will take ownership of all&lt;br /&gt;
the items with said teamId. A teamId can be owned at most by a&lt;br /&gt;
single team. A team can grab multiple teamId. While it is&lt;br /&gt;
recommended to do this only when it is possible to balance the&lt;br /&gt;
teamId&#039;s equally among all teams, there are no restrictions on&lt;br /&gt;
it. When multiple teamId&#039;s are grabbed by the same team, they are&lt;br /&gt;
considered to operate under the same teamId for logic purpose.&lt;br /&gt;
Items that have a teamId that is not grabbed by any team are&lt;br /&gt;
considered not to have any teamId, ie. to be common items. &lt;br /&gt;
Players grabs playerId in the same fashion.&lt;br /&gt;
&lt;br /&gt;
There are no requirement on the method used to assign a teamId to&lt;br /&gt;
a team, or a playerId to a player, be it for the first id, or when&lt;br /&gt;
assigning multiple id&#039;s to the same grabber.&lt;br /&gt;
&lt;br /&gt;
Spawning:&lt;br /&gt;
Members of the same team should be placed on spawn points of the&lt;br /&gt;
same teamId. Should a team has more members than available spawn&lt;br /&gt;
points, two options are possible. First, the wingman configuration&lt;br /&gt;
could be used to distribute them. Second, the excess members of&lt;br /&gt;
the team can be placed on spawn points that aren&#039;t associated to&lt;br /&gt;
any team. This decision need to be controlled by an external factor.&lt;br /&gt;
&lt;br /&gt;
A player can be placed on any spawn point that it owns. A player&lt;br /&gt;
cannot be placed on a spawn point owned by another player. Should&lt;br /&gt;
a player re-spawn during the game, two alternatives are&lt;br /&gt;
possible. First, the player is respawned at the same position that&lt;br /&gt;
it was at game start. Second, if other spawn points are possible,&lt;br /&gt;
a new one is selected by an undetermined method. If no other spawn&lt;br /&gt;
points are available, the old one is reused. This need to be&lt;br /&gt;
controled by an external factor.&lt;br /&gt;
&lt;br /&gt;
Items:&lt;br /&gt;
Items such as Zones can be linked to a teamId and a playerId. If&lt;br /&gt;
an Item links to a teamId or a playerId, such id MUST be defined&lt;br /&gt;
as part of the map. Maps not respecting this will be automatically&lt;br /&gt;
rejected. Such linking affect the behavior of the Item, and can be&lt;br /&gt;
specific of the type of Item.&lt;br /&gt;
&lt;br /&gt;
(Uncertain: an Item can be linked to multiple playerId or teamId?)&lt;br /&gt;
&lt;br /&gt;
Items keep their owner through the match, even if the player or&lt;br /&gt;
all the members of a team are dead.&lt;br /&gt;
&lt;br /&gt;
Syntax in the map:&lt;br /&gt;
&lt;br /&gt;
A team element may contain player elements and spawn elements.&lt;br /&gt;
A player element may contain spawn elements.&lt;br /&gt;
The id&#039;s need not to follow any rule other than to be unique in&lt;br /&gt;
their own series.&lt;br /&gt;
&lt;br /&gt;
(Uncertain: need to confirm for the id&#039;s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Two different ways to write the XML. One with hierarchy, one flat&lt;br /&gt;
with attribute. Need to pick one. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;team teamid=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;spawn .../&amp;gt;&lt;br /&gt;
      &amp;lt;spawn .../&amp;gt;&lt;br /&gt;
      &amp;lt;spawn .../&amp;gt;&lt;br /&gt;
&amp;lt;/team&amp;gt;&lt;br /&gt;
&amp;lt;team teamid=&amp;quot;A&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;player playerid=&amp;quot;Joe&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;spawn ... /&amp;gt;&lt;br /&gt;
	      &amp;lt;spawn ... /&amp;gt;&lt;br /&gt;
      &amp;lt;/player&amp;gt;&lt;br /&gt;
      &amp;lt;player playerid=&amp;quot;lemon&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;spawn .../&amp;gt;&lt;br /&gt;
	      &amp;lt;spawn .../&amp;gt;&lt;br /&gt;
      &amp;lt;/player&amp;gt;&lt;br /&gt;
      &amp;lt;spawn .../&amp;gt;&lt;br /&gt;
      &amp;lt;spawn .../&amp;gt;&lt;br /&gt;
&amp;lt;/team&amp;gt;&lt;br /&gt;
&amp;lt;player playerid=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;spawn .../&amp;gt;&lt;br /&gt;
	&amp;lt;spawn .../&amp;gt;&lt;br /&gt;
&amp;lt;/player&amp;gt;&lt;br /&gt;
&amp;lt;player playerid=&amp;quot;boat&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;spawn .../&amp;gt;&lt;br /&gt;
	&amp;lt;spawn .../&amp;gt;&lt;br /&gt;
&amp;lt;/player&amp;gt;&lt;br /&gt;
&amp;lt;spawn .../&amp;gt;&lt;br /&gt;
&amp;lt;spawn .../&amp;gt;&lt;br /&gt;
&amp;lt;spawn .../&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spawn ... teamId=&amp;quot;3&amp;quot; playerId=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;spawn ... teamId=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;spawn ... playerId=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;spawn ... teamId=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;spawn ... teamId=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;spawn ... teamId=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;spawn ... teamId=&amp;quot;A&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;spawn ... teamId=&amp;quot;A&amp;quot; playerId=&amp;quot;Joe&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;spawn ... teamId=&amp;quot;A&amp;quot; playerId=&amp;quot;Joe&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;spawn ... teamId=&amp;quot;A&amp;quot; playerId=&amp;quot;lemon&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;spawn ... teamId=&amp;quot;A&amp;quot; playerId=&amp;quot;lemon&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;spawn ... teamId=&amp;quot;A&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;spawn ... teamId=&amp;quot;A&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;spawn ... playerid=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;spawn ... playerid=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;spawn ... playerid=&amp;quot;boat&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;spawn ... playerid=&amp;quot;boat&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;spawn .../&amp;gt;&lt;br /&gt;
&amp;lt;spawn .../&amp;gt;&lt;br /&gt;
&amp;lt;spawn .../&amp;gt;&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Development_Docs&amp;diff=8521</id>
		<title>Development Docs</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Development_Docs&amp;diff=8521"/>
		<updated>2006-06-22T19:20:12Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: /* Stuff in CVS HEAD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sections}} &amp;lt;!-- Template:Sections should be at the top of each section --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is documentation for developers or for people who just want to hack on the code.  It is not intended to replace the automatic API documentation generated by doxygen (we do have a doxyfile, right?), but is intended to supplement those documents with additional information that may not necessarily appear in the API docs.  It is also not intended as a substitute for good commenting tactics.  And finally, it is a place to put planning documentation (like the stuff Philippe writes), proposals, RFC-type material, and so forth.  But not the roadmap, we use Sourceforge&#039;s tracker for that.&lt;br /&gt;
&lt;br /&gt;
== Set Up Your System ==&lt;br /&gt;
&lt;br /&gt;
* [[Windows Development System]]&lt;br /&gt;
* [[Working with SVN]]&lt;br /&gt;
* [[Cross-compiler]]&lt;br /&gt;
&lt;br /&gt;
== Stuff That&#039;s Current ==&lt;br /&gt;
&lt;br /&gt;
* [[Config Item Purposes]]&lt;br /&gt;
* [[Project Dependency Structure]]&lt;br /&gt;
* [[Debug Recording]]&lt;br /&gt;
* [[Error Handling]]&lt;br /&gt;
&lt;br /&gt;
== Stuff in SVN HEAD ==&lt;br /&gt;
&lt;br /&gt;
* [[Embedded Web Server]]&lt;br /&gt;
* [[Map/Config Rotation]]&lt;br /&gt;
* [[Particle System]]&lt;br /&gt;
* [[Joda&#039;s Team Code]]&lt;br /&gt;
* [[New Sound Engine]]&lt;br /&gt;
* [[Spawm points]]&lt;br /&gt;
&lt;br /&gt;
* [[Cockpit Tutorial]] | [[Cockpits list]]&lt;br /&gt;
&lt;br /&gt;
== Data File Handling ==&lt;br /&gt;
&lt;br /&gt;
* [[Config Files]]&lt;br /&gt;
* [[Resource System]]&lt;br /&gt;
* [[Statistical Collections Database]] (fancy way of saying &amp;quot;stat files&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Stuff That&#039;s Real but doesn&#039;t fit above ==&lt;br /&gt;
&lt;br /&gt;
* [[Experimental Map Features]]&lt;br /&gt;
&lt;br /&gt;
== Wishlist, or Stuff that&#039;s planned ==&lt;br /&gt;
&lt;br /&gt;
(Might not be planned, but this is it)&lt;br /&gt;
&lt;br /&gt;
* [[Scripted GUI Notes]]&lt;br /&gt;
* [[Authentication]]&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
This is stuff that&#039;s of historical significance to the project.  It&#039;s very difficult to remember where you&#039;re going if you don&#039;t remember where you came from, right?  This is technical stuff.  Community history should have its own section.&lt;br /&gt;
&lt;br /&gt;
* [[What Went Wrong in Armagetron]]&lt;br /&gt;
&lt;br /&gt;
{{Sections}} &amp;lt;!-- Template:Sections should be at the top of each section --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=2456</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=2456"/>
		<updated>2006-01-08T19:09:02Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: /* Wall */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is to help map designer to get a grasp of the Map&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This version of the tutorial address the syntax defined by map-0.2.8_beta3.dtd and present the rules of interpreting the syntax as used by the parsing engine in the version 0.2.8 of Armagetron Advance.&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;
[[Image:original-1.0.1.png|right|thumbnail|Original Armagetron 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;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
	         Converted to XML by philippeqc.&lt;br /&gt;
	         License: Do with it what you want.                          --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
	&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Map format start with a XML header. The actual definition&lt;br /&gt;
of the Map is wrapped in a Resource. The Resource gives a&lt;br /&gt;
description of the content, such as the author and the version of&lt;br /&gt;
the map included. This particuliar map is the xml version of the&lt;br /&gt;
original map that supported directly in the game before version&lt;br /&gt;
0.2.8 (Arthemis). &lt;br /&gt;
&lt;br /&gt;
Skippin ahead in to the Field element, line 11 defines that &lt;br /&gt;
that 4 axes are to be&lt;br /&gt;
used. From line 13 to 26, 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;
== Header ==&lt;br /&gt;
The header of the map can nearly be considered as constant. It is&lt;br /&gt;
composed of 2 lines.&lt;br /&gt;
&lt;br /&gt;
Header for Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only element you need to consider is the name of the dtd. The&lt;br /&gt;
dtd should always be named after the version it targets. For&lt;br /&gt;
Arthemis, it should be &amp;quot;map-0.2.8.dtd&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Nota: during the beta process, version can change often and have&lt;br /&gt;
great difference between them. To limit the scope of the problem&lt;br /&gt;
during the beta phase, the name of the dtd should include the beta&lt;br /&gt;
it targets. &lt;br /&gt;
&lt;br /&gt;
Header for the beta 3 of Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resource ==&lt;br /&gt;
The Resource element describe some meta-information of the Map,&lt;br /&gt;
such as who created it, how should the resource file be named and&lt;br /&gt;
what type of information is to be expected.&lt;br /&gt;
&lt;br /&gt;
One part of the Resource details describe who made this map a&lt;br /&gt;
reality. In the Resource element, it is possible to differenciate&lt;br /&gt;
between the person or organism that comissioned the map, the&lt;br /&gt;
commisionner, and the person who executed the request and coded&lt;br /&gt;
it, the author. &lt;br /&gt;
&lt;br /&gt;
Both operations might be carried by the same and only person, in&lt;br /&gt;
this instance both entities are the same and the commissioner&lt;br /&gt;
field should be left blank. The commissioner field should be used&lt;br /&gt;
when the concept of a map and its execution are performed by two&lt;br /&gt;
different persons or entities. It could range from anything from&lt;br /&gt;
&amp;quot;could someone make a map where the feeling of &amp;lt;X&amp;gt; is emphased&amp;quot; to&lt;br /&gt;
coding from a hand-drawn sketch. The commissioner could also be&lt;br /&gt;
implied. Without him/it ever placing an open request, a&lt;br /&gt;
commisioner could be assign to a map when the author whan to&lt;br /&gt;
express an assumed sharing of the creation of the map. This can be&lt;br /&gt;
the case, for example, when the member of a Clan wrote a map that&lt;br /&gt;
falls in the ideals of the Clan.&lt;br /&gt;
&lt;br /&gt;
Maps can be implicitly grouped together. The category field is&lt;br /&gt;
there for this purpose. Prolific authors and their public will&lt;br /&gt;
appreciate a clear grouping of similar themed maps.&lt;br /&gt;
&lt;br /&gt;
As ever refining one&#039;s work is a very respected quality in the&lt;br /&gt;
Armagetron community, the latest changes need to be properly&lt;br /&gt;
propagated to everybody. The version field allow an author to&lt;br /&gt;
identify each specific instance of her work, and also insure that&lt;br /&gt;
a client will receive the exact version used by a server when&lt;br /&gt;
playing on it.&lt;br /&gt;
&lt;br /&gt;
The type specifies that the file hold an Armagetron Advance&lt;br /&gt;
map. While this is the only type available at the moment, the&lt;br /&gt;
development team is eager to expand this in the furture.&lt;br /&gt;
&lt;br /&gt;
Finally, and most importantly, the name of the &#039;&#039;ouvrage&#039;&#039; being&lt;br /&gt;
presented. &lt;br /&gt;
&lt;br /&gt;
The fields for Resource are:&lt;br /&gt;
;name&lt;br /&gt;
:The name of the map, mandatory.&lt;br /&gt;
;type&lt;br /&gt;
:The only valid type is &amp;quot;aamap&amp;quot;. This field is defaulted &amp;quot;aamap&amp;quot; when abscent.&lt;br /&gt;
;version &lt;br /&gt;
:The version of the map described in this particuliar file. This value should be modified each time a change is applied to the map to ensure everybody have the proper copy. This field is defaulted to &amp;quot;1.0&amp;quot; when abscent.&lt;br /&gt;
;author&lt;br /&gt;
:The author who produced this map. This field is defaulted to &amp;quot;Anonymous&amp;quot; when abscent.&lt;br /&gt;
;commisioner&lt;br /&gt;
:The entity who dreamt, requested or even inspired in any way this map. This field is optional and has no default value. &lt;br /&gt;
;category&lt;br /&gt;
:How this map should be categorised. This field can have any number of sub categories, each separated by a &amp;quot;\&amp;quot;. An example could be &amp;quot;category\subcategory\subsubcategory&amp;quot;. This field is defaulted to &amp;quot;unsorted&amp;quot; when abscent. &lt;br /&gt;
&lt;br /&gt;
Example: The castle map made by philippeqc&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;Castle&amp;quot; type=&amp;quot;aamap&amp;quot; version=&amp;quot;1.1&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;examples&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The StarTron map made by Your_mom&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;5ptstar&amp;quot; version=&amp;quot;beta&amp;quot; author=&amp;quot;Your_mom&amp;quot; category=&amp;quot;beta&amp;quot; type=&amp;quot;aamap&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The MBC training map, made by Zorgul&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;TrainingDay&amp;quot; version=&amp;quot;1.6&amp;quot; author=&amp;quot;Zorgul&amp;quot; category=&amp;quot;MBC&amp;quot; type=&amp;quot;aamap&amp;quot; commisioner=&amp;quot;Micro Bus City&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The Reverso map, writen by Nemosultra based on a drawing by lucifer, for the Crack Pipe server&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;Reverso&amp;quot; version=&amp;quot;1.1-b&amp;quot; author=&amp;quot;Nemosultra&amp;quot; category=&amp;quot;CrackPipe&amp;quot; type=&amp;quot;aamap&amp;quot; commisioner=&amp;quot;lucifer&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To facilitate manipulation of the file over distributed systems,&lt;br /&gt;
the Resource holds explicit information about the naming and&lt;br /&gt;
storing of the file. This information can be used by tools such as&lt;br /&gt;
scripts and resource repositories to manipulate the file. &lt;br /&gt;
&lt;br /&gt;
Many tools, including the game client, will expect the following&lt;br /&gt;
to indicate the location of a &lt;br /&gt;
filee inside the local store of resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Author&amp;gt;/[Category/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;ResourceType&amp;gt;.&amp;lt;Extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
This element is the basic holder of the description of the&lt;br /&gt;
Map. From the opening element to the closing one, all the&lt;br /&gt;
information will be used to construct an in-game representation&lt;br /&gt;
for the players to explore and possibly compete in.&lt;br /&gt;
&lt;br /&gt;
The version attribute of the map indicate an specific parsing&lt;br /&gt;
engine version that should be used to express the map in the exact&lt;br /&gt;
manners that are desired by the map creator. &lt;br /&gt;
&lt;br /&gt;
Example: Map element&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sooner in the file,&lt;br /&gt;
the dtd has already specified a version. The difference between&lt;br /&gt;
both version is one specify the version of the syntax to be use,&lt;br /&gt;
and the other, the version of the rules to be used to interprete&lt;br /&gt;
the syntax.&lt;br /&gt;
&lt;br /&gt;
The dtd control the syntax, what keywords are valid and in which&lt;br /&gt;
arrangement. The parsing engine has specific rules how to read the&lt;br /&gt;
syntax and create the game elements. It is possible for different&lt;br /&gt;
parsing engine to operate from the same syntax, be it because the syntax&lt;br /&gt;
allows for many interpretation, or because a specific&lt;br /&gt;
interpretation has been found faulty in some case. Because each&lt;br /&gt;
interpretation could lead to very different instantiation, it is&lt;br /&gt;
best for the map designer to specify the one that should be&lt;br /&gt;
used. Even when no alternative interpretation exist, ie: there is&lt;br /&gt;
only one version available, it is best for the map designer to&lt;br /&gt;
specify it. Should a new one be implemented at a later time, the&lt;br /&gt;
map defined would continue to be instanciated properly.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, the only parsing engine version is&lt;br /&gt;
&amp;quot;0.2.8&amp;quot;. Maps using a version that is not understood by the&lt;br /&gt;
parsing engine of a specific client or server will be&lt;br /&gt;
automatically rejected by said application, on the ground that the&lt;br /&gt;
parsing engine doesn&#039;t know how to operate on it.&lt;br /&gt;
&lt;br /&gt;
Even if only one value exist, it is impossible to provide it as a&lt;br /&gt;
default, as there are no assurance that a new interpretation of&lt;br /&gt;
the syntax will not arrive at a future time.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It is possible for a map designer to indicate specific game&lt;br /&gt;
settings, similar to the ones available through the configuration&lt;br /&gt;
files of the application, to be used with the map. When&lt;br /&gt;
this is not desired, the Settings element can be safely removed&lt;br /&gt;
from the map definition.&lt;br /&gt;
&lt;br /&gt;
Any number of Setting can be defined inside of the Settings&lt;br /&gt;
element. Each Setting defined will overwrite the value previously&lt;br /&gt;
defined in the game. Each new Setting addressing a specific&lt;br /&gt;
configuration item will keep on overwriting previously defined&lt;br /&gt;
values. The Settings items are processed in order, from the top to&lt;br /&gt;
the bottom one.&lt;br /&gt;
&lt;br /&gt;
The Settings should be considered to be global to the World and&lt;br /&gt;
its sub-elements. This has very little relevance at the moment as&lt;br /&gt;
only one World and one Field can exist in the game. It is not&lt;br /&gt;
excluded that future version of the game could support multiple&lt;br /&gt;
elements such as World and Field. Each such elements and sub-elements would&lt;br /&gt;
receive the Settings defined in its parents, but would also be&lt;br /&gt;
able to overwrite parent received Settings for itself and its&lt;br /&gt;
sub-elements. &lt;br /&gt;
&lt;br /&gt;
One such overwriting capacity already exist, in the form of the&lt;br /&gt;
Axes element. This element can and will overwrite the value passed&lt;br /&gt;
by the Setting ARENA_AXES.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, there are no known case where the order of&lt;br /&gt;
writing Setting should matter. There are no garanties of it being&lt;br /&gt;
the case. Be carefull of the order of the Setting provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting ==&lt;br /&gt;
Each individual Setting defines a specific element normally&lt;br /&gt;
configurable throught the config files of the game&lt;br /&gt;
application. For a full list and description of the setting&lt;br /&gt;
available, consult the [[Console Commands]] page. As config items&lt;br /&gt;
are the same as console commands, you will find all the&lt;br /&gt;
information there.&lt;br /&gt;
&lt;br /&gt;
The Setting has two attributes, the name and the value. The name&lt;br /&gt;
field hold the setting name as found in the various configuration&lt;br /&gt;
files. The value field will be assigned to the designated setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Setting name=&amp;quot;CYCLE_BRAKE_REFILL&amp;quot; value=&amp;quot;.1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will assing .1 to the configuration item CYCLE_BRAKE_REFILL.&lt;br /&gt;
&lt;br /&gt;
No validation are done on either fields by the parsing engine. The&lt;br /&gt;
values are passed directly to the setting engine, where the usual&lt;br /&gt;
validation is performed. Unexisting or misspelled settings names&lt;br /&gt;
will be ignored. Setting with valid names and invalid values have&lt;br /&gt;
an undetermined effect.&lt;br /&gt;
&lt;br /&gt;
The different Setting used have the potential of overwriding&lt;br /&gt;
client or server ones. While this behavior offers great capacity&lt;br /&gt;
to custom behavior for a specific map, users playing locally on&lt;br /&gt;
their machine and server administrator might find it a disruption&lt;br /&gt;
of their craftfully designed settings. Use with care and&lt;br /&gt;
moderation.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the World element is&lt;br /&gt;
the Field element. Only one Field can be defined. No parameters&lt;br /&gt;
are available at the moment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;World&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
	&amp;lt;/World&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;
The field define the zone on a 2D plane where the gaming can&lt;br /&gt;
occur. The full support of this definition will be developed under&lt;br /&gt;
Bacchus. In Arthemis, the old philosophy of &amp;quot;the play zone has to&lt;br /&gt;
be bounded by walls&amp;quot; is somewhat preserved. A secondary mechanism&lt;br /&gt;
also exist to prevent the players from escaping the rim. This is a&lt;br /&gt;
bried description of the mechanism used.&lt;br /&gt;
&lt;br /&gt;
While setting all the walls to be used during a round, the engine&lt;br /&gt;
will keep track of the minimal and maximal x&#039;s and y&#039;s values&lt;br /&gt;
encountered through wall coordinates.&lt;br /&gt;
A logical box will be formed, using the coordinate&lt;br /&gt;
(minX, minY), (maxX, minY), (maxX, maxY) and (minX, maxY) as its&lt;br /&gt;
corners.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around the classical arena.&lt;br /&gt;
The classical arena has the coordinates (0,0), (0,500), (500,500)&lt;br /&gt;
and (500, 0). This means that minX=0, minY=0, maxX=500 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around a square arena moved by 20 on the x&#039;s.&lt;br /&gt;
The classical arena has the coordinates (20,0), (20,500), (520,500)&lt;br /&gt;
and (520, 0). This means that minX=20, minY=0, maxX=520 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around a trapeze arena&lt;br /&gt;
A trapeze has a base lenght of 300, a top lenght of 200 and a&lt;br /&gt;
height of 200 with the following coordinates: (0, 0), (300, 0),&lt;br /&gt;
(250, 200), (50, 200). This means that minX=0, minY=0, maxX=300,&lt;br /&gt;
maxY=200.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around 2 walls of the classical arena&lt;br /&gt;
Should the south and west walls of the classical arena be ommited,&lt;br /&gt;
and only the north (from (0,500) to (500,500)) and east one (from&lt;br /&gt;
(500,0) to (500,500)) remain, the logical box is still the same&lt;br /&gt;
around it. This means that minX=0, minY=0, maxX=500 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: 2 walls at strange angle&lt;br /&gt;
If two walls, organised at strange angle and not even meeting,&lt;br /&gt;
compose the arena, are described as (200,200) to (600, 400) and&lt;br /&gt;
(350, 350) to (-10, 720). This means that minX=-10, minY=200,&lt;br /&gt;
maxX=600 and maxY=720.&lt;br /&gt;
&lt;br /&gt;
A no-motion logical box will be put at 10 game units outside of the&lt;br /&gt;
logical box. Should a player meet this no-motion zone, she will&lt;br /&gt;
find herself pushing agains a coussin of air. Rubber has undefined&lt;br /&gt;
effect agains this no-motion box.&lt;br /&gt;
&lt;br /&gt;
A second logical box will be put at 20 games units from the first&lt;br /&gt;
logical box. Should any players be outside of this logical box,&lt;br /&gt;
they are automatically killed.&lt;br /&gt;
&lt;br /&gt;
In game terms, should the players not be bounded by a continous&lt;br /&gt;
wall, they are free to roam around it but they will find an&lt;br /&gt;
invisible barrier keeping them from excaping into the infinite.&lt;br /&gt;
&lt;br /&gt;
Should you want to allow your players to roam without&lt;br /&gt;
restrictions, exploring the infinity of the grid, you have to&lt;br /&gt;
specify to use an infinite field.&lt;br /&gt;
&lt;br /&gt;
The Field support a single parameter, named logicalBox, which&lt;br /&gt;
control if the logical box should be used to limit roaming on the&lt;br /&gt;
Field. &lt;br /&gt;
;logicalBox&lt;br /&gt;
:When set to true, the motion will be restrained by the logical box, and when set to false, no logical box will be used. This field is optional and default to true.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box bounded Field&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
            &amp;lt;Field&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: Field with its logical box disabled&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
            &amp;lt;Field logicalBox=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following 2 paragraph are post map-0.1 and 0.2.8_beta2.&lt;br /&gt;
&lt;br /&gt;
For clarity purpose, the Axes element, if defined, need to be&lt;br /&gt;
defined first. After this, Spawn point, Walls and Zones can be&lt;br /&gt;
defined in any order.&lt;br /&gt;
&lt;br /&gt;
While a Field without any Spawn points is syntaxly valid, and&lt;br /&gt;
the parsing engine doesnt report any error, the effect is&lt;br /&gt;
undetermined. While a Field without any Wall is syntaxly valid,&lt;br /&gt;
and the parsing engine doesn&#039;t report any error, the effect is&lt;br /&gt;
undetermined.&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;
;xdir&lt;br /&gt;
: This is size of the displacement along the x&#039;s for this axis&lt;br /&gt;
;ydir&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 xdir and ydir 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 angle=&amp;quot;225&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis angle=&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 xdir and a ydir of 1. The real length of the described Axis is &lt;br /&gt;
&amp;lt;math&amp;gt;\sqrt{xdir^2+ydir^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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;2&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-2&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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 following example 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. This reduce the&lt;br /&gt;
effect of playing at very high speed while having a huge&lt;br /&gt;
difference between directions.&lt;br /&gt;
&lt;br /&gt;
Example: Factor of 6 between displacement, centered around a speed&lt;br /&gt;
of ~1.&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 xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-3&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
Example: Factor of 6 between displacement, centered around a speed&lt;br /&gt;
of ~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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-6&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;6&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;
While the ratio of speed is the same between both examples, the&lt;br /&gt;
later one has speed that might be difficult to control in one&lt;br /&gt;
direction. The first example produce the same difference, but&lt;br /&gt;
present the players with a more balanced alternative.&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;&lt;br /&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 Axis in cartesian, in the order 4, 5, 6, 1, 2, 3&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&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 Axis in degrees, in the order 4, 5, 6, 1, 2, 3&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both define 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 Axis in cartesian, in the order 4, 6, 5, 1, 3, 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&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 Axis in degrees, in the order 4, 6, 5, 1, 3, 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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: 4 Axis counter clockwise&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
== Wall ==&lt;br /&gt;
Walls 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: A square Wall of size 200&lt;br /&gt;
&amp;lt;pre&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;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;
&amp;lt;/pre&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;
&lt;br /&gt;
Example: A 2 points wall, possibly as an obstacle&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;
The Wall element has one attribute, the height. Controlling the&lt;br /&gt;
height affect the rendering height of a wall. A height of 1.0 is&lt;br /&gt;
about the same as the height of the original cycle model. A height&lt;br /&gt;
of 4.0 correspond to the Walls rendered with the lowRim setting on&lt;br /&gt;
the client. When no height is defined, the client defined setting&lt;br /&gt;
of either lowRim or highRim is used. This has the advantage of&lt;br /&gt;
respecting the players choice and often, capacity to render high&lt;br /&gt;
walls. When a height of 0 or less (ie: negative value) is given, an unresonably large value is substitued.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;height&#039;&#039;&lt;br /&gt;
: The height used for the rendering of the Wall. Positive value only.&lt;br /&gt;
&lt;br /&gt;
Example : Using the client default height&lt;br /&gt;
&amp;lt;pre&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;10&amp;quot; y=&amp;quot;10&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 : Controling the height&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Wall height=&amp;quot;2.13&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;Point x=&amp;quot;10&amp;quot; y=&amp;quot;10&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;
== 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: Basic Spawn presentation&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;
== Zones ==&lt;br /&gt;
Zone are interactive areas on the Field. They manifest themself as&lt;br /&gt;
huge circles slowly rotating. The players can interact with the&lt;br /&gt;
Zones by entering or being inside them.&lt;br /&gt;
&lt;br /&gt;
The Zone has an attribute effect which allows 3 values: win, death and&lt;br /&gt;
fortress. Entering a Zone of effect win makes the player the round&lt;br /&gt;
winner. Entering a Zone of effect death automatically kills the&lt;br /&gt;
player. Zones of effect fortress need to be occupied to be&lt;br /&gt;
triggered, and once triggered, they make the team the round winner.&lt;br /&gt;
&lt;br /&gt;
;effect&lt;br /&gt;
:Any of win, death or fortress. When ommited, the value is defaulted to death&lt;br /&gt;
&lt;br /&gt;
Example: Zone syntax&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Zone requires a sub element named ShapeCircle. &lt;br /&gt;
&lt;br /&gt;
The ShapeCircle has 2 attributes, the radius and the growth. The&lt;br /&gt;
radius attribute describe the size of the CircleShape and is&lt;br /&gt;
required. The unit used is the same game unit that are used as map&lt;br /&gt;
coordinates. A ShapeCircle with a radius of 10 will extend of 10&lt;br /&gt;
game units in every direction from its center.&lt;br /&gt;
&lt;br /&gt;
The growth describe how the radius of the ShapeCircle changes over&lt;br /&gt;
time. This unit is game units per second from the moment the Zone&lt;br /&gt;
is create, which is the round start.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify a negative growth, in which case the ShapeCircle will&lt;br /&gt;
slowly shrink. Should at any time the radius be of 0 or less, the&lt;br /&gt;
Zone is removed without effect.&lt;br /&gt;
The growth is optional and defaults to 0, which hold the&lt;br /&gt;
ShapeCircle at a constant size during the round.&lt;br /&gt;
&lt;br /&gt;
;radius&lt;br /&gt;
:The initial radius of the circle defining the Zone. This field is mandatory.&lt;br /&gt;
;growth&lt;br /&gt;
:The growth of the circle. The values can be positive, negative or 0. This field is optional and is defaulted to 0.&lt;br /&gt;
&lt;br /&gt;
Example: Zone with CircleShape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot; growth=&amp;quot;0.17&amp;quot;&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ShapeCircle requires a Point sub-element which describe the&lt;br /&gt;
center of the ShapeCircle. The syntax of the Point is the same as&lt;br /&gt;
the one used for the Wall.&lt;br /&gt;
&lt;br /&gt;
Example: A non-growing death zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;120&amp;quot; y=&amp;quot;86&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A growing fortress zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;fortress&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot; growth=&amp;quot;1.09&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;250&amp;quot; y=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A shrinking win zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;200&amp;quot; growth=&amp;quot;-0.2&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;440&amp;quot; y=&amp;quot;325&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible and valid to place the center of the Zone in a&lt;br /&gt;
location that is not accessible to the players, such as in a&lt;br /&gt;
walled compound or outside of the play area. This behavior might&lt;br /&gt;
change in future version. Consult the appropriate documentation.&lt;br /&gt;
&lt;br /&gt;
Example: A death zone outside the rim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;-25&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&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;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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A death zone partially outside the rim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;-15&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&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;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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: It is important to note that while Zones are introduced in&lt;br /&gt;
Arthemis, a more complete implementation will follow in&lt;br /&gt;
Bacchus. Curious minds consulting the documentation presenting the&lt;br /&gt;
Bacchus implementation of Zones will notice that fortress isn&#039;t an&lt;br /&gt;
effect, but rather a trigger type. The Arthemis implementation of&lt;br /&gt;
Zones falsely uses it as an effect instead of exposing a trigger&lt;br /&gt;
mechanism. Map designers are to be warned this will no longer be&lt;br /&gt;
possible in maps defined for Bacchus.&lt;br /&gt;
&lt;br /&gt;
=== Fortress Zone ===&lt;br /&gt;
The fortress Zone is particuliar because it uses a scoring system&lt;br /&gt;
to determine if and when the Zone is triggered. The score is&lt;br /&gt;
affected by the time passed in it by attackers and defenders.&lt;br /&gt;
&lt;br /&gt;
At start time, the score is set to 0.0. While the score can move&lt;br /&gt;
freely, 2 restrictions are always applied. First, the score can&lt;br /&gt;
never drop below 0.0. Second, if the score reaches or exceed 1.0,&lt;br /&gt;
the Zone is triggered.&lt;br /&gt;
&lt;br /&gt;
Each single adversary in the Zone add to the score for their time&lt;br /&gt;
passed in it. Each single defender in the Zone remove to the score&lt;br /&gt;
for their time passed in it. Also, the score always decays. Each&lt;br /&gt;
of these aspect is controlled by a different setting,&lt;br /&gt;
CONQUEST_RATE, DEFEND_RATE and CONQUEST_DECAY_RATE. They all&lt;br /&gt;
express a rate in points per seconds.&lt;br /&gt;
&lt;br /&gt;
;CONQUEST_RATE&lt;br /&gt;
: Any single attacking player in the Zone add points to the score at this rate. &lt;br /&gt;
;DEFEND_RATE&lt;br /&gt;
: Any single defending player in the Zone removes points to the score at this rate. &lt;br /&gt;
;CONQUEST_DECAY_RATE&lt;br /&gt;
: The score of a Zone decays at this rate, irrelevantly of the numbers of attackers and defenders in the Zone. &lt;br /&gt;
&lt;br /&gt;
These 3 settings are global for all the Zones on a map.&lt;br /&gt;
&lt;br /&gt;
Example: Configuring Fortress from the config file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CONQUEST_RATE 0.5&lt;br /&gt;
DEFEND_RATE 0.3&lt;br /&gt;
CONQUEST_DECAY_RATE 0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: Configuring Fortress from the settings in the map&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Settings&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;CONQUEST_RATE&amp;quot; value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;DEFEND_RATE&amp;quot; value=&amp;quot;0.3&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;CONQUEST_DECAY_RATE&amp;quot; value=&amp;quot;0.1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Map writing best practice ===&lt;br /&gt;
&lt;br /&gt;
==== Comment your work ====&lt;br /&gt;
&lt;br /&gt;
You should always comment the various parts of your work. Doing so improve maintainability. Something that is obvious during the creation of a particular map often becomes very cryptic after a few weeks. A good comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comment in xml start with &amp;quot;&amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;lt;/nowiki&amp;gt;&amp;quot; (without the quotes) and ends with &amp;quot;&amp;lt;nowiki&amp;gt;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t highlight the commented part, be careful not to exclude a part of your map by mistake.&lt;br /&gt;
&lt;br /&gt;
==== Arena size ====&lt;br /&gt;
&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;
Also, arenas with many divisions or made of many interconnecting&lt;br /&gt;
rooms might find the efficace play space shrunk. Giving them a bit&lt;br /&gt;
more surface might help balance this. &lt;br /&gt;
&lt;br /&gt;
For example, if rooms are organised in a 3 by 4 pattern, with&lt;br /&gt;
corridors connecting them, many of the space between the rooms is&lt;br /&gt;
lost. The map designer might try to have a total&lt;br /&gt;
surface of for all the rooms that is of 250 000 square game units&lt;br /&gt;
(the same surface than a 500 by 500 room). He might feel that&lt;br /&gt;
ignoring the surface of the corridors compensate for the large&lt;br /&gt;
amount of walls reducing the motion.&lt;br /&gt;
&lt;br /&gt;
On the other hand, 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;
There are no hard rules of any sort about the size of an&lt;br /&gt;
arena. Experiment and adjust to produce the effect desired, and&lt;br /&gt;
the players will most probably appreciate your efforts.&lt;br /&gt;
&lt;br /&gt;
==== Don&#039;t overload attributes ====&lt;br /&gt;
&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;
xdir and ydir attribute are never queried.&lt;br /&gt;
&lt;br /&gt;
While the engine ignore the exceeding data, this practice has the following drawbacks:&lt;br /&gt;
&lt;br /&gt;
* File size: The exceeding information is never used, but need to be transmitted as part of the file, and stored.&lt;br /&gt;
* Readability: Exceeding information complicate the reading of a map by humans. &lt;br /&gt;
* Maintenance: Maintenance of the map is not much more complex. If the author is minimalist, he/she risk updating the part of information that is ignored. Extremely good knowledge of the working of the parser is required to avoid this pitfall, and the change is only valid if the rule of precedences aren&#039;t updated. Specifying only one set of information avoid this problem. Also, if both set of information are updated, then the task for the author is double, and so are the risks for error.&lt;br /&gt;
&lt;br /&gt;
=== Resource file name convention ===&lt;br /&gt;
&lt;br /&gt;
Resource are external content that makes the game interesting. Textures, sounds, models and maps are all resources for Armagetron Ad. While at the time of writing of this tutorial, only maps are supported as true resources, soon support for the other types will be added. Also, while this section incorporated in the Maps tutorial, it might be moved as an independent document, and the standard 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 resources for Armagetron Ad should follow the following naming 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&lt;br /&gt;
: The name of the person who created the resource. This can be the full name, a nick name (such as the ones used on the Armagetron Ad forum) of the author. Alternatively, the author can forgo his or her name and instead opt for a group name. Group name should be used when the author want to indicate that a set of resources are associate with a group. Instances of this could be when the resources are for a clan, a community, a [set of] server[s].&lt;br /&gt;
;SubDirectory&lt;br /&gt;
: Prolific authors and those are free to set up any number of sub directories to help them organize and possibly categorize their resources. The Armagetron Ad team recommend you to categorize resources by topics (ie: all the resources required for a particular movie-pack set in the same sub directory) over other categorization, such as categorization by type (ie: all the floor tiles set in the same sub directory). Any number of sub directory level should be supported. This is not a mandatory item.&lt;br /&gt;
;ResourceName&lt;br /&gt;
: The actual name of the resource. This should be descriptive, and somewhat unique to facilitate identification of the described resource. The advantage of specifying a somewhat unique name here is that should the resource be accidentally moved out of its folder, it is still possible to quickly and easily identify it. A special note for maps: the ResourceName should be the same as the name attribute of the Map element defined in the xml file.&lt;br /&gt;
;VersionNumber&lt;br /&gt;
: This part should be used by the author to identify which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new resources, Armagetron Ad rely solely on this part to be updated. Should a resource be updated and the old name kept, it would cause problems between different clients. Client already having the old resource 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 would get the latest version. The actual format to be used for the VersionNumber is left to the choice of the author. While the Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar 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, ...). Keep in mind that it should be obvious to other as to which is the most up to date version of the resource. A special note for maps: the VersionNumber should be the same as the version attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;Extension&lt;br /&gt;
: This is the regular type of extension. While Armagetron Ad doesn&#039;t verify that the extension describe the right type of content, it is favorable for other users that you set it to the appropriate 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;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 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;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Parallelogram arena ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Parallelogram-1.0.png|right|thumbnail|Parallelogram]]&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot; category=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;World&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.2&amp;quot; ydir=&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HexaTRON ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HexaTRON-0.2.png|right|thumbnail|HexaTRON]]&lt;br /&gt;
&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 note that this is 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;&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot; category=&amp;quot;HexaTRON&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About the &amp;quot;undefined and unsupported&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and unsupported&amp;quot;. While it may be possible to do them now, and even amusing to do it, they are strongly discouraged. Later version of the World format will most probably conflict with those behaviors. This will make such behaviors difficult to preserve, if possible at all. For this reasons, it has been decided that _NO_ effort would be put to maintain them. Use them if you want, but do not come complaining if and when they stop working.&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=2315</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=2315"/>
		<updated>2005-11-25T19:26:40Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: The description of the parameter logicalBox was on multiple lines&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is to help map designer to get a grasp of the Map&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This version of the tutorial address the syntax defined by map-0.2.8_beta3.dtd and present the rules of interpreting the syntax as used by the parsing engine in the version 0.2.8 of Armagetron Advance.&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;
[[Image:original-1.0.1.png|right|thumbnail|Original Armagetron 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;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
	         Converted to XML by philippeqc.&lt;br /&gt;
	         License: Do with it what you want.                          --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
	&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Map format start with a XML header. The actual definition&lt;br /&gt;
of the Map is wrapped in a Resource. The Resource gives a&lt;br /&gt;
description of the content, such as the author and the version of&lt;br /&gt;
the map included. This particuliar map is the xml version of the&lt;br /&gt;
original map that supported directly in the game before version&lt;br /&gt;
0.2.8 (Arthemis). &lt;br /&gt;
&lt;br /&gt;
Skippin ahead in to the Field element, line 11 defines that &lt;br /&gt;
that 4 axes are to be&lt;br /&gt;
used. From line 13 to 26, 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;
== Header ==&lt;br /&gt;
The header of the map can nearly be considered as constant. It is&lt;br /&gt;
composed of 2 lines.&lt;br /&gt;
&lt;br /&gt;
Header for Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only element you need to consider is the name of the dtd. The&lt;br /&gt;
dtd should always be named after the version it targets. For&lt;br /&gt;
Arthemis, it should be &amp;quot;map-0.2.8.dtd&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Nota: during the beta process, version can change often and have&lt;br /&gt;
great difference between them. To limit the scope of the problem&lt;br /&gt;
during the beta phase, the name of the dtd should include the beta&lt;br /&gt;
it targets. &lt;br /&gt;
&lt;br /&gt;
Header for the beta 3 of Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resource ==&lt;br /&gt;
The Resource element describe some meta-information of the Map,&lt;br /&gt;
such as who created it, how should the resource file be named and&lt;br /&gt;
what type of information is to be expected.&lt;br /&gt;
&lt;br /&gt;
One part of the Resource details describe who made this map a&lt;br /&gt;
reality. In the Resource element, it is possible to differenciate&lt;br /&gt;
between the person or organism that comissioned the map, the&lt;br /&gt;
commisionner, and the person who executed the request and coded&lt;br /&gt;
it, the author. &lt;br /&gt;
&lt;br /&gt;
Both operations might be carried by the same and only person, in&lt;br /&gt;
this instance both entities are the same and the commissioner&lt;br /&gt;
field should be left blank. The commissioner field should be used&lt;br /&gt;
when the concept of a map and its execution are performed by two&lt;br /&gt;
different persons or entities. It could range from anything from&lt;br /&gt;
&amp;quot;could someone make a map where the feeling of &amp;lt;X&amp;gt; is emphased&amp;quot; to&lt;br /&gt;
coding from a hand-drawn sketch. The commissioner could also be&lt;br /&gt;
implied. Without him/it ever placing an open request, a&lt;br /&gt;
commisioner could be assign to a map when the author whan to&lt;br /&gt;
express an assumed sharing of the creation of the map. This can be&lt;br /&gt;
the case, for example, when the member of a Clan wrote a map that&lt;br /&gt;
falls in the ideals of the Clan.&lt;br /&gt;
&lt;br /&gt;
Maps can be implicitly grouped together. The category field is&lt;br /&gt;
there for this purpose. Prolific authors and their public will&lt;br /&gt;
appreciate a clear grouping of similar themed maps.&lt;br /&gt;
&lt;br /&gt;
As ever refining one&#039;s work is a very respected quality in the&lt;br /&gt;
Armagetron community, the latest changes need to be properly&lt;br /&gt;
propagated to everybody. The version field allow an author to&lt;br /&gt;
identify each specific instance of her work, and also insure that&lt;br /&gt;
a client will receive the exact version used by a server when&lt;br /&gt;
playing on it.&lt;br /&gt;
&lt;br /&gt;
The type specifies that the file hold an Armagetron Advance&lt;br /&gt;
map. While this is the only type available at the moment, the&lt;br /&gt;
development team is eager to expand this in the furture.&lt;br /&gt;
&lt;br /&gt;
Finally, and most importantly, the name of the &#039;&#039;ouvrage&#039;&#039; being&lt;br /&gt;
presented. &lt;br /&gt;
&lt;br /&gt;
The fields for Resource are:&lt;br /&gt;
;name&lt;br /&gt;
:The name of the map, mandatory.&lt;br /&gt;
;type&lt;br /&gt;
:The only valid type is &amp;quot;aamap&amp;quot;. This field is defaulted &amp;quot;aamap&amp;quot; when abscent.&lt;br /&gt;
;version &lt;br /&gt;
:The version of the map described in this particuliar file. This value should be modified each time a change is applied to the map to ensure everybody have the proper copy. This field is defaulted to &amp;quot;1.0&amp;quot; when abscent.&lt;br /&gt;
;author&lt;br /&gt;
:The author who produced this map. This field is defaulted to &amp;quot;Anonymous&amp;quot; when abscent.&lt;br /&gt;
;commisioner&lt;br /&gt;
:The entity who dreamt, requested or even inspired in any way this map. This field is optional and has no default value. &lt;br /&gt;
;category&lt;br /&gt;
:How this map should be categorised. This field can have any number of sub categories, each separated by a &amp;quot;\&amp;quot;. An example could be &amp;quot;category\subcategory\subsubcategory&amp;quot;. This field is defaulted to &amp;quot;unsorted&amp;quot; when abscent. &lt;br /&gt;
&lt;br /&gt;
Example: The castle map made by philippeqc&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;Castle&amp;quot; type=&amp;quot;aamap&amp;quot; version=&amp;quot;1.1&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;examples&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The StarTron map made by Your_mom&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;5ptstar&amp;quot; version=&amp;quot;beta&amp;quot; author=&amp;quot;Your_mom&amp;quot; category=&amp;quot;beta&amp;quot; type=&amp;quot;aamap&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The MBC training map, made by Zorgul&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;TrainingDay&amp;quot; version=&amp;quot;1.6&amp;quot; author=&amp;quot;Zorgul&amp;quot; category=&amp;quot;MBC&amp;quot; type=&amp;quot;aamap&amp;quot; commisioner=&amp;quot;Micro Bus City&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The Reverso map, writen by Nemosultra based on a drawing by lucifer, for the Crack Pipe server&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;Reverso&amp;quot; version=&amp;quot;1.1-b&amp;quot; author=&amp;quot;Nemosultra&amp;quot; category=&amp;quot;CrackPipe&amp;quot; type=&amp;quot;aamap&amp;quot; commisioner=&amp;quot;lucifer&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To facilitate manipulation of the file over distributed systems,&lt;br /&gt;
the Resource holds explicit information about the naming and&lt;br /&gt;
storing of the file. This information can be used by tools such as&lt;br /&gt;
scripts and resource repositories to manipulate the file. &lt;br /&gt;
&lt;br /&gt;
Many tools, including the game client, will expect the following&lt;br /&gt;
to indicate the location of a &lt;br /&gt;
filee inside the local store of resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Author&amp;gt;/[Category/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;ResourceType&amp;gt;.&amp;lt;Extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
This element is the basic holder of the description of the&lt;br /&gt;
Map. From the opening element to the closing one, all the&lt;br /&gt;
information will be used to construct an in-game representation&lt;br /&gt;
for the players to explore and possibly compete in.&lt;br /&gt;
&lt;br /&gt;
The version attribute of the map indicate an specific parsing&lt;br /&gt;
engine version that should be used to express the map in the exact&lt;br /&gt;
manners that are desired by the map creator. &lt;br /&gt;
&lt;br /&gt;
Example: Map element&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sooner in the file,&lt;br /&gt;
the dtd has already specified a version. The difference between&lt;br /&gt;
both version is one specify the version of the syntax to be use,&lt;br /&gt;
and the other, the version of the rules to be used to interprete&lt;br /&gt;
the syntax.&lt;br /&gt;
&lt;br /&gt;
The dtd control the syntax, what keywords are valid and in which&lt;br /&gt;
arrangement. The parsing engine has specific rules how to read the&lt;br /&gt;
syntax and create the game elements. It is possible for different&lt;br /&gt;
parsing engine to operate from the same syntax, be it because the syntax&lt;br /&gt;
allows for many interpretation, or because a specific&lt;br /&gt;
interpretation has been found faulty in some case. Because each&lt;br /&gt;
interpretation could lead to very different instantiation, it is&lt;br /&gt;
best for the map designer to specify the one that should be&lt;br /&gt;
used. Even when no alternative interpretation exist, ie: there is&lt;br /&gt;
only one version available, it is best for the map designer to&lt;br /&gt;
specify it. Should a new one be implemented at a later time, the&lt;br /&gt;
map defined would continue to be instanciated properly.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, the only parsing engine version is&lt;br /&gt;
&amp;quot;0.2.8&amp;quot;. Maps using a version that is not understood by the&lt;br /&gt;
parsing engine of a specific client or server will be&lt;br /&gt;
automatically rejected by said application, on the ground that the&lt;br /&gt;
parsing engine doesn&#039;t know how to operate on it.&lt;br /&gt;
&lt;br /&gt;
Even if only one value exist, it is impossible to provide it as a&lt;br /&gt;
default, as there are no assurance that a new interpretation of&lt;br /&gt;
the syntax will not arrive at a future time.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It is possible for a map designer to indicate specific game&lt;br /&gt;
settings, similar to the ones available through the configuration&lt;br /&gt;
files of the application, to be used with the map. When&lt;br /&gt;
this is not desired, the Settings element can be safely removed&lt;br /&gt;
from the map definition.&lt;br /&gt;
&lt;br /&gt;
Any number of Setting can be defined inside of the Settings&lt;br /&gt;
element. Each Setting defined will overwrite the value previously&lt;br /&gt;
defined in the game. Each new Setting addressing a specific&lt;br /&gt;
configuration item will keep on overwriting previously defined&lt;br /&gt;
values. The Settings items are processed in order, from the top to&lt;br /&gt;
the bottom one.&lt;br /&gt;
&lt;br /&gt;
The Settings should be considered to be global to the World and&lt;br /&gt;
its sub-elements. This has very little relevance at the moment as&lt;br /&gt;
only one World and one Field can exist in the game. It is not&lt;br /&gt;
excluded that future version of the game could support multiple&lt;br /&gt;
elements such as World and Field. Each such elements and sub-elements would&lt;br /&gt;
receive the Settings defined in its parents, but would also be&lt;br /&gt;
able to overwrite parent received Settings for itself and its&lt;br /&gt;
sub-elements. &lt;br /&gt;
&lt;br /&gt;
One such overwriting capacity already exist, in the form of the&lt;br /&gt;
Axes element. This element can and will overwrite the value passed&lt;br /&gt;
by the Setting ARENA_AXES.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, there are no known case where the order of&lt;br /&gt;
writing Setting should matter. There are no garanties of it being&lt;br /&gt;
the case. Be carefull of the order of the Setting provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting ==&lt;br /&gt;
Each individual Setting defines a specific element normally&lt;br /&gt;
configurable throught the config files of the game&lt;br /&gt;
application. For a full list and description of the setting&lt;br /&gt;
available, consult the [[Console Commands]] page. As config items&lt;br /&gt;
are the same as console commands, you will find all the&lt;br /&gt;
information there.&lt;br /&gt;
&lt;br /&gt;
The Setting has two attributes, the name and the value. The name&lt;br /&gt;
field hold the setting name as found in the various configuration&lt;br /&gt;
files. The value field will be assigned to the designated setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Setting name=&amp;quot;CYCLE_BRAKE_REFILL&amp;quot; value=&amp;quot;.1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will assing .1 to the configuration item CYCLE_BRAKE_REFILL.&lt;br /&gt;
&lt;br /&gt;
No validation are done on either fields by the parsing engine. The&lt;br /&gt;
values are passed directly to the setting engine, where the usual&lt;br /&gt;
validation is performed. Unexisting or misspelled settings names&lt;br /&gt;
will be ignored. Setting with valid names and invalid values have&lt;br /&gt;
an undetermined effect.&lt;br /&gt;
&lt;br /&gt;
The different Setting used have the potential of overwriding&lt;br /&gt;
client or server ones. While this behavior offers great capacity&lt;br /&gt;
to custom behavior for a specific map, users playing locally on&lt;br /&gt;
their machine and server administrator might find it a disruption&lt;br /&gt;
of their craftfully designed settings. Use with care and&lt;br /&gt;
moderation.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the World element is&lt;br /&gt;
the Field element. Only one Field can be defined. No parameters&lt;br /&gt;
are available at the moment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;World&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
	&amp;lt;/World&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;
The field define the zone on a 2D plane where the gaming can&lt;br /&gt;
occur. The full support of this definition will be developed under&lt;br /&gt;
Bacchus. In Arthemis, the old philosophy of &amp;quot;the play zone has to&lt;br /&gt;
be bounded by walls&amp;quot; is somewhat preserved. A secondary mechanism&lt;br /&gt;
also exist to prevent the players from escaping the rim. This is a&lt;br /&gt;
bried description of the mechanism used.&lt;br /&gt;
&lt;br /&gt;
While setting all the walls to be used during a round, the engine&lt;br /&gt;
will keep track of the minimal and maximal x&#039;s and y&#039;s values&lt;br /&gt;
encountered through wall coordinates.&lt;br /&gt;
A logical box will be formed, using the coordinate&lt;br /&gt;
(minX, minY), (maxX, minY), (maxX, maxY) and (minX, maxY) as its&lt;br /&gt;
corners.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around the classical arena.&lt;br /&gt;
The classical arena has the coordinates (0,0), (0,500), (500,500)&lt;br /&gt;
and (500, 0). This means that minX=0, minY=0, maxX=500 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around a square arena moved by 20 on the x&#039;s.&lt;br /&gt;
The classical arena has the coordinates (20,0), (20,500), (520,500)&lt;br /&gt;
and (520, 0). This means that minX=20, minY=0, maxX=520 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around a trapeze arena&lt;br /&gt;
A trapeze has a base lenght of 300, a top lenght of 200 and a&lt;br /&gt;
height of 200 with the following coordinates: (0, 0), (300, 0),&lt;br /&gt;
(250, 200), (50, 200). This means that minX=0, minY=0, maxX=300,&lt;br /&gt;
maxY=200.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around 2 walls of the classical arena&lt;br /&gt;
Should the south and west walls of the classical arena be ommited,&lt;br /&gt;
and only the north (from (0,500) to (500,500)) and east one (from&lt;br /&gt;
(500,0) to (500,500)) remain, the logical box is still the same&lt;br /&gt;
around it. This means that minX=0, minY=0, maxX=500 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: 2 walls at strange angle&lt;br /&gt;
If two walls, organised at strange angle and not even meeting,&lt;br /&gt;
compose the arena, are described as (200,200) to (600, 400) and&lt;br /&gt;
(350, 350) to (-10, 720). This means that minX=-10, minY=200,&lt;br /&gt;
maxX=600 and maxY=720.&lt;br /&gt;
&lt;br /&gt;
A no-motion logical box will be put at 10 game units outside of the&lt;br /&gt;
logical box. Should a player meet this no-motion zone, she will&lt;br /&gt;
find herself pushing agains a coussin of air. Rubber has undefined&lt;br /&gt;
effect agains this no-motion box.&lt;br /&gt;
&lt;br /&gt;
A second logical box will be put at 20 games units from the first&lt;br /&gt;
logical box. Should any players be outside of this logical box,&lt;br /&gt;
they are automatically killed.&lt;br /&gt;
&lt;br /&gt;
In game terms, should the players not be bounded by a continous&lt;br /&gt;
wall, they are free to roam around it but they will find an&lt;br /&gt;
invisible barrier keeping them from excaping into the infinite.&lt;br /&gt;
&lt;br /&gt;
Should you want to allow your players to roam without&lt;br /&gt;
restrictions, exploring the infinity of the grid, you have to&lt;br /&gt;
specify to use an infinite field.&lt;br /&gt;
&lt;br /&gt;
The Field support a single parameter, named logicalBox, which&lt;br /&gt;
control if the logical box should be used to limit roaming on the&lt;br /&gt;
Field. &lt;br /&gt;
;logicalBox&lt;br /&gt;
:When set to true, the motion will be restrained by the logical box, and when set to false, no logical box will be used. This field is optional and default to true.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box bounded Field&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
            &amp;lt;Field&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: Field with its logical box disabled&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
            &amp;lt;Field logicalBox=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following 2 paragraph are post map-0.1 and 0.2.8_beta2.&lt;br /&gt;
&lt;br /&gt;
For clarity purpose, the Axes element, if defined, need to be&lt;br /&gt;
defined first. After this, Spawn point, Walls and Zones can be&lt;br /&gt;
defined in any order.&lt;br /&gt;
&lt;br /&gt;
While a Field without any Spawn points is syntaxly valid, and&lt;br /&gt;
the parsing engine doesnt report any error, the effect is&lt;br /&gt;
undetermined. While a Field without any Wall is syntaxly valid,&lt;br /&gt;
and the parsing engine doesn&#039;t report any error, the effect is&lt;br /&gt;
undetermined.&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;
;xdir&lt;br /&gt;
: This is size of the displacement along the x&#039;s for this axis&lt;br /&gt;
;ydir&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 xdir and ydir 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 angle=&amp;quot;225&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis angle=&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 xdir and a ydir of 1. The real length of the described Axis is &lt;br /&gt;
&amp;lt;math&amp;gt;\sqrt{xdir^2+ydir^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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;2&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-2&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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 following example 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. This reduce the&lt;br /&gt;
effect of playing at very high speed while having a huge&lt;br /&gt;
difference between directions.&lt;br /&gt;
&lt;br /&gt;
Example: Factor of 6 between displacement, centered around a speed&lt;br /&gt;
of ~1.&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 xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-3&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
Example: Factor of 6 between displacement, centered around a speed&lt;br /&gt;
of ~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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-6&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;6&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;
While the ratio of speed is the same between both examples, the&lt;br /&gt;
later one has speed that might be difficult to control in one&lt;br /&gt;
direction. The first example produce the same difference, but&lt;br /&gt;
present the players with a more balanced alternative.&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;&lt;br /&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 Axis in cartesian, in the order 4, 5, 6, 1, 2, 3&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&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 Axis in degrees, in the order 4, 5, 6, 1, 2, 3&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both define 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 Axis in cartesian, in the order 4, 6, 5, 1, 3, 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&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 Axis in degrees, in the order 4, 6, 5, 1, 3, 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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: 4 Axis counter clockwise&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
== Wall ==&lt;br /&gt;
Walls 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: A square Wall of size 200&lt;br /&gt;
&amp;lt;pre&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;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;
&amp;lt;/pre&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;
&lt;br /&gt;
Example: A 2 points wall, possibly as an obstacle&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;
The Wall element has one attribute, the height. Controlling the&lt;br /&gt;
height affect the rendering height of a wall. A height of 1.0 is&lt;br /&gt;
about the same as the height of the original cycle model. A height&lt;br /&gt;
of 4.0 correspond to the Walls rendered with the lowRim setting on&lt;br /&gt;
the client. When no height is defined, the client defined setting&lt;br /&gt;
of either lowRim or highRim is used. This has the advantage of&lt;br /&gt;
respecting the players choice and often, capacity to render high&lt;br /&gt;
walls.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;height&#039;&#039;&lt;br /&gt;
: The height used for the rendering of the Wall.&lt;br /&gt;
&lt;br /&gt;
Example : Using the client default height&lt;br /&gt;
&amp;lt;pre&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;10&amp;quot; y=&amp;quot;10&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 : Controling the height&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Wall height=&amp;quot;2.13&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;Point x=&amp;quot;10&amp;quot; y=&amp;quot;10&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;
== 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: Basic Spawn presentation&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;
== Zones ==&lt;br /&gt;
Zone are interactive areas on the Field. They manifest themself as&lt;br /&gt;
huge circles slowly rotating. The players can interact with the&lt;br /&gt;
Zones by entering or being inside them.&lt;br /&gt;
&lt;br /&gt;
The Zone has an attribute effect which allows 3 values: win, death and&lt;br /&gt;
fortress. Entering a Zone of effect win makes the player the round&lt;br /&gt;
winner. Entering a Zone of effect death automatically kills the&lt;br /&gt;
player. Zones of effect fortress need to be occupied to be&lt;br /&gt;
triggered, and once triggered, they make the team the round winner.&lt;br /&gt;
&lt;br /&gt;
;effect&lt;br /&gt;
:Any of win, death or fortress. When ommited, the value is defaulted to death&lt;br /&gt;
&lt;br /&gt;
Example: Zone syntax&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Zone requires a sub element named ShapeCircle. &lt;br /&gt;
&lt;br /&gt;
The ShapeCircle has 2 attributes, the radius and the growth. The&lt;br /&gt;
radius attribute describe the size of the CircleShape and is&lt;br /&gt;
required. The unit used is the same game unit that are used as map&lt;br /&gt;
coordinates. A ShapeCircle with a radius of 10 will extend of 10&lt;br /&gt;
game units in every direction from its center.&lt;br /&gt;
&lt;br /&gt;
The growth describe how the radius of the ShapeCircle changes over&lt;br /&gt;
time. This unit is game units per second from the moment the Zone&lt;br /&gt;
is create, which is the round start.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify a negative growth, in which case the ShapeCircle will&lt;br /&gt;
slowly shrink. Should at any time the radius be of 0 or less, the&lt;br /&gt;
Zone is removed without effect.&lt;br /&gt;
The growth is optional and defaults to 0, which hold the&lt;br /&gt;
ShapeCircle at a constant size during the round.&lt;br /&gt;
&lt;br /&gt;
;radius&lt;br /&gt;
:The initial radius of the circle defining the Zone. This field is mandatory.&lt;br /&gt;
;growth&lt;br /&gt;
:The growth of the circle. The values can be positive, negative or 0. This field is optional and is defaulted to 0.&lt;br /&gt;
&lt;br /&gt;
Example: Zone with CircleShape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot; growth=&amp;quot;0.17&amp;quot;&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ShapeCircle requires a Point sub-element which describe the&lt;br /&gt;
center of the ShapeCircle. The syntax of the Point is the same as&lt;br /&gt;
the one used for the Wall.&lt;br /&gt;
&lt;br /&gt;
Example: A non-growing death zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;120&amp;quot; y=&amp;quot;86&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A growing fortress zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;fortress&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot; growth=&amp;quot;1.09&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;250&amp;quot; y=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A shrinking win zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;200&amp;quot; growth=&amp;quot;-0.2&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;440&amp;quot; y=&amp;quot;325&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible and valid to place the center of the Zone in a&lt;br /&gt;
location that is not accessible to the players, such as in a&lt;br /&gt;
walled compound or outside of the play area. This behavior might&lt;br /&gt;
change in future version. Consult the appropriate documentation.&lt;br /&gt;
&lt;br /&gt;
Example: A death zone outside the rim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;-25&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&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;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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A death zone partially outside the rim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;-15&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&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;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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: It is important to note that while Zones are introduced in&lt;br /&gt;
Arthemis, a more complete implementation will follow in&lt;br /&gt;
Bacchus. Curious minds consulting the documentation presenting the&lt;br /&gt;
Bacchus implementation of Zones will notice that fortress isn&#039;t an&lt;br /&gt;
effect, but rather a trigger type. The Arthemis implementation of&lt;br /&gt;
Zones falsely uses it as an effect instead of exposing a trigger&lt;br /&gt;
mechanism. Map designers are to be warned this will no longer be&lt;br /&gt;
possible in maps defined for Bacchus.&lt;br /&gt;
&lt;br /&gt;
=== Fortress Zone ===&lt;br /&gt;
The fortress Zone is particuliar because it uses a scoring system&lt;br /&gt;
to determine if and when the Zone is triggered. The score is&lt;br /&gt;
affected by the time passed in it by attackers and defenders.&lt;br /&gt;
&lt;br /&gt;
At start time, the score is set to 0.0. While the score can move&lt;br /&gt;
freely, 2 restrictions are always applied. First, the score can&lt;br /&gt;
never drop below 0.0. Second, if the score reaches or exceed 1.0,&lt;br /&gt;
the Zone is triggered.&lt;br /&gt;
&lt;br /&gt;
Each single adversary in the Zone add to the score for their time&lt;br /&gt;
passed in it. Each single defender in the Zone remove to the score&lt;br /&gt;
for their time passed in it. Also, the score always decays. Each&lt;br /&gt;
of these aspect is controlled by a different setting,&lt;br /&gt;
CONQUEST_RATE, DEFEND_RATE and CONQUEST_DECAY_RATE. They all&lt;br /&gt;
express a rate in points per seconds.&lt;br /&gt;
&lt;br /&gt;
;CONQUEST_RATE&lt;br /&gt;
: Any single attacking player in the Zone add points to the score at this rate. &lt;br /&gt;
;DEFEND_RATE&lt;br /&gt;
: Any single defending player in the Zone removes points to the score at this rate. &lt;br /&gt;
;CONQUEST_DECAY_RATE&lt;br /&gt;
: The score of a Zone decays at this rate, irrelevantly of the numbers of attackers and defenders in the Zone. &lt;br /&gt;
&lt;br /&gt;
These 3 settings are global for all the Zones on a map.&lt;br /&gt;
&lt;br /&gt;
Example: Configuring Fortress from the config file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CONQUEST_RATE 0.5&lt;br /&gt;
DEFEND_RATE 0.3&lt;br /&gt;
CONQUEST_DECAY_RATE 0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: Configuring Fortress from the settings in the map&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Settings&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;CONQUEST_RATE&amp;quot; value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;DEFEND_RATE&amp;quot; value=&amp;quot;0.3&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;CONQUEST_DECAY_RATE&amp;quot; value=&amp;quot;0.1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Map writing best practice ===&lt;br /&gt;
&lt;br /&gt;
==== Comment your work ====&lt;br /&gt;
&lt;br /&gt;
You should always comment the various parts of your work. Doing so improve maintainability. Something that is obvious during the creation of a particular map often becomes very cryptic after a few weeks. A good comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comment in xml start with &amp;quot;&amp;lt;!--&amp;quot; (without the quotes) and ends with &amp;quot;--&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t highlight the commented part, be careful not to exclude a part of your map by mistake.&lt;br /&gt;
&lt;br /&gt;
==== Arena size ====&lt;br /&gt;
&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;
Also, arenas with many divisions or made of many interconnecting&lt;br /&gt;
rooms might find the efficace play space shrunk. Giving them a bit&lt;br /&gt;
more surface might help balance this. &lt;br /&gt;
&lt;br /&gt;
For example, if rooms are organised in a 3 by 4 pattern, with&lt;br /&gt;
corridors connecting them, many of the space between the rooms is&lt;br /&gt;
lost. The map designer might try to have a total&lt;br /&gt;
surface of for all the rooms that is of 250 000 square game units&lt;br /&gt;
(the same surface than a 500 by 500 room). He might feel that&lt;br /&gt;
ignoring the surface of the corridors compensate for the large&lt;br /&gt;
amount of walls reducing the motion.&lt;br /&gt;
&lt;br /&gt;
On the other hand, 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;
There are no hard rules of any sort about the size of an&lt;br /&gt;
arena. Experiment and adjust to produce the effect desired, and&lt;br /&gt;
the players will most probably appreciate your efforts.&lt;br /&gt;
&lt;br /&gt;
==== Don&#039;t overload attributes ====&lt;br /&gt;
&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;
xdir and ydir attribute are never queried.&lt;br /&gt;
&lt;br /&gt;
While the engine ignore the exceeding data, this practice has the following drawbacks:&lt;br /&gt;
&lt;br /&gt;
* File size: The exceeding information is never used, but need to be transmitted as part of the file, and stored.&lt;br /&gt;
* Readability: Exceeding information complicate the reading of a map by humans. &lt;br /&gt;
* Maintenance: Maintenance of the map is not much more complex. If the author is minimalist, he/she risk updating the part of information that is ignored. Extremely good knowledge of the working of the parser is required to avoid this pitfall, and the change is only valid if the rule of precedences aren&#039;t updated. Specifying only one set of information avoid this problem. Also, if both set of information are updated, then the task for the author is double, and so are the risks for error.&lt;br /&gt;
&lt;br /&gt;
=== Resource file name convention ===&lt;br /&gt;
&lt;br /&gt;
Resource are external content that makes the game interesting. Textures, sounds, models and maps are all resources for Armagetron Ad. While at the time of writing of this tutorial, only maps are supported as true resources, soon support for the other types will be added. Also, while this section incorporated in the Maps tutorial, it might be moved as an independent document, and the standard 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 resources for Armagetron Ad should follow the following naming 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&lt;br /&gt;
: The name of the person who created the resource. This can be the full name, a nick name (such as the ones used on the Armagetron Ad forum) of the author. Alternatively, the author can forgo his or her name and instead opt for a group name. Group name should be used when the author want to indicate that a set of resources are associate with a group. Instances of this could be when the resources are for a clan, a community, a [set of] server[s].&lt;br /&gt;
;SubDirectory&lt;br /&gt;
: Prolific authors and those are free to set up any number of sub directories to help them organize and possibly categorize their resources. The Armagetron Ad team recommend you to categorize resources by topics (ie: all the resources required for a particular movie-pack set in the same sub directory) over other categorization, such as categorization by type (ie: all the floor tiles set in the same sub directory). Any number of sub directory level should be supported. This is not a mandatory item.&lt;br /&gt;
;ResourceName&lt;br /&gt;
: The actual name of the resource. This should be descriptive, and somewhat unique to facilitate identification of the described resource. The advantage of specifying a somewhat unique name here is that should the resource be accidentally moved out of its folder, it is still possible to quickly and easily identify it. A special note for maps: the ResourceName should be the same as the name attribute of the Map element defined in the xml file.&lt;br /&gt;
;VersionNumber&lt;br /&gt;
: This part should be used by the author to identify which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new resources, Armagetron Ad rely solely on this part to be updated. Should a resource be updated and the old name kept, it would cause problems between different clients. Client already having the old resource 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 would get the latest version. The actual format to be used for the VersionNumber is left to the choice of the author. While the Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar 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, ...). Keep in mind that it should be obvious to other as to which is the most up to date version of the resource. A special note for maps: the VersionNumber should be the same as the version attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;Extension&lt;br /&gt;
: This is the regular type of extension. While Armagetron Ad doesn&#039;t verify that the extension describe the right type of content, it is favorable for other users that you set it to the appropriate 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;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 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;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Parallelogram arena ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Parallelogram-1.0.png|right|thumbnail|Parallelogram]]&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot; category=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;World&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.2&amp;quot; ydir=&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HexaTRON ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HexaTRON-0.2.png|right|thumbnail|HexaTRON]]&lt;br /&gt;
&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 note that this is 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;&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot; category=&amp;quot;HexaTRON&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About the &amp;quot;undefined and unsupported&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and unsupported&amp;quot;. While it may be possible to do them now, and even amusing to do it, they are strongly discouraged. Later version of the World format will most probably conflict with those behaviors. This will make such behaviors difficult to preserve, if possible at all. For this reasons, it has been decided that _NO_ effort would be put to maintain them. Use them if you want, but do not come complaining if and when they stop working.&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Playing_Maps&amp;diff=2270</id>
		<title>Playing Maps</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Playing_Maps&amp;diff=2270"/>
		<updated>2005-11-20T21:30:48Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Removed MAP_URI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So you&#039;ve made your map and now you&#039;d like to play it?  Unfortunately, at this time the game doesn&#039;t have a nice graphical interface for choosing maps from what&#039;s installed.  So you&#039;ll have to get your elbows a little dirty and hack into config files to do it.  Luckily it&#039;s not that hard.&lt;br /&gt;
&lt;br /&gt;
== Place Your Map ==&lt;br /&gt;
&lt;br /&gt;
First you need to place your map.  Each platform has a different place for you to put it, so you need to make a decision about it right away.  The first decision to make is &amp;quot;Should this map be playable for all users on the system?&amp;quot;  If the answer is &amp;quot;yes&amp;quot;, then you need to install it in the game&#039;s system resources directory.  If the answer is &amp;quot;no&amp;quot;, then you need to install it in your user&#039;s resource directory for the game.  The actual locations of these files is system-dependent and on some platforms depends on where you installed the game.&lt;br /&gt;
&lt;br /&gt;
You generally want to create a new directory underneath your resource directory to hold you own special maps. This directory should be named according to the author of the maps in it. Please be careful to avoid an ambiguous nickname by checking if someone is already using that name on the [[resource repository]].  When you browse your local resource directory you may notice that there&#039;s a special directory called &amp;lt;code&amp;gt;automatic&amp;lt;/code&amp;gt;.  You shouldn&#039;t fool with it.  If you&#039;ve played a server with a map you particularly liked, and you&#039;d like to use that map for your own local game, then you should move the map from it&#039;s location in the &amp;lt;code&amp;gt;automatic&amp;lt;/code&amp;gt; directory and put it immediately beneath the &amp;lt;code&amp;gt;resource&amp;lt;/code&amp;gt; directory.  Examples (Linux given, others requested):&lt;br /&gt;
&lt;br /&gt;
* /home/Lucifer/.armagetronad/resource/Lucifer/crack_pipe-0.1.xml&lt;br /&gt;
&lt;br /&gt;
=== System Resource Directory (default) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - /usr/share/games/armagetronad/resource&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - C:\Program Files\Armagetron Advanced\resource&lt;br /&gt;
* &#039;&#039;&#039;Mac OS X&#039;&#039;&#039; - Armagetron Advanced.app/Contents/Resources/resource&lt;br /&gt;
&lt;br /&gt;
=== User&#039;s Resource Directory (default) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - &amp;lt;home&amp;gt;/.armagetronad/resource&lt;br /&gt;
** &#039;&#039;Example&#039;&#039;: /home/Joe/.armagetronad/resource&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - &amp;lt;appdata&amp;gt;\Armagetron\resource&lt;br /&gt;
** &#039;&#039;Example&#039;&#039;: C:\Documents and Settings\Joe\Application Data\Armagetron\resource&lt;br /&gt;
* &#039;&#039;&#039;Mac OS X&#039;&#039;&#039; - &amp;lt;home&amp;gt;/Library/Application Support/Armagetron Advanced/resource&lt;br /&gt;
** &#039;&#039;Example&#039;&#039;: /Users/Joe/Library/Application Support/Armagetron Advanced/resource&lt;br /&gt;
&lt;br /&gt;
== Setting the Config ==&lt;br /&gt;
&lt;br /&gt;
The file you need to modify depends on whether or not you want the map to be available for all users of the system.  If you want the map available for all users of the system, then you need to modify the file &amp;lt;code&amp;gt;settings.cfg&amp;lt;/code&amp;gt; in the appropriate directory (paths given below).  If you only want you to be able to play the map on your system, or if you don&#039;t have administrative privileges on your machine, then you&#039;ll need to modify &amp;lt;code&amp;gt;autoexec.cfg&amp;lt;/code&amp;gt; in your home directory. You&#039;ll have to create that file, it does not exist on a fresh installation.&lt;br /&gt;
&lt;br /&gt;
The modification you need to make is to add a line that looks like this, based on the example given above:&lt;br /&gt;
&lt;br /&gt;
* MAP_FILE Lucifer/crack_pipe-0.1.xml&lt;br /&gt;
&lt;br /&gt;
That&#039;s it.  Note that the path is relative to the &amp;lt;code&amp;gt;resource&amp;lt;/code&amp;gt; directory.  The game will scan your user&#039;s resource directory, and then the system resource directory.  If it doesn&#039;t find the map after scanning those places it will try to fetch the map from the resource repository.  &lt;br /&gt;
Since you&#039;re most likely working locally, this shouldn&#039;t be necessary.&lt;br /&gt;
&lt;br /&gt;
=== System Configuration File Paths (default) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - /usr/etc/games/armagetronad/settings.cfg&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - C:\Program Files\Armagetron Advanced\config\settings.cfg&lt;br /&gt;
* &#039;&#039;&#039;Mac OS X&#039;&#039;&#039; - Armagetron Advanced.app/Contents/Resources/settings.cfg&lt;br /&gt;
&lt;br /&gt;
=== User Configuration File Paths (default) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - &amp;lt;home&amp;gt;/.armagetronad/var/autoexec.cfg&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - &amp;lt;appdata&amp;gt;\Armagetron\var\autoexec.cfg&lt;br /&gt;
* &#039;&#039;&#039;Mac OS X&#039;&#039;&#039; - &amp;lt;home&amp;gt;/Library/Application Support/Armagetron Advanced/autoexec.cfg&lt;br /&gt;
&lt;br /&gt;
=== Choosing a Map Download URI ===&lt;br /&gt;
If using a location other than the official resource repository is desired (for example, for a LAN game where not all players have internet access), you can specify it using 2 different methods:&lt;br /&gt;
&lt;br /&gt;
* MAP_FILE Lucifer/crack_pipe-0.1.xml(http://www.davefancella.com/maps/crack_pipe-0.1.xml)&lt;br /&gt;
* RESOURCE_REPOSITORY http://aabeta.dashjr.org/resource/&lt;br /&gt;
&lt;br /&gt;
Note that to use the RESOURCE_REPOSITORY variable, the website must provide the files under the regular file path. In this case, the file http://aabeta.dashjr.org/resource/Lucifer/crack_pipe-0.1.xml would need to exist.&lt;br /&gt;
&lt;br /&gt;
Note that while specifying a URI for the map is optional when it has been submitted to the official resource repository, you must &#039;&#039;&#039;always&#039;&#039;&#039; specify the map filepath in MAP_FILE.&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Console_Commands&amp;diff=2269</id>
		<title>Console Commands</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Console_Commands&amp;diff=2269"/>
		<updated>2005-11-20T21:27:12Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Removed MAP_URI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== List of Commands ==&lt;br /&gt;
&lt;br /&gt;
This list was generated by starting Armagetron Advanced version 0.2.8_beta3 with the &amp;lt;code&amp;gt;--doc&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Available console commands/config file settings:&lt;br /&gt;
&lt;br /&gt;
ADMIN_PASS                   Password for the basic in game admin&lt;br /&gt;
AI_IQ                        IQ of the AI opponents&lt;br /&gt;
ALLOW_CAM_1_0                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_1_1                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_1_2                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_1_3                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_1_4                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_1_5                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_1_6                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_2_0                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_2_1                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_2_2                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_2_3                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_2_4                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_2_5                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_2_6                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_3_0                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_3_1                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_3_2                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_3_3                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_3_4                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_3_5                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_3_6                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_4_0                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_4_1                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_4_2                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_4_3                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_4_4                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_4_5                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_CAM_4_6                Allow/forbid the different camera modes&lt;br /&gt;
ALLOW_ENEMIES_SAME_CLIENT    If set to 1, this allows two players that play on the same client to fight for points with each other.&lt;br /&gt;
ALLOW_ENEMIES_SAME_IP        If set to 1, this allows two players that apparently come from the same machine to fight for points with each other.&lt;br /&gt;
ALLOW_TEAM_NAME_COLOR        Allow a team to be named after a color&lt;br /&gt;
ALLOW_TEAM_NAME_PLAYER       Allow a team to be named after the leading player&lt;br /&gt;
ALLOW_VOTING                 If set to 1, voting will be allowed for players.&lt;br /&gt;
ALLOW_VOTING_SPECTATOR       If set to 1, voting will be allowed for spectators.&lt;br /&gt;
ALPHA_BLEND                  Enable alpha blending&lt;br /&gt;
ARENA_AXES                   arena_axes_help&lt;br /&gt;
ARENA_AXES_OVERRIDE          arena_axes_override_help&lt;br /&gt;
ARMAGETRON_LAST_SCREENMODE   Last screen resolution&lt;br /&gt;
ARMAGETRON_LAST_SCREENMODE_H armagetron_last_screenmode_h_help&lt;br /&gt;
ARMAGETRON_LAST_SCREENMODE_W armagetron_last_screenmode_w_help&lt;br /&gt;
ARMAGETRON_LAST_WINDOWSIZE   Last Window size&lt;br /&gt;
ARMAGETRON_LAST_WINDOWSIZE_H armagetron_last_windowsize_h_help&lt;br /&gt;
ARMAGETRON_LAST_WINDOWSIZE_W armagetron_last_windowsize_w_help&lt;br /&gt;
ARMAGETRON_SCREENMODE        Screen resolution&lt;br /&gt;
ARMAGETRON_SCREENMODE_H      armagetron_screenmode_h_help&lt;br /&gt;
ARMAGETRON_SCREENMODE_W      armagetron_screenmode_w_help&lt;br /&gt;
ARMAGETRON_WINDOWSIZE        Window size&lt;br /&gt;
ARMAGETRON_WINDOWSIZE_H      armagetron_windowsize_h_help&lt;br /&gt;
ARMAGETRON_WINDOWSIZE_W      armagetron_windowsize_w_help&lt;br /&gt;
AUTO_AIS                     Automatically spawn AI players?&lt;br /&gt;
AUTO_INCAM_1                 Automatically switch to internal camera in a maze&lt;br /&gt;
AUTO_INCAM_2                 Automatically switch to internal camera in a maze&lt;br /&gt;
AUTO_INCAM_3                 Automatically switch to internal camera in a maze&lt;br /&gt;
AUTO_INCAM_4                 Automatically switch to internal camera in a maze&lt;br /&gt;
AUTO_IQ                      Automatically adjust AI IQ?&lt;br /&gt;
BACKWARD_COMPATIBILITY       Maximum number of old protocol versions to support.&lt;br /&gt;
BAN                          Bans the specified player from the server (kicks him first) for a variable time in minutes.&lt;br /&gt;
BAN_IP                       Bans the spedified IP address from the server for a variable time.&lt;br /&gt;
BAN_LIST                     Prints a list of currently banned IPs.&lt;br /&gt;
BIG_BROTHER                  Did we already send the big brother information?&lt;br /&gt;
BOOKMARK_10_ADDRESS          bookmark_10_address_help&lt;br /&gt;
BOOKMARK_10_NAME             bookmark_10_name_help&lt;br /&gt;
BOOKMARK_10_PORT             bookmark_10_port_help&lt;br /&gt;
BOOKMARK_1_ADDRESS           bookmark_1_address_help&lt;br /&gt;
BOOKMARK_1_NAME              bookmark_1_name_help&lt;br /&gt;
BOOKMARK_1_PORT              bookmark_1_port_help&lt;br /&gt;
BOOKMARK_2_ADDRESS           bookmark_2_address_help&lt;br /&gt;
BOOKMARK_2_NAME              bookmark_2_name_help&lt;br /&gt;
BOOKMARK_2_PORT              bookmark_2_port_help&lt;br /&gt;
BOOKMARK_3_ADDRESS           bookmark_3_address_help&lt;br /&gt;
BOOKMARK_3_NAME              bookmark_3_name_help&lt;br /&gt;
BOOKMARK_3_PORT              bookmark_3_port_help&lt;br /&gt;
BOOKMARK_4_ADDRESS           bookmark_4_address_help&lt;br /&gt;
BOOKMARK_4_NAME              bookmark_4_name_help&lt;br /&gt;
BOOKMARK_4_PORT              bookmark_4_port_help&lt;br /&gt;
BOOKMARK_5_ADDRESS           bookmark_5_address_help&lt;br /&gt;
BOOKMARK_5_NAME              bookmark_5_name_help&lt;br /&gt;
BOOKMARK_5_PORT              bookmark_5_port_help&lt;br /&gt;
BOOKMARK_6_ADDRESS           bookmark_6_address_help&lt;br /&gt;
BOOKMARK_6_NAME              bookmark_6_name_help&lt;br /&gt;
BOOKMARK_6_PORT              bookmark_6_port_help&lt;br /&gt;
BOOKMARK_7_ADDRESS           bookmark_7_address_help&lt;br /&gt;
BOOKMARK_7_NAME              bookmark_7_name_help&lt;br /&gt;
BOOKMARK_7_PORT              bookmark_7_port_help&lt;br /&gt;
BOOKMARK_8_ADDRESS           bookmark_8_address_help&lt;br /&gt;
BOOKMARK_8_NAME              bookmark_8_name_help&lt;br /&gt;
BOOKMARK_8_PORT              bookmark_8_port_help&lt;br /&gt;
BOOKMARK_9_ADDRESS           bookmark_9_address_help&lt;br /&gt;
BOOKMARK_9_NAME              bookmark_9_name_help&lt;br /&gt;
BOOKMARK_9_PORT              bookmark_9_port_help&lt;br /&gt;
BRAKE_GAUGE_LOCX             brake_gauge_locx_help&lt;br /&gt;
BRAKE_GAUGE_LOCY             brake_gauge_locy_help&lt;br /&gt;
BRAKE_GAUGE_SIZE             brake_gauge_size_help&lt;br /&gt;
BROWSER_CONTACTLOSS          browser_contactloss_help&lt;br /&gt;
BROWSER_NUM_QUERIES          browser_num_queries_help&lt;br /&gt;
BROWSER_QUERIES_SIMULTANEOUS browser_queries_simultaneous_help&lt;br /&gt;
BROWSER_QUERY_DELAY_GLOBAL   browser_query_delay_global_help&lt;br /&gt;
BROWSER_QUERY_DELAY_SINGLE   browser_query_delay_single_help&lt;br /&gt;
BROWSER_QUERY_FILTER         browser_query_filter_help&lt;br /&gt;
BUG_RIP                      bug_rip_help&lt;br /&gt;
BUG_TRANSPARENCY             Unsupported: make all rim walls semi-transparent by rendering them without occlusion tests&lt;br /&gt;
BUG_TRANSPARENCY_DEMAND      Unsupported: use transparency instead of lowering walls&lt;br /&gt;
BUG_TUNNEL                   bug_tunnel_help&lt;br /&gt;
CAMCENTER_1                  Center internal camera on driving direction&lt;br /&gt;
CAMCENTER_2                  Center internal camera on driving direction&lt;br /&gt;
CAMCENTER_3                  Center internal camera on driving direction&lt;br /&gt;
CAMCENTER_4                  Center internal camera on driving direction&lt;br /&gt;
CAMERA_CUSTOM_BACK           Position of the custom camera: how much is it moved back from the cycle?&lt;br /&gt;
CAMERA_CUSTOM_PITCH          Position of the custom camera: how much does it look up/down?&lt;br /&gt;
CAMERA_CUSTOM_RISE           Position of the custom camera: how much is it moved up from the cycle?&lt;br /&gt;
CAMERA_FOLLOW_START_X        Start position of the fixed external camera&lt;br /&gt;
CAMERA_FOLLOW_START_Y        Start position of the fixed external camera&lt;br /&gt;
CAMERA_FOLLOW_START_Z        Start position of the fixed external camera&lt;br /&gt;
CAMERA_FORBID_CUSTOM         Forbids the use of the custom camera on all clients&lt;br /&gt;
CAMERA_FORBID_FOLLOW         Forbids the use of the fixed external camera on all clients&lt;br /&gt;
CAMERA_FORBID_FREE           Forbids the use of the free camera on all clients&lt;br /&gt;
CAMERA_FORBID_IN             Forbids the use of the internal camera on all clients&lt;br /&gt;
CAMERA_FORBID_SERVER_CUSTOM  camera_forbid_server_custom_help&lt;br /&gt;
CAMERA_FORBID_SMART          Forbids the use of the internal camera on all clients&lt;br /&gt;
CAMERA_FREE_START_X          Start position of the free camera&lt;br /&gt;
CAMERA_FREE_START_Y          Start position of the free camera&lt;br /&gt;
CAMERA_FREE_START_Z          Start position of the free camera&lt;br /&gt;
CAMERA_SERVER_CUSTOM_BACK    Position of the custom camera: how much is it moved back from the cycle?&lt;br /&gt;
CAMERA_SERVER_CUSTOM_PITCH   Position of the custom camera: how much does it look up/down?&lt;br /&gt;
CAMERA_SERVER_CUSTOM_RISE    Position of the custom camera: how much is it moved up from the cycle?&lt;br /&gt;
CAMERA_SMART_GLANCE_CUSTOM   use custom camera settings when glancing with the smart camera&lt;br /&gt;
CAMERA_SMART_START_X         Start position of the smart camera&lt;br /&gt;
CAMERA_SMART_START_Y         Start position of the smart camera&lt;br /&gt;
CAMERA_SMART_START_Z         Start position of the smart camera&lt;br /&gt;
CAMERA_VISIBILITY_CLIP_SPEED Speed with wich the visibility targets is brought into view&lt;br /&gt;
CAMERA_VISIBILITY_EXTENSION  Distance (measured in seconds, gets multiplied by speed) of the visibility targets from the watched object&lt;br /&gt;
CAMERA_VISIBILITY_LOWER_WALL If set to 1, walls are lowerd when they block the view and the camera is not moved&lt;br /&gt;
CAMERA_VISIBILITY_LOWER_WALL_SMART Like CAMERA_VISIBILITY_LOWER_WALL, but special setting for the smart camera&lt;br /&gt;
CAMERA_VISIBILITY_RECOVERY_SPEED The speed the external visibility targets recovers from wall hits&lt;br /&gt;
CAMERA_VISIBILITY_SIDESKEW   Extra forward component of the sideways visibility targets&lt;br /&gt;
CAMERA_VISIBILITY_WALL_DISTANCE The distance the visibility targets keep from walls&lt;br /&gt;
CAMWOBBLE_1                  Lets the internal camera move with your cycle&lt;br /&gt;
CAMWOBBLE_2                  Lets the internal camera move with your cycle&lt;br /&gt;
CAMWOBBLE_3                  Lets the internal camera move with your cycle&lt;br /&gt;
CAMWOBBLE_4                  Lets the internal camera move with your cycle&lt;br /&gt;
CENTER_MESSAGE               Prints a big message on the screen of all connected clients.&lt;br /&gt;
CHECK_ERRORS                 Listen to errors claiming a video mode does not exist&lt;br /&gt;
CLIENT_PORT                  Port we try to connect to&lt;br /&gt;
CM_LOCY                      cm_locy_help&lt;br /&gt;
COLORDEPTH                   Color depth to use (0: 16 1: desktop 2: 24)&lt;br /&gt;
COLOR_B_1                    Cycle and wall color, blue component.&lt;br /&gt;
COLOR_B_2                    Cycle and wall color, blue component.&lt;br /&gt;
COLOR_B_3                    Cycle and wall color, blue component.&lt;br /&gt;
COLOR_B_4                    Cycle and wall color, blue component.&lt;br /&gt;
COLOR_G_1                    Cycle and wall color, green component.&lt;br /&gt;
COLOR_G_2                    Cycle and wall color, green component.&lt;br /&gt;
COLOR_G_3                    Cycle and wall color, green component.&lt;br /&gt;
COLOR_G_4                    Cycle and wall color, green component.&lt;br /&gt;
COLOR_R_1                    Cycle and wall color, red component.&lt;br /&gt;
COLOR_R_2                    Cycle and wall color, red component.&lt;br /&gt;
COLOR_R_3                    Cycle and wall color, red component.&lt;br /&gt;
COLOR_R_4                    Cycle and wall color, red component.&lt;br /&gt;
COLOR_STRINGS                Print colored strings&lt;br /&gt;
CONSOLE_MESSAGE              Prints a message on the console of all connected clients.&lt;br /&gt;
CUSTOM_SCREEN_ASPECT         Custom screen aspect ratio ( pixel width/pixel height)&lt;br /&gt;
CUSTOM_SCREEN_HEIGHT         Custom screen size&lt;br /&gt;
CUSTOM_SCREEN_WIDTH          Custom screen size&lt;br /&gt;
CUSTOM_SERVER_NAME           Name of the server to connect to&lt;br /&gt;
CYCLE_ACCEL                  Wall acceleration factor&lt;br /&gt;
CYCLE_ACCEL_ENEMY            Multiplicator to CYCLE_ACCEL for your enemies&#039; walls&lt;br /&gt;
CYCLE_ACCEL_ENEMY_OVERRIDE   cycle_accel_enemy_override_help&lt;br /&gt;
CYCLE_ACCEL_OFFSET           Minimum numeric wall distance, must be positive&lt;br /&gt;
CYCLE_ACCEL_RIM              Multiplicator to CYCLE_ACCEL for the rim walls&lt;br /&gt;
CYCLE_ACCEL_RIM_OVERRIDE     cycle_accel_rim_override_help&lt;br /&gt;
CYCLE_ACCEL_SELF             Multiplicator to CYCLE_ACCEL for your own wall&lt;br /&gt;
CYCLE_ACCEL_SELF_OVERRIDE    cycle_accel_self_override_help&lt;br /&gt;
CYCLE_ACCEL_SLINGSHOT        Multiplicator to the total effect of CYCLE_ACCEL, if the cycle is between its own wall and another wall&lt;br /&gt;
CYCLE_ACCEL_SLINGSHOT_OVERRIDE cycle_accel_slingshot_override_help&lt;br /&gt;
CYCLE_ACCEL_TEAM             Multiplicator to CYCLE_ACCEL for your temmates&#039; walls&lt;br /&gt;
CYCLE_ACCEL_TEAM_OVERRIDE    cycle_accel_team_override_help&lt;br /&gt;
CYCLE_AVOID_OLDCLIENT_BAD_SYNC If set to 1, old clients will not get sync messages in situations that are known to confuse them&lt;br /&gt;
CYCLE_BRAKE                  Brake intensity&lt;br /&gt;
CYCLE_BRAKE_DEPLETE          Rate at which the brake reservoir depletes when you are braking&lt;br /&gt;
CYCLE_BRAKE_REFILL           Rate at which the brake reservoir refills when you are not braking&lt;br /&gt;
CYCLE_DELAY                  Minimum time between turns (must be greater than 0)&lt;br /&gt;
CYCLE_DELAY_TIMEBASED        Turn delays will be based on the time since the last turn if this is 1 (default) and the distance if this is 0. Intermediate values and values out of these bounds are supported as well.&lt;br /&gt;
CYCLE_DELAY_TIMEBASED_OVERRIDE cycle_delay_timebased_override_help&lt;br /&gt;
CYCLE_FAIR_ANTILAG           If set to 1, this deactivates the anti lag-sliding code when old clients are connected&lt;br /&gt;
CYCLE_MAX_REFCOUNT           Maximum allowed reference count on cycles before they self destruct. This setting is to protect against performance related DOS attacks.&lt;br /&gt;
CYCLE_PACKETLOSS_TOLERANCE   Cycle death is prevented as long as the player&#039;s failure to turn can be explained by the loss of this many network packets. Enabling this allows cheating.&lt;br /&gt;
CYCLE_PING_RUBBER            Additional niceness for high ping players&lt;br /&gt;
CYCLE_RUBBER                 Niceness factor to allow you drive really close to a wall&lt;br /&gt;
CYCLE_RUBBER_DELAY           cycle_rubber_delay_help&lt;br /&gt;
CYCLE_RUBBER_DELAY_BONUS     cycle_rubber_delay_bonus_help&lt;br /&gt;
CYCLE_RUBBER_DELAY_BONUS_OVERRIDE cycle_rubber_delay_bonus_override_help&lt;br /&gt;
CYCLE_RUBBER_DELAY_OVERRIDE  cycle_rubber_delay_override_help&lt;br /&gt;
CYCLE_RUBBER_LEGACY          cycle_rubber_legacy_help&lt;br /&gt;
CYCLE_RUBBER_MALUS_TIME      cycle_rubber_malus_time_help&lt;br /&gt;
CYCLE_RUBBER_MALUS_TURN      cycle_rubber_malus_turn_help&lt;br /&gt;
CYCLE_RUBBER_MALUS_TURN_OVERRIDE cycle_rubber_malus_turn_override_help&lt;br /&gt;
CYCLE_RUBBER_MINADJUST       When adjusting to or 180ing into a wall, allow going closer by at least this amount (relative to the last distance)&lt;br /&gt;
CYCLE_RUBBER_MINADJUST_OVERRIDE cycle_rubber_minadjust_override_help&lt;br /&gt;
CYCLE_RUBBER_MINDISTANCE     The minimal distance rubber code keeps you from the wall in front of you&lt;br /&gt;
CYCLE_RUBBER_MINDISTANCE_LEGACY Extra factor for minimal distance to walls enforced by the rubber code, active when peers with the rip bug are connected&lt;br /&gt;
CYCLE_RUBBER_MINDISTANCE_OVERRIDE cycle_rubber_mindistance_override_help&lt;br /&gt;
CYCLE_RUBBER_MINDISTANCE_PREPARATION Timescale in seconds a cycle&#039;s last turn time is compared with to determine the effect of CYCLE_RUBBER_MINDISTANCE_UNPREPARED.	&lt;br /&gt;
CYCLE_RUBBER_MINDISTANCE_PREPARATION_OVERRIDE cycle_rubber_mindistance_preparation_override_help&lt;br /&gt;
CYCLE_RUBBER_MINDISTANCE_RATIO Additional distance to CYCLE_RUBBER_MINDISTANCE for every length unit of the wall you have in front of you&lt;br /&gt;
CYCLE_RUBBER_MINDISTANCE_RATIO_OVERRIDE cycle_rubber_mindistance_ratio_override_help&lt;br /&gt;
CYCLE_RUBBER_MINDISTANCE_RESERVOIR Addidional distance if you have an empty rubber meter (gets faded out gradually as you use up all your rubber)&lt;br /&gt;
CYCLE_RUBBER_MINDISTANCE_RESERVOIR_OVERRIDE cycle_rubber_mindistance_reservoir_override_help&lt;br /&gt;
CYCLE_RUBBER_MINDISTANCE_UNPREPARED Additional distance for unprepared grinds; it gets applied when the cycle&#039;s last turn was just a fraction of a second ago and faded out preparation times larger than CYCLE_RUBBER_MINDISTANCE_PREPARATION.	&lt;br /&gt;
CYCLE_RUBBER_MINDISTANCE_UNPREPARED_OVERRIDE cycle_rubber_mindistance_unprepared_override_help&lt;br /&gt;
CYCLE_RUBBER_SPEED           Logarithmic speed of wall approximation when rubber is in effect (every second, you get closer to the wall by a factor of ~0.4^{this value})&lt;br /&gt;
CYCLE_RUBBER_SPEED_OVERRIDE  cycle_rubber_speed_override_help&lt;br /&gt;
CYCLE_RUBBER_TIME            cycle_rubber_time_help&lt;br /&gt;
CYCLE_RUBBER_TIMEBASED       Rubber usage is based on distance travelled if this is 0 (default) and the time passed if this is 1. Intermediate values and values out of these bounds are supported as well.&lt;br /&gt;
CYCLE_RUBBER_TIMEBASED_OVERRIDE cycle_rubber_timebased_override_help&lt;br /&gt;
CYCLE_RUBBER_TIME_OVERRIDE   cycle_rubber_time_override_help&lt;br /&gt;
CYCLE_SMOOTH_MIN_SPEED       cycle_smooth_min_speed_help&lt;br /&gt;
CYCLE_SMOOTH_THRESHOLD       Only syncs that differ from your position by less than this amount (measured in speed) will be handled smoothly, bigger differences will be applied instantly. &lt;br /&gt;
CYCLE_SMOOTH_TIME            Timescale for smoothing options. Increasing this will make interpolation smoother, but less accurate. Decreasing it will make network synchronization jumpy.&lt;br /&gt;
CYCLE_SOUND_SPEED            Sound speed divisor&lt;br /&gt;
CYCLE_SPEED                  Basic speed of your cycle if you drive straight and not close to walls&lt;br /&gt;
CYCLE_SPEED_DECAY_ABOVE      Rate of cycle speed approaching the value of CYCLE_SPEED from above&lt;br /&gt;
CYCLE_SPEED_DECAY_ABOVE_OVERRIDE cycle_speed_decay_above_override_help&lt;br /&gt;
CYCLE_SPEED_DECAY_BELOW      Rate of cycle speed approaching the value of CYCLE_SPEED from below&lt;br /&gt;
CYCLE_SPEED_DECAY_BELOW_OVERRIDE cycle_speed_decay_below_override_help&lt;br /&gt;
CYCLE_START_SPEED            Initial cycle speed&lt;br /&gt;
CYCLE_SYNC_FF                Speed of simulation of the extrapolating sync; decrease for lower CPU load, but higher effective ping&lt;br /&gt;
CYCLE_SYNC_FF_STEPS          Number of extrapolation simulation timesteps each real timestep; increase for better accuracy&lt;br /&gt;
CYCLE_SYNC_INTERVAL_ENEMY    Time in seconds between server-client updates of enemy cycles&lt;br /&gt;
CYCLE_SYNC_INTERVAL_SELF     Time in seconds between server-client updates of enemy cycles owned by the client itself&lt;br /&gt;
CYCLE_TIME_TOLERANCE         Maximum time difference of execution of turns on server and client (for clients that send timing information)&lt;br /&gt;
CYCLE_TIME_TOLERANCE_OVERRIDEcycle_time_tolerance_override_help&lt;br /&gt;
CYCLE_TURN_SPEED_FACTOR      cycle_turn_speed_factor_help&lt;br /&gt;
CYCLE_TURN_SPEED_FACTOR_OVERRIDE cycle_turn_speed_factor_override_help&lt;br /&gt;
CYCLE_WALL_NEAR              Maximum accelerating wall distance&lt;br /&gt;
DEDICATED_IDLE               After running this time (in hours), the dedicated server takes the next chance to quit.&lt;br /&gt;
DITHER                       Use dithering&lt;br /&gt;
DOUBLEBIND_TIME              Time in seconds during which no two different keyboard events can trigger the same action&lt;br /&gt;
DOUBLEBIND_TIME_OVERRIDE     doublebind_time_override_help&lt;br /&gt;
ENEMIES_LOCX                 enemies_locx_help&lt;br /&gt;
ENEMIES_LOCY                 enemies_locy_help&lt;br /&gt;
ENEMIES_SIZE                 enemies_size_help&lt;br /&gt;
EXPLOSION                    explosion_help&lt;br /&gt;
EXPLOSION_RADIUS             Blast radius of the cycle explosions&lt;br /&gt;
EXTRAPOLATOR_SYNC            extrapolator_sync_help&lt;br /&gt;
FADEOUT_NAME_DELAY           Time the player names are shown. Set to 0 if you don&#039;t want to show them at all or -1 if you want to show them always.&lt;br /&gt;
FAILED_ATTEMPTS              Number of failed attemts to initialize graphics mode&lt;br /&gt;
FASTEST_LOCX                 fastest_locx_help&lt;br /&gt;
FASTEST_LOCY                 fastest_locy_help&lt;br /&gt;
FASTEST_SIZE                 fastest_size_help&lt;br /&gt;
FAST_FORWARD_MAXSTEP         Maximum recording time between rendered frames in fast forward mode&lt;br /&gt;
FAST_FORWARD_MAXSTEP_REAL    Maximum real time between rendered frames in fast forward mode&lt;br /&gt;
FAST_FORWARD_MAXSTEP_REL     Maximum fraction of the time left until the end of FF mode between rendered frames&lt;br /&gt;
FAV_NUM_PER_TEAM_PLAYER_1    The favorite number of players per team for this player&lt;br /&gt;
FAV_NUM_PER_TEAM_PLAYER_2    The favorite number of players per team for this player&lt;br /&gt;
FAV_NUM_PER_TEAM_PLAYER_3    The favorite number of players per team for this player&lt;br /&gt;
FAV_NUM_PER_TEAM_PLAYER_4    The favorite number of players per team for this player&lt;br /&gt;
FINISH_TYPE                  What happens when the last human is dead?&lt;br /&gt;
FIRST_USE                    Is this the first time you use Armagetron Advanced?&lt;br /&gt;
FLOOR_BLUE                   Floor color&lt;br /&gt;
FLOOR_DETAIL                 Floor detail settings&lt;br /&gt;
FLOOR_GREEN                  Floor color&lt;br /&gt;
FLOOR_MIRROR                 Floor mirror mode&lt;br /&gt;
FLOOR_MIRROR_INT             Intensity of the floor mirror effect&lt;br /&gt;
FLOOR_RED                    Floor color&lt;br /&gt;
FORTRESS_CONQUEST_DECAY_RATE fortress_conquest_decay_rate_help&lt;br /&gt;
FORTRESS_CONQUEST_RATE       fortress_conquest_rate_help&lt;br /&gt;
FORTRESS_DEFEND_RATE         fortress_defend_rate_help&lt;br /&gt;
FULLSCREEN                   Fullscreen or windowed mode?&lt;br /&gt;
GAMEOBJECT_MOVE_TIMEOUT      gameobject_move_timeout_help&lt;br /&gt;
GAME_TIMEOUT                 Base timeout for game state synchronisation; gives appoximately the maximum time between rounds.&lt;br /&gt;
GAME_TYPE                    Type of game played&lt;br /&gt;
GL_EXTENSIONS                OpenGL system information&lt;br /&gt;
GL_RENDERER                  OpenGL system information&lt;br /&gt;
GL_VENDOR                    OpenGL system information&lt;br /&gt;
GL_VERSION                   OpenGL system information&lt;br /&gt;
GRID_SIZE                    Distance between gridlines&lt;br /&gt;
GRID_SIZE_MOVIEPACK          Distance between gridlines when moviepack is active&lt;br /&gt;
HIGH_RIM                     Draw high rim walls&lt;br /&gt;
INCLUDE                      Includes the following file&lt;br /&gt;
INFINITY_PLANE               Use infinite points (Does not work properly on most Windows systems)&lt;br /&gt;
INSTANT_CHAT_STRING_1_1      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_1_10     Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_1_11     Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_1_12     Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_1_2      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_1_3      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_1_4      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_1_5      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_1_6      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_1_7      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_1_8      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_1_9      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_2_1      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_2_10     Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_2_11     Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_2_12     Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_2_2      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_2_3      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_2_4      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_2_5      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_2_6      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_2_7      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_2_8      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_2_9      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_3_1      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_3_10     Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_3_11     Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_3_12     Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_3_2      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_3_3      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_3_4      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_3_5      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_3_6      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_3_7      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_3_8      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_3_9      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_4_1      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_4_10     Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_4_11     Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_4_12     Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_4_2      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_4_3      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_4_4      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_4_5      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_4_6      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_4_7      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_4_8      Instant chat available with hotkeys&lt;br /&gt;
INSTANT_CHAT_STRING_4_9      Instant chat available with hotkeys&lt;br /&gt;
KEEP_WINDOW_ACTIVE           keep_window_active_help&lt;br /&gt;
KEYBOARD                     Keyboard settings&lt;br /&gt;
KICK                         Kicks the specified player from the server.&lt;br /&gt;
KILL                         kill_help&lt;br /&gt;
LADDER_GAIN_EXTRA            Ping dependent ladder extra score for the winner&lt;br /&gt;
LADDER_LOSE_MIN_ON_LOAD      Minimum of you ladder score lost on each load&lt;br /&gt;
LADDER_LOSE_PERCENT_ON_LOAD  Percentage of your ladder score lost on each load&lt;br /&gt;
LADDER_MIN_BET               Minimum score you put in the ladder pot&lt;br /&gt;
LADDER_PERCENT_BET           Percentage of your score you put in the ladder pot&lt;br /&gt;
LADDER_TAX                   Percentage of the ladder pot the IRS takes&lt;br /&gt;
LAG_O_METER                  Draw Lag-O-Meter in network play&lt;br /&gt;
LANGUAGE_FIRST               The language Armagetron Advanced will use &lt;br /&gt;
LANGUAGE_SECOND              Fallback language if the first language is not available&lt;br /&gt;
LAST_CHECK_ERRORS            Listen to errors claiming a video mode does not exist, last successful init&lt;br /&gt;
LAST_COLORDEPTH              Color depth, last successful init&lt;br /&gt;
LAST_FULLSCREEN              Fullscreen or windowed mode, last successful init&lt;br /&gt;
LAST_ZDEPTH                  z buffer depth, last successful init&lt;br /&gt;
LIMIT_ROUNDS                 End the match after this number of rounds&lt;br /&gt;
LIMIT_SCORE                  End the match when a player reaches this score	 &lt;br /&gt;
LIMIT_TIME                   End the match after this number of minutes &lt;br /&gt;
LINE_ANTIALIAS               Enable line antialiasing&lt;br /&gt;
LOWER_SKY                    Draw lower sky plane&lt;br /&gt;
MAP_FILE                     map_file_help&lt;br /&gt;
MAP_FILE_OVERRIDE            map_file_override_help&lt;br /&gt;
MAX_CLIENTS                  Maximum number of network clients to accept&lt;br /&gt;
MAX_CLIENTS_SAME_IP_HARD     Maximum number of network clients to accept from the same IP; more logins will be ignored&lt;br /&gt;
MAX_CLIENTS_SAME_IP_SOFT     Maximum number of network clients to accept from the same IP; more logins will get kicked when the server is full&lt;br /&gt;
MAX_IN_RATE                  Maximum network input rate&lt;br /&gt;
MAX_OUT_RATE                 Maximum network output rate&lt;br /&gt;
MAX_PLAYERS_SAME_IP          maximum number of players from the same IP (note that each client can legally host up to four players)&lt;br /&gt;
MAX_VOTES                    The maximum number of total votes that can be active at any given moment.&lt;br /&gt;
MAX_VOTES_PER_VOTER          The maximum number of votes suggested by each voter that can be active at any given moment.&lt;br /&gt;
MESSAGE_OF_DAY_1             Message sent to clients&lt;br /&gt;
MESSAGE_OF_DAY_2             Message sent to clients&lt;br /&gt;
MESSAGE_OF_DAY_3             Message sent to clients&lt;br /&gt;
MESSAGE_OF_DAY_4             Message sent to clients&lt;br /&gt;
MESSAGE_OF_DAY_5             Message sent to clients&lt;br /&gt;
MIN_PLAYERS                  Minimum number of players&lt;br /&gt;
MIN_VOTERS                   Number of voters that need to be online to enable voting.						&lt;br /&gt;
MOUSE_GRAB                   Grab the mouse pointer, so it can&#039;t leave the window&lt;br /&gt;
MOVIEPACK                    Use the moviepack if available&lt;br /&gt;
MOVIEPACK_FLOOR_BLUE         Floor color&lt;br /&gt;
MOVIEPACK_FLOOR_GREEN        Floor color&lt;br /&gt;
MOVIEPACK_FLOOR_RED          Floor color&lt;br /&gt;
MOVIEPACK_WALL_STRETCH       The distance of the vertical lines on the moviepack walls&lt;br /&gt;
NAME_TEAM_AFTER_PLAYER_1     If set, the team is named after the leading player&lt;br /&gt;
NAME_TEAM_AFTER_PLAYER_2     If set, the team is named after the leading player&lt;br /&gt;
NAME_TEAM_AFTER_PLAYER_3     If set, the team is named after the leading player&lt;br /&gt;
NAME_TEAM_AFTER_PLAYER_4     If set, the team is named after the leading player&lt;br /&gt;
NETWORK_AUTOBAN_FACTOR       Autoban players for NETWORK_AUTOBAN_FACTOR * ( kph - NETWORK_AUTOBAN_OFFSET ) minutes when they get kicked; kph is the average number of kicks per hour they get.&lt;br /&gt;
NETWORK_AUTOBAN_MAX_KPH      Maximal value of the kicks per hour; larger values are smoothly clamped.&lt;br /&gt;
NETWORK_AUTOBAN_OFFSET       Autoban players for NETWORK_AUTOBAN_FACTOR * ( kph - NETWORK_AUTOBAN_OFFSET ) minutes when they get kicked; kph is the average number of kicks per hour they get.&lt;br /&gt;
NETWORK_MIN_BAN              When a client&#039;s connection is blocked because he&#039;s banned, make him banned for at least this many seconds.&lt;br /&gt;
NEW_FEATURE_DELAY            Disable features that only came in during the last X protocol versions.&lt;br /&gt;
NEW_TEAM_ALLOWED             Is it currently allowed to create a new team?&lt;br /&gt;
NUM_AIS                      Number of AI players&lt;br /&gt;
PASSWORD                     Password setting&lt;br /&gt;
PASSWORD_STORAGE             Determines where your passwords are stored: 1 means on harddisk (dangerous), 0 in memory and -1 means they are not stored at all.&lt;br /&gt;
PERSP_CORRECT                Enable perspective correction&lt;br /&gt;
PING_CHARITY                 How much ping are you willing to take over from your opponent?&lt;br /&gt;
PING_LOCX                    ping_locx_help&lt;br /&gt;
PING_LOCY                    ping_locy_help&lt;br /&gt;
PING_SIZE                    ping_size_help&lt;br /&gt;
PLAYERS                      players_help&lt;br /&gt;
PLAYER_1                     Player name&lt;br /&gt;
PLAYER_2                     Player name&lt;br /&gt;
PLAYER_3                     Player name&lt;br /&gt;
PLAYER_4                     Player name&lt;br /&gt;
PNG_SCREENSHOT               png_screenshot_help&lt;br /&gt;
POLY_ANTIALIAS               Enable polygon antialiasing&lt;br /&gt;
PREDICT_OBJECTS              predict cycle movement in network play&lt;br /&gt;
REAL_ARENA_SIZE_FACTOR       The currently active arena size. Leave it alone! Change size_factor instead.&lt;br /&gt;
REAL_CYCLE_SPEED_FACTOR      The currently active cycle speed multiplier. Leave it alone! Change speed_factor instead.&lt;br /&gt;
RECORDING_DEBUGLEVEL         Level of additonal information in recording file.&lt;br /&gt;
RESOURCE_REPOSITORY_CLIENT   resource_repository_client_help&lt;br /&gt;
RESOURCE_REPOSITORY_SERVER   resource_repository_server_help&lt;br /&gt;
ROUND_CENTER_MESSAGE         Big message sent to clients after every round&lt;br /&gt;
ROUND_CONSOLE_MESSAGE_1      Message sent to clients after every round&lt;br /&gt;
ROUND_CONSOLE_MESSAGE_2      Message sent to clients after every round&lt;br /&gt;
ROUND_CONSOLE_MESSAGE_3      Message sent to clients after every round&lt;br /&gt;
ROUND_CONSOLE_MESSAGE_4      Message sent to clients after every round&lt;br /&gt;
ROUND_CONSOLE_MESSAGE_5      Message sent to clients after every round&lt;br /&gt;
RUBBER_GAUGE_LOCX            rubber_gauge_locx_help&lt;br /&gt;
RUBBER_GAUGE_LOCY            rubber_gauge_locy_help&lt;br /&gt;
RUBBER_GAUGE_SIZE            rubber_gauge_size_help&lt;br /&gt;
SAY                          Dedicated server only: let the server administator say something.&lt;br /&gt;
SCORE_DEATHZONE              What you get for hitting the Death Zone&lt;br /&gt;
SCORE_DIE                    What you get for dying&lt;br /&gt;
SCORE_KILL                   What you get for killing someone&lt;br /&gt;
SCORE_LOCX                   score_locx_help&lt;br /&gt;
SCORE_LOCY                   score_locy_help&lt;br /&gt;
SCORE_SIZE                   score_size_help&lt;br /&gt;
SCORE_SUICIDE                What you get for stupidly dying&lt;br /&gt;
SCORE_WIN                    What you get for winning a round&lt;br /&gt;
SERVER_DNS                   server_dns_help&lt;br /&gt;
SERVER_IP                    server_ip_help&lt;br /&gt;
SERVER_NAME                  Name of this server&lt;br /&gt;
SERVER_PORT                  Port this server listens on&lt;br /&gt;
SETTING_LEGACY_BEHAVIOR_ANNOYING Default legacy behavior for settings that only cause minor annoyances on old clients, like enemy cycles stopping for .1 seconds after each turn. Example: CYCLE_RUBBER_MINDISTANCE&lt;br /&gt;
SETTING_LEGACY_BEHAVIOR_BREAKING Default legacy behavior for settings that absolutely break the client and make play impossible. Example of an affected setting: MAP_FILE&lt;br /&gt;
SETTING_LEGACY_BEHAVIOR_BUMPYDefault legacy behavior for settings that allow play on old clients in principle, but with severe limitations (cycles bouncing around, player commands not executed on time). Example: CYCLE_DELAY_TIMEBASED&lt;br /&gt;
SETTING_LEGACY_BEHAVIOR_CHEATING Default legacy behavior for settings where the default behavior could be considered cheating if nondefault was set. Example: DOUBLEBIND_TIME&lt;br /&gt;
SETTING_LEGACY_BEHAVIOR_VISUAL Default legacy behavior for settings that only affect status displays and visuals, not game physics. Example: CYCLE_RUBBER_* (the client displays the rubber meter, but it&#039;s not used for anything)&lt;br /&gt;
SHOW_BRAKE                   show_brake_help&lt;br /&gt;
SHOW_ENEMIES                 show_enemies_help&lt;br /&gt;
SHOW_FASTEST                 show_fastest_help&lt;br /&gt;
SHOW_FPS                     Enable fps display&lt;br /&gt;
SHOW_HUD                     show_hud_help&lt;br /&gt;
SHOW_OWN_NAME                Should your name be displayed above your cycle on your screen?&lt;br /&gt;
SHOW_PING                    show_ping_help&lt;br /&gt;
SHOW_RUBBER                  show_rubber_help&lt;br /&gt;
SHOW_SCORE                   show_score_help&lt;br /&gt;
SHOW_SPEED                   show_speed_help&lt;br /&gt;
SHOW_TIME                    show_time_help&lt;br /&gt;
SILENCE_ALL                  If set to 1, all chat messages will be omitted.&lt;br /&gt;
SIZE_FACTOR                  Arena size modifier&lt;br /&gt;
SKY_WOBBLE                   Sky animation&lt;br /&gt;
SMOOTH_SHADING               Enable smooth shading&lt;br /&gt;
SOFTWARE_RENDERER            Is the OpenGL renderer not hadware accelerated?&lt;br /&gt;
SOUND_BUFFER_SHIFT           Buffer size multiplier&lt;br /&gt;
SOUND_QUALITY                Sound quality [0=off, 3=high]&lt;br /&gt;
SOUND_SOURCES                Number of sound sources to be heard at the same time&lt;br /&gt;
SPAM_AUTOKICK                Spam score that causes you to get kicked instantly.&lt;br /&gt;
SPAM_MAXLEN                  Maximal length of chat message.&lt;br /&gt;
SPAM_MAXLEN_OVERRIDE         spam_maxlen_override_help&lt;br /&gt;
SPAM_PENALTY                 Number of seconds to silence a spammer.&lt;br /&gt;
SPAM_PROTECTION              Harshness of spam protection; determines min delay between chat messages accepted.&lt;br /&gt;
SPAM_PROTECTION_CHAT         Extra factor for SPAM_PROTECTION for chat messages.&lt;br /&gt;
SPAM_PROTECTION_VOTE         Extra factor for SPAM_PROTECTION for votes.&lt;br /&gt;
SPARKS                       Draw sparks when going too close to a wall&lt;br /&gt;
SPECTATOR_MODE_1             Sets spectator mode for this player&lt;br /&gt;
SPECTATOR_MODE_2             Sets spectator mode for this player&lt;br /&gt;
SPECTATOR_MODE_3             Sets spectator mode for this player&lt;br /&gt;
SPECTATOR_MODE_4             Sets spectator mode for this player&lt;br /&gt;
SPEED_FACTOR                 Speed modifier for the cycles&lt;br /&gt;
SPEED_GAUGE_LOCX             speed_gauge_locx_help&lt;br /&gt;
SPEED_GAUGE_LOCY             speed_gauge_locy_help&lt;br /&gt;
SPEED_GAUGE_SIZE             speed_gauge_size_help&lt;br /&gt;
SP_AI_IQ                     IQ of the AI opponents in single player mode&lt;br /&gt;
SP_AUTO_AIS                  Automatically spawn AI players in single player mode?&lt;br /&gt;
SP_AUTO_IQ                   Automatically adjust AI IQ in single player mode?&lt;br /&gt;
SP_EXPLOSION_RADIUS          Blast radius of the cycle explosions in single player mode&lt;br /&gt;
SP_FINISH_TYPE               What happens when the last human is dead in single player mode?&lt;br /&gt;
SP_GAME_TYPE                 Type of game played in single player mode&lt;br /&gt;
SP_LIMIT_ROUNDS              End the match after this number of rounds in single player mode&lt;br /&gt;
SP_LIMIT_SCORE               End the match when a player reaches this score in single player mode&lt;br /&gt;
SP_LIMIT_TIME                End the match after this number of minutes in single player mode&lt;br /&gt;
SP_MIN_PLAYERS               Minimum number of players in single player mode&lt;br /&gt;
SP_NUM_AIS                   Number of AI players in single player mode&lt;br /&gt;
SP_SCORE_WIN                 What you get for winning a round in single player mode&lt;br /&gt;
SP_SIZE_FACTOR               Arena size modifier&lt;br /&gt;
SP_SPEED_FACTOR              Speed modifier for the cycles&lt;br /&gt;
SP_TEAMS_MAX                 Maximum number of teams in single player mode&lt;br /&gt;
SP_TEAMS_MIN                 Minimum number of teams in single player mode&lt;br /&gt;
SP_TEAM_BALANCE_ON_QUIT      Balance teams on player quit in single player mode?&lt;br /&gt;
SP_TEAM_BALANCE_WITH_AIS     Balance teams with AI players in single player mode?&lt;br /&gt;
SP_TEAM_MAX_IMBALANCE        Maximum allowed temporary team imbalance in single player mode&lt;br /&gt;
SP_TEAM_MAX_IMBALANCE_PERM   Maximum allowed permanent team imbalance in single player mode&lt;br /&gt;
SP_TEAM_MAX_PLAYERS          Maximum number of players per team in single player mode&lt;br /&gt;
SP_TEAM_MIN_PLAYERS          Minimum number of players per team in single player mode&lt;br /&gt;
SP_WALLS_LENGTH              Length of the cycle walls in meters; negative values will make the walls infinite.&lt;br /&gt;
SP_WALLS_STAY_UP_DELAY       Number of seconds the walls stay up after a player died; negative values will keep them up forever.&lt;br /&gt;
SP_WIN_ZONE_MIN_LAST_DEATH   Minimum number of seconds since the last death before the instant win zone is activated in single player mode&lt;br /&gt;
SP_WIN_ZONE_MIN_ROUND_TIME   Minimum number of seconds the round has to be going on before the instant win zone is activated in single player mode&lt;br /&gt;
START_CAM_1                  Initial Camera&lt;br /&gt;
START_CAM_2                  Initial Camera&lt;br /&gt;
START_CAM_3                  Initial Camera&lt;br /&gt;
START_CAM_4                  Initial Camera&lt;br /&gt;
START_FOV_1                  Initial field of vision&lt;br /&gt;
START_FOV_2                  Initial field of vision&lt;br /&gt;
START_FOV_3                  Initial field of vision&lt;br /&gt;
START_FOV_4                  Initial field of vision&lt;br /&gt;
START_NEW_MATCH              Initiates a new match&lt;br /&gt;
SWAP_MODE                    Determines the commands used to sync graphics and input. 0: do nothing, 1: call glFlush(), 2: call glFinish().&lt;br /&gt;
TALK_TO_MASTER               Announce this server on the internet?&lt;br /&gt;
TEAMS_MAX                    Maximum number of teams&lt;br /&gt;
TEAMS_MIN                    Minimum number of teams&lt;br /&gt;
TEAM_BALANCE_ON_QUIT         Balance teams on player quit?&lt;br /&gt;
TEAM_BALANCE_WITH_AIS        Balance teams with AI players?&lt;br /&gt;
TEAM_MAX_IMBALANCE           Maximum allowed temporary team imbalance&lt;br /&gt;
TEAM_MAX_IMBALANCE_PERM      Maximum allowed permanent team imbalance&lt;br /&gt;
TEAM_MAX_PLAYERS             Maximum number of players per team&lt;br /&gt;
TEAM_MIN_PLAYERS             Minimum number of players per team&lt;br /&gt;
TEXTURES_HI                  Use high color textures&lt;br /&gt;
TEXTURE_MODE_0               Floor Texture:&lt;br /&gt;
TEXTURE_MODE_1               Wall Textures:&lt;br /&gt;
TEXTURE_MODE_2               Object Textures:&lt;br /&gt;
TEXTURE_MODE_3               Font:&lt;br /&gt;
TEXT_OUT                     Enable console text output&lt;br /&gt;
TOPOLOGY_POLICE              The topology police does posteriori checks to determine whether game moves were legal.&lt;br /&gt;
UNBAN_IP                     Revokes the ban of the specified IP address.&lt;br /&gt;
UPPER_SKY                    Draw upper sky plane&lt;br /&gt;
URL                          HTTP URI assiciated with a server&lt;br /&gt;
USE_DISPLAYLISTS             Use display lists for rendering the cycles?&lt;br /&gt;
VIEWPORT_CONF                Viewport configuration; decides how many players can play on this computer&lt;br /&gt;
VIEWPORT_TO_PLAYER_1         Assign this viewport to a player&lt;br /&gt;
VIEWPORT_TO_PLAYER_2         Assign this viewport to a player&lt;br /&gt;
VIEWPORT_TO_PLAYER_3         Assign this viewport to a player&lt;br /&gt;
VIEWPORT_TO_PLAYER_4         Assign this viewport to a player&lt;br /&gt;
VOTING_BIAS                  Add virtual voters that oppose every change.&lt;br /&gt;
VOTING_DECAY                 One non-voter is ignored everytime this many secons pass.&lt;br /&gt;
VOTING_KICK_TIME             The minimum time in seconds between two kick votes against the same player.&lt;br /&gt;
VOTING_PRIVACY               Controls logging of voting process. 2: nothing gets logged 1: vote submission is logged for the server admin 0: voting is logged for the server admin -1: vote submission is made public -2: everything is made public&lt;br /&gt;
VOTING_SPAM_ISSUE            The spam level of issuing a vote.&lt;br /&gt;
VOTING_SPAM_REJECT           The spam level of getting your vote rejected.&lt;br /&gt;
VOTING_START_DECAY           Number of seconds after that the non-voters start to get ignored.&lt;br /&gt;
VOTING_TIMEOUT               Votes older than this time out and are rejected.&lt;br /&gt;
WALLS_LENGTH                 Length of the cycle walls in meters; negative values will make the walls infinite.&lt;br /&gt;
WALLS_STAY_UP_DELAY          Number of seconds the walls stay up after a player died; negative values will keep them up forever.&lt;br /&gt;
WHITE_SPARKS                 white_sparks_help&lt;br /&gt;
WIN_ZONE_DEATHS              A value of 1 turns it into a death zone.&lt;br /&gt;
WIN_ZONE_EXPANSION           Expansion speed of the instant win zone&lt;br /&gt;
WIN_ZONE_INITIAL_SIZE        win_zone_initial_size_help&lt;br /&gt;
WIN_ZONE_MIN_LAST_DEATH      Minimum number of seconds since the last death before the instant win zone is activated&lt;br /&gt;
WIN_ZONE_MIN_ROUND_TIME      Minimum number of seconds the round has to be going on before the instant win zone is activated&lt;br /&gt;
WIN_ZONE_RANDOMNESS          Randomness factor of the initial win zone position. 0 fixes it at the arena center, 1 spreads the zone all over it.&lt;br /&gt;
WRAP_MENU                    If set, you leave a menu to the top and reenter it at the bottom.&lt;br /&gt;
ZDEPTH                       z buffer depth to use (0: 16 1: from color depth 2: 32)&lt;br /&gt;
ZTRICK                       Performance tweak; does not work on most Windows systems&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Embedded_Web_Server&amp;diff=2268</id>
		<title>Embedded Web Server</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Embedded_Web_Server&amp;diff=2268"/>
		<updated>2005-11-20T21:26:36Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Removed MAP_URI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The embedded web server is intended to provide a default installation of the dedicated server that is capable of serving its own resources to clients, providing a statistics page for players, and providing a remote administration function for administrators.  It&#039;s not intended to replace in-game admin, of course, but to supplement it.  As additional stuff gets added, it should be possible to add things to the web interface like managing tournaments and other things I&#039;m not thinking of right now.&lt;br /&gt;
&lt;br /&gt;
== shttpd ==&lt;br /&gt;
&lt;br /&gt;
The web server uses a neat little program called shttpd.  It&#039;s a program written with the intent of being an embeddable webserver and is used on some routers.  It has a very liberal license that is compatible with the GPL, allowing us to include it in the game.  It&#039;s a C API that supports callbacks, CGI, and some other things.&lt;br /&gt;
&lt;br /&gt;
== Serving Resources ==&lt;br /&gt;
&lt;br /&gt;
This is only partially implemented.  I added to the web server the ability to put multiple mount points under the web root so that we can put the &amp;lt;code&amp;gt;resource&amp;lt;/code&amp;gt; directory under the web root.  There&#039;s a couple of things here left to implement.  Mainly the game server needs to be able to tell clients a proper URL for resources that uses this web server.  Then there needs to be some config items for administrators to use to configure the web server&#039;s resource service.&lt;br /&gt;
&lt;br /&gt;
It is this need that primarily introduces the requirement that the webserver be available in the regular client distribution.  When a player wants to host a game from his machine using his game client, he should have this web server available to serve &#039;&#039;his&#039;&#039; resources.&lt;br /&gt;
&lt;br /&gt;
=== How the embedded server will interact with the resource server ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Player Web Pages ==&lt;br /&gt;
&lt;br /&gt;
This is only half-baked right now.  We have several options.&lt;br /&gt;
&lt;br /&gt;
* CGI&lt;br /&gt;
The CGI doesn&#039;t currently work in our embedded setup.  This needs some troubleshooting.  We should support it since it&#039;s there and server admins will probably want to be able to use it, even if we don&#039;t.  In any case, we can provide an interface for players by writing simple CGI scripts, or even writing some C++ programs to do it if we don&#039;t want to introduce a scripting dependency for this.&lt;br /&gt;
&lt;br /&gt;
* Callbacks&lt;br /&gt;
This is the most likely way we&#039;ll go in the foreseeable future.  Using the callback interface of the webserver, we can provide pages generated by C++ code in the armagetronad-dedicated process.&lt;br /&gt;
&lt;br /&gt;
* Python&lt;br /&gt;
After we have embedded Python, this is the most logical way to go, in which case we will likely still have the scripts executed inside the armagetronad-dedicated process, they&#039;ll just be Python scripts instead of C++ code.&lt;br /&gt;
&lt;br /&gt;
== Administrator Web Pages ==&lt;br /&gt;
&lt;br /&gt;
So I created a callback for the /admin url. Smile So after you have it running you can visit http://YOURSERVERWITHPORT/admin?cmd=SOMECOMMAND&amp;amp;value=VALUE&lt;br /&gt;
&lt;br /&gt;
And that command will be executed. Smile I&#039;m going to look next hopefully into putting some protection on that url so a user and pass will be required, hopefully configurable somewhere. Smile But I figured that would be a good start to see if I could do it, anyway.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Web Server ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Old Stuff (left here for reference) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Remainder taken from the forums&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In any case, the web interface now uses its config file. It&#039;s still a little messy in one spot, but I&#039;ll clean it up. I logged in to the dedicated server with a game client and then hit the web server and noticed no problems with the polling or anything. Since I set the web server to compile in multi-threaded mode, it should start a new thread for every page request, so they shouldn&#039;t be served from within the game loop, although the polling for new connections is done in the game loop. (This is what has so far saved me from having to make the uWebInterface class start its own thread) &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
For the repository thing, there&#039;s a reason I don&#039;t want to make a configuration option for the embedded web server as a repository. It should happen automatically. I.e. you set MAP_FILE and if you set no repository, the embedded web server should serve it automatically, and it should already know where the file is located and the client shoudl request it properly. But you want to support the resource repository, where if the client doesn&#039;t have the map, it knows about the resource repository. So, to support both scenarios, a simple flag should tell the server to tell the client to look at the resource repository instead.&lt;br /&gt;
&lt;br /&gt;
This isn&#039;t mutually exclusive with the RESOURCE_REPOSITORY item you&#039;ve mentioned, because a third and perfectly valid scenario is for the server to direct the client to a different resource repository that&#039;s not the central repository you&#039;re building.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Let&#039;s see. Sets the webroot to the repository directory. I have a small problem here. I&#039;d like to make it work with cgi scripts and let server admins stick their own scripts on there if they have a cli php or python. If I set the webroot to the repository directory, then server admins have to put web interface files in it. We have to also, for images and stuff. If I set the webroot to something else, I need the resource repository under it. A copy isn&#039;t quite right, and there isn&#039;t (yet) any way to specify a callback for a specific directory, only for a specific url. I looked at modifying the web server for that and didn&#039;t find the solution, but of course I&#039;ve only just started looking at the web server code.&lt;br /&gt;
&lt;br /&gt;
So I created a callback for the /admin url. Smile So after you have it running you can visit http://YOURSERVERWITHPORT/admin?cmd=SOMECOMMAND&amp;amp;value=VALUE&lt;br /&gt;
&lt;br /&gt;
And that command will be executed. Smile I&#039;m going to look next hopefully into putting some protection on that url so a user and pass will be required, hopefully configurable somewhere. Smile But I figured that would be a good start to see if I could do it, anyway.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I think we can have the master tell the server what it&#039;s external IP address is, and then it could assemble a URI from that. For the sake of having it Right, I&#039;d be happy to have that, but it still has to work even if there&#039;s no master server to give up this information. Wink (Especially considering it needs to work in a default installation, and a default installation has talk_to_master 0 set) &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Ok, I&#039;m done for the night. Here&#039;s what else I added:&lt;br /&gt;
&lt;br /&gt;
www-root directory for web interface files. Probably I&#039;ll be adding an admin directory to it which will provide the admin functions I&#039;ve been working towards, but it&#039;s not there yet.&lt;br /&gt;
&lt;br /&gt;
Stuff to tDirectories that&#039;s probably wrong. Sad I admit I was quite confused reading that file. I want a call to tDirectories to a method just like GetDirPath() for resources, but I want it to return the path for www-root.&lt;br /&gt;
&lt;br /&gt;
I also ran into a minor problem. Smile I&#039;d like the build system to somehow copy the files under www-root to the build directory, wherever it&#039;s at. I&#039;m at something of a loss for that, probably because I need to go to bed.&lt;br /&gt;
&lt;br /&gt;
Still need to add the config option that tells the client to get resources from the embedded webserver and then the code to the client that actually does it. Anything else in this area is dressing. But as it stands right now, the URI should be http://SERVER:PORT/resource/PATH/TO/RESOURCE as Luke-Jr requested. So the client needs to know what the PORT is as well. To add that the way I was wanting I need to transfer the webserver config items to nSettingItems as appropriate, others to other types of course, and then add a series of calls in uWebInterface::Initialize() to initialize the webserver with them, and remove the webserver&#039;s call to open its own config file, adding that instead to the dedicated server itself. Most of the options should just stay the same as in the webserver, but some need to be changed (PORT being one of them, it&#039;s taken, and too ambiguous anyway).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Other than that, I&#039;m not too far off from having a basic web-based admin GUI for the server and also having it serve up its own resources. Technically it can already do that if you put the right MAP_URI in your config file for it.&#039;&#039; This is no longer true. MAP_URI has been removed, as it is possible to write the MAP_FILE as &amp;quot;directory/file (http://some.server.com/another_directory/file; http://alternative.server.com/alternative_dir/file)&amp;quot;. Also, I think there are 2 resource repository configuration items, one for the client, one for the server. IIRC, the server could point to its onw web server this way.&lt;br /&gt;
&lt;br /&gt;
ANd, in the process there&#039;s no telling what I broke. Hopefully not much, because tDirectories is the only file I&#039;ve touched outside of uWebInterface and the shttpd files.&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Server_Administration_Guide&amp;diff=2267</id>
		<title>Server Administration Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Server_Administration_Guide&amp;diff=2267"/>
		<updated>2005-11-20T19:18:40Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Removed MAP_URI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Setting up a server for Armagetron Advanced isn&#039;t terribly difficult, but there are a few things you need to consider when you do it.  Taking a few minutes to figure out what you&#039;re trying to do will save you a whole lot of headache/heartache later on when people start playing your server.&lt;br /&gt;
&lt;br /&gt;
== Starting out ==&lt;br /&gt;
&lt;br /&gt;
Before you consider what OS you&#039;re going to use, what version of the game to run, and so forth, you should figure out a few basic parameters of the server.  Here are some you should consider.&lt;br /&gt;
&lt;br /&gt;
=== Private or Public? ===&lt;br /&gt;
The setting &amp;lt;code&amp;gt;TALK_TO_MASTER&amp;lt;/code&amp;gt; is off by default. To make your server public (available on the master server list), you must turn on this setting. If it is off, players will only be able to connect to your server through the [[Server Bookmarks]] using your IP address.&lt;br /&gt;
&lt;br /&gt;
=== Moderated? ===&lt;br /&gt;
&lt;br /&gt;
Armagetron Advanced supports a limited but expanding set of in game administration commands(in 0.2.8, it will be a fairly comprehensive set).  The catch is that you can only have one administration password.  So in order to make moderators on your server, all you have to do is give out the administration password.&lt;br /&gt;
&lt;br /&gt;
The alternative is to use the voting features that are intended to allow players to moderate the server as they see fit.&lt;br /&gt;
&lt;br /&gt;
You can go either way, of course.  It&#039;s entirely up to you.&lt;br /&gt;
&lt;br /&gt;
=== Round or Match ===&lt;br /&gt;
&lt;br /&gt;
There are plenty of ways to setup scoring on a server.  A common setting is one point for each kill.  While this scoring method encourages competitive play, it&#039;s not always  desirable.  On some servers, just surviving to the end of the round is quite an accomplishment, and you may wish to reward players for doing so.  Too much of a reward will encourage players to just screw around instead of fighting.&lt;br /&gt;
&lt;br /&gt;
You should also consider if you even want the standard gladiator-style fighting.  It&#039;s certainly possible to set up scoring to allow for different games, such as [[Roulette]], and to encourage different playing styles.  So just take a few minutes to think about it.  It&#039;ll pay off in the end, because the default game server settings aren&#039;t necessarily the most popular scoring rules, and unless you really want the default scoring, you could lose most of your audience in the first two hours of operation if you didn&#039;t think about scoring.&lt;br /&gt;
&lt;br /&gt;
== Setting Up ==&lt;br /&gt;
&lt;br /&gt;
So now you&#039;ve figured out what kind of server you want and how you want people to play on it, and you want to know how to set it up and optionally make it available on the master server browser.  Setting up is fairly straightforward.&lt;br /&gt;
&lt;br /&gt;
=== Install the Server ===&lt;br /&gt;
&lt;br /&gt;
First you need to install the server.  It&#039;s common to think of any given &amp;quot;server&amp;quot; as a special machine built by old women in third-world countries, but actually, a &amp;quot;server&amp;quot; is just any machine that makes a &amp;quot;service&amp;quot; available to other users.  In this case, you&#039;re going to install software on a computer, possibly your desktop computer, that will make a game service available for other users to use.&lt;br /&gt;
&lt;br /&gt;
So first you need to acquire the package called &amp;quot;armagetronad-dedicated&amp;quot;.  If you&#039;re using Linux, get one that says &amp;quot;linux&amp;quot; on it.  For Windows, get the one that has &amp;quot;.exe&amp;quot; on the end of it.  For Mac OS X, there&#039;s one with a &amp;quot;.dmg&amp;quot; extension for you.  Usually the CPU architecture and OS are embedded in the filename, so pick the right one and install it.&lt;br /&gt;
&lt;br /&gt;
We won&#039;t go into too many details here about installation, consult the regular documentation for how to install the server for your architecture.&lt;br /&gt;
&lt;br /&gt;
=== Test the Server ===&lt;br /&gt;
&lt;br /&gt;
After installing the server, the first thing you should do is test it.  So start it up.  If you&#039;re in Linux, you will want to become the superuser and type, in a terminal, &amp;quot;/etc/init.d/armagetronad-dedicated start&amp;quot;.  If you&#039;re in Windows, find the icon in your Start menu and click it.  Then fire up a client and see if you can connect to it as a LAN game (under Network Game).  If you can do this, then you have successfully tested the server.  Now you need to shut it down.  In Windows, go to the console window for the server (it opens when you start the game) and type &amp;quot;QUIT&amp;quot;.  In Linux, just do &amp;quot;/etc/init.d/armagetronad-dedicated stop&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Secure the Server ===&lt;br /&gt;
&lt;br /&gt;
There isn&#039;t really a lot to do here, but you should consider how you want to secure the machine.  If you think it will be necessary to ban certain players, then a firewall is your only option.  You will need a firewall that allows you to deny connections from users by IP address.  It&#039;s not foolproof, but it&#039;s the only thing that is possible right now to ban players.&lt;br /&gt;
&lt;br /&gt;
If you want your server to be known on the internet, you will probably need to open a port in your router.  The default port is 4534, and you need to open it for &amp;quot;udp&amp;quot;.  Instructions on how to configure this on your router are beyond the scope of this document, you should consult your owner&#039;s manual for further information.&lt;br /&gt;
&lt;br /&gt;
Contrarily, if you do not want internet players to be able to use your server, you will need to make sure your router prevents such players but making the port mentioned above inaccessible through the router.&lt;br /&gt;
&lt;br /&gt;
== Make your Settings ==&lt;br /&gt;
&lt;br /&gt;
At this point you should have a good idea of what kind of server you&#039;re going to run and you should also have a working server running, but you don&#039;t yet have the server you set out to build.  Now you need to configure the server itself.&lt;br /&gt;
&lt;br /&gt;
The server is very flexible.  As of the 0.2.8 release, you have pretty complete control over the simulation, and you also have some settings that you can configure the game rules a bit.  So now all you need to do is make the settings, right?  Wrong.  :)  First you need to understand how the settings are loaded and in what order.&lt;br /&gt;
&lt;br /&gt;
=== Finding the Settings ===&lt;br /&gt;
* Linux -&amp;gt; &amp;lt;code&amp;gt;/etc/games/armagetronad-dedicated&amp;lt;/code&amp;gt;&lt;br /&gt;
* Mac OS X -&amp;gt; &amp;lt;code&amp;gt;~/Library/Application Support/Armagetron Advanced&amp;lt;/code&amp;gt;&lt;br /&gt;
* Windows -&amp;gt; &amp;lt;code&amp;gt;C:\program files\armagetronad&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here are the files you will find (Note: this is for the 0.2.8 server, older servers vary):&lt;br /&gt;
&lt;br /&gt;
;aiplayers.cfg&lt;br /&gt;
:This file contains the information used to determine the AI player names and skills.  You can edit this file to make a more customized set of AI players, but make sure to take backups.  When you upgrade or reinstall the server this file will be overwritten.&lt;br /&gt;
&lt;br /&gt;
;default.cfg&lt;br /&gt;
:This file contains a reasonable set of defaults and shouldn&#039;t be edited.&lt;br /&gt;
&lt;br /&gt;
;master.srv&lt;br /&gt;
:This file contains the location of the master server and connection parameters.  You can edit it, but then your server won&#039;t be able to communicate with the master server that everyone uses, so only do so if you really know what you&#039;re doing and have a good reason to do it.&lt;br /&gt;
&lt;br /&gt;
;rc.config&lt;br /&gt;
:This file is used to configure the UNIX daemon.  It may not be present in Windows/Mac OS X.&lt;br /&gt;
&lt;br /&gt;
;settings.cfg&lt;br /&gt;
:This file contains the basic set of settings used by both the client and the server.  You should not edit this file.&lt;br /&gt;
&lt;br /&gt;
;settings_dedicated.cfg&lt;br /&gt;
:This file contains an extended set of settings used by the dedicated server.  You should not edit this file either.&lt;br /&gt;
&lt;br /&gt;
So where should you make your changes?  There are 4 files that were not listed, but they are the files you should edit!  Why aren&#039;t they listed?  &#039;&#039;You&#039;&#039; are supposed to make them, using a regular text editor.  So, open settings_dedicated.cfg and copy the appropriate lines into the following files:&lt;br /&gt;
&lt;br /&gt;
;autoexec.cfg&lt;br /&gt;
:I don&#039;t know what this is for, I don&#039;t use it.  (Lucifer)&lt;br /&gt;
&lt;br /&gt;
;server_info.cfg&lt;br /&gt;
:You should put server policy settings here, as well as the SERVER_NAME and connection information.&lt;br /&gt;
&lt;br /&gt;
;settings_custom.cfg&lt;br /&gt;
:This is the file that should contain game rule and simulation settings.  If you obey the convention for &amp;lt;code&amp;gt;server_info.cfg&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;settings_custom.cfg&amp;lt;/code&amp;gt;, your server will not only be easier to maintain, but also easier to exchange settings with other administrators.&lt;br /&gt;
&lt;br /&gt;
;everytime.cfg&lt;br /&gt;
:This file is loaded and processed every round.  In a running server, that means you can use this file to change settings on the fly.  It also means you can put special information using console commands here.  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
SAY Server stats at http://www.armagetronadstats.com/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...will display &amp;quot;Admin: Server stats at http://www.armagetronadstats.com/&amp;quot; between every round.  Very useful!  You can also put:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
INCLUDE settings_custom.cfg&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...and your settings_custom.cfg file will be reloaded every round.  Not particularly useful, but it can be helpful when you need to tweak simulation settings.&lt;br /&gt;
&lt;br /&gt;
=== Making your own Settings ===&lt;br /&gt;
&lt;br /&gt;
The most common settings to change affect game logic, scoring, and some basic simulation such as cycle speed, acceleration, and so forth.&lt;br /&gt;
&lt;br /&gt;
==== Simulation Settings ====&lt;br /&gt;
;EXPLOSION_RADIUS&lt;br /&gt;
:Blast radius of cycle explosions.  Set to 0 to have no explosion radius (obviously).&lt;br /&gt;
;WALLS_LENGTH&lt;br /&gt;
:Cycle trail length.  Set to -1 to have infinite trails.&lt;br /&gt;
;WALLS_STAY_UP_DELAY&lt;br /&gt;
:Cycle trail stay up this long after the cycle&#039;s destruction, measured in seconds.&lt;br /&gt;
;SPEED_FACTOR&lt;br /&gt;
:Cycle speed factor.  Increase this by two to double the speed&lt;br /&gt;
;CYCLE_RUBBER&lt;br /&gt;
:This affects grinding.  Higher numbers allow players to get closer to walls before crashing.  It&#039;s intended to be used solely to correct for lag, but it&#039;s usually not used that way.&lt;br /&gt;
&lt;br /&gt;
==== Map Settings ====&lt;br /&gt;
;ARENA_AXES&lt;br /&gt;
:Sets the number of possible driving directions (used only when map is axes-independent, otherwise the map overwrite this value)&lt;br /&gt;
;MAP_FILE&lt;br /&gt;
:This describe how to retreive a map. It uses a special syntax to allow to describe the location of the map on the local disk and a possible list of network based location, such as web url, where to retreive the file. The syntax is &amp;quot;[./][directory[/directory[...]]]/filename [(fulluri[; fulluri[; fulluri[...]]])]&amp;quot;. By default, missing files are looked up by the client on the central resource repository. If one of more URI are given in the MAP_FILE, they will be queried before going to the resource repository.&lt;br /&gt;
&lt;br /&gt;
==== Game Rules ====&lt;br /&gt;
&lt;br /&gt;
;SCORE_WIN&lt;br /&gt;
:Points you gain for being last one alive.  Also known as &amp;quot;camping points&amp;quot;&lt;br /&gt;
;SCORE_SUICIDE&lt;br /&gt;
:Points you gain for every stupid death (race into the rim/your own wall).  It is added, so negative numbers are appropriate here unless you want to reward people for being stupid.&lt;br /&gt;
;SCORE_KILL&lt;br /&gt;
:Points you gain for everyone racing into your wall.&lt;br /&gt;
;SCORE_DIE&lt;br /&gt;
:Points you gain for every time you race into someone else&#039;s wall.  Like SCORE_SUICIDE, you should make this a negative number unless you want to reward people for sucking.&lt;br /&gt;
&lt;br /&gt;
;LIMIT_SCORE&lt;br /&gt;
:Score limit.  When a player reaches this score, the match ends and that player wins.  Ties are resolved by playing another round until one player has more points than the rest.&lt;br /&gt;
;LIMIT_ROUNDS&lt;br /&gt;
:Max number of rounds to play.  When this is reached, the highest-scoring player is named the winner.&lt;br /&gt;
;LIMIT_TIME&lt;br /&gt;
:Max time (in minutes).  When this is reached, the highest-scoring player is named the winner of the match.&lt;br /&gt;
&lt;br /&gt;
Here is a pretty common setup:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SCORE_WIN 0&lt;br /&gt;
SCORE_SUICIDE 0&lt;br /&gt;
SCORE_KILL 1&lt;br /&gt;
SCORE_DIE  0&lt;br /&gt;
&lt;br /&gt;
LIMIT_SCORE 10&lt;br /&gt;
LIMIT_ROUNDS 40&lt;br /&gt;
LIMIT_TIME  30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the scoring system used on servers like Swampland, the old Tigers Network servers, and the goshdarn clones that are floating around.  It basically means you have to get 10 points by killing other players to win the match.  Breakfast in Hell used a variation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SCORE_WIN 0&lt;br /&gt;
SCORE_SUICIDE 0&lt;br /&gt;
SCORE_KILL 1&lt;br /&gt;
SCORE_DIE  0&lt;br /&gt;
&lt;br /&gt;
LIMIT_SCORE 1000&lt;br /&gt;
LIMIT_ROUNDS 40&lt;br /&gt;
LIMIT_TIME  7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You still had to kill people to win, but the match was limited to 7 minutes.  After 7 minutes, a winner was declared.  The Crack Pipe still uses these settings at the time of writing but may change in the future.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This isn&#039;t a complete list!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a whole slew of configuration items available.  Since the config items are the same as console commands, you can see a pretty complete list on the [[Console Commands]] page.&lt;br /&gt;
&lt;br /&gt;
== Finishing Up ==&lt;br /&gt;
&lt;br /&gt;
The last thing you need to figure out is usually the first thing you know.  Do you want this server to be known by the master server?  If so, you need to add this line to your settings_custom.cfg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
TALK_TO_MASTER 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: in previous versions, this was the default, but as of 0.2.8, the default will be to not talk to master.  You will have to manually set that, so make it the last thing you do before starting the server up for play.&lt;br /&gt;
&lt;br /&gt;
Of course, when that&#039;s all done, you need to start the server.  Use the same procedure already referenced.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
This article is the basic &amp;quot;How to setup a game server&amp;quot; article.  After reading through this article and getting your server running, the best thing you can do is to play your server for awhile, talk to other administrators, and so forth.  Find out what people want, or figure out what you want.  Tweak your settings however you&#039;d like, it&#039;s your server.  When you feel like you&#039;ve got the hang of running a server, check out the [[Advanced Server Administration Guide]] for more cool things you can do with your server.&lt;br /&gt;
&lt;br /&gt;
In the meantime, have fun!&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=2236</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=2236"/>
		<updated>2005-11-13T16:41:44Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Removed the Todo&amp;#039;s&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is to help map designer to get a grasp of the Map&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This version of the tutorial address the syntax defined by map-0.2.8_beta3.dtd and present the rules of interpreting the syntax as used by the parsing engine in the version 0.2.8 of Armagetron Advance.&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;
[[Image:original-1.0.1.png|right|thumbnail|Original Armagetron 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;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
	         Converted to XML by philippeqc.&lt;br /&gt;
	         License: Do with it what you want.                          --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
	&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Map format start with a XML header. The actual definition&lt;br /&gt;
of the Map is wrapped in a Resource. The Resource gives a&lt;br /&gt;
description of the content, such as the author and the version of&lt;br /&gt;
the map included. This particuliar map is the xml version of the&lt;br /&gt;
original map that supported directly in the game before version&lt;br /&gt;
0.2.8 (Arthemis). &lt;br /&gt;
&lt;br /&gt;
Skippin ahead in to the Field element, line 11 defines that &lt;br /&gt;
that 4 axes are to be&lt;br /&gt;
used. From line 13 to 26, 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;
== Header ==&lt;br /&gt;
The header of the map can nearly be considered as constant. It is&lt;br /&gt;
composed of 2 lines.&lt;br /&gt;
&lt;br /&gt;
Header for Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only element you need to consider is the name of the dtd. The&lt;br /&gt;
dtd should always be named after the version it targets. For&lt;br /&gt;
Arthemis, it should be &amp;quot;map-0.2.8.dtd&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Nota: during the beta process, version can change often and have&lt;br /&gt;
great difference between them. To limit the scope of the problem&lt;br /&gt;
during the beta phase, the name of the dtd should include the beta&lt;br /&gt;
it targets. &lt;br /&gt;
&lt;br /&gt;
Header for the beta 3 of Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resource ==&lt;br /&gt;
The Resource element describe some meta-information of the Map,&lt;br /&gt;
such as who created it, how should the resource file be named and&lt;br /&gt;
what type of information is to be expected.&lt;br /&gt;
&lt;br /&gt;
One part of the Resource details describe who made this map a&lt;br /&gt;
reality. In the Resource element, it is possible to differenciate&lt;br /&gt;
between the person or organism that comissioned the map, the&lt;br /&gt;
commisionner, and the person who executed the request and coded&lt;br /&gt;
it, the author. &lt;br /&gt;
&lt;br /&gt;
Both operations might be carried by the same and only person, in&lt;br /&gt;
this instance both entities are the same and the commissioner&lt;br /&gt;
field should be left blank. The commissioner field should be used&lt;br /&gt;
when the concept of a map and its execution are performed by two&lt;br /&gt;
different persons or entities. It could range from anything from&lt;br /&gt;
&amp;quot;could someone make a map where the feeling of &amp;lt;X&amp;gt; is emphased&amp;quot; to&lt;br /&gt;
coding from a hand-drawn sketch. The commissioner could also be&lt;br /&gt;
implied. Without him/it ever placing an open request, a&lt;br /&gt;
commisioner could be assign to a map when the author whan to&lt;br /&gt;
express an assumed sharing of the creation of the map. This can be&lt;br /&gt;
the case, for example, when the member of a Clan wrote a map that&lt;br /&gt;
falls in the ideals of the Clan.&lt;br /&gt;
&lt;br /&gt;
Maps can be implicitly grouped together. The category field is&lt;br /&gt;
there for this purpose. Prolific authors and their public will&lt;br /&gt;
appreciate a clear grouping of similar themed maps.&lt;br /&gt;
&lt;br /&gt;
As ever refining one&#039;s work is a very respected quality in the&lt;br /&gt;
Armagetron community, the latest changes need to be properly&lt;br /&gt;
propagated to everybody. The version field allow an author to&lt;br /&gt;
identify each specific instance of her work, and also insure that&lt;br /&gt;
a client will receive the exact version used by a server when&lt;br /&gt;
playing on it.&lt;br /&gt;
&lt;br /&gt;
The type specifies that the file hold an Armagetron Advance&lt;br /&gt;
map. While this is the only type available at the moment, the&lt;br /&gt;
development team is eager to expand this in the furture.&lt;br /&gt;
&lt;br /&gt;
Finally, and most importantly, the name of the &#039;&#039;ouvrage&#039;&#039; being&lt;br /&gt;
presented. &lt;br /&gt;
&lt;br /&gt;
The fields for Resource are:&lt;br /&gt;
;name&lt;br /&gt;
:The name of the map, mandatory.&lt;br /&gt;
;type&lt;br /&gt;
:The only valid type is &amp;quot;aamap&amp;quot;. This field is defaulted &amp;quot;aamap&amp;quot; when abscent.&lt;br /&gt;
;version &lt;br /&gt;
:The version of the map described in this particuliar file. This value should be modified each time a change is applied to the map to ensure everybody have the proper copy. This field is defaulted to &amp;quot;1.0&amp;quot; when abscent.&lt;br /&gt;
;author&lt;br /&gt;
:The author who produced this map. This field is defaulted to &amp;quot;Anonymous&amp;quot; when abscent.&lt;br /&gt;
;commisioner&lt;br /&gt;
:The entity who dreamt, requested or even inspired in any way this map. This field is optional and has no default value. &lt;br /&gt;
;category&lt;br /&gt;
:How this map should be categorised. This field can have any number of sub categories, each separated by a &amp;quot;\&amp;quot;. An example could be &amp;quot;category\subcategory\subsubcategory&amp;quot;. This field is defaulted to &amp;quot;unsorted&amp;quot; when abscent. &lt;br /&gt;
&lt;br /&gt;
Example: The castle map made by philippeqc&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;Castle&amp;quot; type=&amp;quot;aamap&amp;quot; version=&amp;quot;1.1&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;examples&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The StarTron map made by Your_mom&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;5ptstar&amp;quot; version=&amp;quot;beta&amp;quot; author=&amp;quot;Your_mom&amp;quot; category=&amp;quot;beta&amp;quot; type=&amp;quot;aamap&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The MBC training map, made by Zorgul&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;TrainingDay&amp;quot; version=&amp;quot;1.6&amp;quot; author=&amp;quot;Zorgul&amp;quot; category=&amp;quot;MBC&amp;quot; type=&amp;quot;aamap&amp;quot; commisioner=&amp;quot;Micro Bus City&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The Reverso map, writen by Nemosultra based on a drawing by lucifer, for the Crack Pipe server&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;Reverso&amp;quot; version=&amp;quot;1.1-b&amp;quot; author=&amp;quot;Nemosultra&amp;quot; category=&amp;quot;CrackPipe&amp;quot; type=&amp;quot;aamap&amp;quot; commisioner=&amp;quot;lucifer&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To facilitate manipulation of the file over distributed systems,&lt;br /&gt;
the Resource holds explicit information about the naming and&lt;br /&gt;
storing of the file. This information can be used by tools such as&lt;br /&gt;
scripts and resource repositories to manipulate the file. &lt;br /&gt;
&lt;br /&gt;
Many tools, including the game client, will expect the following&lt;br /&gt;
to indicate the location of a &lt;br /&gt;
filee inside the local store of resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Author&amp;gt;/[Category/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;ResourceType&amp;gt;.&amp;lt;Extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
This element is the basic holder of the description of the&lt;br /&gt;
Map. From the opening element to the closing one, all the&lt;br /&gt;
information will be used to construct an in-game representation&lt;br /&gt;
for the players to explore and possibly compete in.&lt;br /&gt;
&lt;br /&gt;
The version attribute of the map indicate an specific parsing&lt;br /&gt;
engine version that should be used to express the map in the exact&lt;br /&gt;
manners that are desired by the map creator. &lt;br /&gt;
&lt;br /&gt;
Example: Map element&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sooner in the file,&lt;br /&gt;
the dtd has already specified a version. The difference between&lt;br /&gt;
both version is one specify the version of the syntax to be use,&lt;br /&gt;
and the other, the version of the rules to be used to interprete&lt;br /&gt;
the syntax.&lt;br /&gt;
&lt;br /&gt;
The dtd control the syntax, what keywords are valid and in which&lt;br /&gt;
arrangement. The parsing engine has specific rules how to read the&lt;br /&gt;
syntax and create the game elements. It is possible for different&lt;br /&gt;
parsing engine to operate from the same syntax, be it because the syntax&lt;br /&gt;
allows for many interpretation, or because a specific&lt;br /&gt;
interpretation has been found faulty in some case. Because each&lt;br /&gt;
interpretation could lead to very different instantiation, it is&lt;br /&gt;
best for the map designer to specify the one that should be&lt;br /&gt;
used. Even when no alternative interpretation exist, ie: there is&lt;br /&gt;
only one version available, it is best for the map designer to&lt;br /&gt;
specify it. Should a new one be implemented at a later time, the&lt;br /&gt;
map defined would continue to be instanciated properly.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, the only parsing engine version is&lt;br /&gt;
&amp;quot;0.2.8&amp;quot;. Maps using a version that is not understood by the&lt;br /&gt;
parsing engine of a specific client or server will be&lt;br /&gt;
automatically rejected by said application, on the ground that the&lt;br /&gt;
parsing engine doesn&#039;t know how to operate on it.&lt;br /&gt;
&lt;br /&gt;
Even if only one value exist, it is impossible to provide it as a&lt;br /&gt;
default, as there are no assurance that a new interpretation of&lt;br /&gt;
the syntax will not arrive at a future time.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It is possible for a map designer to indicate specific game&lt;br /&gt;
settings, similar to the ones available through the configuration&lt;br /&gt;
files of the application, to be used with the map. When&lt;br /&gt;
this is not desired, the Settings element can be safely removed&lt;br /&gt;
from the map definition.&lt;br /&gt;
&lt;br /&gt;
Any number of Setting can be defined inside of the Settings&lt;br /&gt;
element. Each Setting defined will overwrite the value previously&lt;br /&gt;
defined in the game. Each new Setting addressing a specific&lt;br /&gt;
configuration item will keep on overwriting previously defined&lt;br /&gt;
values. The Settings items are processed in order, from the top to&lt;br /&gt;
the bottom one.&lt;br /&gt;
&lt;br /&gt;
The Settings should be considered to be global to the World and&lt;br /&gt;
its sub-elements. This has very little relevance at the moment as&lt;br /&gt;
only one World and one Field can exist in the game. It is not&lt;br /&gt;
excluded that future version of the game could support multiple&lt;br /&gt;
elements such as World and Field. Each such elements and sub-elements would&lt;br /&gt;
receive the Settings defined in its parents, but would also be&lt;br /&gt;
able to overwrite parent received Settings for itself and its&lt;br /&gt;
sub-elements. &lt;br /&gt;
&lt;br /&gt;
One such overwriting capacity already exist, in the form of the&lt;br /&gt;
Axes element. This element can and will overwrite the value passed&lt;br /&gt;
by the Setting ARENA_AXES.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, there are no known case where the order of&lt;br /&gt;
writing Setting should matter. There are no garanties of it being&lt;br /&gt;
the case. Be carefull of the order of the Setting provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting ==&lt;br /&gt;
Each individual Setting defines a specific element normally&lt;br /&gt;
configurable throught the config files of the game&lt;br /&gt;
application. For a full list and description of the setting&lt;br /&gt;
available, consult the [[Console Commands]] page. As config items&lt;br /&gt;
are the same as console commands, you will find all the&lt;br /&gt;
information there.&lt;br /&gt;
&lt;br /&gt;
The Setting has two attributes, the name and the value. The name&lt;br /&gt;
field hold the setting name as found in the various configuration&lt;br /&gt;
files. The value field will be assigned to the designated setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Setting name=&amp;quot;CYCLE_BRAKE_REFILL&amp;quot; value=&amp;quot;.1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will assing .1 to the configuration item CYCLE_BRAKE_REFILL.&lt;br /&gt;
&lt;br /&gt;
No validation are done on either fields by the parsing engine. The&lt;br /&gt;
values are passed directly to the setting engine, where the usual&lt;br /&gt;
validation is performed. Unexisting or misspelled settings names&lt;br /&gt;
will be ignored. Setting with valid names and invalid values have&lt;br /&gt;
an undetermined effect.&lt;br /&gt;
&lt;br /&gt;
The different Setting used have the potential of overwriding&lt;br /&gt;
client or server ones. While this behavior offers great capacity&lt;br /&gt;
to custom behavior for a specific map, users playing locally on&lt;br /&gt;
their machine and server administrator might find it a disruption&lt;br /&gt;
of their craftfully designed settings. Use with care and&lt;br /&gt;
moderation.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the World element is&lt;br /&gt;
the Field element. Only one Field can be defined. No parameters&lt;br /&gt;
are available at the moment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;World&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
	&amp;lt;/World&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;
The field define the zone on a 2D plane where the gaming can&lt;br /&gt;
occur. The full support of this definition will be developed under&lt;br /&gt;
Bacchus. In Arthemis, the old philosophy of &amp;quot;the play zone has to&lt;br /&gt;
be bounded by walls&amp;quot; is somewhat preserved. A secondary mechanism&lt;br /&gt;
also exist to prevent the players from escaping the rim. This is a&lt;br /&gt;
bried description of the mechanism used.&lt;br /&gt;
&lt;br /&gt;
While setting all the walls to be used during a round, the engine&lt;br /&gt;
will keep track of the minimal and maximal x&#039;s and y&#039;s values&lt;br /&gt;
encountered through wall coordinates.&lt;br /&gt;
A logical box will be formed, using the coordinate&lt;br /&gt;
(minX, minY), (maxX, minY), (maxX, maxY) and (minX, maxY) as its&lt;br /&gt;
corners.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around the classical arena.&lt;br /&gt;
The classical arena has the coordinates (0,0), (0,500), (500,500)&lt;br /&gt;
and (500, 0). This means that minX=0, minY=0, maxX=500 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around a square arena moved by 20 on the x&#039;s.&lt;br /&gt;
The classical arena has the coordinates (20,0), (20,500), (520,500)&lt;br /&gt;
and (520, 0). This means that minX=20, minY=0, maxX=520 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around a trapeze arena&lt;br /&gt;
A trapeze has a base lenght of 300, a top lenght of 200 and a&lt;br /&gt;
height of 200 with the following coordinates: (0, 0), (300, 0),&lt;br /&gt;
(250, 200), (50, 200). This means that minX=0, minY=0, maxX=300,&lt;br /&gt;
maxY=200.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around 2 walls of the classical arena&lt;br /&gt;
Should the south and west walls of the classical arena be ommited,&lt;br /&gt;
and only the north (from (0,500) to (500,500)) and east one (from&lt;br /&gt;
(500,0) to (500,500)) remain, the logical box is still the same&lt;br /&gt;
around it. This means that minX=0, minY=0, maxX=500 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: 2 walls at strange angle&lt;br /&gt;
If two walls, organised at strange angle and not even meeting,&lt;br /&gt;
compose the arena, are described as (200,200) to (600, 400) and&lt;br /&gt;
(350, 350) to (-10, 720). This means that minX=-10, minY=200,&lt;br /&gt;
maxX=600 and maxY=720.&lt;br /&gt;
&lt;br /&gt;
A no-motion logical box will be put at 10 game units outside of the&lt;br /&gt;
logical box. Should a player meet this no-motion zone, she will&lt;br /&gt;
find herself pushing agains a coussin of air. Rubber has undefined&lt;br /&gt;
effect agains this no-motion box.&lt;br /&gt;
&lt;br /&gt;
A second logical box will be put at 20 games units from the first&lt;br /&gt;
logical box. Should any players be outside of this logical box,&lt;br /&gt;
they are automatically killed.&lt;br /&gt;
&lt;br /&gt;
In game terms, should the players not be bounded by a continous&lt;br /&gt;
wall, they are free to roam around it but they will find an&lt;br /&gt;
invisible barrier keeping them from excaping into the infinite.&lt;br /&gt;
&lt;br /&gt;
Should you want to allow your players to roam without&lt;br /&gt;
restrictions, exploring the infinity of the grid, you have to&lt;br /&gt;
specify to use an infinite field.&lt;br /&gt;
&lt;br /&gt;
The Field support a single parameter, named logicalBox, which&lt;br /&gt;
control if the logical box should be used to limit roaming on the&lt;br /&gt;
Field. &lt;br /&gt;
;logicalBox&lt;br /&gt;
:When set to true, the motion will be restrained by the logical&lt;br /&gt;
box, and when set to false, no logical box will be used. This&lt;br /&gt;
field is optional and default to true.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box bounded Field&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
            &amp;lt;Field&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: Field with its logical box disabled&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
            &amp;lt;Field logicalBox=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following 2 paragraph are post map-0.1 and 0.2.8_beta2.&lt;br /&gt;
&lt;br /&gt;
For clarity purpose, the Axes element, if defined, need to be&lt;br /&gt;
defined first. After this, Spawn point, Walls and Zones can be&lt;br /&gt;
defined in any order.&lt;br /&gt;
&lt;br /&gt;
While a Field without any Spawn points is syntaxly valid, and&lt;br /&gt;
the parsing engine doesnt report any error, the effect is&lt;br /&gt;
undetermined. While a Field without any Wall is syntaxly valid,&lt;br /&gt;
and the parsing engine doesn&#039;t report any error, the effect is&lt;br /&gt;
undetermined.&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;
;xdir&lt;br /&gt;
: This is size of the displacement along the x&#039;s for this axis&lt;br /&gt;
;ydir&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 xdir and ydir 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 angle=&amp;quot;225&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis angle=&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 xdir and a ydir of 1. The real length of the described Axis is &lt;br /&gt;
&amp;lt;math&amp;gt;\sqrt{xdir^2+ydir^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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;2&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-2&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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 following example 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. This reduce the&lt;br /&gt;
effect of playing at very high speed while having a huge&lt;br /&gt;
difference between directions.&lt;br /&gt;
&lt;br /&gt;
Example: Factor of 6 between displacement, centered around a speed&lt;br /&gt;
of ~1.&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 xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-3&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
Example: Factor of 6 between displacement, centered around a speed&lt;br /&gt;
of ~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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-6&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;6&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;
While the ratio of speed is the same between both examples, the&lt;br /&gt;
later one has speed that might be difficult to control in one&lt;br /&gt;
direction. The first example produce the same difference, but&lt;br /&gt;
present the players with a more balanced alternative.&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;&lt;br /&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 Axis in cartesian, in the order 4, 5, 6, 1, 2, 3&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&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 Axis in degrees, in the order 4, 5, 6, 1, 2, 3&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both define 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 Axis in cartesian, in the order 4, 6, 5, 1, 3, 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&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 Axis in degrees, in the order 4, 6, 5, 1, 3, 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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: 4 Axis counter clockwise&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
== Wall ==&lt;br /&gt;
Walls 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: A square Wall of size 200&lt;br /&gt;
&amp;lt;pre&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;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;
&amp;lt;/pre&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;
&lt;br /&gt;
Example: A 2 points wall, possibly as an obstacle&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;
The Wall element has one attribute, the height. Controlling the&lt;br /&gt;
height affect the rendering height of a wall. A height of 1.0 is&lt;br /&gt;
about the same as the height of the original cycle model. A height&lt;br /&gt;
of 4.0 correspond to the Walls rendered with the lowRim setting on&lt;br /&gt;
the client. When no height is defined, the client defined setting&lt;br /&gt;
of either lowRim or highRim is used. This has the advantage of&lt;br /&gt;
respecting the players choice and often, capacity to render high&lt;br /&gt;
walls.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;height&#039;&#039;&lt;br /&gt;
: The height used for the rendering of the Wall.&lt;br /&gt;
&lt;br /&gt;
Example : Using the client default height&lt;br /&gt;
&amp;lt;pre&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;10&amp;quot; y=&amp;quot;10&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 : Controling the height&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Wall height=&amp;quot;2.13&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;Point x=&amp;quot;10&amp;quot; y=&amp;quot;10&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;
== 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: Basic Spawn presentation&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;
== Zones ==&lt;br /&gt;
Zone are interactive areas on the Field. They manifest themself as&lt;br /&gt;
huge circles slowly rotating. The players can interact with the&lt;br /&gt;
Zones by entering or being inside them.&lt;br /&gt;
&lt;br /&gt;
The Zone has an attribute effect which allows 3 values: win, death and&lt;br /&gt;
fortress. Entering a Zone of effect win makes the player the round&lt;br /&gt;
winner. Entering a Zone of effect death automatically kills the&lt;br /&gt;
player. Zones of effect fortress need to be occupied to be&lt;br /&gt;
triggered, and once triggered, they make the team the round winner.&lt;br /&gt;
&lt;br /&gt;
;effect&lt;br /&gt;
:Any of win, death or fortress. When ommited, the value is defaulted to death&lt;br /&gt;
&lt;br /&gt;
Example: Zone syntax&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Zone requires a sub element named ShapeCircle. &lt;br /&gt;
&lt;br /&gt;
The ShapeCircle has 2 attributes, the radius and the growth. The&lt;br /&gt;
radius attribute describe the size of the CircleShape and is&lt;br /&gt;
required. The unit used is the same game unit that are used as map&lt;br /&gt;
coordinates. A ShapeCircle with a radius of 10 will extend of 10&lt;br /&gt;
game units in every direction from its center.&lt;br /&gt;
&lt;br /&gt;
The growth describe how the radius of the ShapeCircle changes over&lt;br /&gt;
time. This unit is game units per second from the moment the Zone&lt;br /&gt;
is create, which is the round start.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify a negative growth, in which case the ShapeCircle will&lt;br /&gt;
slowly shrink. Should at any time the radius be of 0 or less, the&lt;br /&gt;
Zone is removed without effect.&lt;br /&gt;
The growth is optional and defaults to 0, which hold the&lt;br /&gt;
ShapeCircle at a constant size during the round.&lt;br /&gt;
&lt;br /&gt;
;radius&lt;br /&gt;
:The initial radius of the circle defining the Zone. This field is mandatory.&lt;br /&gt;
;growth&lt;br /&gt;
:The growth of the circle. The values can be positive, negative or 0. This field is optional and is defaulted to 0.&lt;br /&gt;
&lt;br /&gt;
Example: Zone with CircleShape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot; growth=&amp;quot;0.17&amp;quot;&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ShapeCircle requires a Point sub-element which describe the&lt;br /&gt;
center of the ShapeCircle. The syntax of the Point is the same as&lt;br /&gt;
the one used for the Wall.&lt;br /&gt;
&lt;br /&gt;
Example: A non-growing death zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;120&amp;quot; y=&amp;quot;86&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A growing fortress zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;fortress&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot; growth=&amp;quot;1.09&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;250&amp;quot; y=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A shrinking win zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;200&amp;quot; growth=&amp;quot;-0.2&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;440&amp;quot; y=&amp;quot;325&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible and valid to place the center of the Zone in a&lt;br /&gt;
location that is not accessible to the players, such as in a&lt;br /&gt;
walled compound or outside of the play area. This behavior might&lt;br /&gt;
change in future version. Consult the appropriate documentation.&lt;br /&gt;
&lt;br /&gt;
Example: A death zone outside the rim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;-25&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&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;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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A death zone partially outside the rim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;-15&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&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;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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: It is important to note that while Zones are introduced in&lt;br /&gt;
Arthemis, a more complete implementation will follow in&lt;br /&gt;
Bacchus. Curious minds consulting the documentation presenting the&lt;br /&gt;
Bacchus implementation of Zones will notice that fortress isn&#039;t an&lt;br /&gt;
effect, but rather a trigger type. The Arthemis implementation of&lt;br /&gt;
Zones falsely uses it as an effect instead of exposing a trigger&lt;br /&gt;
mechanism. Map designers are to be warned this will no longer be&lt;br /&gt;
possible in maps defined for Bacchus.&lt;br /&gt;
&lt;br /&gt;
=== Fortress Zone ===&lt;br /&gt;
The fortress Zone is particuliar because it uses a scoring system&lt;br /&gt;
to determine if and when the Zone is triggered. The score is&lt;br /&gt;
affected by the time passed in it by attackers and defenders.&lt;br /&gt;
&lt;br /&gt;
At start time, the score is set to 0.0. While the score can move&lt;br /&gt;
freely, 2 restrictions are always applied. First, the score can&lt;br /&gt;
never drop below 0.0. Second, if the score reaches or exceed 1.0,&lt;br /&gt;
the Zone is triggered.&lt;br /&gt;
&lt;br /&gt;
Each single adversary in the Zone add to the score for their time&lt;br /&gt;
passed in it. Each single defender in the Zone remove to the score&lt;br /&gt;
for their time passed in it. Also, the score always decays. Each&lt;br /&gt;
of these aspect is controlled by a different setting,&lt;br /&gt;
CONQUEST_RATE, DEFEND_RATE and CONQUEST_DECAY_RATE. They all&lt;br /&gt;
express a rate in points per seconds.&lt;br /&gt;
&lt;br /&gt;
;CONQUEST_RATE&lt;br /&gt;
: Any single attacking player in the Zone add points to the score at this rate. &lt;br /&gt;
;DEFEND_RATE&lt;br /&gt;
: Any single defending player in the Zone removes points to the score at this rate. &lt;br /&gt;
;CONQUEST_DECAY_RATE&lt;br /&gt;
: The score of a Zone decays at this rate, irrelevantly of the numbers of attackers and defenders in the Zone. &lt;br /&gt;
&lt;br /&gt;
These 3 settings are global for all the Zones on a map.&lt;br /&gt;
&lt;br /&gt;
Example: Configuring Fortress from the config file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CONQUEST_RATE 0.5&lt;br /&gt;
DEFEND_RATE 0.3&lt;br /&gt;
CONQUEST_DECAY_RATE 0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: Configuring Fortress from the settings in the map&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Settings&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;CONQUEST_RATE&amp;quot; value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;DEFEND_RATE&amp;quot; value=&amp;quot;0.3&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;CONQUEST_DECAY_RATE&amp;quot; value=&amp;quot;0.1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Map writing best practice ===&lt;br /&gt;
&lt;br /&gt;
==== Comment your work ====&lt;br /&gt;
&lt;br /&gt;
You should always comment the various parts of your work. Doing so improve maintainability. Something that is obvious during the creation of a particular map often becomes very cryptic after a few weeks. A good comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comment in xml start with &amp;quot;&amp;lt;!--&amp;quot; (without the quotes) and ends with &amp;quot;--&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t highlight the commented part, be careful not to exclude a part of your map by mistake.&lt;br /&gt;
&lt;br /&gt;
==== Arena size ====&lt;br /&gt;
&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;
Also, arenas with many divisions or made of many interconnecting&lt;br /&gt;
rooms might find the efficace play space shrunk. Giving them a bit&lt;br /&gt;
more surface might help balance this. &lt;br /&gt;
&lt;br /&gt;
For example, if rooms are organised in a 3 by 4 pattern, with&lt;br /&gt;
corridors connecting them, many of the space between the rooms is&lt;br /&gt;
lost. The map designer might try to have a total&lt;br /&gt;
surface of for all the rooms that is of 250 000 square game units&lt;br /&gt;
(the same surface than a 500 by 500 room). He might feel that&lt;br /&gt;
ignoring the surface of the corridors compensate for the large&lt;br /&gt;
amount of walls reducing the motion.&lt;br /&gt;
&lt;br /&gt;
On the other hand, 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;
There are no hard rules of any sort about the size of an&lt;br /&gt;
arena. Experiment and adjust to produce the effect desired, and&lt;br /&gt;
the players will most probably appreciate your efforts.&lt;br /&gt;
&lt;br /&gt;
==== Don&#039;t overload attributes ====&lt;br /&gt;
&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;
xdir and ydir attribute are never queried.&lt;br /&gt;
&lt;br /&gt;
While the engine ignore the exceeding data, this practice has the following drawbacks:&lt;br /&gt;
&lt;br /&gt;
* File size: The exceeding information is never used, but need to be transmitted as part of the file, and stored.&lt;br /&gt;
* Readability: Exceeding information complicate the reading of a map by humans. &lt;br /&gt;
* Maintenance: Maintenance of the map is not much more complex. If the author is minimalist, he/she risk updating the part of information that is ignored. Extremely good knowledge of the working of the parser is required to avoid this pitfall, and the change is only valid if the rule of precedences aren&#039;t updated. Specifying only one set of information avoid this problem. Also, if both set of information are updated, then the task for the author is double, and so are the risks for error.&lt;br /&gt;
&lt;br /&gt;
=== Resource file name convention ===&lt;br /&gt;
&lt;br /&gt;
Resource are external content that makes the game interesting. Textures, sounds, models and maps are all resources for Armagetron Ad. While at the time of writing of this tutorial, only maps are supported as true resources, soon support for the other types will be added. Also, while this section incorporated in the Maps tutorial, it might be moved as an independent document, and the standard 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 resources for Armagetron Ad should follow the following naming 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&lt;br /&gt;
: The name of the person who created the resource. This can be the full name, a nick name (such as the ones used on the Armagetron Ad forum) of the author. Alternatively, the author can forgo his or her name and instead opt for a group name. Group name should be used when the author want to indicate that a set of resources are associate with a group. Instances of this could be when the resources are for a clan, a community, a [set of] server[s].&lt;br /&gt;
;SubDirectory&lt;br /&gt;
: Prolific authors and those are free to set up any number of sub directories to help them organize and possibly categorize their resources. The Armagetron Ad team recommend you to categorize resources by topics (ie: all the resources required for a particular movie-pack set in the same sub directory) over other categorization, such as categorization by type (ie: all the floor tiles set in the same sub directory). Any number of sub directory level should be supported. This is not a mandatory item.&lt;br /&gt;
;ResourceName&lt;br /&gt;
: The actual name of the resource. This should be descriptive, and somewhat unique to facilitate identification of the described resource. The advantage of specifying a somewhat unique name here is that should the resource be accidentally moved out of its folder, it is still possible to quickly and easily identify it. A special note for maps: the ResourceName should be the same as the name attribute of the Map element defined in the xml file.&lt;br /&gt;
;VersionNumber&lt;br /&gt;
: This part should be used by the author to identify which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new resources, Armagetron Ad rely solely on this part to be updated. Should a resource be updated and the old name kept, it would cause problems between different clients. Client already having the old resource 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 would get the latest version. The actual format to be used for the VersionNumber is left to the choice of the author. While the Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar 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, ...). Keep in mind that it should be obvious to other as to which is the most up to date version of the resource. A special note for maps: the VersionNumber should be the same as the version attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;Extension&lt;br /&gt;
: This is the regular type of extension. While Armagetron Ad doesn&#039;t verify that the extension describe the right type of content, it is favorable for other users that you set it to the appropriate 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;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 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;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Parallelogram arena ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Parallelogram-1.0.png|right|thumbnail|Parallelogram]]&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot; category=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;World&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.2&amp;quot; ydir=&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HexaTRON ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HexaTRON-0.2.png|right|thumbnail|HexaTRON]]&lt;br /&gt;
&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 note that this is 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;&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot; category=&amp;quot;HexaTRON&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About the &amp;quot;undefined and unsupported&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and unsupported&amp;quot;. While it may be possible to do them now, and even amusing to do it, they are strongly discouraged. Later version of the World format will most probably conflict with those behaviors. This will make such behaviors difficult to preserve, if possible at all. For this reasons, it has been decided that _NO_ effort would be put to maintain them. Use them if you want, but do not come complaining if and when they stop working.&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=2235</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=2235"/>
		<updated>2005-11-13T16:18:59Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Major on Field&amp;#039;s logical box. Minor on: example for Map and World, link to config details in Setting, best practice about arena size, &amp;lt;/pre&amp;gt; in Zones examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is to help map designer to get a grasp of the Map&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This version of the tutorial address the syntax defined by map-0.2.8_beta3.dtd and present the rules of interpreting the syntax as used by the parsing engine in the version 0.2.8 of Armagetron Advance.&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;
[[Image:original-1.0.1.png|right|thumbnail|Original Armagetron 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;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
	         Converted to XML by philippeqc.&lt;br /&gt;
	         License: Do with it what you want.                          --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
	&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Map format start with a XML header. The actual definition&lt;br /&gt;
of the Map is wrapped in a Resource. The Resource gives a&lt;br /&gt;
description of the content, such as the author and the version of&lt;br /&gt;
the map included. This particuliar map is the xml version of the&lt;br /&gt;
original map that supported directly in the game before version&lt;br /&gt;
0.2.8 (Arthemis). &lt;br /&gt;
&lt;br /&gt;
Skippin ahead in to the Field element, line 11 defines that &lt;br /&gt;
that 4 axes are to be&lt;br /&gt;
used. From line 13 to 26, 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;
== Header ==&lt;br /&gt;
The header of the map can nearly be considered as constant. It is&lt;br /&gt;
composed of 2 lines.&lt;br /&gt;
&lt;br /&gt;
Header for Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only element you need to consider is the name of the dtd. The&lt;br /&gt;
dtd should always be named after the version it targets. For&lt;br /&gt;
Arthemis, it should be &amp;quot;map-0.2.8.dtd&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Nota: during the beta process, version can change often and have&lt;br /&gt;
great difference between them. To limit the scope of the problem&lt;br /&gt;
during the beta phase, the name of the dtd should include the beta&lt;br /&gt;
it targets. &lt;br /&gt;
&lt;br /&gt;
Header for the beta 3 of Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resource ==&lt;br /&gt;
The Resource element describe some meta-information of the Map,&lt;br /&gt;
such as who created it, how should the resource file be named and&lt;br /&gt;
what type of information is to be expected.&lt;br /&gt;
&lt;br /&gt;
One part of the Resource details describe who made this map a&lt;br /&gt;
reality. In the Resource element, it is possible to differenciate&lt;br /&gt;
between the person or organism that comissioned the map, the&lt;br /&gt;
commisionner, and the person who executed the request and coded&lt;br /&gt;
it, the author. &lt;br /&gt;
&lt;br /&gt;
Both operations might be carried by the same and only person, in&lt;br /&gt;
this instance both entities are the same and the commissioner&lt;br /&gt;
field should be left blank. The commissioner field should be used&lt;br /&gt;
when the concept of a map and its execution are performed by two&lt;br /&gt;
different persons or entities. It could range from anything from&lt;br /&gt;
&amp;quot;could someone make a map where the feeling of &amp;lt;X&amp;gt; is emphased&amp;quot; to&lt;br /&gt;
coding from a hand-drawn sketch. The commissioner could also be&lt;br /&gt;
implied. Without him/it ever placing an open request, a&lt;br /&gt;
commisioner could be assign to a map when the author whan to&lt;br /&gt;
express an assumed sharing of the creation of the map. This can be&lt;br /&gt;
the case, for example, when the member of a Clan wrote a map that&lt;br /&gt;
falls in the ideals of the Clan.&lt;br /&gt;
&lt;br /&gt;
Maps can be implicitly grouped together. The category field is&lt;br /&gt;
there for this purpose. Prolific authors and their public will&lt;br /&gt;
appreciate a clear grouping of similar themed maps.&lt;br /&gt;
&lt;br /&gt;
As ever refining one&#039;s work is a very respected quality in the&lt;br /&gt;
Armagetron community, the latest changes need to be properly&lt;br /&gt;
propagated to everybody. The version field allow an author to&lt;br /&gt;
identify each specific instance of her work, and also insure that&lt;br /&gt;
a client will receive the exact version used by a server when&lt;br /&gt;
playing on it.&lt;br /&gt;
&lt;br /&gt;
The type specifies that the file hold an Armagetron Advance&lt;br /&gt;
map. While this is the only type available at the moment, the&lt;br /&gt;
development team is eager to expand this in the furture.&lt;br /&gt;
&lt;br /&gt;
Finally, and most importantly, the name of the &#039;&#039;ouvrage&#039;&#039; being&lt;br /&gt;
presented. &lt;br /&gt;
&lt;br /&gt;
The fields for Resource are:&lt;br /&gt;
;name&lt;br /&gt;
:The name of the map, mandatory.&lt;br /&gt;
;type&lt;br /&gt;
:The only valid type is &amp;quot;aamap&amp;quot;. This field is defaulted &amp;quot;aamap&amp;quot; when abscent.&lt;br /&gt;
;version &lt;br /&gt;
:The version of the map described in this particuliar file. This value should be modified each time a change is applied to the map to ensure everybody have the proper copy. This field is defaulted to &amp;quot;1.0&amp;quot; when abscent.&lt;br /&gt;
;author&lt;br /&gt;
:The author who produced this map. This field is defaulted to &amp;quot;Anonymous&amp;quot; when abscent.&lt;br /&gt;
;commisioner&lt;br /&gt;
:The entity who dreamt, requested or even inspired in any way this map. This field is optional and has no default value. &lt;br /&gt;
;category&lt;br /&gt;
:How this map should be categorised. This field can have any number of sub categories, each separated by a &amp;quot;\&amp;quot;. An example could be &amp;quot;category\subcategory\subsubcategory&amp;quot;. This field is defaulted to &amp;quot;unsorted&amp;quot; when abscent. &lt;br /&gt;
&lt;br /&gt;
Example: The castle map made by philippeqc&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;Castle&amp;quot; type=&amp;quot;aamap&amp;quot; version=&amp;quot;1.1&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;examples&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The StarTron map made by Your_mom&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;5ptstar&amp;quot; version=&amp;quot;beta&amp;quot; author=&amp;quot;Your_mom&amp;quot; category=&amp;quot;beta&amp;quot; type=&amp;quot;aamap&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The MBC training map, made by Zorgul&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;TrainingDay&amp;quot; version=&amp;quot;1.6&amp;quot; author=&amp;quot;Zorgul&amp;quot; category=&amp;quot;MBC&amp;quot; type=&amp;quot;aamap&amp;quot; commisioner=&amp;quot;Micro Bus City&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The Reverso map, writen by Nemosultra based on a drawing by lucifer, for the Crack Pipe server&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;Reverso&amp;quot; version=&amp;quot;1.1-b&amp;quot; author=&amp;quot;Nemosultra&amp;quot; category=&amp;quot;CrackPipe&amp;quot; type=&amp;quot;aamap&amp;quot; commisioner=&amp;quot;lucifer&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To facilitate manipulation of the file over distributed systems,&lt;br /&gt;
the Resource holds explicit information about the naming and&lt;br /&gt;
storing of the file. This information can be used by tools such as&lt;br /&gt;
scripts and resource repositories to manipulate the file. &lt;br /&gt;
&lt;br /&gt;
Many tools, including the game client, will expect the following&lt;br /&gt;
to indicate the location of a &lt;br /&gt;
filee inside the local store of resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Author&amp;gt;/[Category/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;ResourceType&amp;gt;.&amp;lt;Extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
This element is the basic holder of the description of the&lt;br /&gt;
Map. From the opening element to the closing one, all the&lt;br /&gt;
information will be used to construct an in-game representation&lt;br /&gt;
for the players to explore and possibly compete in.&lt;br /&gt;
&lt;br /&gt;
The version attribute of the map indicate an specific parsing&lt;br /&gt;
engine version that should be used to express the map in the exact&lt;br /&gt;
manners that are desired by the map creator. &lt;br /&gt;
&lt;br /&gt;
Example: Map element&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sooner in the file,&lt;br /&gt;
the dtd has already specified a version. The difference between&lt;br /&gt;
both version is one specify the version of the syntax to be use,&lt;br /&gt;
and the other, the version of the rules to be used to interprete&lt;br /&gt;
the syntax.&lt;br /&gt;
&lt;br /&gt;
The dtd control the syntax, what keywords are valid and in which&lt;br /&gt;
arrangement. The parsing engine has specific rules how to read the&lt;br /&gt;
syntax and create the game elements. It is possible for different&lt;br /&gt;
parsing engine to operate from the same syntax, be it because the syntax&lt;br /&gt;
allows for many interpretation, or because a specific&lt;br /&gt;
interpretation has been found faulty in some case. Because each&lt;br /&gt;
interpretation could lead to very different instantiation, it is&lt;br /&gt;
best for the map designer to specify the one that should be&lt;br /&gt;
used. Even when no alternative interpretation exist, ie: there is&lt;br /&gt;
only one version available, it is best for the map designer to&lt;br /&gt;
specify it. Should a new one be implemented at a later time, the&lt;br /&gt;
map defined would continue to be instanciated properly.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, the only parsing engine version is&lt;br /&gt;
&amp;quot;0.2.8&amp;quot;. Maps using a version that is not understood by the&lt;br /&gt;
parsing engine of a specific client or server will be&lt;br /&gt;
automatically rejected by said application, on the ground that the&lt;br /&gt;
parsing engine doesn&#039;t know how to operate on it.&lt;br /&gt;
&lt;br /&gt;
Even if only one value exist, it is impossible to provide it as a&lt;br /&gt;
default, as there are no assurance that a new interpretation of&lt;br /&gt;
the syntax will not arrive at a future time.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It is possible for a map designer to indicate specific game&lt;br /&gt;
settings, similar to the ones available through the configuration&lt;br /&gt;
files of the application, to be used with the map. When&lt;br /&gt;
this is not desired, the Settings element can be safely removed&lt;br /&gt;
from the map definition.&lt;br /&gt;
&lt;br /&gt;
Any number of Setting can be defined inside of the Settings&lt;br /&gt;
element. Each Setting defined will overwrite the value previously&lt;br /&gt;
defined in the game. Each new Setting addressing a specific&lt;br /&gt;
configuration item will keep on overwriting previously defined&lt;br /&gt;
values. The Settings items are processed in order, from the top to&lt;br /&gt;
the bottom one.&lt;br /&gt;
&lt;br /&gt;
The Settings should be considered to be global to the World and&lt;br /&gt;
its sub-elements. This has very little relevance at the moment as&lt;br /&gt;
only one World and one Field can exist in the game. It is not&lt;br /&gt;
excluded that future version of the game could support multiple&lt;br /&gt;
elements such as World and Field. Each such elements and sub-elements would&lt;br /&gt;
receive the Settings defined in its parents, but would also be&lt;br /&gt;
able to overwrite parent received Settings for itself and its&lt;br /&gt;
sub-elements. &lt;br /&gt;
&lt;br /&gt;
One such overwriting capacity already exist, in the form of the&lt;br /&gt;
Axes element. This element can and will overwrite the value passed&lt;br /&gt;
by the Setting ARENA_AXES.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, there are no known case where the order of&lt;br /&gt;
writing Setting should matter. There are no garanties of it being&lt;br /&gt;
the case. Be carefull of the order of the Setting provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting ==&lt;br /&gt;
Each individual Setting defines a specific element normally&lt;br /&gt;
configurable throught the config files of the game&lt;br /&gt;
application. For a full list and description of the setting&lt;br /&gt;
available, consult the [[Console Commands]] page. As config items&lt;br /&gt;
are the same as console commands, you will find all the&lt;br /&gt;
information there.&lt;br /&gt;
&lt;br /&gt;
The Setting has two attributes, the name and the value. The name&lt;br /&gt;
field hold the setting name as found in the various configuration&lt;br /&gt;
files. The value field will be assigned to the designated setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Setting name=&amp;quot;CYCLE_BRAKE_REFILL&amp;quot; value=&amp;quot;.1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will assing .1 to the configuration item CYCLE_BRAKE_REFILL.&lt;br /&gt;
&lt;br /&gt;
No validation are done on either fields by the parsing engine. The&lt;br /&gt;
values are passed directly to the setting engine, where the usual&lt;br /&gt;
validation is performed. Unexisting or misspelled settings names&lt;br /&gt;
will be ignored. Setting with valid names and invalid values have&lt;br /&gt;
an undetermined effect.&lt;br /&gt;
&lt;br /&gt;
The different Setting used have the potential of overwriding&lt;br /&gt;
client or server ones. While this behavior offers great capacity&lt;br /&gt;
to custom behavior for a specific map, users playing locally on&lt;br /&gt;
their machine and server administrator might find it a disruption&lt;br /&gt;
of their craftfully designed settings. Use with care and&lt;br /&gt;
moderation.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the World element is&lt;br /&gt;
the Field element. Only one Field can be defined. No parameters&lt;br /&gt;
are available at the moment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;World&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
	&amp;lt;/World&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;
The field define the zone on a 2D plane where the gaming can&lt;br /&gt;
occur. The full support of this definition will be developed under&lt;br /&gt;
Bacchus. In Arthemis, the old philosophy of &amp;quot;the play zone has to&lt;br /&gt;
be bounded by walls&amp;quot; is somewhat preserved. A secondary mechanism&lt;br /&gt;
also exist to prevent the players from escaping the rim. This is a&lt;br /&gt;
bried description of the mechanism used.&lt;br /&gt;
&lt;br /&gt;
While setting all the walls to be used during a round, the engine&lt;br /&gt;
will keep track of the minimal and maximal x&#039;s and y&#039;s values&lt;br /&gt;
encountered through wall coordinates.&lt;br /&gt;
A logical box will be formed, using the coordinate&lt;br /&gt;
(minX, minY), (maxX, minY), (maxX, maxY) and (minX, maxY) as its&lt;br /&gt;
corners.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around the classical arena.&lt;br /&gt;
The classical arena has the coordinates (0,0), (0,500), (500,500)&lt;br /&gt;
and (500, 0). This means that minX=0, minY=0, maxX=500 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around a square arena moved by 20 on the x&#039;s.&lt;br /&gt;
The classical arena has the coordinates (20,0), (20,500), (520,500)&lt;br /&gt;
and (520, 0). This means that minX=20, minY=0, maxX=520 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around a trapeze arena&lt;br /&gt;
A trapeze has a base lenght of 300, a top lenght of 200 and a&lt;br /&gt;
height of 200 with the following coordinates: (0, 0), (300, 0),&lt;br /&gt;
(250, 200), (50, 200). This means that minX=0, minY=0, maxX=300,&lt;br /&gt;
maxY=200.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box around 2 walls of the classical arena&lt;br /&gt;
Should the south and west walls of the classical arena be ommited,&lt;br /&gt;
and only the north (from (0,500) to (500,500)) and east one (from&lt;br /&gt;
(500,0) to (500,500)) remain, the logical box is still the same&lt;br /&gt;
around it. This means that minX=0, minY=0, maxX=500 and&lt;br /&gt;
maxY=500.&lt;br /&gt;
&lt;br /&gt;
Example: 2 walls at strange angle&lt;br /&gt;
If two walls, organised at strange angle and not even meeting,&lt;br /&gt;
compose the arena, are described as (200,200) to (600, 400) and&lt;br /&gt;
(350, 350) to (-10, 720). This means that minX=-10, minY=200,&lt;br /&gt;
maxX=600 and maxY=720.&lt;br /&gt;
&lt;br /&gt;
A no-motion logical box will be put at 10 game units outside of the&lt;br /&gt;
logical box. Should a player meet this no-motion zone, she will&lt;br /&gt;
find herself pushing agains a coussin of air. Rubber has undefined&lt;br /&gt;
effect agains this no-motion box.&lt;br /&gt;
&lt;br /&gt;
A second logical box will be put at 20 games units from the first&lt;br /&gt;
logical box. Should any players be outside of this logical box,&lt;br /&gt;
they are automatically killed.&lt;br /&gt;
&lt;br /&gt;
In game terms, should the players not be bounded by a continous&lt;br /&gt;
wall, they are free to roam around it but they will find an&lt;br /&gt;
invisible barrier keeping them from excaping into the infinite.&lt;br /&gt;
&lt;br /&gt;
Should you want to allow your players to roam without&lt;br /&gt;
restrictions, exploring the infinity of the grid, you have to&lt;br /&gt;
specify to use an infinite field.&lt;br /&gt;
&lt;br /&gt;
The Field support a single parameter, named logicalBox, which&lt;br /&gt;
control if the logical box should be used to limit roaming on the&lt;br /&gt;
Field. &lt;br /&gt;
;logicalBox&lt;br /&gt;
:When set to true, the motion will be restrained by the logical&lt;br /&gt;
box, and when set to false, no logical box will be used. This&lt;br /&gt;
field is optional and default to true.&lt;br /&gt;
&lt;br /&gt;
Example: Logical box bounded Field&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
            &amp;lt;Field&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: Field with its logical box disabled&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
            &amp;lt;Field logicalBox=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following 2 paragraph are post map-0.1 and 0.2.8_beta2.&lt;br /&gt;
&lt;br /&gt;
For clarity purpose, the Axes element, if defined, need to be&lt;br /&gt;
defined first. After this, Spawn point, Walls and Zones can be&lt;br /&gt;
defined in any order.&lt;br /&gt;
&lt;br /&gt;
While a Field without any Spawn points is syntaxly valid, and&lt;br /&gt;
the parsing engine doesnt report any error, the effect is&lt;br /&gt;
undetermined. While a Field without any Wall is syntaxly valid,&lt;br /&gt;
and the parsing engine doesn&#039;t report any error, the effect is&lt;br /&gt;
undetermined.&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;
;xdir&lt;br /&gt;
: This is size of the displacement along the x&#039;s for this axis&lt;br /&gt;
;ydir&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 xdir and ydir 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 angle=&amp;quot;225&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis angle=&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 xdir and a ydir of 1. The real length of the described Axis is &lt;br /&gt;
&amp;lt;math&amp;gt;\sqrt{xdir^2+ydir^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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;2&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-2&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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 following example 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. This reduce the&lt;br /&gt;
effect of playing at very high speed while having a huge&lt;br /&gt;
difference between directions.&lt;br /&gt;
&lt;br /&gt;
Example: Factor of 6 between displacement, centered around a speed&lt;br /&gt;
of ~1.&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 xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-3&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
Example: Factor of 6 between displacement, centered around a speed&lt;br /&gt;
of ~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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-6&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;6&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;
While the ratio of speed is the same between both examples, the&lt;br /&gt;
later one has speed that might be difficult to control in one&lt;br /&gt;
direction. The first example produce the same difference, but&lt;br /&gt;
present the players with a more balanced alternative.&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;&lt;br /&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 Axis in cartesian, in the order 4, 5, 6, 1, 2, 3&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&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 Axis in degrees, in the order 4, 5, 6, 1, 2, 3&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both define 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 Axis in cartesian, in the order 4, 6, 5, 1, 3, 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&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 Axis in degrees, in the order 4, 6, 5, 1, 3, 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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: 4 Axis counter clockwise&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
== Wall ==&lt;br /&gt;
Walls 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: A square Wall of size 200&lt;br /&gt;
&amp;lt;pre&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;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;
&amp;lt;/pre&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;
&lt;br /&gt;
Example: A 2 points wall, possibly as an obstacle&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;
The Wall element has one attribute, the height. Controlling the&lt;br /&gt;
height affect the rendering height of a wall. A height of 1.0 is&lt;br /&gt;
about the same as the height of the original cycle model. A height&lt;br /&gt;
of 4.0 correspond to the Walls rendered with the lowRim setting on&lt;br /&gt;
the client. When no height is defined, the client defined setting&lt;br /&gt;
of either lowRim or highRim is used. This has the advantage of&lt;br /&gt;
respecting the players choice and often, capacity to render high&lt;br /&gt;
walls.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;height&#039;&#039;&lt;br /&gt;
: The height used for the rendering of the Wall.&lt;br /&gt;
&lt;br /&gt;
Example : Using the client default height&lt;br /&gt;
&amp;lt;pre&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;10&amp;quot; y=&amp;quot;10&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 : Controling the height&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Wall height=&amp;quot;2.13&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;Point x=&amp;quot;10&amp;quot; y=&amp;quot;10&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;
== 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: Basic Spawn presentation&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;
== Zones ==&lt;br /&gt;
Zone are interactive areas on the Field. They manifest themself as&lt;br /&gt;
huge circles slowly rotating. The players can interact with the&lt;br /&gt;
Zones by entering or being inside them.&lt;br /&gt;
&lt;br /&gt;
The Zone has an attribute effect which allows 3 values: win, death and&lt;br /&gt;
fortress. Entering a Zone of effect win makes the player the round&lt;br /&gt;
winner. Entering a Zone of effect death automatically kills the&lt;br /&gt;
player. Zones of effect fortress need to be occupied to be&lt;br /&gt;
triggered, and once triggered, they make the team the round winner.&lt;br /&gt;
&lt;br /&gt;
;effect&lt;br /&gt;
:Any of win, death or fortress. When ommited, the value is defaulted to death&lt;br /&gt;
&lt;br /&gt;
Example: Zone syntax&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Zone requires a sub element named ShapeCircle. &lt;br /&gt;
&lt;br /&gt;
The ShapeCircle has 2 attributes, the radius and the growth. The&lt;br /&gt;
radius attribute describe the size of the CircleShape and is&lt;br /&gt;
required. The unit used is the same game unit that are used as map&lt;br /&gt;
coordinates. A ShapeCircle with a radius of 10 will extend of 10&lt;br /&gt;
game units in every direction from its center.&lt;br /&gt;
&lt;br /&gt;
The growth describe how the radius of the ShapeCircle changes over&lt;br /&gt;
time. This unit is game units per second from the moment the Zone&lt;br /&gt;
is create, which is the round start.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify a negative growth, in which case the ShapeCircle will&lt;br /&gt;
slowly shrink. Should at any time the radius be of 0 or less, the&lt;br /&gt;
Zone is removed without effect.&lt;br /&gt;
The growth is optional and defaults to 0, which hold the&lt;br /&gt;
ShapeCircle at a constant size during the round.&lt;br /&gt;
&lt;br /&gt;
;radius&lt;br /&gt;
:The initial radius of the circle defining the Zone. This field is mandatory.&lt;br /&gt;
;growth&lt;br /&gt;
:The growth of the circle. The values can be positive, negative or 0. This field is optional and is defaulted to 0.&lt;br /&gt;
&lt;br /&gt;
Example: Zone with CircleShape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot; growth=&amp;quot;0.17&amp;quot;&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ShapeCircle requires a Point sub-element which describe the&lt;br /&gt;
center of the ShapeCircle. The syntax of the Point is the same as&lt;br /&gt;
the one used for the Wall.&lt;br /&gt;
&lt;br /&gt;
Example: A non-growing death zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;120&amp;quot; y=&amp;quot;86&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A growing fortress zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;fortress&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot; growth=&amp;quot;1.09&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;250&amp;quot; y=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A shrinking win zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;200&amp;quot; growth=&amp;quot;-0.2&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;440&amp;quot; y=&amp;quot;325&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible and valid to place the center of the Zone in a&lt;br /&gt;
location that is not accessible to the players, such as in a&lt;br /&gt;
walled compound or outside of the play area. This behavior might&lt;br /&gt;
change in future version. Consult the appropriate documentation.&lt;br /&gt;
&lt;br /&gt;
Example: A death zone outside the rim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;-25&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&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;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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A death zone partially outside the rim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;-15&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&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;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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: It is important to note that while Zones are introduced in&lt;br /&gt;
Arthemis, a more complete implementation will follow in&lt;br /&gt;
Bacchus. Curious minds consulting the documentation presenting the&lt;br /&gt;
Bacchus implementation of Zones will notice that fortress isn&#039;t an&lt;br /&gt;
effect, but rather a trigger type. The Arthemis implementation of&lt;br /&gt;
Zones falsely uses it as an effect instead of exposing a trigger&lt;br /&gt;
mechanism. Map designers are to be warned this will no longer be&lt;br /&gt;
possible in maps defined for Bacchus.&lt;br /&gt;
&lt;br /&gt;
=== Fortress Zone ===&lt;br /&gt;
The fortress Zone is particuliar because it uses a scoring system&lt;br /&gt;
to determine if and when the Zone is triggered. The score is&lt;br /&gt;
affected by the time passed in it by attackers and defenders.&lt;br /&gt;
&lt;br /&gt;
At start time, the score is set to 0.0. While the score can move&lt;br /&gt;
freely, 2 restrictions are always applied. First, the score can&lt;br /&gt;
never drop below 0.0. Second, if the score reaches or exceed 1.0,&lt;br /&gt;
the Zone is triggered.&lt;br /&gt;
&lt;br /&gt;
Each single adversary in the Zone add to the score for their time&lt;br /&gt;
passed in it. Each single defender in the Zone remove to the score&lt;br /&gt;
for their time passed in it. Also, the score always decays. Each&lt;br /&gt;
of these aspect is controlled by a different setting,&lt;br /&gt;
CONQUEST_RATE, DEFEND_RATE and CONQUEST_DECAY_RATE. They all&lt;br /&gt;
express a rate in points per seconds.&lt;br /&gt;
&lt;br /&gt;
;CONQUEST_RATE&lt;br /&gt;
: Any single attacking player in the Zone add points to the score at this rate. &lt;br /&gt;
;DEFEND_RATE&lt;br /&gt;
: Any single defending player in the Zone removes points to the score at this rate. &lt;br /&gt;
;CONQUEST_DECAY_RATE&lt;br /&gt;
: The score of a Zone decays at this rate, irrelevantly of the numbers of attackers and defenders in the Zone. &lt;br /&gt;
&lt;br /&gt;
These 3 settings are global for all the Zones on a map.&lt;br /&gt;
&lt;br /&gt;
Example: Configuring Fortress from the config file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CONQUEST_RATE 0.5&lt;br /&gt;
DEFEND_RATE 0.3&lt;br /&gt;
CONQUEST_DECAY_RATE 0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: Configuring Fortress from the settings in the map&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Settings&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;CONQUEST_RATE&amp;quot; value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;DEFEND_RATE&amp;quot; value=&amp;quot;0.3&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;CONQUEST_DECAY_RATE&amp;quot; value=&amp;quot;0.1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Map writing best practice ===&lt;br /&gt;
&lt;br /&gt;
==== Comment your work ====&lt;br /&gt;
&lt;br /&gt;
You should always comment the various parts of your work. Doing so improve maintainability. Something that is obvious during the creation of a particular map often becomes very cryptic after a few weeks. A good comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comment in xml start with &amp;quot;&amp;lt;!--&amp;quot; (without the quotes) and ends with &amp;quot;--&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t highlight the commented part, be careful not to exclude a part of your map by mistake.&lt;br /&gt;
&lt;br /&gt;
==== Arena size ====&lt;br /&gt;
&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;
Also, arenas with many divisions or made of many interconnecting&lt;br /&gt;
rooms might find the efficace play space shrunk. Giving them a bit&lt;br /&gt;
more surface might help balance this. &lt;br /&gt;
&lt;br /&gt;
For example, if rooms are organised in a 3 by 4 pattern, with&lt;br /&gt;
corridors connecting them, many of the space between the rooms is&lt;br /&gt;
lost. The map designer might try to have a total&lt;br /&gt;
surface of for all the rooms that is of 250 000 square game units&lt;br /&gt;
(the same surface than a 500 by 500 room). He might feel that&lt;br /&gt;
ignoring the surface of the corridors compensate for the large&lt;br /&gt;
amount of walls reducing the motion.&lt;br /&gt;
&lt;br /&gt;
On the other hand, 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;
There are no hard rules of any sort about the size of an&lt;br /&gt;
arena. Experiment and adjust to produce the effect desired, and&lt;br /&gt;
the players will most probably appreciate your efforts.&lt;br /&gt;
&lt;br /&gt;
==== Don&#039;t overload attributes ====&lt;br /&gt;
&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;
xdir and ydir attribute are never queried.&lt;br /&gt;
&lt;br /&gt;
While the engine ignore the exceeding data, this practice has the following drawbacks:&lt;br /&gt;
&lt;br /&gt;
* File size: The exceeding information is never used, but need to be transmitted as part of the file, and stored.&lt;br /&gt;
* Readability: Exceeding information complicate the reading of a map by humans. &lt;br /&gt;
* Maintenance: Maintenance of the map is not much more complex. If the author is minimalist, he/she risk updating the part of information that is ignored. Extremely good knowledge of the working of the parser is required to avoid this pitfall, and the change is only valid if the rule of precedences aren&#039;t updated. Specifying only one set of information avoid this problem. Also, if both set of information are updated, then the task for the author is double, and so are the risks for error.&lt;br /&gt;
&lt;br /&gt;
=== Resource file name convention ===&lt;br /&gt;
&lt;br /&gt;
Resource are external content that makes the game interesting. Textures, sounds, models and maps are all resources for Armagetron Ad. While at the time of writing of this tutorial, only maps are supported as true resources, soon support for the other types will be added. Also, while this section incorporated in the Maps tutorial, it might be moved as an independent document, and the standard 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 resources for Armagetron Ad should follow the following naming 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&lt;br /&gt;
: The name of the person who created the resource. This can be the full name, a nick name (such as the ones used on the Armagetron Ad forum) of the author. Alternatively, the author can forgo his or her name and instead opt for a group name. Group name should be used when the author want to indicate that a set of resources are associate with a group. Instances of this could be when the resources are for a clan, a community, a [set of] server[s].&lt;br /&gt;
;SubDirectory&lt;br /&gt;
: Prolific authors and those are free to set up any number of sub directories to help them organize and possibly categorize their resources. The Armagetron Ad team recommend you to categorize resources by topics (ie: all the resources required for a particular movie-pack set in the same sub directory) over other categorization, such as categorization by type (ie: all the floor tiles set in the same sub directory). Any number of sub directory level should be supported. This is not a mandatory item.&lt;br /&gt;
;ResourceName&lt;br /&gt;
: The actual name of the resource. This should be descriptive, and somewhat unique to facilitate identification of the described resource. The advantage of specifying a somewhat unique name here is that should the resource be accidentally moved out of its folder, it is still possible to quickly and easily identify it. A special note for maps: the ResourceName should be the same as the name attribute of the Map element defined in the xml file.&lt;br /&gt;
;VersionNumber&lt;br /&gt;
: This part should be used by the author to identify which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new resources, Armagetron Ad rely solely on this part to be updated. Should a resource be updated and the old name kept, it would cause problems between different clients. Client already having the old resource 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 would get the latest version. The actual format to be used for the VersionNumber is left to the choice of the author. While the Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar 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, ...). Keep in mind that it should be obvious to other as to which is the most up to date version of the resource. A special note for maps: the VersionNumber should be the same as the version attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;Extension&lt;br /&gt;
: This is the regular type of extension. While Armagetron Ad doesn&#039;t verify that the extension describe the right type of content, it is favorable for other users that you set it to the appropriate 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;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 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;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Parallelogram arena ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Parallelogram-1.0.png|right|thumbnail|Parallelogram]]&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot; category=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;World&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.2&amp;quot; ydir=&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HexaTRON ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HexaTRON-0.2.png|right|thumbnail|HexaTRON]]&lt;br /&gt;
&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 note that this is 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;&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot; category=&amp;quot;HexaTRON&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About the &amp;quot;undefined and unsupported&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and unsupported&amp;quot;. While it may be possible to do them now, and even amusing to do it, they are strongly discouraged. Later version of the World format will most probably conflict with those behaviors. This will make such behaviors difficult to preserve, if possible at all. For this reasons, it has been decided that _NO_ effort would be put to maintain them. Use them if you want, but do not come complaining if and when they stop working. &lt;br /&gt;
&lt;br /&gt;
== TODO: ==&lt;br /&gt;
&lt;br /&gt;
* how to submit resource (why is this todo? it&#039;s covered in Resource Repository --Luke-Jr)&lt;br /&gt;
* Extension&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=2233</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=2233"/>
		<updated>2005-11-13T14:50:46Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Added example to Resource and partial examples for Zones&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To correct: &lt;br /&gt;
- &#039;&#039;&#039;dtd version name&#039;&#039;&#039;&lt;br /&gt;
- &#039;&#039;&#039;map version&#039;&#039;&#039;&lt;br /&gt;
- &#039;&#039;&#039;pre-intro text&#039;&#039;&#039; &lt;br /&gt;
- &#039;&#039;&#039;concept&#039;&#039;&#039; might be the wrong word, people might interpret it&lt;br /&gt;
as &amp;quot;the concept used for the map is to give a feeling of claustrophobia&amp;quot;&lt;br /&gt;
- text about commisioner is pure crap&lt;br /&gt;
&lt;br /&gt;
This tutorial is to help map designer to get a grasp of the Map&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This version of the tutorial address the syntax defined by map-0.2.8_beta3.dtd and present the rules of interpreting the syntax as used by the parsing engine in the version 0.2.8 of Armagetron Advance.&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;
[[Image:original-1.0.1.png|right|thumbnail|Original Armagetron 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;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
	         Converted to XML by philippeqc.&lt;br /&gt;
	         License: Do with it what you want.                          --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
	&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Map format start with a XML header. The actual definition&lt;br /&gt;
of the Map is wrapped in a Resource. The Resource gives a&lt;br /&gt;
description of the content, such as the author and the version of&lt;br /&gt;
the map included. This particuliar map is the xml version of the&lt;br /&gt;
original map that supported directly in the game before version&lt;br /&gt;
0.2.8 (Arthemis). &lt;br /&gt;
&lt;br /&gt;
Skippin ahead in to the Field element, line 11 defines that &lt;br /&gt;
that 4 axes are to be&lt;br /&gt;
used. From line 13 to 26, 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;
== Header ==&lt;br /&gt;
The header of the map can nearly be considered as constant. It is&lt;br /&gt;
composed of 2 lines.&lt;br /&gt;
&lt;br /&gt;
Header for Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only element you need to consider is the name of the dtd. The&lt;br /&gt;
dtd should always be named after the version it targets. For&lt;br /&gt;
Arthemis, it should be &amp;quot;map-0.2.8.dtd&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Nota: during the beta process, version can change often and have&lt;br /&gt;
great difference between them. To limit the scope of the problem&lt;br /&gt;
during the beta phase, the name of the dtd should include the beta&lt;br /&gt;
it targets. &lt;br /&gt;
&lt;br /&gt;
Header for the beta 3 of Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resource ==&lt;br /&gt;
The Resource element describe some meta-information of the Map,&lt;br /&gt;
such as who created it, how should the resource file be named and&lt;br /&gt;
what type of information is to be expected.&lt;br /&gt;
&lt;br /&gt;
One part of the Resource details describe who made this map a&lt;br /&gt;
reality. In the Resource element, it is possible to differenciate&lt;br /&gt;
between the person or organism that comissioned the map, the&lt;br /&gt;
commisionner, and the person who executed the request and coded&lt;br /&gt;
it, the author. &lt;br /&gt;
&lt;br /&gt;
Both operations might be carried by the same and only person, in&lt;br /&gt;
this instance both entities are the same and the commissioner&lt;br /&gt;
field should be left blank. The commissioner field should be used&lt;br /&gt;
when the concept of a map and its execution are performed by two&lt;br /&gt;
different persons or entities. It could range from anything from&lt;br /&gt;
&amp;quot;could someone make a map where the feeling of &amp;lt;X&amp;gt; is emphased&amp;quot; to&lt;br /&gt;
coding from a hand-drawn sketch. The commissioner could also be&lt;br /&gt;
implied. Without him/it ever placing an open request, a&lt;br /&gt;
commisioner could be assign to a map when the author whan to&lt;br /&gt;
express an assumed sharing of the creation of the map. This can be&lt;br /&gt;
the case, for example, when the member of a Clan wrote a map that&lt;br /&gt;
falls in the ideals of the Clan.&lt;br /&gt;
&lt;br /&gt;
Maps can be implicitly grouped together. The category field is&lt;br /&gt;
there for this purpose. Prolific authors and their public will&lt;br /&gt;
appreciate a clear grouping of similar themed maps.&lt;br /&gt;
&lt;br /&gt;
As ever refining one&#039;s work is a very respected quality in the&lt;br /&gt;
Armagetron community, the latest changes need to be properly&lt;br /&gt;
propagated to everybody. The version field allow an author to&lt;br /&gt;
identify each specific instance of her work, and also insure that&lt;br /&gt;
a client will receive the exact version used by a server when&lt;br /&gt;
playing on it.&lt;br /&gt;
&lt;br /&gt;
The type specifies that the file hold an Armagetron Advance&lt;br /&gt;
map. While this is the only type available at the moment, the&lt;br /&gt;
development team is eager to expand this in the furture.&lt;br /&gt;
&lt;br /&gt;
Finally, and most importantly, the name of the &#039;&#039;ouvrage&#039;&#039; being&lt;br /&gt;
presented. &lt;br /&gt;
&lt;br /&gt;
The fields for Resource are:&lt;br /&gt;
;name&lt;br /&gt;
:The name of the map, mandatory.&lt;br /&gt;
;type&lt;br /&gt;
:The only valid type is &amp;quot;aamap&amp;quot;. This field is defaulted &amp;quot;aamap&amp;quot; when abscent.&lt;br /&gt;
;version &lt;br /&gt;
:The version of the map described in this particuliar file. This value should be modified each time a change is applied to the map to ensure everybody have the proper copy. This field is defaulted to &amp;quot;1.0&amp;quot; when abscent.&lt;br /&gt;
;author&lt;br /&gt;
:The author who produced this map. This field is defaulted to &amp;quot;Anonymous&amp;quot; when abscent.&lt;br /&gt;
;commisioner&lt;br /&gt;
:The entity who dreamt, requested or even inspired in any way this map. This field is optional and has no default value. &lt;br /&gt;
;category&lt;br /&gt;
:How this map should be categorised. This field can have any number of sub categories, each separated by a &amp;quot;\&amp;quot;. An example could be &amp;quot;category\subcategory\subsubcategory&amp;quot;. This field is defaulted to &amp;quot;unsorted&amp;quot; when abscent. &lt;br /&gt;
&lt;br /&gt;
Example: The castle map made by philippeqc&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;Castle&amp;quot; type=&amp;quot;aamap&amp;quot; version=&amp;quot;1.1&amp;quot; author=&amp;quot;philippeqc&amp;quot; category=&amp;quot;examples&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The StarTron map made by Your_mom&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;5ptstar&amp;quot; version=&amp;quot;beta&amp;quot; author=&amp;quot;Your_mom&amp;quot; category=&amp;quot;beta&amp;quot; type=&amp;quot;aamap&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The MBC training map, made by Zorgul&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;TrainingDay&amp;quot; version=&amp;quot;1.6&amp;quot; author=&amp;quot;Zorgul&amp;quot; category=&amp;quot;MBC&amp;quot; type=&amp;quot;aamap&amp;quot; commisioner=&amp;quot;Micro Bus City&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: The Reverso map, writen by Nemosultra based on a drawing by lucifer, for the Crack Pipe server&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;Reverso&amp;quot; version=&amp;quot;1.1-b&amp;quot; author=&amp;quot;Nemosultra&amp;quot; category=&amp;quot;CrackPipe&amp;quot; type=&amp;quot;aamap&amp;quot; commisioner=&amp;quot;lucifer&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To facilitate manipulation of the file over distributed systems,&lt;br /&gt;
the Resource holds explicit information about the naming and&lt;br /&gt;
storing of the file. This information can be used by tools such as&lt;br /&gt;
scripts and resource repositories to manipulate the file. &lt;br /&gt;
&lt;br /&gt;
Many tools, including the game client, will expect the following&lt;br /&gt;
to indicate the location of a &lt;br /&gt;
filee inside the local store of resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Author&amp;gt;/[Category/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;ResourceType&amp;gt;.&amp;lt;Extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
This element is the basic holder of the description of the&lt;br /&gt;
Map. From the opening element to the closing one, all the&lt;br /&gt;
information will be used to construct an in-game representation&lt;br /&gt;
for the players to explore and possibly compete in.&lt;br /&gt;
&lt;br /&gt;
The version attribute of the map indicate an specific parsing&lt;br /&gt;
engine version that should be used to express the map in the exact&lt;br /&gt;
manners that are desired by the map creator. Sooner in the file,&lt;br /&gt;
the dtd has already specified a version. The difference between&lt;br /&gt;
both version is one specify the version of the syntax to be use,&lt;br /&gt;
and the other, the version of the rules to be used to interprete&lt;br /&gt;
the syntax.&lt;br /&gt;
&lt;br /&gt;
The dtd control the syntax, what keywords are valid and in which&lt;br /&gt;
arrangement. The parsing engine has specific rules how to read the&lt;br /&gt;
syntax and create the game elements. It is possible for different&lt;br /&gt;
parsing engine to operate from the same syntax, be it because the syntax&lt;br /&gt;
allows for many interpretation, or because a specific&lt;br /&gt;
interpretation has been found faulty in some case. Because each&lt;br /&gt;
interpretation could lead to very different instantiation, it is&lt;br /&gt;
best for the map designer to specify the one that should be&lt;br /&gt;
used. Even when no alternative interpretation exist, ie: there is&lt;br /&gt;
only one version available, it is best for the map designer to&lt;br /&gt;
specify it. Should a new one be implemented at a later time, the&lt;br /&gt;
map defined would continue to be instanciated properly.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, the only parsing engine version is&lt;br /&gt;
&amp;quot;0.2.8&amp;quot;. Maps using a version that is not understood by the&lt;br /&gt;
parsing engine of a specific client or server will be&lt;br /&gt;
automatically rejected by said application, on the ground that the&lt;br /&gt;
parsing engine doesn&#039;t know how to operate on it.&lt;br /&gt;
&lt;br /&gt;
Even if only one value exist, it is impossible to provide it as a&lt;br /&gt;
default, as there are no assurance that a new interpretation of&lt;br /&gt;
the syntax will not arrive at a future time.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It is possible for a map designer to indicate specific game&lt;br /&gt;
settings, similar to the ones available through the configuration&lt;br /&gt;
files of the application, to be used with the map. When&lt;br /&gt;
this is not desired, the Settings element can be safely removed&lt;br /&gt;
from the map definition.&lt;br /&gt;
&lt;br /&gt;
Any number of Setting can be defined inside of the Settings&lt;br /&gt;
element. Each Setting defined will overwrite the value previously&lt;br /&gt;
defined in the game. Each new Setting addressing a specific&lt;br /&gt;
configuration item will keep on overwriting previously defined&lt;br /&gt;
values. The Settings items are processed in order, from the top to&lt;br /&gt;
the bottom one.&lt;br /&gt;
&lt;br /&gt;
The Settings should be considered to be global to the World and&lt;br /&gt;
its sub-elements. This has very little relevance at the moment as&lt;br /&gt;
only one World and one Field can exist in the game. It is not&lt;br /&gt;
excluded that future version of the game could support multiple&lt;br /&gt;
elements such as World and Field. Each such elements and sub-elements would&lt;br /&gt;
receive the Settings defined in its parents, but would also be&lt;br /&gt;
able to overwrite parent received Settings for itself and its&lt;br /&gt;
sub-elements. &lt;br /&gt;
&lt;br /&gt;
One such overwriting capacity already exist, in the form of the&lt;br /&gt;
Axes element. This element can and will overwrite the value passed&lt;br /&gt;
by the Setting ARENA_AXES.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, there are no known case where the order of&lt;br /&gt;
writing Setting should matter. There are no garanties of it being&lt;br /&gt;
the case. Be carefull of the order of the Setting provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting ==&lt;br /&gt;
Each individual Setting defines a specific element normally&lt;br /&gt;
configurable throught the config files of the game&lt;br /&gt;
application. For a full list and description of the setting&lt;br /&gt;
available, consult &#039;&#039;&#039;TODO&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The Setting has two attributes, the name and the value. The name&lt;br /&gt;
field hold the setting name as found in the various configuration&lt;br /&gt;
files. The value field will be assigned to the designated setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Setting name=&amp;quot;CYCLE_BRAKE_REFILL&amp;quot; value=&amp;quot;.1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will assing .1 to the configuration item CYCLE_BRAKE_REFILL.&lt;br /&gt;
&lt;br /&gt;
No validation are done on either fields by the parsing engine. The&lt;br /&gt;
values are passed directly to the setting engine, where the usual&lt;br /&gt;
validation is performed. Unexisting or misspelled settings names&lt;br /&gt;
will be ignored. Setting with valid names and invalid values have&lt;br /&gt;
an undetermined effect.&lt;br /&gt;
&lt;br /&gt;
The different Setting used have the potential of overwriding&lt;br /&gt;
client or server ones. While this behavior offers great capacity&lt;br /&gt;
to custom behavior for a specific map, users playing locally on&lt;br /&gt;
their machine and server administrator might find it a disruption&lt;br /&gt;
of their craftfully designed settings. Use with care and&lt;br /&gt;
moderation.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the World element is&lt;br /&gt;
the Field element. Only one Field can be defined.&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;
The following 2 paragraph are post map-0.2.8_beta3 and 0.2.8_beta3.&lt;br /&gt;
&lt;br /&gt;
For clarity purpose, the Axes element, if defined, need to be&lt;br /&gt;
defined first. After this, Spawn point, Walls and Zones can be&lt;br /&gt;
defined in any order.&lt;br /&gt;
&lt;br /&gt;
While a Field without any Spawn points is syntaxly valid, and&lt;br /&gt;
the parsing engine doesnt report any error, the effect is&lt;br /&gt;
undetermined. While a Field without any Wall is syntaxly valid,&lt;br /&gt;
and the parsing engine doesn&#039;t report any error, the effect is&lt;br /&gt;
undetermined.&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;
;xdir&lt;br /&gt;
: This is size of the displacement along the x&#039;s for this axis&lt;br /&gt;
;ydir&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 xdir and ydir 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 angle=&amp;quot;225&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis angle=&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 xdir and a ydir of 1. The real length of the described Axis is &lt;br /&gt;
&amp;lt;math&amp;gt;\sqrt{xdir^2+ydir^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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;2&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-2&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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 following example 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. This reduce the&lt;br /&gt;
effect of playing at very high speed while having a huge&lt;br /&gt;
difference between directions.&lt;br /&gt;
&lt;br /&gt;
Example: Factor of 6 between displacement, centered around a speed&lt;br /&gt;
of ~1.&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 xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-3&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
Example: Factor of 6 between displacement, centered around a speed&lt;br /&gt;
of ~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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-6&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;6&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;
While the ratio of speed is the same between both examples, the&lt;br /&gt;
later one has speed that might be difficult to control in one&lt;br /&gt;
direction. The first example produce the same difference, but&lt;br /&gt;
present the players with a more balanced alternative.&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;&lt;br /&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 Axis in cartesian, in the order 4, 5, 6, 1, 2, 3&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&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 Axis in degrees, in the order 4, 5, 6, 1, 2, 3&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both define 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 Axis in cartesian, in the order 4, 6, 5, 1, 3, 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&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 Axis in degrees, in the order 4, 6, 5, 1, 3, 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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: 4 Axis counter clockwise&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
== Wall ==&lt;br /&gt;
Walls 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: A square Wall of size 200&lt;br /&gt;
&amp;lt;pre&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;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;
&amp;lt;/pre&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;
&lt;br /&gt;
Example: A 2 points wall, possibly as an obstacle&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;
The Wall element has one attribute, the height. Controlling the&lt;br /&gt;
height affect the rendering height of a wall. A height of 1.0 is&lt;br /&gt;
about the same as the height of the original cycle model. A height&lt;br /&gt;
of 4.0 correspond to the Walls rendered with the lowRim setting on&lt;br /&gt;
the client. When no height is defined, the client defined setting&lt;br /&gt;
of either lowRim or highRim is used. This has the advantage of&lt;br /&gt;
respecting the players choice and often, capacity to render high&lt;br /&gt;
walls.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;height&#039;&#039;&lt;br /&gt;
: The height used for the rendering of the Wall.&lt;br /&gt;
&lt;br /&gt;
Example : Using the client default height&lt;br /&gt;
&amp;lt;pre&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;10&amp;quot; y=&amp;quot;10&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 : Controling the height&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Wall height=&amp;quot;2.13&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;Point x=&amp;quot;10&amp;quot; y=&amp;quot;10&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;
== 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: Basic Spawn presentation&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;
== Zones ==&lt;br /&gt;
Zone are interactive areas on the Field. They manifest themself as&lt;br /&gt;
huge circles slowly rotating. The players can interact with the&lt;br /&gt;
Zones by entering or being inside them.&lt;br /&gt;
&lt;br /&gt;
The Zone has an attribute effect which allows 3 values: win, death and&lt;br /&gt;
fortress. Entering a Zone of effect win makes the player the round&lt;br /&gt;
winner. Entering a Zone of effect death automatically kills the&lt;br /&gt;
player. Zones of effect fortress need to be occupied to be&lt;br /&gt;
triggered, and once triggered, they make the team the round winner.&lt;br /&gt;
&lt;br /&gt;
;effect&lt;br /&gt;
:Any of win, death or fortress. When ommited, the value is defaulted to death&lt;br /&gt;
&lt;br /&gt;
Example: Zone syntax&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Zone requires a sub element named ShapeCircle. &lt;br /&gt;
&lt;br /&gt;
The ShapeCircle has 2 attributes, the radius and the growth. The&lt;br /&gt;
radius attribute describe the size of the CircleShape and is&lt;br /&gt;
required. The unit used is the same game unit that are used as map&lt;br /&gt;
coordinates. A ShapeCircle with a radius of 10 will extend of 10&lt;br /&gt;
game units in every direction from its center.&lt;br /&gt;
&lt;br /&gt;
The growth describe how the radius of the ShapeCircle changes over&lt;br /&gt;
time. This unit is game units per second from the moment the Zone&lt;br /&gt;
is create, which is the round start.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify a negative growth, in which case the ShapeCircle will&lt;br /&gt;
slowly shrink. Should at any time the radius be of 0 or less, the&lt;br /&gt;
Zone is removed without effect.&lt;br /&gt;
The growth is optional and defaults to 0, which hold the&lt;br /&gt;
ShapeCircle at a constant size during the round.&lt;br /&gt;
&lt;br /&gt;
;radius&lt;br /&gt;
:The initial radius of the circle defining the Zone. This field is mandatory.&lt;br /&gt;
;growth&lt;br /&gt;
:The growth of the circle. The values can be positive, negative or 0. This field is optional and is defaulted to 0.&lt;br /&gt;
&lt;br /&gt;
Example: Zone with CircleShape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot; growth=&amp;quot;0.17&amp;quot;&amp;gt;&lt;br /&gt;
                ...&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ShapeCircle requires a Point sub-element which describe the&lt;br /&gt;
center of the ShapeCircle. The syntax of the Point is the same as&lt;br /&gt;
the one used for the Wall.&lt;br /&gt;
&lt;br /&gt;
Example: A non-growing death zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;120&amp;quot; y=&amp;quot;86&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A growing fortress zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;fortress&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot; growth=&amp;quot;1.09&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;250&amp;quot; y=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A shrinking win zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;200&amp;quot; growth=&amp;quot;-0.2&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;440&amp;quot; y=&amp;quot;325&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible and valid to place the center of the Zone in a&lt;br /&gt;
location that is not accessible to the players, such as in a&lt;br /&gt;
walled compound or outside of the play area. This behavior might&lt;br /&gt;
change in future version. Consult the appropriate documentation.&lt;br /&gt;
&lt;br /&gt;
Example: A death zone outside the rim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;-25&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&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;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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A death zone partially outside the rim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;-15&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&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;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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: It is important to note that while Zones are introduced in&lt;br /&gt;
Arthemis, a more complete implementation will follow in&lt;br /&gt;
Bacchus. Curious minds consulting the documentation presenting the&lt;br /&gt;
Bacchus implementation of Zones will notice that fortress isn&#039;t an&lt;br /&gt;
effect, but rather a trigger type. The Arthemis implementation of&lt;br /&gt;
Zones falsely uses it as an effect instead of exposing a trigger&lt;br /&gt;
mechanism. Map designers are to be warned this will no longer be&lt;br /&gt;
possible in maps defined for Bacchus.&lt;br /&gt;
&lt;br /&gt;
=== Fortress Zone ===&lt;br /&gt;
The fortress Zone is particuliar because it uses a scoring system&lt;br /&gt;
to determine if and when the Zone is triggered. The score is&lt;br /&gt;
affected by the time passed in it by attackers and defenders.&lt;br /&gt;
&lt;br /&gt;
At start time, the score is set to 0.0. While the score can move&lt;br /&gt;
freely, 2 restrictions are always applied. First, the score can&lt;br /&gt;
never drop below 0.0. Second, if the score reaches or exceed 1.0,&lt;br /&gt;
the Zone is triggered.&lt;br /&gt;
&lt;br /&gt;
Each single adversary in the Zone add to the score for their time&lt;br /&gt;
passed in it. Each single defender in the Zone remove to the score&lt;br /&gt;
for their time passed in it. Also, the score always decays. Each&lt;br /&gt;
of these aspect is controlled by a different setting,&lt;br /&gt;
CONQUEST_RATE, DEFEND_RATE and CONQUEST_DECAY_RATE. They all&lt;br /&gt;
express a rate in points per seconds.&lt;br /&gt;
&lt;br /&gt;
;CONQUEST_RATE&lt;br /&gt;
: Any single attacking player in the Zone add points to the score at this rate. &lt;br /&gt;
;DEFEND_RATE&lt;br /&gt;
: Any single defending player in the Zone removes points to the score at this rate. &lt;br /&gt;
;CONQUEST_DECAY_RATE&lt;br /&gt;
: The score of a Zone decays at this rate, irrelevantly of the numbers of attackers and defenders in the Zone. &lt;br /&gt;
&lt;br /&gt;
These 3 settings are global for all the Zones on a map.&lt;br /&gt;
&lt;br /&gt;
Example: Configuring Fortress from the config file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CONQUEST_RATE 0.5&lt;br /&gt;
DEFEND_RATE 0.3&lt;br /&gt;
CONQUEST_DECAY_RATE 0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: Configuring Fortress from the settings in the map&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Settings&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;CONQUEST_RATE&amp;quot; value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;DEFEND_RATE&amp;quot; value=&amp;quot;0.3&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;CONQUEST_DECAY_RATE&amp;quot; value=&amp;quot;0.1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Map writing best practice ===&lt;br /&gt;
&lt;br /&gt;
==== Comment your work ====&lt;br /&gt;
&lt;br /&gt;
You should always comment the various parts of your work. Doing so improve maintainability. Something that is obvious during the creation of a particular map often becomes very cryptic after a few weeks. A good comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comment in xml start with &amp;quot;&amp;lt;!--&amp;quot; (without the quotes) and ends with &amp;quot;--&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t highlight the commented part, be careful not to exclude a part of your map by mistake.&lt;br /&gt;
&lt;br /&gt;
==== Arena size ====&lt;br /&gt;
&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;
==== Don&#039;t overload attributes ====&lt;br /&gt;
&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;
xdir and ydir attribute are never queried.&lt;br /&gt;
&lt;br /&gt;
While the engine ignore the exceeding data, this practice has the following drawbacks:&lt;br /&gt;
&lt;br /&gt;
* File size: The exceeding information is never used, but need to be transmitted as part of the file, and stored.&lt;br /&gt;
* Readability: Exceeding information complicate the reading of a map by humans. &lt;br /&gt;
* Maintenance: Maintenance of the map is not much more complex. If the author is minimalist, he/she risk updating the part of information that is ignored. Extremely good knowledge of the working of the parser is required to avoid this pitfall, and the change is only valid if the rule of precedences aren&#039;t updated. Specifying only one set of information avoid this problem. Also, if both set of information are updated, then the task for the author is double, and so are the risks for error.&lt;br /&gt;
&lt;br /&gt;
=== Resource file name convention ===&lt;br /&gt;
&lt;br /&gt;
Resource are external content that makes the game interesting. Textures, sounds, models and maps are all resources for Armagetron Ad. While at the time of writing of this tutorial, only maps are supported as true resources, soon support for the other types will be added. Also, while this section incorporated in the Maps tutorial, it might be moved as an independent document, and the standard 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 resources for Armagetron Ad should follow the following naming 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&lt;br /&gt;
: The name of the person who created the resource. This can be the full name, a nick name (such as the ones used on the Armagetron Ad forum) of the author. Alternatively, the author can forgo his or her name and instead opt for a group name. Group name should be used when the author want to indicate that a set of resources are associate with a group. Instances of this could be when the resources are for a clan, a community, a [set of] server[s].&lt;br /&gt;
;SubDirectory&lt;br /&gt;
: Prolific authors and those are free to set up any number of sub directories to help them organize and possibly categorize their resources. The Armagetron Ad team recommend you to categorize resources by topics (ie: all the resources required for a particular movie-pack set in the same sub directory) over other categorization, such as categorization by type (ie: all the floor tiles set in the same sub directory). Any number of sub directory level should be supported. This is not a mandatory item.&lt;br /&gt;
;ResourceName&lt;br /&gt;
: The actual name of the resource. This should be descriptive, and somewhat unique to facilitate identification of the described resource. The advantage of specifying a somewhat unique name here is that should the resource be accidentally moved out of its folder, it is still possible to quickly and easily identify it. A special note for maps: the ResourceName should be the same as the name attribute of the Map element defined in the xml file.&lt;br /&gt;
;VersionNumber&lt;br /&gt;
: This part should be used by the author to identify which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new resources, Armagetron Ad rely solely on this part to be updated. Should a resource be updated and the old name kept, it would cause problems between different clients. Client already having the old resource 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 would get the latest version. The actual format to be used for the VersionNumber is left to the choice of the author. While the Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar 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, ...). Keep in mind that it should be obvious to other as to which is the most up to date version of the resource. A special note for maps: the VersionNumber should be the same as the version attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;Extension&lt;br /&gt;
: This is the regular type of extension. While Armagetron Ad doesn&#039;t verify that the extension describe the right type of content, it is favorable for other users that you set it to the appropriate 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;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 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;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Parallelogram arena ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Parallelogram-1.0.png|right|thumbnail|Parallelogram]]&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot; category=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;World&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.2&amp;quot; ydir=&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HexaTRON ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HexaTRON-0.2.png|right|thumbnail|HexaTRON]]&lt;br /&gt;
&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 note that this is 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;&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot; category=&amp;quot;HexaTRON&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About the &amp;quot;undefined and unsupported&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and unsupported&amp;quot;. While it may be possible to do them now, and even amusing to do it, they are strongly discouraged. Later version of the World format will most probably conflict with those behaviors. This will make such behaviors difficult to preserve, if possible at all. For this reasons, it has been decided that _NO_ effort would be put to maintain them. Use them if you want, but do not come complaining if and when they stop working. &lt;br /&gt;
&lt;br /&gt;
== TODO: ==&lt;br /&gt;
&lt;br /&gt;
* how to submit resource (why is this todo? it&#039;s covered in Resource Repository --Luke-Jr)&lt;br /&gt;
* Extension&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=2232</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=2232"/>
		<updated>2005-11-13T14:18:25Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Added some examples for Zones, and now all examples aren&amp;#039;t numbered,&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To correct: &lt;br /&gt;
- &#039;&#039;&#039;dtd version name&#039;&#039;&#039;&lt;br /&gt;
- &#039;&#039;&#039;map version&#039;&#039;&#039;&lt;br /&gt;
- &#039;&#039;&#039;pre-intro text&#039;&#039;&#039; &lt;br /&gt;
- &#039;&#039;&#039;concept&#039;&#039;&#039; might be the wrong word, people might interpret it&lt;br /&gt;
as &amp;quot;the concept used for the map is to give a feeling of claustrophobia&amp;quot;&lt;br /&gt;
- text about commisioner is pure crap&lt;br /&gt;
&lt;br /&gt;
This tutorial is to help map designer to get a grasp of the Map&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This version of the tutorial address the syntax defined by map-0.2.8_beta3.dtd and present the rules of interpreting the syntax as used by the parsing engine in the version 0.2.8 of Armagetron Advance.&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;
[[Image:original-1.0.1.png|right|thumbnail|Original Armagetron 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;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
	         Converted to XML by philippeqc.&lt;br /&gt;
	         License: Do with it what you want.                          --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
	&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Map format start with a XML header. The actual definition&lt;br /&gt;
of the Map is wrapped in a Resource. The Resource gives a&lt;br /&gt;
description of the content, such as the author and the version of&lt;br /&gt;
the map included. This particuliar map is the xml version of the&lt;br /&gt;
original map that supported directly in the game before version&lt;br /&gt;
0.2.8 (Arthemis). &lt;br /&gt;
&lt;br /&gt;
Skippin ahead in to the Field element, line 11 defines that &lt;br /&gt;
that 4 axes are to be&lt;br /&gt;
used. From line 13 to 26, 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;
== Header ==&lt;br /&gt;
The header of the map can nearly be considered as constant. It is&lt;br /&gt;
composed of 2 lines.&lt;br /&gt;
&lt;br /&gt;
Header for Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only element you need to consider is the name of the dtd. The&lt;br /&gt;
dtd should always be named after the version it targets. For&lt;br /&gt;
Arthemis, it should be &amp;quot;map-0.2.8.dtd&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Nota: during the beta process, version can change often and have&lt;br /&gt;
great difference between them. To limit the scope of the problem&lt;br /&gt;
during the beta phase, the name of the dtd should include the beta&lt;br /&gt;
it targets. &lt;br /&gt;
&lt;br /&gt;
Header for the beta 3 of Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resource ==&lt;br /&gt;
The Resource element describe some meta-information of the Map,&lt;br /&gt;
such as who created it, how should the resource file be named and&lt;br /&gt;
what type of information is to be expected.&lt;br /&gt;
&lt;br /&gt;
One part of the Resource details describe who made this map a&lt;br /&gt;
reality. In the Resource element, it is possible to differenciate&lt;br /&gt;
between the person or organism that comissioned the map, the&lt;br /&gt;
commisionner, and the person who executed the request and coded&lt;br /&gt;
it, the author. &lt;br /&gt;
&lt;br /&gt;
Both operations might be carried by the same and only person, in&lt;br /&gt;
this instance both entities are the same and the commissioner&lt;br /&gt;
field should be left blank. The commissioner field should be used&lt;br /&gt;
when the concept of a map and its execution are performed by two&lt;br /&gt;
different persons or entities. It could range from anything from&lt;br /&gt;
&amp;quot;could someone make a map where the feeling of &amp;lt;X&amp;gt; is emphased&amp;quot; to&lt;br /&gt;
coding from a hand-drawn sketch. The commissioner could also be&lt;br /&gt;
implied. Without him/it ever placing an open request, a&lt;br /&gt;
commisioner could be assign to a map when the author whan to&lt;br /&gt;
express an assumed sharing of the creation of the map. This can be&lt;br /&gt;
the case, for example, when the member of a Clan wrote a map that&lt;br /&gt;
falls in the ideals of the Clan.&lt;br /&gt;
&lt;br /&gt;
Maps can be implicitly grouped together. The category field is&lt;br /&gt;
there for this purpose. Prolific authors and their public will&lt;br /&gt;
appreciate a clear grouping of similar themed maps.&lt;br /&gt;
&lt;br /&gt;
As ever refining one&#039;s work is a very respected quality in the&lt;br /&gt;
Armagetron community, the latest changes need to be properly&lt;br /&gt;
propagated to everybody. The version field allow an author to&lt;br /&gt;
identify each specific instance of her work, and also insure that&lt;br /&gt;
a client will receive the exact version used by a server when&lt;br /&gt;
playing on it.&lt;br /&gt;
&lt;br /&gt;
The type specifies that the file hold an Armagetron Advance&lt;br /&gt;
map. While this is the only type available at the moment, the&lt;br /&gt;
development team is eager to expand this in the furture.&lt;br /&gt;
&lt;br /&gt;
Finally, and most importantly, the name of the &#039;&#039;ouvrage&#039;&#039; being&lt;br /&gt;
presented. &lt;br /&gt;
&lt;br /&gt;
The fields for Resource are:&lt;br /&gt;
;name&lt;br /&gt;
:The name of the map, mandatory.&lt;br /&gt;
;type&lt;br /&gt;
:The only valid type is &amp;quot;aamap&amp;quot;. This field is defaulted &amp;quot;aamap&amp;quot; when abscent.&lt;br /&gt;
;version &lt;br /&gt;
:The version of the map described in this particuliar file. This value should be modified each time a change is applied to the map to ensure everybody have the proper copy. This field is defaulted to &amp;quot;1.0&amp;quot; when abscent.&lt;br /&gt;
;author&lt;br /&gt;
:The author who produced this map. This field is defaulted to &amp;quot;Anonymous&amp;quot; when abscent.&lt;br /&gt;
;commisioner&lt;br /&gt;
:The entity who dreamt, requested or even inspired in any way this map. This field is optional and has no default value. &lt;br /&gt;
;category&lt;br /&gt;
:How this map should be categorised. This field can have any number of sub categories, each separated by a &amp;quot;\&amp;quot;. An example could be &amp;quot;category\subcategory\subsubcategory&amp;quot;. This field is defaulted to &amp;quot;unsorted&amp;quot; when abscent. &lt;br /&gt;
&lt;br /&gt;
To facilitate manipulation of the file over distributed systems,&lt;br /&gt;
the Resource holds explicit information about the naming and&lt;br /&gt;
storing of the file. This information can be used by tools such as&lt;br /&gt;
scripts and resource repositories to manipulate the file. &lt;br /&gt;
&lt;br /&gt;
Many tools, including the game client, will expect the following&lt;br /&gt;
to indicate the location of a &lt;br /&gt;
filee inside the local store of resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Author&amp;gt;/[Category/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;ResourceType&amp;gt;.&amp;lt;Extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
This element is the basic holder of the description of the&lt;br /&gt;
Map. From the opening element to the closing one, all the&lt;br /&gt;
information will be used to construct an in-game representation&lt;br /&gt;
for the players to explore and possibly compete in.&lt;br /&gt;
&lt;br /&gt;
The version attribute of the map indicate an specific parsing&lt;br /&gt;
engine version that should be used to express the map in the exact&lt;br /&gt;
manners that are desired by the map creator. Sooner in the file,&lt;br /&gt;
the dtd has already specified a version. The difference between&lt;br /&gt;
both version is one specify the version of the syntax to be use,&lt;br /&gt;
and the other, the version of the rules to be used to interprete&lt;br /&gt;
the syntax.&lt;br /&gt;
&lt;br /&gt;
The dtd control the syntax, what keywords are valid and in which&lt;br /&gt;
arrangement. The parsing engine has specific rules how to read the&lt;br /&gt;
syntax and create the game elements. It is possible for different&lt;br /&gt;
parsing engine to operate from the same syntax, be it because the syntax&lt;br /&gt;
allows for many interpretation, or because a specific&lt;br /&gt;
interpretation has been found faulty in some case. Because each&lt;br /&gt;
interpretation could lead to very different instantiation, it is&lt;br /&gt;
best for the map designer to specify the one that should be&lt;br /&gt;
used. Even when no alternative interpretation exist, ie: there is&lt;br /&gt;
only one version available, it is best for the map designer to&lt;br /&gt;
specify it. Should a new one be implemented at a later time, the&lt;br /&gt;
map defined would continue to be instanciated properly.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, the only parsing engine version is&lt;br /&gt;
&amp;quot;0.2.8&amp;quot;. Maps using a version that is not understood by the&lt;br /&gt;
parsing engine of a specific client or server will be&lt;br /&gt;
automatically rejected by said application, on the ground that the&lt;br /&gt;
parsing engine doesn&#039;t know how to operate on it.&lt;br /&gt;
&lt;br /&gt;
Even if only one value exist, it is impossible to provide it as a&lt;br /&gt;
default, as there are no assurance that a new interpretation of&lt;br /&gt;
the syntax will not arrive at a future time.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It is possible for a map designer to indicate specific game&lt;br /&gt;
settings, similar to the ones available through the configuration&lt;br /&gt;
files of the application, to be used with the map. When&lt;br /&gt;
this is not desired, the Settings element can be safely removed&lt;br /&gt;
from the map definition.&lt;br /&gt;
&lt;br /&gt;
Any number of Setting can be defined inside of the Settings&lt;br /&gt;
element. Each Setting defined will overwrite the value previously&lt;br /&gt;
defined in the game. Each new Setting addressing a specific&lt;br /&gt;
configuration item will keep on overwriting previously defined&lt;br /&gt;
values. The Settings items are processed in order, from the top to&lt;br /&gt;
the bottom one.&lt;br /&gt;
&lt;br /&gt;
The Settings should be considered to be global to the World and&lt;br /&gt;
its sub-elements. This has very little relevance at the moment as&lt;br /&gt;
only one World and one Field can exist in the game. It is not&lt;br /&gt;
excluded that future version of the game could support multiple&lt;br /&gt;
elements such as World and Field. Each such elements and sub-elements would&lt;br /&gt;
receive the Settings defined in its parents, but would also be&lt;br /&gt;
able to overwrite parent received Settings for itself and its&lt;br /&gt;
sub-elements. &lt;br /&gt;
&lt;br /&gt;
One such overwriting capacity already exist, in the form of the&lt;br /&gt;
Axes element. This element can and will overwrite the value passed&lt;br /&gt;
by the Setting ARENA_AXES.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, there are no known case where the order of&lt;br /&gt;
writing Setting should matter. There are no garanties of it being&lt;br /&gt;
the case. Be carefull of the order of the Setting provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting ==&lt;br /&gt;
Each individual Setting defines a specific element normally&lt;br /&gt;
configurable throught the config files of the game&lt;br /&gt;
application. For a full list and description of the setting&lt;br /&gt;
available, consult &#039;&#039;&#039;TODO&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The Setting has two attributes, the name and the value. The name&lt;br /&gt;
field hold the setting name as found in the various configuration&lt;br /&gt;
files. The value field will be assigned to the designated setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Setting name=&amp;quot;CYCLE_BRAKE_REFILL&amp;quot; value=&amp;quot;.1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will assing .1 to the configuration item CYCLE_BRAKE_REFILL.&lt;br /&gt;
&lt;br /&gt;
No validation are done on either fields by the parsing engine. The&lt;br /&gt;
values are passed directly to the setting engine, where the usual&lt;br /&gt;
validation is performed. Unexisting or misspelled settings names&lt;br /&gt;
will be ignored. Setting with valid names and invalid values have&lt;br /&gt;
an undetermined effect.&lt;br /&gt;
&lt;br /&gt;
The different Setting used have the potential of overwriding&lt;br /&gt;
client or server ones. While this behavior offers great capacity&lt;br /&gt;
to custom behavior for a specific map, users playing locally on&lt;br /&gt;
their machine and server administrator might find it a disruption&lt;br /&gt;
of their craftfully designed settings. Use with care and&lt;br /&gt;
moderation.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the World element is&lt;br /&gt;
the Field element. Only one Field can be defined.&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;
The following 2 paragraph are post map-0.2.8_beta3 and 0.2.8_beta3.&lt;br /&gt;
&lt;br /&gt;
For clarity purpose, the Axes element, if defined, need to be&lt;br /&gt;
defined first. After this, Spawn point, Walls and Zones can be&lt;br /&gt;
defined in any order.&lt;br /&gt;
&lt;br /&gt;
While a Field without any Spawn points is syntaxly valid, and&lt;br /&gt;
the parsing engine doesnt report any error, the effect is&lt;br /&gt;
undetermined. While a Field without any Wall is syntaxly valid,&lt;br /&gt;
and the parsing engine doesn&#039;t report any error, the effect is&lt;br /&gt;
undetermined.&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;
;xdir&lt;br /&gt;
: This is size of the displacement along the x&#039;s for this axis&lt;br /&gt;
;ydir&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 xdir and ydir 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 angle=&amp;quot;225&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis angle=&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 xdir and a ydir of 1. The real length of the described Axis is &lt;br /&gt;
&amp;lt;math&amp;gt;\sqrt{xdir^2+ydir^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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;2&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-2&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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 following example 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. This reduce the&lt;br /&gt;
effect of playing at very high speed while having a huge&lt;br /&gt;
difference between directions.&lt;br /&gt;
&lt;br /&gt;
Example: Factor of 6 between displacement, centered around a speed&lt;br /&gt;
of ~1.&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 xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-3&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
Example: Factor of 6 between displacement, centered around a speed&lt;br /&gt;
of ~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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-6&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;6&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;
While the ratio of speed is the same between both examples, the&lt;br /&gt;
later one has speed that might be difficult to control in one&lt;br /&gt;
direction. The first example produce the same difference, but&lt;br /&gt;
present the players with a more balanced alternative.&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: 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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;&lt;br /&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 Axis in cartesian, in the order 4, 5, 6, 1, 2, 3&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&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 Axis in degrees, in the order 4, 5, 6, 1, 2, 3&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both define 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 Axis in cartesian, in the order 4, 6, 5, 1, 3, 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&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 Axis in degrees, in the order 4, 6, 5, 1, 3, 2&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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: 4 Axis counter clockwise&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
== Wall ==&lt;br /&gt;
Walls 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: A square Wall of size 200&lt;br /&gt;
&amp;lt;pre&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;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;
&amp;lt;/pre&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;
&lt;br /&gt;
Example: A 2 points wall, possibly as an obstacle&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;
The Wall element has one attribute, the height. Controlling the&lt;br /&gt;
height affect the rendering height of a wall. A height of 1.0 is&lt;br /&gt;
about the same as the height of the original cycle model. A height&lt;br /&gt;
of 4.0 correspond to the Walls rendered with the lowRim setting on&lt;br /&gt;
the client. When no height is defined, the client defined setting&lt;br /&gt;
of either lowRim or highRim is used. This has the advantage of&lt;br /&gt;
respecting the players choice and often, capacity to render high&lt;br /&gt;
walls.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;height&#039;&#039;&lt;br /&gt;
: The height used for the rendering of the Wall.&lt;br /&gt;
&lt;br /&gt;
Example : Using the client default height&lt;br /&gt;
&amp;lt;pre&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;10&amp;quot; y=&amp;quot;10&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 : Controling the height&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Wall height=&amp;quot;2.13&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;Point x=&amp;quot;10&amp;quot; y=&amp;quot;10&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;
== 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: Basic Spawn presentation&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;
== Zones ==&lt;br /&gt;
Zone are interactive areas on the Field. They manifest themself as&lt;br /&gt;
huge circles slowly rotating. The players can interact with the&lt;br /&gt;
Zones by entering or being inside them.&lt;br /&gt;
&lt;br /&gt;
The Zone has an attribute effect which allows 3 values: win, death and&lt;br /&gt;
fortress. Entering a Zone of effect win makes the player the round&lt;br /&gt;
winner. Entering a Zone of effect death automatically kills the&lt;br /&gt;
player. Zones of effect fortress need to be occupied to be&lt;br /&gt;
triggered, and once triggered, they make the team the round winner.&lt;br /&gt;
&lt;br /&gt;
;effect&lt;br /&gt;
:Any of win, death or fortress. When ommited, the value is defaulted to death&lt;br /&gt;
&lt;br /&gt;
The Zone requires a sub element named ShapeCircle. &lt;br /&gt;
&lt;br /&gt;
The ShapeCircle has 2 attributes, the radius and the growth. The&lt;br /&gt;
radius attribute describe the size of the CircleShape and is&lt;br /&gt;
required. The unit used is the same game unit that are used as map&lt;br /&gt;
coordinates. A ShapeCircle with a radius of 10 will extend of 10&lt;br /&gt;
game units in every direction from its center.&lt;br /&gt;
&lt;br /&gt;
The growth describe how the radius of the ShapeCircle changes over&lt;br /&gt;
time. This unit is game units per second from the moment the Zone&lt;br /&gt;
is create, which is the round start.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify a negative growth, in which case the ShapeCircle will&lt;br /&gt;
slowly shrink. Should at any time the radius be of 0 or less, the&lt;br /&gt;
Zone is removed without effect.&lt;br /&gt;
The growth is optional and defaults to 0, which hold the&lt;br /&gt;
ShapeCircle at a constant size during the round.&lt;br /&gt;
&lt;br /&gt;
;radius&lt;br /&gt;
:The initial radius of the circle defining the Zone. This field is mandatory.&lt;br /&gt;
;growth&lt;br /&gt;
:The growth of the circle. The values can be positive, negative or 0. This field is optional and is defaulted to 0.&lt;br /&gt;
&lt;br /&gt;
The ShapeCircle requires a Point sub-element which describe the&lt;br /&gt;
center of the ShapeCircle. The syntax of the Point is the same as&lt;br /&gt;
the one used for the Wall.&lt;br /&gt;
&lt;br /&gt;
Example: A non-growing death zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;120&amp;quot; y=&amp;quot;86&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A growing fortress zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;fortress&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot; growth=&amp;quot;1.09&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;250&amp;quot; y=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A shrinking win zone&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;200&amp;quot; growth=&amp;quot;-0.2&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;440&amp;quot; y=&amp;quot;325&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible and valid to place the center of the Zone in a&lt;br /&gt;
location that is not accessible to the players, such as in a&lt;br /&gt;
walled compound or outside of the play area. This behavior might&lt;br /&gt;
change in future version. Consult the appropriate documentation.&lt;br /&gt;
&lt;br /&gt;
Example: A death zone outside the rim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;-25&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&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;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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: A death zone partially outside the rim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Zone effect=&amp;quot;death&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ShapeCircle radius=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Point x=&amp;quot;-15&amp;quot; y=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/ShapeCircle&amp;gt;&lt;br /&gt;
        &amp;lt;/Zone&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;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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: It is important to note that while Zones are introduced in&lt;br /&gt;
Arthemis, a more complete implementation will follow in&lt;br /&gt;
Bacchus. Curious minds consulting the documentation presenting the&lt;br /&gt;
Bacchus implementation of Zones will notice that fortress isn&#039;t an&lt;br /&gt;
effect, but rather a trigger type. The Arthemis implementation of&lt;br /&gt;
Zones falsely uses it as an effect instead of exposing a trigger&lt;br /&gt;
mechanism. Map designers are to be warned this will no longer be&lt;br /&gt;
possible in maps defined for Bacchus.&lt;br /&gt;
&lt;br /&gt;
=== Fortress Zone ===&lt;br /&gt;
The fortress Zone is particuliar because it uses a scoring system&lt;br /&gt;
to determine if and when the Zone is triggered. The score is&lt;br /&gt;
affected by the time passed in it by attackers and defenders.&lt;br /&gt;
&lt;br /&gt;
At start time, the score is set to 0.0. While the score can move&lt;br /&gt;
freely, 2 restrictions are always applied. First, the score can&lt;br /&gt;
never drop below 0.0. Second, if the score reaches or exceed 1.0,&lt;br /&gt;
the Zone is triggered.&lt;br /&gt;
&lt;br /&gt;
Each single adversary in the Zone add to the score for their time&lt;br /&gt;
passed in it. Each single defender in the Zone remove to the score&lt;br /&gt;
for their time passed in it. Also, the score always decays. Each&lt;br /&gt;
of these aspect is controlled by a different setting,&lt;br /&gt;
CONQUEST_RATE, DEFEND_RATE and CONQUEST_DECAY_RATE. They all&lt;br /&gt;
express a rate in points per seconds.&lt;br /&gt;
&lt;br /&gt;
;CONQUEST_RATE&lt;br /&gt;
: Any single attacking player in the Zone add points to the score at this rate. &lt;br /&gt;
;DEFEND_RATE&lt;br /&gt;
: Any single defending player in the Zone removes points to the score at this rate. &lt;br /&gt;
;CONQUEST_DECAY_RATE&lt;br /&gt;
: The score of a Zone decays at this rate, irrelevantly of the numbers of attackers and defenders in the Zone. &lt;br /&gt;
&lt;br /&gt;
These 3 settings are global for all the Zones on a map.&lt;br /&gt;
&lt;br /&gt;
Example: Configuring Fortress from the config file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CONQUEST_RATE 0.5&lt;br /&gt;
DEFEND_RATE 0.3&lt;br /&gt;
CONQUEST_DECAY_RATE 0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: Configuring Fortress from the settings in the map&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Settings&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;CONQUEST_RATE&amp;quot; value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;DEFEND_RATE&amp;quot; value=&amp;quot;0.3&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Setting name=&amp;quot;CONQUEST_DECAY_RATE&amp;quot; value=&amp;quot;0.1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Map writing best practice ===&lt;br /&gt;
&lt;br /&gt;
==== Comment your work ====&lt;br /&gt;
&lt;br /&gt;
You should always comment the various parts of your work. Doing so improve maintainability. Something that is obvious during the creation of a particular map often becomes very cryptic after a few weeks. A good comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comment in xml start with &amp;quot;&amp;lt;!--&amp;quot; (without the quotes) and ends with &amp;quot;--&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t highlight the commented part, be careful not to exclude a part of your map by mistake.&lt;br /&gt;
&lt;br /&gt;
==== Arena size ====&lt;br /&gt;
&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;
==== Don&#039;t overload attributes ====&lt;br /&gt;
&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;
xdir and ydir attribute are never queried.&lt;br /&gt;
&lt;br /&gt;
While the engine ignore the exceeding data, this practice has the following drawbacks:&lt;br /&gt;
&lt;br /&gt;
* File size: The exceeding information is never used, but need to be transmitted as part of the file, and stored.&lt;br /&gt;
* Readability: Exceeding information complicate the reading of a map by humans. &lt;br /&gt;
* Maintenance: Maintenance of the map is not much more complex. If the author is minimalist, he/she risk updating the part of information that is ignored. Extremely good knowledge of the working of the parser is required to avoid this pitfall, and the change is only valid if the rule of precedences aren&#039;t updated. Specifying only one set of information avoid this problem. Also, if both set of information are updated, then the task for the author is double, and so are the risks for error.&lt;br /&gt;
&lt;br /&gt;
=== Resource file name convention ===&lt;br /&gt;
&lt;br /&gt;
Resource are external content that makes the game interesting. Textures, sounds, models and maps are all resources for Armagetron Ad. While at the time of writing of this tutorial, only maps are supported as true resources, soon support for the other types will be added. Also, while this section incorporated in the Maps tutorial, it might be moved as an independent document, and the standard 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 resources for Armagetron Ad should follow the following naming 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&lt;br /&gt;
: The name of the person who created the resource. This can be the full name, a nick name (such as the ones used on the Armagetron Ad forum) of the author. Alternatively, the author can forgo his or her name and instead opt for a group name. Group name should be used when the author want to indicate that a set of resources are associate with a group. Instances of this could be when the resources are for a clan, a community, a [set of] server[s].&lt;br /&gt;
;SubDirectory&lt;br /&gt;
: Prolific authors and those are free to set up any number of sub directories to help them organize and possibly categorize their resources. The Armagetron Ad team recommend you to categorize resources by topics (ie: all the resources required for a particular movie-pack set in the same sub directory) over other categorization, such as categorization by type (ie: all the floor tiles set in the same sub directory). Any number of sub directory level should be supported. This is not a mandatory item.&lt;br /&gt;
;ResourceName&lt;br /&gt;
: The actual name of the resource. This should be descriptive, and somewhat unique to facilitate identification of the described resource. The advantage of specifying a somewhat unique name here is that should the resource be accidentally moved out of its folder, it is still possible to quickly and easily identify it. A special note for maps: the ResourceName should be the same as the name attribute of the Map element defined in the xml file.&lt;br /&gt;
;VersionNumber&lt;br /&gt;
: This part should be used by the author to identify which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new resources, Armagetron Ad rely solely on this part to be updated. Should a resource be updated and the old name kept, it would cause problems between different clients. Client already having the old resource 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 would get the latest version. The actual format to be used for the VersionNumber is left to the choice of the author. While the Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar 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, ...). Keep in mind that it should be obvious to other as to which is the most up to date version of the resource. A special note for maps: the VersionNumber should be the same as the version attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;Extension&lt;br /&gt;
: This is the regular type of extension. While Armagetron Ad doesn&#039;t verify that the extension describe the right type of content, it is favorable for other users that you set it to the appropriate 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;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 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;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Parallelogram arena ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Parallelogram-1.0.png|right|thumbnail|Parallelogram]]&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot; category=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;World&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.2&amp;quot; ydir=&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HexaTRON ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HexaTRON-0.2.png|right|thumbnail|HexaTRON]]&lt;br /&gt;
&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 note that this is 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;&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot; category=&amp;quot;HexaTRON&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About the &amp;quot;undefined and unsupported&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and unsupported&amp;quot;. While it may be possible to do them now, and even amusing to do it, they are strongly discouraged. Later version of the World format will most probably conflict with those behaviors. This will make such behaviors difficult to preserve, if possible at all. For this reasons, it has been decided that _NO_ effort would be put to maintain them. Use them if you want, but do not come complaining if and when they stop working. &lt;br /&gt;
&lt;br /&gt;
== TODO: ==&lt;br /&gt;
&lt;br /&gt;
* how to submit resource (why is this todo? it&#039;s covered in Resource Repository --Luke-Jr)&lt;br /&gt;
* Extension&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=2231</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=2231"/>
		<updated>2005-11-13T13:25:24Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Filled Header section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To correct: &lt;br /&gt;
- &#039;&#039;&#039;dtd version name&#039;&#039;&#039;&lt;br /&gt;
- &#039;&#039;&#039;map version&#039;&#039;&#039;&lt;br /&gt;
- &#039;&#039;&#039;pre-intro text&#039;&#039;&#039; &lt;br /&gt;
- &#039;&#039;&#039;concept&#039;&#039;&#039; might be the wrong word, people might interpret it&lt;br /&gt;
as &amp;quot;the concept used for the map is to give a feeling of claustrophobia&amp;quot;&lt;br /&gt;
- text about commisioner is pure crap&lt;br /&gt;
&lt;br /&gt;
This tutorial is to help map designer to get a grasp of the Map&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This version of the tutorial address the syntax defined by map-0.2.8_beta3.dtd and present the rules of interpreting the syntax as used by the parsing engine in the version 0.2.8 of Armagetron Advance.&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;
[[Image:original-1.0.1.png|right|thumbnail|Original Armagetron 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;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
	         Converted to XML by philippeqc.&lt;br /&gt;
	         License: Do with it what you want.                          --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
	&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Map format start with a XML header. The actual definition&lt;br /&gt;
of the Map is wrapped in a Resource. The Resource gives a&lt;br /&gt;
description of the content, such as the author and the version of&lt;br /&gt;
the map included. This particuliar map is the xml version of the&lt;br /&gt;
original map that supported directly in the game before version&lt;br /&gt;
0.2.8 (Arthemis). &lt;br /&gt;
&lt;br /&gt;
Skippin ahead in to the Field element, line 11 defines that &lt;br /&gt;
that 4 axes are to be&lt;br /&gt;
used. From line 13 to 26, 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;
== Header ==&lt;br /&gt;
The header of the map can nearly be considered as constant. It is&lt;br /&gt;
composed of 2 lines.&lt;br /&gt;
&lt;br /&gt;
Header for Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only element you need to consider is the name of the dtd. The&lt;br /&gt;
dtd should always be named after the version it targets. For&lt;br /&gt;
Arthemis, it should be &amp;quot;map-0.2.8.dtd&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Nota: during the beta process, version can change often and have&lt;br /&gt;
great difference between them. To limit the scope of the problem&lt;br /&gt;
during the beta phase, the name of the dtd should include the beta&lt;br /&gt;
it targets. &lt;br /&gt;
&lt;br /&gt;
Header for the beta 3 of Arthemis&#039; maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resource ==&lt;br /&gt;
The Resource element describe some meta-information of the Map,&lt;br /&gt;
such as who created it, how should the resource file be named and&lt;br /&gt;
what type of information is to be expected.&lt;br /&gt;
&lt;br /&gt;
One part of the Resource details describe who made this map a&lt;br /&gt;
reality. In the Resource element, it is possible to differenciate&lt;br /&gt;
between the person or organism that comissioned the map, the&lt;br /&gt;
commisionner, and the person who executed the request and coded&lt;br /&gt;
it, the author. &lt;br /&gt;
&lt;br /&gt;
Both operations might be carried by the same and only person, in&lt;br /&gt;
this instance both entities are the same and the commissioner&lt;br /&gt;
field should be left blank. The commissioner field should be used&lt;br /&gt;
when the concept of a map and its execution are performed by two&lt;br /&gt;
different persons or entities. It could range from anything from&lt;br /&gt;
&amp;quot;could someone make a map where the feeling of &amp;lt;X&amp;gt; is emphased&amp;quot; to&lt;br /&gt;
coding from a hand-drawn sketch. The commissioner could also be&lt;br /&gt;
implied. Without him/it ever placing an open request, a&lt;br /&gt;
commisioner could be assign to a map when the author whan to&lt;br /&gt;
express an assumed sharing of the creation of the map. This can be&lt;br /&gt;
the case, for example, when the member of a Clan wrote a map that&lt;br /&gt;
falls in the ideals of the Clan.&lt;br /&gt;
&lt;br /&gt;
Maps can be implicitly grouped together. The category field is&lt;br /&gt;
there for this purpose. Prolific authors and their public will&lt;br /&gt;
appreciate a clear grouping of similar themed maps.&lt;br /&gt;
&lt;br /&gt;
As ever refining one&#039;s work is a very respected quality in the&lt;br /&gt;
Armagetron community, the latest changes need to be properly&lt;br /&gt;
propagated to everybody. The version field allow an author to&lt;br /&gt;
identify each specific instance of her work, and also insure that&lt;br /&gt;
a client will receive the exact version used by a server when&lt;br /&gt;
playing on it.&lt;br /&gt;
&lt;br /&gt;
The type specifies that the file hold an Armagetron Advance&lt;br /&gt;
map. While this is the only type available at the moment, the&lt;br /&gt;
development team is eager to expand this in the furture.&lt;br /&gt;
&lt;br /&gt;
Finally, and most importantly, the name of the &#039;&#039;ouvrage&#039;&#039; being&lt;br /&gt;
presented. &lt;br /&gt;
&lt;br /&gt;
The fields for Resource are:&lt;br /&gt;
;name&lt;br /&gt;
:The name of the map, mandatory.&lt;br /&gt;
;type&lt;br /&gt;
:The only valid type is &amp;quot;aamap&amp;quot;. This field is defaulted &amp;quot;aamap&amp;quot; when abscent.&lt;br /&gt;
;version &lt;br /&gt;
:The version of the map described in this particuliar file. This value should be modified each time a change is applied to the map to ensure everybody have the proper copy. This field is defaulted to &amp;quot;1.0&amp;quot; when abscent.&lt;br /&gt;
;author&lt;br /&gt;
:The author who produced this map. This field is defaulted to &amp;quot;Anonymous&amp;quot; when abscent.&lt;br /&gt;
;commisioner&lt;br /&gt;
:The entity who dreamt, requested or even inspired in any way this map. This field is optional and has no default value. &lt;br /&gt;
;category&lt;br /&gt;
:How this map should be categorised. This field can have any number of sub categories, each separated by a &amp;quot;\&amp;quot;. An example could be &amp;quot;category\subcategory\subsubcategory&amp;quot;. This field is defaulted to &amp;quot;unsorted&amp;quot; when abscent. &lt;br /&gt;
&lt;br /&gt;
To facilitate manipulation of the file over distributed systems,&lt;br /&gt;
the Resource holds explicit information about the naming and&lt;br /&gt;
storing of the file. This information can be used by tools such as&lt;br /&gt;
scripts and resource repositories to manipulate the file. &lt;br /&gt;
&lt;br /&gt;
Many tools, including the game client, will expect the following&lt;br /&gt;
to indicate the location of a &lt;br /&gt;
filee inside the local store of resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Author&amp;gt;/[Category/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;ResourceType&amp;gt;.&amp;lt;Extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
This element is the basic holder of the description of the&lt;br /&gt;
Map. From the opening element to the closing one, all the&lt;br /&gt;
information will be used to construct an in-game representation&lt;br /&gt;
for the players to explore and possibly compete in.&lt;br /&gt;
&lt;br /&gt;
The version attribute of the map indicate an specific parsing&lt;br /&gt;
engine version that should be used to express the map in the exact&lt;br /&gt;
manners that are desired by the map creator. Sooner in the file,&lt;br /&gt;
the dtd has already specified a version. The difference between&lt;br /&gt;
both version is one specify the version of the syntax to be use,&lt;br /&gt;
and the other, the version of the rules to be used to interprete&lt;br /&gt;
the syntax.&lt;br /&gt;
&lt;br /&gt;
The dtd control the syntax, what keywords are valid and in which&lt;br /&gt;
arrangement. The parsing engine has specific rules how to read the&lt;br /&gt;
syntax and create the game elements. It is possible for different&lt;br /&gt;
parsing engine to operate from the same syntax, be it because the syntax&lt;br /&gt;
allows for many interpretation, or because a specific&lt;br /&gt;
interpretation has been found faulty in some case. Because each&lt;br /&gt;
interpretation could lead to very different instantiation, it is&lt;br /&gt;
best for the map designer to specify the one that should be&lt;br /&gt;
used. Even when no alternative interpretation exist, ie: there is&lt;br /&gt;
only one version available, it is best for the map designer to&lt;br /&gt;
specify it. Should a new one be implemented at a later time, the&lt;br /&gt;
map defined would continue to be instanciated properly.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, the only parsing engine version is&lt;br /&gt;
&amp;quot;0.2.8&amp;quot;. Maps using a version that is not understood by the&lt;br /&gt;
parsing engine of a specific client or server will be&lt;br /&gt;
automatically rejected by said application, on the ground that the&lt;br /&gt;
parsing engine doesn&#039;t know how to operate on it.&lt;br /&gt;
&lt;br /&gt;
Even if only one value exist, it is impossible to provide it as a&lt;br /&gt;
default, as there are no assurance that a new interpretation of&lt;br /&gt;
the syntax will not arrive at a future time.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It is possible for a map designer to indicate specific game&lt;br /&gt;
settings, similar to the ones available through the configuration&lt;br /&gt;
files of the application, to be used with the map. When&lt;br /&gt;
this is not desired, the Settings element can be safely removed&lt;br /&gt;
from the map definition.&lt;br /&gt;
&lt;br /&gt;
Any number of Setting can be defined inside of the Settings&lt;br /&gt;
element. Each Setting defined will overwrite the value previously&lt;br /&gt;
defined in the game. Each new Setting addressing a specific&lt;br /&gt;
configuration item will keep on overwriting previously defined&lt;br /&gt;
values. The Settings items are processed in order, from the top to&lt;br /&gt;
the bottom one.&lt;br /&gt;
&lt;br /&gt;
The Settings should be considered to be global to the World and&lt;br /&gt;
its sub-elements. This has very little relevance at the moment as&lt;br /&gt;
only one World and one Field can exist in the game. It is not&lt;br /&gt;
excluded that future version of the game could support multiple&lt;br /&gt;
elements such as World and Field. Each such elements and sub-elements would&lt;br /&gt;
receive the Settings defined in its parents, but would also be&lt;br /&gt;
able to overwrite parent received Settings for itself and its&lt;br /&gt;
sub-elements. &lt;br /&gt;
&lt;br /&gt;
One such overwriting capacity already exist, in the form of the&lt;br /&gt;
Axes element. This element can and will overwrite the value passed&lt;br /&gt;
by the Setting ARENA_AXES.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, there are no known case where the order of&lt;br /&gt;
writing Setting should matter. There are no garanties of it being&lt;br /&gt;
the case. Be carefull of the order of the Setting provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting ==&lt;br /&gt;
Each individual Setting defines a specific element normally&lt;br /&gt;
configurable throught the config files of the game&lt;br /&gt;
application. For a full list and description of the setting&lt;br /&gt;
available, consult &#039;&#039;&#039;TODO&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The Setting has two attributes, the name and the value. The name&lt;br /&gt;
field hold the setting name as found in the various configuration&lt;br /&gt;
files. The value field will be assigned to the designated setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Setting name=&amp;quot;CYCLE_BRAKE_REFILL&amp;quot; value=&amp;quot;.1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will assing .1 to the configuration item CYCLE_BRAKE_REFILL.&lt;br /&gt;
&lt;br /&gt;
No validation are done on either fields by the parsing engine. The&lt;br /&gt;
values are passed directly to the setting engine, where the usual&lt;br /&gt;
validation is performed. Unexisting or misspelled settings names&lt;br /&gt;
will be ignored. Setting with valid names and invalid values have&lt;br /&gt;
an undetermined effect.&lt;br /&gt;
&lt;br /&gt;
The different Setting used have the potential of overwriding&lt;br /&gt;
client or server ones. While this behavior offers great capacity&lt;br /&gt;
to custom behavior for a specific map, users playing locally on&lt;br /&gt;
their machine and server administrator might find it a disruption&lt;br /&gt;
of their craftfully designed settings. Use with care and&lt;br /&gt;
moderation.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the World element is&lt;br /&gt;
the Field element. Only one Field can be defined.&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;
The following 2 paragraph are post map-0.2.8_beta3 and 0.2.8_beta3.&lt;br /&gt;
&lt;br /&gt;
For clarity purpose, the Axes element, if defined, need to be&lt;br /&gt;
defined first. After this, Spawn point, Walls and Zones can be&lt;br /&gt;
defined in any order.&lt;br /&gt;
&lt;br /&gt;
While a Field without any Spawn points is syntaxly valid, and&lt;br /&gt;
the parsing engine doesnt report any error, the effect is&lt;br /&gt;
undetermined. While a Field without any Wall is syntaxly valid,&lt;br /&gt;
and the parsing engine doesn&#039;t report any error, the effect is&lt;br /&gt;
undetermined.&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;
;xdir&lt;br /&gt;
: This is size of the displacement along the x&#039;s for this axis&lt;br /&gt;
;ydir&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 xdir and ydir 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 angle=&amp;quot;225&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis angle=&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 xdir and a ydir of 1. The real length of the described Axis is &lt;br /&gt;
&amp;lt;math&amp;gt;\sqrt{xdir^2+ydir^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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;2&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-2&amp;quot; ydir=&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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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 xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-3&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;&lt;br /&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;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&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.3.1, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&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;
or, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
== Wall ==&lt;br /&gt;
Walls 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;pre&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;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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&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;
The Wall element has one attribute, the height. Controlling the&lt;br /&gt;
height affect the rendering height of a wall. A height of 1.0 is&lt;br /&gt;
about the same as the height of the original cycle model. A height&lt;br /&gt;
of 4.0 correspond to the Walls rendered with the lowRim setting on&lt;br /&gt;
the client. When no height is defined, the client defined setting&lt;br /&gt;
of either lowRim or highRim is used. This has the advantage of&lt;br /&gt;
respecting the players choice and often, capacity to render high&lt;br /&gt;
walls.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;height&#039;&#039;&lt;br /&gt;
: The height used for the rendering of the Wall.&lt;br /&gt;
&lt;br /&gt;
Example : Using the client default height&lt;br /&gt;
&amp;lt;pre&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;10&amp;quot; y=&amp;quot;10&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 : Controling the height&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Wall height=&amp;quot;2.13&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;Point x=&amp;quot;10&amp;quot; y=&amp;quot;10&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;
== 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;
== Zones ==&lt;br /&gt;
Zone are interactive areas on the Field. They manifest themself as&lt;br /&gt;
huge circles slowly rotating. The players can interact with the&lt;br /&gt;
Zones by entering or being inside them.&lt;br /&gt;
&lt;br /&gt;
The Zone has an attribute effect which allows 3 values: win, death and&lt;br /&gt;
fortress. Entering a Zone of effect win makes the player the round&lt;br /&gt;
winner. Entering a Zone of effect death automatically kills the&lt;br /&gt;
player. Zones of effect fortress need to be occupied to be&lt;br /&gt;
triggered, and once triggered, they make the team the round winner.&lt;br /&gt;
&lt;br /&gt;
The Zone requires a sub element named ShapeCircle. &lt;br /&gt;
&lt;br /&gt;
The ShapeCircle has 2 attributes, the radius and the growth. The&lt;br /&gt;
radius attribute describe the size of the CircleShape and is&lt;br /&gt;
required. The unit used is the same game unit that are used as map&lt;br /&gt;
coordinates. A ShapeCircle with a radius of 10 will extend of 10&lt;br /&gt;
game units in every direction from its center.&lt;br /&gt;
&lt;br /&gt;
The growth describe how the radius of the ShapeCircle changes over&lt;br /&gt;
time. This unit is game units per second from the moment the Zone&lt;br /&gt;
is create, which is the round start.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify a negative growth, in which case the ShapeCircle will&lt;br /&gt;
slowly shrink. Should at any time the radius be of 0 or less, the&lt;br /&gt;
Zone is removed without effect.&lt;br /&gt;
The growth is optional and defaults to 0, which hold the&lt;br /&gt;
ShapeCircle at a constant size during the round.&lt;br /&gt;
&lt;br /&gt;
The ShapeCircle requires a Point sub-element which describe the&lt;br /&gt;
center of the ShapeCircle. The syntax of the Point is the same as&lt;br /&gt;
the one used for the Wall.&lt;br /&gt;
&lt;br /&gt;
It is possible and valid to place the center of the Zone in a&lt;br /&gt;
location that is not accessible to the players, such as in a&lt;br /&gt;
walled compound or outside of the play area. This behavior might&lt;br /&gt;
change in future version. Consult the appropriate documentation.&lt;br /&gt;
&lt;br /&gt;
Nota: It is important to note that while Zones are introduced in&lt;br /&gt;
Arthemis, a more complete implementation will follow in&lt;br /&gt;
Bacchus. Curious minds consulting the documentation presenting the&lt;br /&gt;
Bacchus implementation of Zones will notice that fortress isn&#039;t an&lt;br /&gt;
effect, but rather a trigger type. The Arthemis implementation of&lt;br /&gt;
Zones falsely uses it as an effect instead of exposing a trigger&lt;br /&gt;
mechanism. Map designers are to be warned this will no longer be&lt;br /&gt;
possible in maps defined for Bacchus.&lt;br /&gt;
&lt;br /&gt;
=== Fortress Zone ===&lt;br /&gt;
The fortress Zone is particuliar because it uses a scoring system&lt;br /&gt;
to determine if and when the Zone is triggered. The score is&lt;br /&gt;
affected by the time passed in it by attackers and defenders.&lt;br /&gt;
&lt;br /&gt;
At start time, the score is set to 0.0. While the score can move&lt;br /&gt;
freely, 2 restrictions are always applied. First, the score can&lt;br /&gt;
never drop below 0.0. Second, if the score reaches or exceed 1.0,&lt;br /&gt;
the Zone is triggered.&lt;br /&gt;
&lt;br /&gt;
Each single adversary in the Zone add to the score for their time&lt;br /&gt;
passed in it. Each single defender in the Zone remove to the score&lt;br /&gt;
for their time passed in it. Also, the score always decays. Each&lt;br /&gt;
of these aspect is controlled by a different setting,&lt;br /&gt;
CONQUEST_RATE, DEFEND_RATE and CONQUEST_DECAY_RATE. They all&lt;br /&gt;
express a rate in points per seconds.&lt;br /&gt;
&lt;br /&gt;
;CONQUEST_RATE&lt;br /&gt;
: Any single attacking player in the Zone add points to the score at this rate. &lt;br /&gt;
;DEFEND_RATE&lt;br /&gt;
: Any single defending player in the Zone removes points to the score at this rate. &lt;br /&gt;
;CONQUEST_DECAY_RATE&lt;br /&gt;
: The score of a Zone decays at this rate, irrelevantly of the numbers of attackers and defenders in the Zone. &lt;br /&gt;
&lt;br /&gt;
These 3 settings are global for all the Zones on a map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Map writing best practice ===&lt;br /&gt;
&lt;br /&gt;
==== Comment your work ====&lt;br /&gt;
&lt;br /&gt;
You should always comment the various parts of your work. Doing so improve maintainability. Something that is obvious during the creation of a particular map often becomes very cryptic after a few weeks. A good comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comment in xml start with &amp;quot;&amp;lt;!--&amp;quot; (without the quotes) and ends with &amp;quot;--&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t highlight the commented part, be careful not to exclude a part of your map by mistake.&lt;br /&gt;
&lt;br /&gt;
==== Arena size ====&lt;br /&gt;
&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;
==== Don&#039;t overload attributes ====&lt;br /&gt;
&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;
xdir and ydir attribute are never queried.&lt;br /&gt;
&lt;br /&gt;
While the engine ignore the exceeding data, this practice has the following drawbacks:&lt;br /&gt;
&lt;br /&gt;
* File size: The exceeding information is never used, but need to be transmitted as part of the file, and stored.&lt;br /&gt;
* Readability: Exceeding information complicate the reading of a map by humans. &lt;br /&gt;
* Maintenance: Maintenance of the map is not much more complex. If the author is minimalist, he/she risk updating the part of information that is ignored. Extremely good knowledge of the working of the parser is required to avoid this pitfall, and the change is only valid if the rule of precedences aren&#039;t updated. Specifying only one set of information avoid this problem. Also, if both set of information are updated, then the task for the author is double, and so are the risks for error.&lt;br /&gt;
&lt;br /&gt;
=== Resource file name convention ===&lt;br /&gt;
&lt;br /&gt;
Resource are external content that makes the game interesting. Textures, sounds, models and maps are all resources for Armagetron Ad. While at the time of writing of this tutorial, only maps are supported as true resources, soon support for the other types will be added. Also, while this section incorporated in the Maps tutorial, it might be moved as an independent document, and the standard 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 resources for Armagetron Ad should follow the following naming 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&lt;br /&gt;
: The name of the person who created the resource. This can be the full name, a nick name (such as the ones used on the Armagetron Ad forum) of the author. Alternatively, the author can forgo his or her name and instead opt for a group name. Group name should be used when the author want to indicate that a set of resources are associate with a group. Instances of this could be when the resources are for a clan, a community, a [set of] server[s].&lt;br /&gt;
;SubDirectory&lt;br /&gt;
: Prolific authors and those are free to set up any number of sub directories to help them organize and possibly categorize their resources. The Armagetron Ad team recommend you to categorize resources by topics (ie: all the resources required for a particular movie-pack set in the same sub directory) over other categorization, such as categorization by type (ie: all the floor tiles set in the same sub directory). Any number of sub directory level should be supported. This is not a mandatory item.&lt;br /&gt;
;ResourceName&lt;br /&gt;
: The actual name of the resource. This should be descriptive, and somewhat unique to facilitate identification of the described resource. The advantage of specifying a somewhat unique name here is that should the resource be accidentally moved out of its folder, it is still possible to quickly and easily identify it. A special note for maps: the ResourceName should be the same as the name attribute of the Map element defined in the xml file.&lt;br /&gt;
;VersionNumber&lt;br /&gt;
: This part should be used by the author to identify which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new resources, Armagetron Ad rely solely on this part to be updated. Should a resource be updated and the old name kept, it would cause problems between different clients. Client already having the old resource 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 would get the latest version. The actual format to be used for the VersionNumber is left to the choice of the author. While the Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar 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, ...). Keep in mind that it should be obvious to other as to which is the most up to date version of the resource. A special note for maps: the VersionNumber should be the same as the version attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;Extension&lt;br /&gt;
: This is the regular type of extension. While Armagetron Ad doesn&#039;t verify that the extension describe the right type of content, it is favorable for other users that you set it to the appropriate 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;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 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;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Parallelogram arena ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Parallelogram-1.0.png|right|thumbnail|Parallelogram]]&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot; category=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;World&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.2&amp;quot; ydir=&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HexaTRON ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HexaTRON-0.2.png|right|thumbnail|HexaTRON]]&lt;br /&gt;
&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 note that this is 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;&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot; category=&amp;quot;HexaTRON&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About the &amp;quot;undefined and unsupported&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and unsupported&amp;quot;. While it may be possible to do them now, and even amusing to do it, they are strongly discouraged. Later version of the World format will most probably conflict with those behaviors. This will make such behaviors difficult to preserve, if possible at all. For this reasons, it has been decided that _NO_ effort would be put to maintain them. Use them if you want, but do not come complaining if and when they stop working. &lt;br /&gt;
&lt;br /&gt;
== TODO: ==&lt;br /&gt;
&lt;br /&gt;
* how to submit resource (why is this todo? it&#039;s covered in Resource Repository --Luke-Jr)&lt;br /&gt;
* Extension&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=2230</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=2230"/>
		<updated>2005-11-13T13:14:12Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Axis uses xdir and ydir, not x and y&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To correct: &lt;br /&gt;
- &#039;&#039;&#039;dtd version name&#039;&#039;&#039;&lt;br /&gt;
- &#039;&#039;&#039;map version&#039;&#039;&#039;&lt;br /&gt;
- &#039;&#039;&#039;pre-intro text&#039;&#039;&#039; &lt;br /&gt;
- &#039;&#039;&#039;concept&#039;&#039;&#039; might be the wrong word, people might interpret it&lt;br /&gt;
as &amp;quot;the concept used for the map is to give a feeling of claustrophobia&amp;quot;&lt;br /&gt;
- text about commisioner is pure crap&lt;br /&gt;
&lt;br /&gt;
This tutorial is to help map designer to get a grasp of the Map&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This version of the tutorial address the syntax defined by map-0.2.8_beta3.dtd and present the rules of interpreting the syntax as used by the parsing engine in the version 0.2.8 of Armagetron Advance.&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;
[[Image:original-1.0.1.png|right|thumbnail|Original Armagetron 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;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
	         Converted to XML by philippeqc.&lt;br /&gt;
	         License: Do with it what you want.                          --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
	&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Map format start with a XML header. The actual definition&lt;br /&gt;
of the Map is wrapped in a Resource. The Resource gives a&lt;br /&gt;
description of the content, such as the author and the version of&lt;br /&gt;
the map included. This particuliar map is the xml version of the&lt;br /&gt;
original map that supported directly in the game before version&lt;br /&gt;
0.2.8 (Arthemis). &lt;br /&gt;
&lt;br /&gt;
Skippin ahead in to the Field element, line 11 defines that &lt;br /&gt;
that 4 axes are to be&lt;br /&gt;
used. From line 13 to 26, 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;
== Header ==&lt;br /&gt;
Fill this part&lt;br /&gt;
&lt;br /&gt;
== Resource ==&lt;br /&gt;
The Resource element describe some meta-information of the Map,&lt;br /&gt;
such as who created it, how should the resource file be named and&lt;br /&gt;
what type of information is to be expected.&lt;br /&gt;
&lt;br /&gt;
One part of the Resource details describe who made this map a&lt;br /&gt;
reality. In the Resource element, it is possible to differenciate&lt;br /&gt;
between the person or organism that comissioned the map, the&lt;br /&gt;
commisionner, and the person who executed the request and coded&lt;br /&gt;
it, the author. &lt;br /&gt;
&lt;br /&gt;
Both operations might be carried by the same and only person, in&lt;br /&gt;
this instance both entities are the same and the commissioner&lt;br /&gt;
field should be left blank. The commissioner field should be used&lt;br /&gt;
when the concept of a map and its execution are performed by two&lt;br /&gt;
different persons or entities. It could range from anything from&lt;br /&gt;
&amp;quot;could someone make a map where the feeling of &amp;lt;X&amp;gt; is emphased&amp;quot; to&lt;br /&gt;
coding from a hand-drawn sketch. The commissioner could also be&lt;br /&gt;
implied. Without him/it ever placing an open request, a&lt;br /&gt;
commisioner could be assign to a map when the author whan to&lt;br /&gt;
express an assumed sharing of the creation of the map. This can be&lt;br /&gt;
the case, for example, when the member of a Clan wrote a map that&lt;br /&gt;
falls in the ideals of the Clan.&lt;br /&gt;
&lt;br /&gt;
Maps can be implicitly grouped together. The category field is&lt;br /&gt;
there for this purpose. Prolific authors and their public will&lt;br /&gt;
appreciate a clear grouping of similar themed maps.&lt;br /&gt;
&lt;br /&gt;
As ever refining one&#039;s work is a very respected quality in the&lt;br /&gt;
Armagetron community, the latest changes need to be properly&lt;br /&gt;
propagated to everybody. The version field allow an author to&lt;br /&gt;
identify each specific instance of her work, and also insure that&lt;br /&gt;
a client will receive the exact version used by a server when&lt;br /&gt;
playing on it.&lt;br /&gt;
&lt;br /&gt;
The type specifies that the file hold an Armagetron Advance&lt;br /&gt;
map. While this is the only type available at the moment, the&lt;br /&gt;
development team is eager to expand this in the furture.&lt;br /&gt;
&lt;br /&gt;
Finally, and most importantly, the name of the &#039;&#039;ouvrage&#039;&#039; being&lt;br /&gt;
presented. &lt;br /&gt;
&lt;br /&gt;
The fields for Resource are:&lt;br /&gt;
;name&lt;br /&gt;
:The name of the map, mandatory.&lt;br /&gt;
;type&lt;br /&gt;
:The only valid type is &amp;quot;aamap&amp;quot;. This field is defaulted &amp;quot;aamap&amp;quot; when abscent.&lt;br /&gt;
;version &lt;br /&gt;
:The version of the map described in this particuliar file. This value should be modified each time a change is applied to the map to ensure everybody have the proper copy. This field is defaulted to &amp;quot;1.0&amp;quot; when abscent.&lt;br /&gt;
;author&lt;br /&gt;
:The author who produced this map. This field is defaulted to &amp;quot;Anonymous&amp;quot; when abscent.&lt;br /&gt;
;commisioner&lt;br /&gt;
:The entity who dreamt, requested or even inspired in any way this map. This field is optional and has no default value. &lt;br /&gt;
;category&lt;br /&gt;
:How this map should be categorised. This field can have any number of sub categories, each separated by a &amp;quot;\&amp;quot;. An example could be &amp;quot;category\subcategory\subsubcategory&amp;quot;. This field is defaulted to &amp;quot;unsorted&amp;quot; when abscent. &lt;br /&gt;
&lt;br /&gt;
To facilitate manipulation of the file over distributed systems,&lt;br /&gt;
the Resource holds explicit information about the naming and&lt;br /&gt;
storing of the file. This information can be used by tools such as&lt;br /&gt;
scripts and resource repositories to manipulate the file. &lt;br /&gt;
&lt;br /&gt;
Many tools, including the game client, will expect the following&lt;br /&gt;
to indicate the location of a &lt;br /&gt;
filee inside the local store of resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Author&amp;gt;/[Category/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;ResourceType&amp;gt;.&amp;lt;Extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
This element is the basic holder of the description of the&lt;br /&gt;
Map. From the opening element to the closing one, all the&lt;br /&gt;
information will be used to construct an in-game representation&lt;br /&gt;
for the players to explore and possibly compete in.&lt;br /&gt;
&lt;br /&gt;
The version attribute of the map indicate an specific parsing&lt;br /&gt;
engine version that should be used to express the map in the exact&lt;br /&gt;
manners that are desired by the map creator. Sooner in the file,&lt;br /&gt;
the dtd has already specified a version. The difference between&lt;br /&gt;
both version is one specify the version of the syntax to be use,&lt;br /&gt;
and the other, the version of the rules to be used to interprete&lt;br /&gt;
the syntax.&lt;br /&gt;
&lt;br /&gt;
The dtd control the syntax, what keywords are valid and in which&lt;br /&gt;
arrangement. The parsing engine has specific rules how to read the&lt;br /&gt;
syntax and create the game elements. It is possible for different&lt;br /&gt;
parsing engine to operate from the same syntax, be it because the syntax&lt;br /&gt;
allows for many interpretation, or because a specific&lt;br /&gt;
interpretation has been found faulty in some case. Because each&lt;br /&gt;
interpretation could lead to very different instantiation, it is&lt;br /&gt;
best for the map designer to specify the one that should be&lt;br /&gt;
used. Even when no alternative interpretation exist, ie: there is&lt;br /&gt;
only one version available, it is best for the map designer to&lt;br /&gt;
specify it. Should a new one be implemented at a later time, the&lt;br /&gt;
map defined would continue to be instanciated properly.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, the only parsing engine version is&lt;br /&gt;
&amp;quot;0.2.8&amp;quot;. Maps using a version that is not understood by the&lt;br /&gt;
parsing engine of a specific client or server will be&lt;br /&gt;
automatically rejected by said application, on the ground that the&lt;br /&gt;
parsing engine doesn&#039;t know how to operate on it.&lt;br /&gt;
&lt;br /&gt;
Even if only one value exist, it is impossible to provide it as a&lt;br /&gt;
default, as there are no assurance that a new interpretation of&lt;br /&gt;
the syntax will not arrive at a future time.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It is possible for a map designer to indicate specific game&lt;br /&gt;
settings, similar to the ones available through the configuration&lt;br /&gt;
files of the application, to be used with the map. When&lt;br /&gt;
this is not desired, the Settings element can be safely removed&lt;br /&gt;
from the map definition.&lt;br /&gt;
&lt;br /&gt;
Any number of Setting can be defined inside of the Settings&lt;br /&gt;
element. Each Setting defined will overwrite the value previously&lt;br /&gt;
defined in the game. Each new Setting addressing a specific&lt;br /&gt;
configuration item will keep on overwriting previously defined&lt;br /&gt;
values. The Settings items are processed in order, from the top to&lt;br /&gt;
the bottom one.&lt;br /&gt;
&lt;br /&gt;
The Settings should be considered to be global to the World and&lt;br /&gt;
its sub-elements. This has very little relevance at the moment as&lt;br /&gt;
only one World and one Field can exist in the game. It is not&lt;br /&gt;
excluded that future version of the game could support multiple&lt;br /&gt;
elements such as World and Field. Each such elements and sub-elements would&lt;br /&gt;
receive the Settings defined in its parents, but would also be&lt;br /&gt;
able to overwrite parent received Settings for itself and its&lt;br /&gt;
sub-elements. &lt;br /&gt;
&lt;br /&gt;
One such overwriting capacity already exist, in the form of the&lt;br /&gt;
Axes element. This element can and will overwrite the value passed&lt;br /&gt;
by the Setting ARENA_AXES.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, there are no known case where the order of&lt;br /&gt;
writing Setting should matter. There are no garanties of it being&lt;br /&gt;
the case. Be carefull of the order of the Setting provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting ==&lt;br /&gt;
Each individual Setting defines a specific element normally&lt;br /&gt;
configurable throught the config files of the game&lt;br /&gt;
application. For a full list and description of the setting&lt;br /&gt;
available, consult &#039;&#039;&#039;TODO&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The Setting has two attributes, the name and the value. The name&lt;br /&gt;
field hold the setting name as found in the various configuration&lt;br /&gt;
files. The value field will be assigned to the designated setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Setting name=&amp;quot;CYCLE_BRAKE_REFILL&amp;quot; value=&amp;quot;.1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will assing .1 to the configuration item CYCLE_BRAKE_REFILL.&lt;br /&gt;
&lt;br /&gt;
No validation are done on either fields by the parsing engine. The&lt;br /&gt;
values are passed directly to the setting engine, where the usual&lt;br /&gt;
validation is performed. Unexisting or misspelled settings names&lt;br /&gt;
will be ignored. Setting with valid names and invalid values have&lt;br /&gt;
an undetermined effect.&lt;br /&gt;
&lt;br /&gt;
The different Setting used have the potential of overwriding&lt;br /&gt;
client or server ones. While this behavior offers great capacity&lt;br /&gt;
to custom behavior for a specific map, users playing locally on&lt;br /&gt;
their machine and server administrator might find it a disruption&lt;br /&gt;
of their craftfully designed settings. Use with care and&lt;br /&gt;
moderation.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the World element is&lt;br /&gt;
the Field element. Only one Field can be defined.&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;
The following 2 paragraph are post map-0.2.8_beta3 and 0.2.8_beta3.&lt;br /&gt;
&lt;br /&gt;
For clarity purpose, the Axes element, if defined, need to be&lt;br /&gt;
defined first. After this, Spawn point, Walls and Zones can be&lt;br /&gt;
defined in any order.&lt;br /&gt;
&lt;br /&gt;
While a Field without any Spawn points is syntaxly valid, and&lt;br /&gt;
the parsing engine doesnt report any error, the effect is&lt;br /&gt;
undetermined. While a Field without any Wall is syntaxly valid,&lt;br /&gt;
and the parsing engine doesn&#039;t report any error, the effect is&lt;br /&gt;
undetermined.&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;
;xdir&lt;br /&gt;
: This is size of the displacement along the x&#039;s for this axis&lt;br /&gt;
;ydir&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 xdir and ydir 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 angle=&amp;quot;225&amp;quot; length=&amp;quot;1.4142&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis angle=&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 xdir and a ydir of 1. The real length of the described Axis is &lt;br /&gt;
&amp;lt;math&amp;gt;\sqrt{xdir^2+ydir^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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;2&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-2&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-2&amp;quot; ydir=&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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-10&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-20&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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 xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-3&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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 xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&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;&lt;br /&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;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&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.3.1, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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 xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.5&amp;quot; ydir=&amp;quot;-0.866025404&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;1&amp;quot; ydir=&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;
or, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0&amp;quot; ydir=&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;
== Wall ==&lt;br /&gt;
Walls 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;pre&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;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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&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;
The Wall element has one attribute, the height. Controlling the&lt;br /&gt;
height affect the rendering height of a wall. A height of 1.0 is&lt;br /&gt;
about the same as the height of the original cycle model. A height&lt;br /&gt;
of 4.0 correspond to the Walls rendered with the lowRim setting on&lt;br /&gt;
the client. When no height is defined, the client defined setting&lt;br /&gt;
of either lowRim or highRim is used. This has the advantage of&lt;br /&gt;
respecting the players choice and often, capacity to render high&lt;br /&gt;
walls.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;height&#039;&#039;&lt;br /&gt;
: The height used for the rendering of the Wall.&lt;br /&gt;
&lt;br /&gt;
Example : Using the client default height&lt;br /&gt;
&amp;lt;pre&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;10&amp;quot; y=&amp;quot;10&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 : Controling the height&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Wall height=&amp;quot;2.13&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;Point x=&amp;quot;10&amp;quot; y=&amp;quot;10&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;
== 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;
== Zones ==&lt;br /&gt;
Zone are interactive areas on the Field. They manifest themself as&lt;br /&gt;
huge circles slowly rotating. The players can interact with the&lt;br /&gt;
Zones by entering or being inside them.&lt;br /&gt;
&lt;br /&gt;
The Zone has an attribute effect which allows 3 values: win, death and&lt;br /&gt;
fortress. Entering a Zone of effect win makes the player the round&lt;br /&gt;
winner. Entering a Zone of effect death automatically kills the&lt;br /&gt;
player. Zones of effect fortress need to be occupied to be&lt;br /&gt;
triggered, and once triggered, they make the team the round winner.&lt;br /&gt;
&lt;br /&gt;
The Zone requires a sub element named ShapeCircle. &lt;br /&gt;
&lt;br /&gt;
The ShapeCircle has 2 attributes, the radius and the growth. The&lt;br /&gt;
radius attribute describe the size of the CircleShape and is&lt;br /&gt;
required. The unit used is the same game unit that are used as map&lt;br /&gt;
coordinates. A ShapeCircle with a radius of 10 will extend of 10&lt;br /&gt;
game units in every direction from its center.&lt;br /&gt;
&lt;br /&gt;
The growth describe how the radius of the ShapeCircle changes over&lt;br /&gt;
time. This unit is game units per second from the moment the Zone&lt;br /&gt;
is create, which is the round start.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify a negative growth, in which case the ShapeCircle will&lt;br /&gt;
slowly shrink. Should at any time the radius be of 0 or less, the&lt;br /&gt;
Zone is removed without effect.&lt;br /&gt;
The growth is optional and defaults to 0, which hold the&lt;br /&gt;
ShapeCircle at a constant size during the round.&lt;br /&gt;
&lt;br /&gt;
The ShapeCircle requires a Point sub-element which describe the&lt;br /&gt;
center of the ShapeCircle. The syntax of the Point is the same as&lt;br /&gt;
the one used for the Wall.&lt;br /&gt;
&lt;br /&gt;
It is possible and valid to place the center of the Zone in a&lt;br /&gt;
location that is not accessible to the players, such as in a&lt;br /&gt;
walled compound or outside of the play area. This behavior might&lt;br /&gt;
change in future version. Consult the appropriate documentation.&lt;br /&gt;
&lt;br /&gt;
Nota: It is important to note that while Zones are introduced in&lt;br /&gt;
Arthemis, a more complete implementation will follow in&lt;br /&gt;
Bacchus. Curious minds consulting the documentation presenting the&lt;br /&gt;
Bacchus implementation of Zones will notice that fortress isn&#039;t an&lt;br /&gt;
effect, but rather a trigger type. The Arthemis implementation of&lt;br /&gt;
Zones falsely uses it as an effect instead of exposing a trigger&lt;br /&gt;
mechanism. Map designers are to be warned this will no longer be&lt;br /&gt;
possible in maps defined for Bacchus.&lt;br /&gt;
&lt;br /&gt;
=== Fortress Zone ===&lt;br /&gt;
The fortress Zone is particuliar because it uses a scoring system&lt;br /&gt;
to determine if and when the Zone is triggered. The score is&lt;br /&gt;
affected by the time passed in it by attackers and defenders.&lt;br /&gt;
&lt;br /&gt;
At start time, the score is set to 0.0. While the score can move&lt;br /&gt;
freely, 2 restrictions are always applied. First, the score can&lt;br /&gt;
never drop below 0.0. Second, if the score reaches or exceed 1.0,&lt;br /&gt;
the Zone is triggered.&lt;br /&gt;
&lt;br /&gt;
Each single adversary in the Zone add to the score for their time&lt;br /&gt;
passed in it. Each single defender in the Zone remove to the score&lt;br /&gt;
for their time passed in it. Also, the score always decays. Each&lt;br /&gt;
of these aspect is controlled by a different setting,&lt;br /&gt;
CONQUEST_RATE, DEFEND_RATE and CONQUEST_DECAY_RATE. They all&lt;br /&gt;
express a rate in points per seconds.&lt;br /&gt;
&lt;br /&gt;
;CONQUEST_RATE&lt;br /&gt;
: Any single attacking player in the Zone add points to the score at this rate. &lt;br /&gt;
;DEFEND_RATE&lt;br /&gt;
: Any single defending player in the Zone removes points to the score at this rate. &lt;br /&gt;
;CONQUEST_DECAY_RATE&lt;br /&gt;
: The score of a Zone decays at this rate, irrelevantly of the numbers of attackers and defenders in the Zone. &lt;br /&gt;
&lt;br /&gt;
These 3 settings are global for all the Zones on a map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Map writing best practice ===&lt;br /&gt;
&lt;br /&gt;
==== Comment your work ====&lt;br /&gt;
&lt;br /&gt;
You should always comment the various parts of your work. Doing so improve maintainability. Something that is obvious during the creation of a particular map often becomes very cryptic after a few weeks. A good comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comment in xml start with &amp;quot;&amp;lt;!--&amp;quot; (without the quotes) and ends with &amp;quot;--&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t highlight the commented part, be careful not to exclude a part of your map by mistake.&lt;br /&gt;
&lt;br /&gt;
==== Arena size ====&lt;br /&gt;
&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;
==== Don&#039;t overload attributes ====&lt;br /&gt;
&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;
xdir and ydir attribute are never queried.&lt;br /&gt;
&lt;br /&gt;
While the engine ignore the exceeding data, this practice has the following drawbacks:&lt;br /&gt;
&lt;br /&gt;
* File size: The exceeding information is never used, but need to be transmitted as part of the file, and stored.&lt;br /&gt;
* Readability: Exceeding information complicate the reading of a map by humans. &lt;br /&gt;
* Maintenance: Maintenance of the map is not much more complex. If the author is minimalist, he/she risk updating the part of information that is ignored. Extremely good knowledge of the working of the parser is required to avoid this pitfall, and the change is only valid if the rule of precedences aren&#039;t updated. Specifying only one set of information avoid this problem. Also, if both set of information are updated, then the task for the author is double, and so are the risks for error.&lt;br /&gt;
&lt;br /&gt;
=== Resource file name convention ===&lt;br /&gt;
&lt;br /&gt;
Resource are external content that makes the game interesting. Textures, sounds, models and maps are all resources for Armagetron Ad. While at the time of writing of this tutorial, only maps are supported as true resources, soon support for the other types will be added. Also, while this section incorporated in the Maps tutorial, it might be moved as an independent document, and the standard 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 resources for Armagetron Ad should follow the following naming 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&lt;br /&gt;
: The name of the person who created the resource. This can be the full name, a nick name (such as the ones used on the Armagetron Ad forum) of the author. Alternatively, the author can forgo his or her name and instead opt for a group name. Group name should be used when the author want to indicate that a set of resources are associate with a group. Instances of this could be when the resources are for a clan, a community, a [set of] server[s].&lt;br /&gt;
;SubDirectory&lt;br /&gt;
: Prolific authors and those are free to set up any number of sub directories to help them organize and possibly categorize their resources. The Armagetron Ad team recommend you to categorize resources by topics (ie: all the resources required for a particular movie-pack set in the same sub directory) over other categorization, such as categorization by type (ie: all the floor tiles set in the same sub directory). Any number of sub directory level should be supported. This is not a mandatory item.&lt;br /&gt;
;ResourceName&lt;br /&gt;
: The actual name of the resource. This should be descriptive, and somewhat unique to facilitate identification of the described resource. The advantage of specifying a somewhat unique name here is that should the resource be accidentally moved out of its folder, it is still possible to quickly and easily identify it. A special note for maps: the ResourceName should be the same as the name attribute of the Map element defined in the xml file.&lt;br /&gt;
;VersionNumber&lt;br /&gt;
: This part should be used by the author to identify which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new resources, Armagetron Ad rely solely on this part to be updated. Should a resource be updated and the old name kept, it would cause problems between different clients. Client already having the old resource 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 would get the latest version. The actual format to be used for the VersionNumber is left to the choice of the author. While the Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar 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, ...). Keep in mind that it should be obvious to other as to which is the most up to date version of the resource. A special note for maps: the VersionNumber should be the same as the version attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;Extension&lt;br /&gt;
: This is the regular type of extension. While Armagetron Ad doesn&#039;t verify that the extension describe the right type of content, it is favorable for other users that you set it to the appropriate 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;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 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;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Parallelogram arena ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Parallelogram-1.0.png|right|thumbnail|Parallelogram]]&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot; category=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;World&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.2&amp;quot; ydir=&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HexaTRON ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HexaTRON-0.2.png|right|thumbnail|HexaTRON]]&lt;br /&gt;
&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 note that this is 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;&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot; category=&amp;quot;HexaTRON&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About the &amp;quot;undefined and unsupported&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and unsupported&amp;quot;. While it may be possible to do them now, and even amusing to do it, they are strongly discouraged. Later version of the World format will most probably conflict with those behaviors. This will make such behaviors difficult to preserve, if possible at all. For this reasons, it has been decided that _NO_ effort would be put to maintain them. Use them if you want, but do not come complaining if and when they stop working. &lt;br /&gt;
&lt;br /&gt;
== TODO: ==&lt;br /&gt;
&lt;br /&gt;
* how to submit resource (why is this todo? it&#039;s covered in Resource Repository --Luke-Jr)&lt;br /&gt;
* Extension&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=2225</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=2225"/>
		<updated>2005-11-11T19:20:34Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Axis uses xdir and ydir&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is to help map designer to get a grasp of the Map&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This version of the tutorial address the syntax defined by map-0.2.8_beta3.dtd and present the rules of interpreting the syntax as used by the parsing engine in the version 0.2.8 of Armagetron Advance.&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;
[[Image:original-1.0.1.png|right|thumbnail|Original Armagetron 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;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
	         Converted to XML by philippeqc.&lt;br /&gt;
	         License: Do with it what you want.                          --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
	&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Map format start with a XML header. The actual definition&lt;br /&gt;
of the Map is wrapped in a Resource. The Resource gives a&lt;br /&gt;
description of the content, such as the author and the version of&lt;br /&gt;
the map included. This particuliar map is the xml version of the&lt;br /&gt;
original map that supported directly in the game before version&lt;br /&gt;
0.2.8 (Arthemis). &lt;br /&gt;
&lt;br /&gt;
Skippin ahead in to the Field element, line 11 defines that &lt;br /&gt;
that 4 axes are to be&lt;br /&gt;
used. From line 13 to 26, 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;
== Header ==&lt;br /&gt;
Fill this part&lt;br /&gt;
&lt;br /&gt;
== Resource ==&lt;br /&gt;
The Resource element describe some meta-information of the Map,&lt;br /&gt;
such as who created it, how should the resource file be named and&lt;br /&gt;
what type of information is to be expected.&lt;br /&gt;
&lt;br /&gt;
One part of the Resource details describe who made this map a&lt;br /&gt;
reality. In the Resource element, it is possible to differenciate&lt;br /&gt;
between the person or organism that comissioned the map, the&lt;br /&gt;
commisionner, and the person who executed the request and coded&lt;br /&gt;
it, the author. &lt;br /&gt;
&lt;br /&gt;
Both operations might be carried by the same and only person, in&lt;br /&gt;
this instance both entities are the same and the commissioner&lt;br /&gt;
field should be left blank. The commissioner field should be used&lt;br /&gt;
when the concept of a map and its execution are performed by two&lt;br /&gt;
different persons or entities. It could range from anything from&lt;br /&gt;
&amp;quot;could someone make a map where the feeling of &amp;lt;X&amp;gt; is emphased&amp;quot; to&lt;br /&gt;
coding from a hand-drawn sketch. The commissioner could also be&lt;br /&gt;
implied. Without him/it ever placing an open request, a&lt;br /&gt;
commisioner could be assign to a map when the author whan to&lt;br /&gt;
express an assumed sharing of the creation of the map. This can be&lt;br /&gt;
the case, for example, when the member of a Clan wrote a map that&lt;br /&gt;
falls in the ideals of the Clan.&lt;br /&gt;
&lt;br /&gt;
Maps can be implicitly grouped together. The category field is&lt;br /&gt;
there for this purpose. Prolific authors and their public will&lt;br /&gt;
appreciate a clear grouping of similar themed maps.&lt;br /&gt;
&lt;br /&gt;
As ever refining one&#039;s work is a very respected quality in the&lt;br /&gt;
Armagetron community, the latest changes need to be properly&lt;br /&gt;
propagated to everybody. The version field allow an author to&lt;br /&gt;
identify each specific instance of her work, and also insure that&lt;br /&gt;
a client will receive the exact version used by a server when&lt;br /&gt;
playing on it.&lt;br /&gt;
&lt;br /&gt;
The type specifies that the file hold an Armagetron Advance&lt;br /&gt;
map. While this is the only type available at the moment, the&lt;br /&gt;
development team is eager to expand this in the furture.&lt;br /&gt;
&lt;br /&gt;
Finally, and most importantly, the name of the &#039;&#039;ouvrage&#039;&#039; being&lt;br /&gt;
presented. &lt;br /&gt;
&lt;br /&gt;
The fields for Resource are:&lt;br /&gt;
;name&lt;br /&gt;
:The name of the map, mandatory.&lt;br /&gt;
;type&lt;br /&gt;
:The only valid type is &amp;quot;aamap&amp;quot;. This field is defaulted &amp;quot;aamap&amp;quot; when abscent.&lt;br /&gt;
;version &lt;br /&gt;
:The version of the map described in this particuliar file. This value should be modified each time a change is applied to the map to ensure everybody have the proper copy. This field is defaulted to &amp;quot;1.0&amp;quot; when abscent.&lt;br /&gt;
;author&lt;br /&gt;
:The author who produced this map. This field is defaulted to &amp;quot;Anonymous&amp;quot; when abscent.&lt;br /&gt;
;commisioner&lt;br /&gt;
:The entity who dreamt, requested or even inspired in any way this map. This field is optional and has no default value. &lt;br /&gt;
;category&lt;br /&gt;
:How this map should be categorised. This field can have any number of sub categories, each separated by a &amp;quot;\&amp;quot;. An example could be &amp;quot;category\subcategory\subsubcategory&amp;quot;. This field is defaulted to &amp;quot;unsorted&amp;quot; when abscent. &lt;br /&gt;
&lt;br /&gt;
To facilitate manipulation of the file over distributed systems,&lt;br /&gt;
the Resource holds explicit information about the naming and&lt;br /&gt;
storing of the file. This information can be used by tools such as&lt;br /&gt;
scripts and resource repositories to manipulate the file. &lt;br /&gt;
&lt;br /&gt;
Many tools, including the game client, will expect the following&lt;br /&gt;
to indicate the location of a &lt;br /&gt;
filee inside the local store of resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Author&amp;gt;/[Category/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;ResourceType&amp;gt;.&amp;lt;Extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
This element is the basic holder of the description of the&lt;br /&gt;
Map. From the opening element to the closing one, all the&lt;br /&gt;
information will be used to construct an in-game representation&lt;br /&gt;
for the players to explore and possibly compete in.&lt;br /&gt;
&lt;br /&gt;
The version attribute of the map indicate an specific parsing&lt;br /&gt;
engine version that should be used to express the map in the exact&lt;br /&gt;
manners that are desired by the map creator. Sooner in the file,&lt;br /&gt;
the dtd has already specified a version. The difference between&lt;br /&gt;
both version is one specify the version of the syntax to be use,&lt;br /&gt;
and the other, the version of the rules to be used to interprete&lt;br /&gt;
the syntax.&lt;br /&gt;
&lt;br /&gt;
The dtd control the syntax, what keywords are valid and in which&lt;br /&gt;
arrangement. The parsing engine has specific rules how to read the&lt;br /&gt;
syntax and create the game elements. It is possible for different&lt;br /&gt;
parsing engine to operate from the same syntax, be it because the syntax&lt;br /&gt;
allows for many interpretation, or because a specific&lt;br /&gt;
interpretation has been found faulty in some case. Because each&lt;br /&gt;
interpretation could lead to very different instantiation, it is&lt;br /&gt;
best for the map designer to specify the one that should be&lt;br /&gt;
used. Even when no alternative interpretation exist, ie: there is&lt;br /&gt;
only one version available, it is best for the map designer to&lt;br /&gt;
specify it. Should a new one be implemented at a later time, the&lt;br /&gt;
map defined would continue to be instanciated properly.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, the only parsing engine version is&lt;br /&gt;
&amp;quot;0.2.8&amp;quot;. Maps using a version that is not understood by the&lt;br /&gt;
parsing engine of a specific client or server will be&lt;br /&gt;
automatically rejected by said application, on the ground that the&lt;br /&gt;
parsing engine doesn&#039;t know how to operate on it.&lt;br /&gt;
&lt;br /&gt;
Even if only one value exist, it is impossible to provide it as a&lt;br /&gt;
default, as there are no assurance that a new interpretation of&lt;br /&gt;
the syntax will not arrive at a future time.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It is possible for a map designer to indicate specific game&lt;br /&gt;
settings, similar to the ones available through the configuration&lt;br /&gt;
files of the application, to be used with the map. When&lt;br /&gt;
this is not desired, the Settings element can be safely removed&lt;br /&gt;
from the map definition.&lt;br /&gt;
&lt;br /&gt;
Any number of Setting can be defined inside of the Settings&lt;br /&gt;
element. Each Setting defined will overwrite the value previously&lt;br /&gt;
defined in the game. Each new Setting addressing a specific&lt;br /&gt;
configuration item will keep on overwriting previously defined&lt;br /&gt;
values. The Settings items are processed in order, from the top to&lt;br /&gt;
the bottom one.&lt;br /&gt;
&lt;br /&gt;
The Settings should be considered to be global to the World and&lt;br /&gt;
its sub-elements. This has very little relevance at the moment as&lt;br /&gt;
only one World and one Field can exist in the game. It is not&lt;br /&gt;
excluded that future version of the game could support multiple&lt;br /&gt;
elements such as World and Field. Each such elements and sub-elements would&lt;br /&gt;
receive the Settings defined in its parents, but would also be&lt;br /&gt;
able to overwrite parent received Settings for itself and its&lt;br /&gt;
sub-elements. &lt;br /&gt;
&lt;br /&gt;
One such overwriting capacity already exist, in the form of the&lt;br /&gt;
Axes element. This element can and will overwrite the value passed&lt;br /&gt;
by the Setting ARENA_AXES.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, there are no known case where the order of&lt;br /&gt;
writing Setting should matter. There are no garanties of it being&lt;br /&gt;
the case. Be carefull of the order of the Setting provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting ==&lt;br /&gt;
Each individual Setting defines a specific element normally&lt;br /&gt;
configurable throught the config files of the game&lt;br /&gt;
application. For a full list and description of the setting&lt;br /&gt;
available, consult &#039;&#039;&#039;TODO&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The Setting has two attributes, the name and the value. The name&lt;br /&gt;
field hold the setting name as found in the various configuration&lt;br /&gt;
files. The value field will be assigned to the designated setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Setting name=&amp;quot;CYCLE_BRAKE_REFILL&amp;quot; value=&amp;quot;.1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will assing .1 to the configuration item CYCLE_BRAKE_REFILL.&lt;br /&gt;
&lt;br /&gt;
No validation are done on either fields by the parsing engine. The&lt;br /&gt;
values are passed directly to the setting engine, where the usual&lt;br /&gt;
validation is performed. Unexisting or misspelled settings names&lt;br /&gt;
will be ignored. Setting with valid names and invalid values have&lt;br /&gt;
an undetermined effect.&lt;br /&gt;
&lt;br /&gt;
The different Setting used have the potential of overwriding&lt;br /&gt;
client or server ones. While this behavior offers great capacity&lt;br /&gt;
to custom behavior for a specific map, users playing locally on&lt;br /&gt;
their machine and server administrator might find it a disruption&lt;br /&gt;
of their craftfully designed settings. Use with care and&lt;br /&gt;
moderation.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the World element is&lt;br /&gt;
the Field element. Only one Field can be defined.&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;
The following 2 paragraph are post map-0.2.8_beta3 and 0.2.8_beta3.&lt;br /&gt;
&lt;br /&gt;
For clarity purpose, the Axes element, if defined, need to be&lt;br /&gt;
defined first. After this, Spawn point, Walls and Zones can be&lt;br /&gt;
defined in any order.&lt;br /&gt;
&lt;br /&gt;
While a Field without any Spawn points is syntaxly valid, and&lt;br /&gt;
the parsing engine doesnt report any error, the effect is&lt;br /&gt;
undetermined. While a Field without any Wall is syntaxly valid,&lt;br /&gt;
and the parsing engine doesn&#039;t report any error, the effect is&lt;br /&gt;
undetermined.&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;&lt;br /&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 6.3.1, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wall ==&lt;br /&gt;
Walls 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;pre&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;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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&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;
The Wall element has one attribute, the height. Controlling the&lt;br /&gt;
height affect the rendering height of a wall. A height of 1.0 is&lt;br /&gt;
about the same as the height of the original cycle model. A height&lt;br /&gt;
of 4.0 correspond to the Walls rendered with the lowRim setting on&lt;br /&gt;
the client. When no height is defined, the client defined setting&lt;br /&gt;
of either lowRim or highRim is used. This has the advantage of&lt;br /&gt;
respecting the players choice and often, capacity to render high&lt;br /&gt;
walls.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;height&#039;&#039;&lt;br /&gt;
: The height used for the rendering of the Wall.&lt;br /&gt;
&lt;br /&gt;
Example : Using the client default height&lt;br /&gt;
&amp;lt;pre&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;10&amp;quot; y=&amp;quot;10&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 : Controling the height&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Wall height=&amp;quot;2.13&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;Point x=&amp;quot;10&amp;quot; y=&amp;quot;10&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;
== 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;
== Zones ==&lt;br /&gt;
Zone are interactive areas on the Field. They manifest themself as&lt;br /&gt;
huge circles slowly rotating. The players can interact with the&lt;br /&gt;
Zones by entering or being inside them.&lt;br /&gt;
&lt;br /&gt;
The Zone has an attribute effect which allows 3 values: win, death and&lt;br /&gt;
fortress. Entering a Zone of effect win makes the player the round&lt;br /&gt;
winner. Entering a Zone of effect death automatically kills the&lt;br /&gt;
player. Zones of effect fortress need to be occupied to be&lt;br /&gt;
triggered, and once triggered, they make the team the round winner.&lt;br /&gt;
&lt;br /&gt;
The Zone requires a sub element named ShapeCircle. &lt;br /&gt;
&lt;br /&gt;
The ShapeCircle has 2 attributes, the radius and the growth. The&lt;br /&gt;
radius attribute describe the size of the CircleShape and is&lt;br /&gt;
required. The unit used is the same game unit that are used as map&lt;br /&gt;
coordinates. A ShapeCircle with a radius of 10 will extend of 10&lt;br /&gt;
game units in every direction from its center.&lt;br /&gt;
&lt;br /&gt;
The growth describe how the radius of the ShapeCircle changes over&lt;br /&gt;
time. This unit is game units per second from the moment the Zone&lt;br /&gt;
is create, which is the round start.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify a negative growth, in which case the ShapeCircle will&lt;br /&gt;
slowly shrink. Should at any time the radius be of 0 or less, the&lt;br /&gt;
Zone is removed without effect.&lt;br /&gt;
The growth is optional and defaults to 0, which hold the&lt;br /&gt;
ShapeCircle at a constant size during the round.&lt;br /&gt;
&lt;br /&gt;
The ShapeCircle requires a Point sub-element which describe the&lt;br /&gt;
center of the ShapeCircle. The syntax of the Point is the same as&lt;br /&gt;
the one used for the Wall.&lt;br /&gt;
&lt;br /&gt;
It is possible and valid to place the center of the Zone in a&lt;br /&gt;
location that is not accessible to the players, such as in a&lt;br /&gt;
walled compound or outside of the play area. This behavior might&lt;br /&gt;
change in future version. Consult the appropriate documentation.&lt;br /&gt;
&lt;br /&gt;
Nota: It is important to note that while Zones are introduced in&lt;br /&gt;
Arthemis, a more complete implementation will follow in&lt;br /&gt;
Bacchus. Curious minds consulting the documentation presenting the&lt;br /&gt;
Bacchus implementation of Zones will notice that fortress isn&#039;t an&lt;br /&gt;
effect, but rather a trigger type. The Arthemis implementation of&lt;br /&gt;
Zones falsely uses it as an effect instead of exposing a trigger&lt;br /&gt;
mechanism. Map designers are to be warned this will no longer be&lt;br /&gt;
possible in maps defined for Bacchus.&lt;br /&gt;
&lt;br /&gt;
=== Fortress Zone ===&lt;br /&gt;
The fortress Zone is particuliar because it uses a scoring system&lt;br /&gt;
to determine if and when the Zone is triggered. The score is&lt;br /&gt;
affected by the time passed in it by attackers and defenders.&lt;br /&gt;
&lt;br /&gt;
At start time, the score is set to 0.0. While the score can move&lt;br /&gt;
freely, 2 restrictions are always applied. First, the score can&lt;br /&gt;
never drop below 0.0. Second, if the score reaches or exceed 1.0,&lt;br /&gt;
the Zone is triggered.&lt;br /&gt;
&lt;br /&gt;
Each single adversary in the Zone add to the score for their time&lt;br /&gt;
passed in it. Each single defender in the Zone remove to the score&lt;br /&gt;
for their time passed in it. Also, the score always decays. Each&lt;br /&gt;
of these aspect is controlled by a different setting,&lt;br /&gt;
CONQUEST_RATE, DEFEND_RATE and CONQUEST_DECAY_RATE. They all&lt;br /&gt;
express a rate in points per seconds.&lt;br /&gt;
&lt;br /&gt;
;CONQUEST_RATE&lt;br /&gt;
: Any single attacking player in the Zone add points to the score at this rate. &lt;br /&gt;
;DEFEND_RATE&lt;br /&gt;
: Any single defending player in the Zone removes points to the score at this rate. &lt;br /&gt;
;CONQUEST_DECAY_RATE&lt;br /&gt;
: The score of a Zone decays at this rate, irrelevantly of the numbers of attackers and defenders in the Zone. &lt;br /&gt;
&lt;br /&gt;
These 3 settings are global for all the Zones on a map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Map writing best practice ===&lt;br /&gt;
&lt;br /&gt;
==== Comment your work ====&lt;br /&gt;
&lt;br /&gt;
You should always comment the various parts of your work. Doing so improve maintainability. Something that is obvious during the creation of a particular map often becomes very cryptic after a few weeks. A good comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comment in xml start with &amp;quot;&amp;lt;!--&amp;quot; (without the quotes) and ends with &amp;quot;--&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t highlight the commented part, be careful not to exclude a part of your map by mistake.&lt;br /&gt;
&lt;br /&gt;
==== Arena size ====&lt;br /&gt;
&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;
==== Don&#039;t overload attributes ====&lt;br /&gt;
&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 following drawbacks:&lt;br /&gt;
&lt;br /&gt;
* File size: The exceeding information is never used, but need to be transmitted as part of the file, and stored.&lt;br /&gt;
* Readability: Exceeding information complicate the reading of a map by humans. &lt;br /&gt;
* Maintenance: Maintenance of the map is not much more complex. If the author is minimalist, he/she risk updating the part of information that is ignored. Extremely good knowledge of the working of the parser is required to avoid this pitfall, and the change is only valid if the rule of precedences aren&#039;t updated. Specifying only one set of information avoid this problem. Also, if both set of information are updated, then the task for the author is double, and so are the risks for error.&lt;br /&gt;
&lt;br /&gt;
=== Resource file name convention ===&lt;br /&gt;
&lt;br /&gt;
Resource are external content that makes the game interesting. Textures, sounds, models and maps are all resources for Armagetron Ad. While at the time of writing of this tutorial, only maps are supported as true resources, soon support for the other types will be added. Also, while this section incorporated in the Maps tutorial, it might be moved as an independent document, and the standard 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 resources for Armagetron Ad should follow the following naming 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&lt;br /&gt;
: The name of the person who created the resource. This can be the full name, a nick name (such as the ones used on the Armagetron Ad forum) of the author. Alternatively, the author can forgo his or her name and instead opt for a group name. Group name should be used when the author want to indicate that a set of resources are associate with a group. Instances of this could be when the resources are for a clan, a community, a [set of] server[s].&lt;br /&gt;
;SubDirectory&lt;br /&gt;
: Prolific authors and those are free to set up any number of sub directories to help them organize and possibly categorize their resources. The Armagetron Ad team recommend you to categorize resources by topics (ie: all the resources required for a particular movie-pack set in the same sub directory) over other categorization, such as categorization by type (ie: all the floor tiles set in the same sub directory). Any number of sub directory level should be supported. This is not a mandatory item.&lt;br /&gt;
;ResourceName&lt;br /&gt;
: The actual name of the resource. This should be descriptive, and somewhat unique to facilitate identification of the described resource. The advantage of specifying a somewhat unique name here is that should the resource be accidentally moved out of its folder, it is still possible to quickly and easily identify it. A special note for maps: the ResourceName should be the same as the name attribute of the Map element defined in the xml file.&lt;br /&gt;
;VersionNumber&lt;br /&gt;
: This part should be used by the author to identify which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new resources, Armagetron Ad rely solely on this part to be updated. Should a resource be updated and the old name kept, it would cause problems between different clients. Client already having the old resource 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 would get the latest version. The actual format to be used for the VersionNumber is left to the choice of the author. While the Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar 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, ...). Keep in mind that it should be obvious to other as to which is the most up to date version of the resource. A special note for maps: the VersionNumber should be the same as the version attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;Extension&lt;br /&gt;
: This is the regular type of extension. While Armagetron Ad doesn&#039;t verify that the extension describe the right type of content, it is favorable for other users that you set it to the appropriate 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;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 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;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Parallelogram arena ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Parallelogram-1.0.png|right|thumbnail|Parallelogram]]&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot; category=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;World&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 xdir=&amp;quot;1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-0.2&amp;quot; ydir=&amp;quot;-1&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;-1&amp;quot; ydir=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Axis xdir=&amp;quot;0.2&amp;quot; ydir=&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HexaTRON ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HexaTRON-0.2.png|right|thumbnail|HexaTRON]]&lt;br /&gt;
&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 note that this is 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;&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot; category=&amp;quot;HexaTRON&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About the &amp;quot;undefined and unsupported&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and unsupported&amp;quot;. While it may be possible to do them now, and even amusing to do it, they are strongly discouraged. Later version of the World format will most probably conflict with those behaviors. This will make such behaviors difficult to preserve, if possible at all. For this reasons, it has been decided that _NO_ effort would be put to maintain them. Use them if you want, but do not come complaining if and when they stop working. &lt;br /&gt;
&lt;br /&gt;
== TODO: ==&lt;br /&gt;
&lt;br /&gt;
* how to submit resource (why is this todo? it&#039;s covered in Resource Repository --Luke-Jr)&lt;br /&gt;
* Extension&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=2224</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=2224"/>
		<updated>2005-11-11T18:54:19Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Corrected and completed the resource&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is to help map designer to get a grasp of the Map&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This version of the tutorial address the syntax defined by map-0.2.8_beta3.dtd and present the rules of interpreting the syntax as used by the parsing engine in the version 0.2.8 of Armagetron Advance.&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;
[[Image:original-1.0.1.png|right|thumbnail|Original Armagetron 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;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
	         Converted to XML by philippeqc.&lt;br /&gt;
	         License: Do with it what you want.                          --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
	&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Map format start with a XML header. The actual definition&lt;br /&gt;
of the Map is wrapped in a Resource. The Resource gives a&lt;br /&gt;
description of the content, such as the author and the version of&lt;br /&gt;
the map included. This particuliar map is the xml version of the&lt;br /&gt;
original map that supported directly in the game before version&lt;br /&gt;
0.2.8 (Arthemis). &lt;br /&gt;
&lt;br /&gt;
Skippin ahead in to the Field element, line 11 defines that &lt;br /&gt;
that 4 axes are to be&lt;br /&gt;
used. From line 13 to 26, 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;
== Header ==&lt;br /&gt;
Fill this part&lt;br /&gt;
&lt;br /&gt;
== Resource ==&lt;br /&gt;
The Resource element describe some meta-information of the Map,&lt;br /&gt;
such as who created it, how should the resource file be named and&lt;br /&gt;
what type of information is to be expected.&lt;br /&gt;
&lt;br /&gt;
One part of the Resource details describe who made this map a&lt;br /&gt;
reality. In the Resource element, it is possible to differenciate&lt;br /&gt;
between the person or organism that comissioned the map, the&lt;br /&gt;
commisionner, and the person who executed the request and coded&lt;br /&gt;
it, the author. &lt;br /&gt;
&lt;br /&gt;
Both operations might be carried by the same and only person, in&lt;br /&gt;
this instance both entities are the same and the commissioner&lt;br /&gt;
field should be left blank. The commissioner field should be used&lt;br /&gt;
when the concept of a map and its execution are performed by two&lt;br /&gt;
different persons or entities. It could range from anything from&lt;br /&gt;
&amp;quot;could someone make a map where the feeling of &amp;lt;X&amp;gt; is emphased&amp;quot; to&lt;br /&gt;
coding from a hand-drawn sketch. The commissioner could also be&lt;br /&gt;
implied. Without him/it ever placing an open request, a&lt;br /&gt;
commisioner could be assign to a map when the author whan to&lt;br /&gt;
express an assumed sharing of the creation of the map. This can be&lt;br /&gt;
the case, for example, when the member of a Clan wrote a map that&lt;br /&gt;
falls in the ideals of the Clan.&lt;br /&gt;
&lt;br /&gt;
Maps can be implicitly grouped together. The category field is&lt;br /&gt;
there for this purpose. Prolific authors and their public will&lt;br /&gt;
appreciate a clear grouping of similar themed maps.&lt;br /&gt;
&lt;br /&gt;
As ever refining one&#039;s work is a very respected quality in the&lt;br /&gt;
Armagetron community, the latest changes need to be properly&lt;br /&gt;
propagated to everybody. The version field allow an author to&lt;br /&gt;
identify each specific instance of her work, and also insure that&lt;br /&gt;
a client will receive the exact version used by a server when&lt;br /&gt;
playing on it.&lt;br /&gt;
&lt;br /&gt;
The type specifies that the file hold an Armagetron Advance&lt;br /&gt;
map. While this is the only type available at the moment, the&lt;br /&gt;
development team is eager to expand this in the furture.&lt;br /&gt;
&lt;br /&gt;
Finally, and most importantly, the name of the &#039;&#039;ouvrage&#039;&#039; being&lt;br /&gt;
presented. &lt;br /&gt;
&lt;br /&gt;
The fields for Resource are:&lt;br /&gt;
;name&lt;br /&gt;
:The name of the map, mandatory.&lt;br /&gt;
;type&lt;br /&gt;
:The only valid type is &amp;quot;aamap&amp;quot;. This field is defaulted &amp;quot;aamap&amp;quot; when abscent.&lt;br /&gt;
;version &lt;br /&gt;
:The version of the map described in this particuliar file. This value should be modified each time a change is applied to the map to ensure everybody have the proper copy. This field is defaulted to &amp;quot;1.0&amp;quot; when abscent.&lt;br /&gt;
;author&lt;br /&gt;
:The author who produced this map. This field is defaulted to &amp;quot;Anonymous&amp;quot; when abscent.&lt;br /&gt;
;commisioner&lt;br /&gt;
:The entity who dreamt, requested or even inspired in any way this map. This field is optional and has no default value. &lt;br /&gt;
;category&lt;br /&gt;
:How this map should be categorised. This field can have any number of sub categories, each separated by a &amp;quot;\&amp;quot;. An example could be &amp;quot;category\subcategory\subsubcategory&amp;quot;. This field is defaulted to &amp;quot;unsorted&amp;quot; when abscent. &lt;br /&gt;
&lt;br /&gt;
To facilitate manipulation of the file over distributed systems,&lt;br /&gt;
the Resource holds explicit information about the naming and&lt;br /&gt;
storing of the file. This information can be used by tools such as&lt;br /&gt;
scripts and resource repositories to manipulate the file. &lt;br /&gt;
&lt;br /&gt;
Many tools, including the game client, will expect the following&lt;br /&gt;
to indicate the location of a &lt;br /&gt;
filee inside the local store of resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Author&amp;gt;/[Category/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;ResourceType&amp;gt;.&amp;lt;Extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
This element is the basic holder of the description of the&lt;br /&gt;
Map. From the opening element to the closing one, all the&lt;br /&gt;
information will be used to construct an in-game representation&lt;br /&gt;
for the players to explore and possibly compete in.&lt;br /&gt;
&lt;br /&gt;
The version attribute of the map indicate an specific parsing&lt;br /&gt;
engine version that should be used to express the map in the exact&lt;br /&gt;
manners that are desired by the map creator. Sooner in the file,&lt;br /&gt;
the dtd has already specified a version. The difference between&lt;br /&gt;
both version is one specify the version of the syntax to be use,&lt;br /&gt;
and the other, the version of the rules to be used to interprete&lt;br /&gt;
the syntax.&lt;br /&gt;
&lt;br /&gt;
The dtd control the syntax, what keywords are valid and in which&lt;br /&gt;
arrangement. The parsing engine has specific rules how to read the&lt;br /&gt;
syntax and create the game elements. It is possible for different&lt;br /&gt;
parsing engine to operate from the same syntax, be it because the syntax&lt;br /&gt;
allows for many interpretation, or because a specific&lt;br /&gt;
interpretation has been found faulty in some case. Because each&lt;br /&gt;
interpretation could lead to very different instantiation, it is&lt;br /&gt;
best for the map designer to specify the one that should be&lt;br /&gt;
used. Even when no alternative interpretation exist, ie: there is&lt;br /&gt;
only one version available, it is best for the map designer to&lt;br /&gt;
specify it. Should a new one be implemented at a later time, the&lt;br /&gt;
map defined would continue to be instanciated properly.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, the only parsing engine version is&lt;br /&gt;
&amp;quot;0.2.8&amp;quot;. Maps using a version that is not understood by the&lt;br /&gt;
parsing engine of a specific client or server will be&lt;br /&gt;
automatically rejected by said application, on the ground that the&lt;br /&gt;
parsing engine doesn&#039;t know how to operate on it.&lt;br /&gt;
&lt;br /&gt;
Even if only one value exist, it is impossible to provide it as a&lt;br /&gt;
default, as there are no assurance that a new interpretation of&lt;br /&gt;
the syntax will not arrive at a future time.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It is possible for a map designer to indicate specific game&lt;br /&gt;
settings, similar to the ones available through the configuration&lt;br /&gt;
files of the application, to be used with the map. When&lt;br /&gt;
this is not desired, the Settings element can be safely removed&lt;br /&gt;
from the map definition.&lt;br /&gt;
&lt;br /&gt;
Any number of Setting can be defined inside of the Settings&lt;br /&gt;
element. Each Setting defined will overwrite the value previously&lt;br /&gt;
defined in the game. Each new Setting addressing a specific&lt;br /&gt;
configuration item will keep on overwriting previously defined&lt;br /&gt;
values. The Settings items are processed in order, from the top to&lt;br /&gt;
the bottom one.&lt;br /&gt;
&lt;br /&gt;
The Settings should be considered to be global to the World and&lt;br /&gt;
its sub-elements. This has very little relevance at the moment as&lt;br /&gt;
only one World and one Field can exist in the game. It is not&lt;br /&gt;
excluded that future version of the game could support multiple&lt;br /&gt;
elements such as World and Field. Each such elements and sub-elements would&lt;br /&gt;
receive the Settings defined in its parents, but would also be&lt;br /&gt;
able to overwrite parent received Settings for itself and its&lt;br /&gt;
sub-elements. &lt;br /&gt;
&lt;br /&gt;
One such overwriting capacity already exist, in the form of the&lt;br /&gt;
Axes element. This element can and will overwrite the value passed&lt;br /&gt;
by the Setting ARENA_AXES.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, there are no known case where the order of&lt;br /&gt;
writing Setting should matter. There are no garanties of it being&lt;br /&gt;
the case. Be carefull of the order of the Setting provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting ==&lt;br /&gt;
Each individual Setting defines a specific element normally&lt;br /&gt;
configurable throught the config files of the game&lt;br /&gt;
application. For a full list and description of the setting&lt;br /&gt;
available, consult &#039;&#039;&#039;TODO&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The Setting has two attributes, the name and the value. The name&lt;br /&gt;
field hold the setting name as found in the various configuration&lt;br /&gt;
files. The value field will be assigned to the designated setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Setting name=&amp;quot;CYCLE_BRAKE_REFILL&amp;quot; value=&amp;quot;.1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will assing .1 to the configuration item CYCLE_BRAKE_REFILL.&lt;br /&gt;
&lt;br /&gt;
No validation are done on either fields by the parsing engine. The&lt;br /&gt;
values are passed directly to the setting engine, where the usual&lt;br /&gt;
validation is performed. Unexisting or misspelled settings names&lt;br /&gt;
will be ignored. Setting with valid names and invalid values have&lt;br /&gt;
an undetermined effect.&lt;br /&gt;
&lt;br /&gt;
The different Setting used have the potential of overwriding&lt;br /&gt;
client or server ones. While this behavior offers great capacity&lt;br /&gt;
to custom behavior for a specific map, users playing locally on&lt;br /&gt;
their machine and server administrator might find it a disruption&lt;br /&gt;
of their craftfully designed settings. Use with care and&lt;br /&gt;
moderation.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the World element is&lt;br /&gt;
the Field element. Only one Field can be defined.&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;
The following 2 paragraph are post map-0.2.8_beta3 and 0.2.8_beta3.&lt;br /&gt;
&lt;br /&gt;
For clarity purpose, the Axes element, if defined, need to be&lt;br /&gt;
defined first. After this, Spawn point, Walls and Zones can be&lt;br /&gt;
defined in any order.&lt;br /&gt;
&lt;br /&gt;
While a Field without any Spawn points is syntaxly valid, and&lt;br /&gt;
the parsing engine doesnt report any error, the effect is&lt;br /&gt;
undetermined. While a Field without any Wall is syntaxly valid,&lt;br /&gt;
and the parsing engine doesn&#039;t report any error, the effect is&lt;br /&gt;
undetermined.&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;&lt;br /&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 6.3.1, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wall ==&lt;br /&gt;
Walls 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;pre&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;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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&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;
The Wall element has one attribute, the height. Controlling the&lt;br /&gt;
height affect the rendering height of a wall. A height of 1.0 is&lt;br /&gt;
about the same as the height of the original cycle model. A height&lt;br /&gt;
of 4.0 correspond to the Walls rendered with the lowRim setting on&lt;br /&gt;
the client. When no height is defined, the client defined setting&lt;br /&gt;
of either lowRim or highRim is used. This has the advantage of&lt;br /&gt;
respecting the players choice and often, capacity to render high&lt;br /&gt;
walls.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;height&#039;&#039;&lt;br /&gt;
: The height used for the rendering of the Wall.&lt;br /&gt;
&lt;br /&gt;
Example : Using the client default height&lt;br /&gt;
&amp;lt;pre&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;10&amp;quot; y=&amp;quot;10&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 : Controling the height&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Wall height=&amp;quot;2.13&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;Point x=&amp;quot;10&amp;quot; y=&amp;quot;10&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;
== 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;
== Zones ==&lt;br /&gt;
Zone are interactive areas on the Field. They manifest themself as&lt;br /&gt;
huge circles slowly rotating. The players can interact with the&lt;br /&gt;
Zones by entering or being inside them.&lt;br /&gt;
&lt;br /&gt;
The Zone has an attribute effect which allows 3 values: win, death and&lt;br /&gt;
fortress. Entering a Zone of effect win makes the player the round&lt;br /&gt;
winner. Entering a Zone of effect death automatically kills the&lt;br /&gt;
player. Zones of effect fortress need to be occupied to be&lt;br /&gt;
triggered, and once triggered, they make the team the round winner.&lt;br /&gt;
&lt;br /&gt;
The Zone requires a sub element named ShapeCircle. &lt;br /&gt;
&lt;br /&gt;
The ShapeCircle has 2 attributes, the radius and the growth. The&lt;br /&gt;
radius attribute describe the size of the CircleShape and is&lt;br /&gt;
required. The unit used is the same game unit that are used as map&lt;br /&gt;
coordinates. A ShapeCircle with a radius of 10 will extend of 10&lt;br /&gt;
game units in every direction from its center.&lt;br /&gt;
&lt;br /&gt;
The growth describe how the radius of the ShapeCircle changes over&lt;br /&gt;
time. This unit is game units per second from the moment the Zone&lt;br /&gt;
is create, which is the round start.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify a negative growth, in which case the ShapeCircle will&lt;br /&gt;
slowly shrink. Should at any time the radius be of 0 or less, the&lt;br /&gt;
Zone is removed without effect.&lt;br /&gt;
The growth is optional and defaults to 0, which hold the&lt;br /&gt;
ShapeCircle at a constant size during the round.&lt;br /&gt;
&lt;br /&gt;
The ShapeCircle requires a Point sub-element which describe the&lt;br /&gt;
center of the ShapeCircle. The syntax of the Point is the same as&lt;br /&gt;
the one used for the Wall.&lt;br /&gt;
&lt;br /&gt;
It is possible and valid to place the center of the Zone in a&lt;br /&gt;
location that is not accessible to the players, such as in a&lt;br /&gt;
walled compound or outside of the play area. This behavior might&lt;br /&gt;
change in future version. Consult the appropriate documentation.&lt;br /&gt;
&lt;br /&gt;
Nota: It is important to note that while Zones are introduced in&lt;br /&gt;
Arthemis, a more complete implementation will follow in&lt;br /&gt;
Bacchus. Curious minds consulting the documentation presenting the&lt;br /&gt;
Bacchus implementation of Zones will notice that fortress isn&#039;t an&lt;br /&gt;
effect, but rather a trigger type. The Arthemis implementation of&lt;br /&gt;
Zones falsely uses it as an effect instead of exposing a trigger&lt;br /&gt;
mechanism. Map designers are to be warned this will no longer be&lt;br /&gt;
possible in maps defined for Bacchus.&lt;br /&gt;
&lt;br /&gt;
=== Fortress Zone ===&lt;br /&gt;
The fortress Zone is particuliar because it uses a scoring system&lt;br /&gt;
to determine if and when the Zone is triggered. The score is&lt;br /&gt;
affected by the time passed in it by attackers and defenders.&lt;br /&gt;
&lt;br /&gt;
At start time, the score is set to 0.0. While the score can move&lt;br /&gt;
freely, 2 restrictions are always applied. First, the score can&lt;br /&gt;
never drop below 0.0. Second, if the score reaches or exceed 1.0,&lt;br /&gt;
the Zone is triggered.&lt;br /&gt;
&lt;br /&gt;
Each single adversary in the Zone add to the score for their time&lt;br /&gt;
passed in it. Each single defender in the Zone remove to the score&lt;br /&gt;
for their time passed in it. Also, the score always decays. Each&lt;br /&gt;
of these aspect is controlled by a different setting,&lt;br /&gt;
CONQUEST_RATE, DEFEND_RATE and CONQUEST_DECAY_RATE. They all&lt;br /&gt;
express a rate in points per seconds.&lt;br /&gt;
&lt;br /&gt;
;CONQUEST_RATE&lt;br /&gt;
: Any single attacking player in the Zone add points to the score at this rate. &lt;br /&gt;
;DEFEND_RATE&lt;br /&gt;
: Any single defending player in the Zone removes points to the score at this rate. &lt;br /&gt;
;CONQUEST_DECAY_RATE&lt;br /&gt;
: The score of a Zone decays at this rate, irrelevantly of the numbers of attackers and defenders in the Zone. &lt;br /&gt;
&lt;br /&gt;
These 3 settings are global for all the Zones on a map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Map writing best practice ===&lt;br /&gt;
&lt;br /&gt;
==== Comment your work ====&lt;br /&gt;
&lt;br /&gt;
You should always comment the various parts of your work. Doing so improve maintainability. Something that is obvious during the creation of a particular map often becomes very cryptic after a few weeks. A good comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comment in xml start with &amp;quot;&amp;lt;!--&amp;quot; (without the quotes) and ends with &amp;quot;--&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t highlight the commented part, be careful not to exclude a part of your map by mistake.&lt;br /&gt;
&lt;br /&gt;
==== Arena size ====&lt;br /&gt;
&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;
==== Don&#039;t overload attributes ====&lt;br /&gt;
&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 following drawbacks:&lt;br /&gt;
&lt;br /&gt;
* File size: The exceeding information is never used, but need to be transmitted as part of the file, and stored.&lt;br /&gt;
* Readability: Exceeding information complicate the reading of a map by humans. &lt;br /&gt;
* Maintenance: Maintenance of the map is not much more complex. If the author is minimalist, he/she risk updating the part of information that is ignored. Extremely good knowledge of the working of the parser is required to avoid this pitfall, and the change is only valid if the rule of precedences aren&#039;t updated. Specifying only one set of information avoid this problem. Also, if both set of information are updated, then the task for the author is double, and so are the risks for error.&lt;br /&gt;
&lt;br /&gt;
=== Resource file name convention ===&lt;br /&gt;
&lt;br /&gt;
Resource are external content that makes the game interesting. Textures, sounds, models and maps are all resources for Armagetron Ad. While at the time of writing of this tutorial, only maps are supported as true resources, soon support for the other types will be added. Also, while this section incorporated in the Maps tutorial, it might be moved as an independent document, and the standard 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 resources for Armagetron Ad should follow the following naming 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&lt;br /&gt;
: The name of the person who created the resource. This can be the full name, a nick name (such as the ones used on the Armagetron Ad forum) of the author. Alternatively, the author can forgo his or her name and instead opt for a group name. Group name should be used when the author want to indicate that a set of resources are associate with a group. Instances of this could be when the resources are for a clan, a community, a [set of] server[s].&lt;br /&gt;
;SubDirectory&lt;br /&gt;
: Prolific authors and those are free to set up any number of sub directories to help them organize and possibly categorize their resources. The Armagetron Ad team recommend you to categorize resources by topics (ie: all the resources required for a particular movie-pack set in the same sub directory) over other categorization, such as categorization by type (ie: all the floor tiles set in the same sub directory). Any number of sub directory level should be supported. This is not a mandatory item.&lt;br /&gt;
;ResourceName&lt;br /&gt;
: The actual name of the resource. This should be descriptive, and somewhat unique to facilitate identification of the described resource. The advantage of specifying a somewhat unique name here is that should the resource be accidentally moved out of its folder, it is still possible to quickly and easily identify it. A special note for maps: the ResourceName should be the same as the name attribute of the Map element defined in the xml file.&lt;br /&gt;
;VersionNumber&lt;br /&gt;
: This part should be used by the author to identify which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new resources, Armagetron Ad rely solely on this part to be updated. Should a resource be updated and the old name kept, it would cause problems between different clients. Client already having the old resource 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 would get the latest version. The actual format to be used for the VersionNumber is left to the choice of the author. While the Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar 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, ...). Keep in mind that it should be obvious to other as to which is the most up to date version of the resource. A special note for maps: the VersionNumber should be the same as the version attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;Extension&lt;br /&gt;
: This is the regular type of extension. While Armagetron Ad doesn&#039;t verify that the extension describe the right type of content, it is favorable for other users that you set it to the appropriate 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;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 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;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Parallelogram arena ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Parallelogram-1.0.png|right|thumbnail|Parallelogram]]&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot; category=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HexaTRON ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HexaTRON-0.2.png|right|thumbnail|HexaTRON]]&lt;br /&gt;
&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 note that this is 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;&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot; category=&amp;quot;HexaTRON&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About the &amp;quot;undefined and unsupported&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and unsupported&amp;quot;. While it may be possible to do them now, and even amusing to do it, they are strongly discouraged. Later version of the World format will most probably conflict with those behaviors. This will make such behaviors difficult to preserve, if possible at all. For this reasons, it has been decided that _NO_ effort would be put to maintain them. Use them if you want, but do not come complaining if and when they stop working. &lt;br /&gt;
&lt;br /&gt;
== TODO: ==&lt;br /&gt;
&lt;br /&gt;
* how to submit resource (why is this todo? it&#039;s covered in Resource Repository --Luke-Jr)&lt;br /&gt;
* Extension&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=User_talk:Luke-Jr&amp;diff=2223</id>
		<title>User talk:Luke-Jr</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=User_talk:Luke-Jr&amp;diff=2223"/>
		<updated>2005-11-11T17:47:01Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Why there is a todo on &amp;quot;how to submit a resource&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;the &amp;quot;how to submit a resource&amp;quot; is a todo because it is the text that was written before the big discussion about file format. Therefore, it need to be compared to the actual decision, and possibly expanded to include changes or extra details. &lt;br /&gt;
&lt;br /&gt;
The only thing good about it is that its nearly what we agreed upon, so it should be minor as change.&lt;br /&gt;
&lt;br /&gt;
Also, and very important, resource submitting should be in its own document. Now its only relating to maps, but it is for all resources after all.&lt;br /&gt;
&lt;br /&gt;
-ph&lt;/div&gt;</summary>
		<author><name>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=1503</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=1503"/>
		<updated>2005-10-22T19:04:44Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is to help map designer to get a grasp of the Map&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This version of the tutorial address the syntax defined by map-0.2.8_beta3.dtd and present the rules of interpreting the syntax as used by the parsing engine in the version 0.2.8 of Armagetron Advance.&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;
[[Image:original-1.0.1.png|right|thumbnail|Original Armagetron 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;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
	         Converted to XML by philippeqc.&lt;br /&gt;
	         License: Do with it what you want.                          --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
	&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Map format start with a XML header. The actual definition&lt;br /&gt;
of the Map is wrapped in a Resource. The Resource gives a&lt;br /&gt;
description of the content, such as the author and the version of&lt;br /&gt;
the map included. This particuliar map is the xml version of the&lt;br /&gt;
original map that supported directly in the game before version&lt;br /&gt;
0.2.8 (Arthemis). &lt;br /&gt;
&lt;br /&gt;
Skippin ahead in to the Field element, line 11 defines that &lt;br /&gt;
that 4 axes are to be&lt;br /&gt;
used. From line 13 to 26, 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;
== Header ==&lt;br /&gt;
Fill this part&lt;br /&gt;
&lt;br /&gt;
== Resource ==&lt;br /&gt;
This section is under development!&lt;br /&gt;
&lt;br /&gt;
The Resource element describe some meta-information of the Map,&lt;br /&gt;
such as who created it, how should the resource file be named and&lt;br /&gt;
what type of information is to be expected.&lt;br /&gt;
&lt;br /&gt;
One part of the Resource details describe who made this map a&lt;br /&gt;
reality. In the Resource element, it is possible to differenciate&lt;br /&gt;
between the person or organism that comissioned the map, the&lt;br /&gt;
commisionner, and the person who executed the request and coded&lt;br /&gt;
it, the author. &lt;br /&gt;
&lt;br /&gt;
Both operations might be carried by the same and only person, in&lt;br /&gt;
this instance both entities are the same and the commissioner&lt;br /&gt;
field should be left blank. The commissioner field should be used&lt;br /&gt;
when the concept of a map and its execution are performed by two&lt;br /&gt;
different persons or entities. It could range from anything from&lt;br /&gt;
&amp;quot;could someone make a map where the feeling of &amp;lt;X&amp;gt; is emphased&amp;quot; to&lt;br /&gt;
coding from a hand-drawn sketch. The commissioner could also be&lt;br /&gt;
implied. Without him/it ever placing an open request, a&lt;br /&gt;
commisioner could be assign to a map when the author whan to&lt;br /&gt;
express an assumed sharing of the creation of the map. This can be&lt;br /&gt;
the case, for example, when the member of a Clan wrote a map that&lt;br /&gt;
falls in the ideals of the Clan.&lt;br /&gt;
&lt;br /&gt;
To facilitate manipulation of the file over distributed systems,&lt;br /&gt;
the Resource holds explicit information about the naming and&lt;br /&gt;
storing of the file. This information can be used by tools such as&lt;br /&gt;
scripts and resource repositories to manipulate the file. &lt;br /&gt;
&lt;br /&gt;
Many tools, including the game client, will expect the following&lt;br /&gt;
to indicate the location of a &lt;br /&gt;
filee inside the local store of resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Author&amp;gt;/[Category/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;ResourceType&amp;gt;.&amp;lt;Extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
This element is the basic holder of the description of the&lt;br /&gt;
Map. From the opening element to the closing one, all the&lt;br /&gt;
information will be used to construct an in-game representation&lt;br /&gt;
for the players to explore and possibly compete in.&lt;br /&gt;
&lt;br /&gt;
The version attribute of the map indicate an specific parsing&lt;br /&gt;
engine version that should be used to express the map in the exact&lt;br /&gt;
manners that are desired by the map creator. Sooner in the file,&lt;br /&gt;
the dtd has already specified a version. The difference between&lt;br /&gt;
both version is one specify the version of the syntax to be use,&lt;br /&gt;
and the other, the version of the rules to be used to interprete&lt;br /&gt;
the syntax.&lt;br /&gt;
&lt;br /&gt;
The dtd control the syntax, what keywords are valid and in which&lt;br /&gt;
arrangement. The parsing engine has specific rules how to read the&lt;br /&gt;
syntax and create the game elements. It is possible for different&lt;br /&gt;
parsing engine to operate from the same syntax, be it because the syntax&lt;br /&gt;
allows for many interpretation, or because a specific&lt;br /&gt;
interpretation has been found faulty in some case. Because each&lt;br /&gt;
interpretation could lead to very different instantiation, it is&lt;br /&gt;
best for the map designer to specify the one that should be&lt;br /&gt;
used. Even when no alternative interpretation exist, ie: there is&lt;br /&gt;
only one version available, it is best for the map designer to&lt;br /&gt;
specify it. Should a new one be implemented at a later time, the&lt;br /&gt;
map defined would continue to be instanciated properly.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, the only parsing engine version is&lt;br /&gt;
&amp;quot;0.2.8&amp;quot;. Maps using a version that is not understood by the&lt;br /&gt;
parsing engine of a specific client or server will be&lt;br /&gt;
automatically rejected by said application, on the ground that the&lt;br /&gt;
parsing engine doesn&#039;t know how to operate on it.&lt;br /&gt;
&lt;br /&gt;
Even if only one value exist, it is impossible to provide it as a&lt;br /&gt;
default, as there are no assurance that a new interpretation of&lt;br /&gt;
the syntax will not arrive at a future time.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It is possible for a map designer to indicate specific game&lt;br /&gt;
settings, similar to the ones available through the configuration&lt;br /&gt;
files of the application, to be used with the map. When&lt;br /&gt;
this is not desired, the Settings element can be safely removed&lt;br /&gt;
from the map definition.&lt;br /&gt;
&lt;br /&gt;
Any number of Setting can be defined inside of the Settings&lt;br /&gt;
element. Each Setting defined will overwrite the value previously&lt;br /&gt;
defined in the game. Each new Setting addressing a specific&lt;br /&gt;
configuration item will keep on overwriting previously defined&lt;br /&gt;
values. The Settings items are processed in order, from the top to&lt;br /&gt;
the bottom one.&lt;br /&gt;
&lt;br /&gt;
The Settings should be considered to be global to the World and&lt;br /&gt;
its sub-elements. This has very little relevance at the moment as&lt;br /&gt;
only one World and one Field can exist in the game. It is not&lt;br /&gt;
excluded that future version of the game could support multiple&lt;br /&gt;
elements such as World and Field. Each such elements and sub-elements would&lt;br /&gt;
receive the Settings defined in its parents, but would also be&lt;br /&gt;
able to overwrite parent received Settings for itself and its&lt;br /&gt;
sub-elements. &lt;br /&gt;
&lt;br /&gt;
One such overwriting capacity already exist, in the form of the&lt;br /&gt;
Axes element. This element can and will overwrite the value passed&lt;br /&gt;
by the Setting ARENA_AXES.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, there are no known case where the order of&lt;br /&gt;
writing Setting should matter. There are no garanties of it being&lt;br /&gt;
the case. Be carefull of the order of the Setting provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting ==&lt;br /&gt;
Each individual Setting defines a specific element normally&lt;br /&gt;
configurable throught the config files of the game&lt;br /&gt;
application. For a full list and description of the setting&lt;br /&gt;
available, consult &#039;&#039;&#039;TODO&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The Setting has two attributes, the name and the value. The name&lt;br /&gt;
field hold the setting name as found in the various configuration&lt;br /&gt;
files. The value field will be assigned to the designated setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Setting name=&amp;quot;CYCLE_BRAKE_REFILL&amp;quot; value=&amp;quot;.1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will assing .1 to the configuration item CYCLE_BRAKE_REFILL.&lt;br /&gt;
&lt;br /&gt;
No validation are done on either fields by the parsing engine. The&lt;br /&gt;
values are passed directly to the setting engine, where the usual&lt;br /&gt;
validation is performed. Unexisting or misspelled settings names&lt;br /&gt;
will be ignored. Setting with valid names and invalid values have&lt;br /&gt;
an undetermined effect.&lt;br /&gt;
&lt;br /&gt;
The different Setting used have the potential of overwriding&lt;br /&gt;
client or server ones. While this behavior offers great capacity&lt;br /&gt;
to custom behavior for a specific map, users playing locally on&lt;br /&gt;
their machine and server administrator might find it a disruption&lt;br /&gt;
of their craftfully designed settings. Use with care and&lt;br /&gt;
moderation.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the World element is&lt;br /&gt;
the Field element. Only one Field can be defined.&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;
The following 2 paragraph are post map-0.2.8_beta3 and 0.2.8_beta3.&lt;br /&gt;
&lt;br /&gt;
For clarity purpose, the Axes element, if defined, need to be&lt;br /&gt;
defined first. After this, Spawn point, Walls and Zones can be&lt;br /&gt;
defined in any order.&lt;br /&gt;
&lt;br /&gt;
While a Field without any Spawn points is syntaxly valid, and&lt;br /&gt;
the parsing engine doesnt report any error, the effect is&lt;br /&gt;
undetermined. While a Field without any Wall is syntaxly valid,&lt;br /&gt;
and the parsing engine doesn&#039;t report any error, the effect is&lt;br /&gt;
undetermined.&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;&lt;br /&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 6.3.1, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wall ==&lt;br /&gt;
Walls 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;pre&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;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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&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;
The Wall element has one attribute, the height. Controlling the&lt;br /&gt;
height affect the rendering height of a wall. A height of 1.0 is&lt;br /&gt;
about the same as the height of the original cycle model. A height&lt;br /&gt;
of 4.0 correspond to the Walls rendered with the lowRim setting on&lt;br /&gt;
the client. When no height is defined, the client defined setting&lt;br /&gt;
of either lowRim or highRim is used. This has the advantage of&lt;br /&gt;
respecting the players choice and often, capacity to render high&lt;br /&gt;
walls.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;height&#039;&#039;&lt;br /&gt;
: The height used for the rendering of the Wall.&lt;br /&gt;
&lt;br /&gt;
Example : Using the client default height&lt;br /&gt;
&amp;lt;pre&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;10&amp;quot; y=&amp;quot;10&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 : Controling the height&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Wall height=&amp;quot;2.13&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;Point x=&amp;quot;10&amp;quot; y=&amp;quot;10&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;
== 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;
== Zones ==&lt;br /&gt;
Zone are interactive areas on the Field. They manifest themself as&lt;br /&gt;
huge circles slowly rotating. The players can interact with the&lt;br /&gt;
Zones by entering or being inside them.&lt;br /&gt;
&lt;br /&gt;
The Zone has an attribute effect which allows 3 values: win, death and&lt;br /&gt;
fortress. Entering a Zone of effect win makes the player the round&lt;br /&gt;
winner. Entering a Zone of effect death automatically kills the&lt;br /&gt;
player. Zones of effect fortress need to be occupied to be&lt;br /&gt;
triggered, and once triggered, they make the team the round winner.&lt;br /&gt;
&lt;br /&gt;
The Zone requires a sub element named ShapeCircle. &lt;br /&gt;
&lt;br /&gt;
The ShapeCircle has 2 attributes, the radius and the growth. The&lt;br /&gt;
radius attribute describe the size of the CircleShape and is&lt;br /&gt;
required. The unit used is the same game unit that are used as map&lt;br /&gt;
coordinates. A ShapeCircle with a radius of 10 will extend of 10&lt;br /&gt;
game units in every direction from its center.&lt;br /&gt;
&lt;br /&gt;
The growth describe how the radius of the ShapeCircle changes over&lt;br /&gt;
time. This unit is game units per second from the moment the Zone&lt;br /&gt;
is create, which is the round start.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify a negative growth, in which case the ShapeCircle will&lt;br /&gt;
slowly shrink. Should at any time the radius be of 0 or less, the&lt;br /&gt;
Zone is removed without effect.&lt;br /&gt;
The growth is optional and defaults to 0, which hold the&lt;br /&gt;
ShapeCircle at a constant size during the round.&lt;br /&gt;
&lt;br /&gt;
The ShapeCircle requires a Point sub-element which describe the&lt;br /&gt;
center of the ShapeCircle. The syntax of the Point is the same as&lt;br /&gt;
the one used for the Wall.&lt;br /&gt;
&lt;br /&gt;
It is possible and valid to place the center of the Zone in a&lt;br /&gt;
location that is not accessible to the players, such as in a&lt;br /&gt;
walled compound or outside of the play area. This behavior might&lt;br /&gt;
change in future version. Consult the appropriate documentation.&lt;br /&gt;
&lt;br /&gt;
Nota: It is important to note that while Zones are introduced in&lt;br /&gt;
Arthemis, a more complete implementation will follow in&lt;br /&gt;
Bacchus. Curious minds consulting the documentation presenting the&lt;br /&gt;
Bacchus implementation of Zones will notice that fortress isn&#039;t an&lt;br /&gt;
effect, but rather a trigger type. The Arthemis implementation of&lt;br /&gt;
Zones falsely uses it as an effect instead of exposing a trigger&lt;br /&gt;
mechanism. Map designers are to be warned this will no longer be&lt;br /&gt;
possible in maps defined for Bacchus.&lt;br /&gt;
&lt;br /&gt;
=== Fortress Zone ===&lt;br /&gt;
The fortress Zone is particuliar because it uses a scoring system&lt;br /&gt;
to determine if and when the Zone is triggered. The score is&lt;br /&gt;
affected by the time passed in it by attackers and defenders.&lt;br /&gt;
&lt;br /&gt;
At start time, the score is set to 0.0. While the score can move&lt;br /&gt;
freely, 2 restrictions are always applied. First, the score can&lt;br /&gt;
never drop below 0.0. Second, if the score reaches or exceed 1.0,&lt;br /&gt;
the Zone is triggered.&lt;br /&gt;
&lt;br /&gt;
Each single adversary in the Zone add to the score for their time&lt;br /&gt;
passed in it. Each single defender in the Zone remove to the score&lt;br /&gt;
for their time passed in it. Also, the score always decays. Each&lt;br /&gt;
of these aspect is controlled by a different setting,&lt;br /&gt;
CONQUEST_RATE, DEFEND_RATE and CONQUEST_DECAY_RATE. They all&lt;br /&gt;
express a rate in points per seconds.&lt;br /&gt;
&lt;br /&gt;
;CONQUEST_RATE&lt;br /&gt;
: Any single attacking player in the Zone add points to the score at this rate. &lt;br /&gt;
;DEFEND_RATE&lt;br /&gt;
: Any single defending player in the Zone removes points to the score at this rate. &lt;br /&gt;
;CONQUEST_DECAY_RATE&lt;br /&gt;
: The score of a Zone decays at this rate, irrelevantly of the numbers of attackers and defenders in the Zone. &lt;br /&gt;
&lt;br /&gt;
These 3 settings are global for all the Zones on a map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Map writing best practice ===&lt;br /&gt;
&lt;br /&gt;
==== Comment your work ====&lt;br /&gt;
&lt;br /&gt;
You should always comment the various parts of your work. Doing so improve maintainability. Something that is obvious during the creation of a particular map often becomes very cryptic after a few weeks. A good comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comment in xml start with &amp;quot;&amp;lt;!--&amp;quot; (without the quotes) and ends with &amp;quot;--&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t highlight the commented part, be careful not to exclude a part of your map by mistake.&lt;br /&gt;
&lt;br /&gt;
==== Arena size ====&lt;br /&gt;
&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;
==== Don&#039;t overload attributes ====&lt;br /&gt;
&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 following drawbacks:&lt;br /&gt;
&lt;br /&gt;
* File size: The exceeding information is never used, but need to be transmitted as part of the file, and stored.&lt;br /&gt;
* Readability: Exceeding information complicate the reading of a map by humans. &lt;br /&gt;
* Maintenance: Maintenance of the map is not much more complex. If the author is minimalist, he/she risk updating the part of information that is ignored. Extremely good knowledge of the working of the parser is required to avoid this pitfall, and the change is only valid if the rule of precedences aren&#039;t updated. Specifying only one set of information avoid this problem. Also, if both set of information are updated, then the task for the author is double, and so are the risks for error.&lt;br /&gt;
&lt;br /&gt;
=== Resource file name convention ===&lt;br /&gt;
&lt;br /&gt;
Resource are external content that makes the game interesting. Textures, sounds, models and maps are all resources for Armagetron Ad. While at the time of writing of this tutorial, only maps are supported as true resources, soon support for the other types will be added. Also, while this section incorporated in the Maps tutorial, it might be moved as an independent document, and the standard 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 resources for Armagetron Ad should follow the following naming 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&lt;br /&gt;
: The name of the person who created the resource. This can be the full name, a nick name (such as the ones used on the Armagetron Ad forum) of the author. Alternatively, the author can forgo his or her name and instead opt for a group name. Group name should be used when the author want to indicate that a set of resources are associate with a group. Instances of this could be when the resources are for a clan, a community, a [set of] server[s].&lt;br /&gt;
;SubDirectory&lt;br /&gt;
: Prolific authors and those are free to set up any number of sub directories to help them organize and possibly categorize their resources. The Armagetron Ad team recommend you to categorize resources by topics (ie: all the resources required for a particular movie-pack set in the same sub directory) over other categorization, such as categorization by type (ie: all the floor tiles set in the same sub directory). Any number of sub directory level should be supported. This is not a mandatory item.&lt;br /&gt;
;ResourceName&lt;br /&gt;
: The actual name of the resource. This should be descriptive, and somewhat unique to facilitate identification of the described resource. The advantage of specifying a somewhat unique name here is that should the resource be accidentally moved out of its folder, it is still possible to quickly and easily identify it. A special note for maps: the ResourceName should be the same as the name attribute of the Map element defined in the xml file.&lt;br /&gt;
;VersionNumber&lt;br /&gt;
: This part should be used by the author to identify which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new resources, Armagetron Ad rely solely on this part to be updated. Should a resource be updated and the old name kept, it would cause problems between different clients. Client already having the old resource 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 would get the latest version. The actual format to be used for the VersionNumber is left to the choice of the author. While the Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar 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, ...). Keep in mind that it should be obvious to other as to which is the most up to date version of the resource. A special note for maps: the VersionNumber should be the same as the version attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;Extension&lt;br /&gt;
: This is the regular type of extension. While Armagetron Ad doesn&#039;t verify that the extension describe the right type of content, it is favorable for other users that you set it to the appropriate 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;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 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;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Parallelogram arena ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Parallelogram-1.0.png|right|thumbnail|Parallelogram]]&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot; category=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HexaTRON ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HexaTRON-0.2.png|right|thumbnail|HexaTRON]]&lt;br /&gt;
&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 note that this is 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;&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot; category=&amp;quot;HexaTRON&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About the &amp;quot;undefined and unsupported&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and unsupported&amp;quot;. While it may be possible to do them now, and even amusing to do it, they are strongly discouraged. Later version of the World format will most probably conflict with those behaviors. This will make such behaviors difficult to preserve, if possible at all. For this reasons, it has been decided that _NO_ effort would be put to maintain them. Use them if you want, but do not come complaining if and when they stop working. &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>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=1502</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=1502"/>
		<updated>2005-10-22T19:03:45Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: /* HexaTRON */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is to help map designer to get a grasp of the Map&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This version of the tutorial address the syntax defined by map-0.2.8_beta3.dtd and present the rules of interpreting the syntax as used by the parsing engine in the version 0.2.8_beta3 of Armagetron Advance.&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;
[[Image:original-1.0.1.png|right|thumbnail|Original Armagetron 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;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
	         Converted to XML by philippeqc.&lt;br /&gt;
	         License: Do with it what you want.                          --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
	&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Map format start with a XML header. The actual definition&lt;br /&gt;
of the Map is wrapped in a Resource. The Resource gives a&lt;br /&gt;
description of the content, such as the author and the version of&lt;br /&gt;
the map included. This particuliar map is the xml version of the&lt;br /&gt;
original map that supported directly in the game before version&lt;br /&gt;
0.2.8 (Arthemis). &lt;br /&gt;
&lt;br /&gt;
Skippin ahead in to the Field element, line 11 defines that &lt;br /&gt;
that 4 axes are to be&lt;br /&gt;
used. From line 13 to 26, 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;
== Header ==&lt;br /&gt;
Fill this part&lt;br /&gt;
&lt;br /&gt;
== Resource ==&lt;br /&gt;
This section is under development!&lt;br /&gt;
&lt;br /&gt;
The Resource element describe some meta-information of the Map,&lt;br /&gt;
such as who created it, how should the resource file be named and&lt;br /&gt;
what type of information is to be expected.&lt;br /&gt;
&lt;br /&gt;
One part of the Resource details describe who made this map a&lt;br /&gt;
reality. In the Resource element, it is possible to differenciate&lt;br /&gt;
between the person or organism that comissioned the map, the&lt;br /&gt;
commisionner, and the person who executed the request and coded&lt;br /&gt;
it, the author. &lt;br /&gt;
&lt;br /&gt;
Both operations might be carried by the same and only person, in&lt;br /&gt;
this instance both entities are the same and the commissioner&lt;br /&gt;
field should be left blank. The commissioner field should be used&lt;br /&gt;
when the concept of a map and its execution are performed by two&lt;br /&gt;
different persons or entities. It could range from anything from&lt;br /&gt;
&amp;quot;could someone make a map where the feeling of &amp;lt;X&amp;gt; is emphased&amp;quot; to&lt;br /&gt;
coding from a hand-drawn sketch. The commissioner could also be&lt;br /&gt;
implied. Without him/it ever placing an open request, a&lt;br /&gt;
commisioner could be assign to a map when the author whan to&lt;br /&gt;
express an assumed sharing of the creation of the map. This can be&lt;br /&gt;
the case, for example, when the member of a Clan wrote a map that&lt;br /&gt;
falls in the ideals of the Clan.&lt;br /&gt;
&lt;br /&gt;
To facilitate manipulation of the file over distributed systems,&lt;br /&gt;
the Resource holds explicit information about the naming and&lt;br /&gt;
storing of the file. This information can be used by tools such as&lt;br /&gt;
scripts and resource repositories to manipulate the file. &lt;br /&gt;
&lt;br /&gt;
Many tools, including the game client, will expect the following&lt;br /&gt;
to indicate the location of a &lt;br /&gt;
filee inside the local store of resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Author&amp;gt;/[Category/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;ResourceType&amp;gt;.&amp;lt;Extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
This element is the basic holder of the description of the&lt;br /&gt;
Map. From the opening element to the closing one, all the&lt;br /&gt;
information will be used to construct an in-game representation&lt;br /&gt;
for the players to explore and possibly compete in.&lt;br /&gt;
&lt;br /&gt;
The version attribute of the map indicate an specific parsing&lt;br /&gt;
engine version that should be used to express the map in the exact&lt;br /&gt;
manners that are desired by the map creator. Sooner in the file,&lt;br /&gt;
the dtd has already specified a version. The difference between&lt;br /&gt;
both version is one specify the version of the syntax to be use,&lt;br /&gt;
and the other, the version of the rules to be used to interprete&lt;br /&gt;
the syntax.&lt;br /&gt;
&lt;br /&gt;
The dtd control the syntax, what keywords are valid and in which&lt;br /&gt;
arrangement. The parsing engine has specific rules how to read the&lt;br /&gt;
syntax and create the game elements. It is possible for different&lt;br /&gt;
parsing engine to operate from the same syntax, be it because the syntax&lt;br /&gt;
allows for many interpretation, or because a specific&lt;br /&gt;
interpretation has been found faulty in some case. Because each&lt;br /&gt;
interpretation could lead to very different instantiation, it is&lt;br /&gt;
best for the map designer to specify the one that should be&lt;br /&gt;
used. Even when no alternative interpretation exist, ie: there is&lt;br /&gt;
only one version available, it is best for the map designer to&lt;br /&gt;
specify it. Should a new one be implemented at a later time, the&lt;br /&gt;
map defined would continue to be instanciated properly.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, the only parsing engine version is&lt;br /&gt;
&amp;quot;0.2.8&amp;quot;. Maps using a version that is not understood by the&lt;br /&gt;
parsing engine of a specific client or server will be&lt;br /&gt;
automatically rejected by said application, on the ground that the&lt;br /&gt;
parsing engine doesn&#039;t know how to operate on it.&lt;br /&gt;
&lt;br /&gt;
Even if only one value exist, it is impossible to provide it as a&lt;br /&gt;
default, as there are no assurance that a new interpretation of&lt;br /&gt;
the syntax will not arrive at a future time.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It is possible for a map designer to indicate specific game&lt;br /&gt;
settings, similar to the ones available through the configuration&lt;br /&gt;
files of the application, to be used with the map. When&lt;br /&gt;
this is not desired, the Settings element can be safely removed&lt;br /&gt;
from the map definition.&lt;br /&gt;
&lt;br /&gt;
Any number of Setting can be defined inside of the Settings&lt;br /&gt;
element. Each Setting defined will overwrite the value previously&lt;br /&gt;
defined in the game. Each new Setting addressing a specific&lt;br /&gt;
configuration item will keep on overwriting previously defined&lt;br /&gt;
values. The Settings items are processed in order, from the top to&lt;br /&gt;
the bottom one.&lt;br /&gt;
&lt;br /&gt;
The Settings should be considered to be global to the World and&lt;br /&gt;
its sub-elements. This has very little relevance at the moment as&lt;br /&gt;
only one World and one Field can exist in the game. It is not&lt;br /&gt;
excluded that future version of the game could support multiple&lt;br /&gt;
elements such as World and Field. Each such elements and sub-elements would&lt;br /&gt;
receive the Settings defined in its parents, but would also be&lt;br /&gt;
able to overwrite parent received Settings for itself and its&lt;br /&gt;
sub-elements. &lt;br /&gt;
&lt;br /&gt;
One such overwriting capacity already exist, in the form of the&lt;br /&gt;
Axes element. This element can and will overwrite the value passed&lt;br /&gt;
by the Setting ARENA_AXES.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, there are no known case where the order of&lt;br /&gt;
writing Setting should matter. There are no garanties of it being&lt;br /&gt;
the case. Be carefull of the order of the Setting provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting ==&lt;br /&gt;
Each individual Setting defines a specific element normally&lt;br /&gt;
configurable throught the config files of the game&lt;br /&gt;
application. For a full list and description of the setting&lt;br /&gt;
available, consult &#039;&#039;&#039;TODO&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The Setting has two attributes, the name and the value. The name&lt;br /&gt;
field hold the setting name as found in the various configuration&lt;br /&gt;
files. The value field will be assigned to the designated setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Setting name=&amp;quot;CYCLE_BRAKE_REFILL&amp;quot; value=&amp;quot;.1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will assing .1 to the configuration item CYCLE_BRAKE_REFILL.&lt;br /&gt;
&lt;br /&gt;
No validation are done on either fields by the parsing engine. The&lt;br /&gt;
values are passed directly to the setting engine, where the usual&lt;br /&gt;
validation is performed. Unexisting or misspelled settings names&lt;br /&gt;
will be ignored. Setting with valid names and invalid values have&lt;br /&gt;
an undetermined effect.&lt;br /&gt;
&lt;br /&gt;
The different Setting used have the potential of overwriding&lt;br /&gt;
client or server ones. While this behavior offers great capacity&lt;br /&gt;
to custom behavior for a specific map, users playing locally on&lt;br /&gt;
their machine and server administrator might find it a disruption&lt;br /&gt;
of their craftfully designed settings. Use with care and&lt;br /&gt;
moderation.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the World element is&lt;br /&gt;
the Field element. Only one Field can be defined.&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;
The following 2 paragraph are post map-0.2.8_beta3 and 0.2.8_beta3.&lt;br /&gt;
&lt;br /&gt;
For clarity purpose, the Axes element, if defined, need to be&lt;br /&gt;
defined first. After this, Spawn point, Walls and Zones can be&lt;br /&gt;
defined in any order.&lt;br /&gt;
&lt;br /&gt;
While a Field without any Spawn points is syntaxly valid, and&lt;br /&gt;
the parsing engine doesnt report any error, the effect is&lt;br /&gt;
undetermined. While a Field without any Wall is syntaxly valid,&lt;br /&gt;
and the parsing engine doesn&#039;t report any error, the effect is&lt;br /&gt;
undetermined.&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;&lt;br /&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 6.3.1, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wall ==&lt;br /&gt;
Walls 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;pre&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;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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&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;
The Wall element has one attribute, the height. Controlling the&lt;br /&gt;
height affect the rendering height of a wall. A height of 1.0 is&lt;br /&gt;
about the same as the height of the original cycle model. A height&lt;br /&gt;
of 4.0 correspond to the Walls rendered with the lowRim setting on&lt;br /&gt;
the client. When no height is defined, the client defined setting&lt;br /&gt;
of either lowRim or highRim is used. This has the advantage of&lt;br /&gt;
respecting the players choice and often, capacity to render high&lt;br /&gt;
walls.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;height&#039;&#039;&lt;br /&gt;
: The height used for the rendering of the Wall.&lt;br /&gt;
&lt;br /&gt;
Example : Using the client default height&lt;br /&gt;
&amp;lt;pre&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;10&amp;quot; y=&amp;quot;10&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 : Controling the height&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Wall height=&amp;quot;2.13&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;Point x=&amp;quot;10&amp;quot; y=&amp;quot;10&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;
== 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;
== Zones ==&lt;br /&gt;
Zone are interactive areas on the Field. They manifest themself as&lt;br /&gt;
huge circles slowly rotating. The players can interact with the&lt;br /&gt;
Zones by entering or being inside them.&lt;br /&gt;
&lt;br /&gt;
The Zone has an attribute effect which allows 3 values: win, death and&lt;br /&gt;
fortress. Entering a Zone of effect win makes the player the round&lt;br /&gt;
winner. Entering a Zone of effect death automatically kills the&lt;br /&gt;
player. Zones of effect fortress need to be occupied to be&lt;br /&gt;
triggered, and once triggered, they make the team the round winner.&lt;br /&gt;
&lt;br /&gt;
The Zone requires a sub element named ShapeCircle. &lt;br /&gt;
&lt;br /&gt;
The ShapeCircle has 2 attributes, the radius and the growth. The&lt;br /&gt;
radius attribute describe the size of the CircleShape and is&lt;br /&gt;
required. The unit used is the same game unit that are used as map&lt;br /&gt;
coordinates. A ShapeCircle with a radius of 10 will extend of 10&lt;br /&gt;
game units in every direction from its center.&lt;br /&gt;
&lt;br /&gt;
The growth describe how the radius of the ShapeCircle changes over&lt;br /&gt;
time. This unit is game units per second from the moment the Zone&lt;br /&gt;
is create, which is the round start.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify a negative growth, in which case the ShapeCircle will&lt;br /&gt;
slowly shrink. Should at any time the radius be of 0 or less, the&lt;br /&gt;
Zone is removed without effect.&lt;br /&gt;
The growth is optional and defaults to 0, which hold the&lt;br /&gt;
ShapeCircle at a constant size during the round.&lt;br /&gt;
&lt;br /&gt;
The ShapeCircle requires a Point sub-element which describe the&lt;br /&gt;
center of the ShapeCircle. The syntax of the Point is the same as&lt;br /&gt;
the one used for the Wall.&lt;br /&gt;
&lt;br /&gt;
It is possible and valid to place the center of the Zone in a&lt;br /&gt;
location that is not accessible to the players, such as in a&lt;br /&gt;
walled compound or outside of the play area. This behavior might&lt;br /&gt;
change in future version. Consult the appropriate documentation.&lt;br /&gt;
&lt;br /&gt;
Nota: It is important to note that while Zones are introduced in&lt;br /&gt;
Arthemis, a more complete implementation will follow in&lt;br /&gt;
Bacchus. Curious minds consulting the documentation presenting the&lt;br /&gt;
Bacchus implementation of Zones will notice that fortress isn&#039;t an&lt;br /&gt;
effect, but rather a trigger type. The Arthemis implementation of&lt;br /&gt;
Zones falsely uses it as an effect instead of exposing a trigger&lt;br /&gt;
mechanism. Map designers are to be warned this will no longer be&lt;br /&gt;
possible in maps defined for Bacchus.&lt;br /&gt;
&lt;br /&gt;
=== Fortress Zone ===&lt;br /&gt;
The fortress Zone is particuliar because it uses a scoring system&lt;br /&gt;
to determine if and when the Zone is triggered. The score is&lt;br /&gt;
affected by the time passed in it by attackers and defenders.&lt;br /&gt;
&lt;br /&gt;
At start time, the score is set to 0.0. While the score can move&lt;br /&gt;
freely, 2 restrictions are always applied. First, the score can&lt;br /&gt;
never drop below 0.0. Second, if the score reaches or exceed 1.0,&lt;br /&gt;
the Zone is triggered.&lt;br /&gt;
&lt;br /&gt;
Each single adversary in the Zone add to the score for their time&lt;br /&gt;
passed in it. Each single defender in the Zone remove to the score&lt;br /&gt;
for their time passed in it. Also, the score always decays. Each&lt;br /&gt;
of these aspect is controlled by a different setting,&lt;br /&gt;
CONQUEST_RATE, DEFEND_RATE and CONQUEST_DECAY_RATE. They all&lt;br /&gt;
express a rate in points per seconds.&lt;br /&gt;
&lt;br /&gt;
;CONQUEST_RATE&lt;br /&gt;
: Any single attacking player in the Zone add points to the score at this rate. &lt;br /&gt;
;DEFEND_RATE&lt;br /&gt;
: Any single defending player in the Zone removes points to the score at this rate. &lt;br /&gt;
;CONQUEST_DECAY_RATE&lt;br /&gt;
: The score of a Zone decays at this rate, irrelevantly of the numbers of attackers and defenders in the Zone. &lt;br /&gt;
&lt;br /&gt;
These 3 settings are global for all the Zones on a map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Map writing best practice ===&lt;br /&gt;
&lt;br /&gt;
==== Comment your work ====&lt;br /&gt;
&lt;br /&gt;
You should always comment the various parts of your work. Doing so improve maintainability. Something that is obvious during the creation of a particular map often becomes very cryptic after a few weeks. A good comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comment in xml start with &amp;quot;&amp;lt;!--&amp;quot; (without the quotes) and ends with &amp;quot;--&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t highlight the commented part, be careful not to exclude a part of your map by mistake.&lt;br /&gt;
&lt;br /&gt;
==== Arena size ====&lt;br /&gt;
&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;
==== Don&#039;t overload attributes ====&lt;br /&gt;
&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 following drawbacks:&lt;br /&gt;
&lt;br /&gt;
* File size: The exceeding information is never used, but need to be transmitted as part of the file, and stored.&lt;br /&gt;
* Readability: Exceeding information complicate the reading of a map by humans. &lt;br /&gt;
* Maintenance: Maintenance of the map is not much more complex. If the author is minimalist, he/she risk updating the part of information that is ignored. Extremely good knowledge of the working of the parser is required to avoid this pitfall, and the change is only valid if the rule of precedences aren&#039;t updated. Specifying only one set of information avoid this problem. Also, if both set of information are updated, then the task for the author is double, and so are the risks for error.&lt;br /&gt;
&lt;br /&gt;
=== Resource file name convention ===&lt;br /&gt;
&lt;br /&gt;
Resource are external content that makes the game interesting. Textures, sounds, models and maps are all resources for Armagetron Ad. While at the time of writing of this tutorial, only maps are supported as true resources, soon support for the other types will be added. Also, while this section incorporated in the Maps tutorial, it might be moved as an independent document, and the standard 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 resources for Armagetron Ad should follow the following naming 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&lt;br /&gt;
: The name of the person who created the resource. This can be the full name, a nick name (such as the ones used on the Armagetron Ad forum) of the author. Alternatively, the author can forgo his or her name and instead opt for a group name. Group name should be used when the author want to indicate that a set of resources are associate with a group. Instances of this could be when the resources are for a clan, a community, a [set of] server[s].&lt;br /&gt;
;SubDirectory&lt;br /&gt;
: Prolific authors and those are free to set up any number of sub directories to help them organize and possibly categorize their resources. The Armagetron Ad team recommend you to categorize resources by topics (ie: all the resources required for a particular movie-pack set in the same sub directory) over other categorization, such as categorization by type (ie: all the floor tiles set in the same sub directory). Any number of sub directory level should be supported. This is not a mandatory item.&lt;br /&gt;
;ResourceName&lt;br /&gt;
: The actual name of the resource. This should be descriptive, and somewhat unique to facilitate identification of the described resource. The advantage of specifying a somewhat unique name here is that should the resource be accidentally moved out of its folder, it is still possible to quickly and easily identify it. A special note for maps: the ResourceName should be the same as the name attribute of the Map element defined in the xml file.&lt;br /&gt;
;VersionNumber&lt;br /&gt;
: This part should be used by the author to identify which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new resources, Armagetron Ad rely solely on this part to be updated. Should a resource be updated and the old name kept, it would cause problems between different clients. Client already having the old resource 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 would get the latest version. The actual format to be used for the VersionNumber is left to the choice of the author. While the Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar 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, ...). Keep in mind that it should be obvious to other as to which is the most up to date version of the resource. A special note for maps: the VersionNumber should be the same as the version attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;Extension&lt;br /&gt;
: This is the regular type of extension. While Armagetron Ad doesn&#039;t verify that the extension describe the right type of content, it is favorable for other users that you set it to the appropriate 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;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 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;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Parallelogram arena ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Parallelogram-1.0.png|right|thumbnail|Parallelogram]]&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot; category=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HexaTRON ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HexaTRON-0.2.png|right|thumbnail|HexaTRON]]&lt;br /&gt;
&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 note that this is 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;&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot; category=&amp;quot;HexaTRON&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About the &amp;quot;undefined and unsupported&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and unsupported&amp;quot;. While it may be possible to do them now, and even amusing to do it, they are strongly discouraged. Later version of the World format will most probably conflict with those behaviors. This will make such behaviors difficult to preserve, if possible at all. For this reasons, it has been decided that _NO_ effort would be put to maintain them. Use them if you want, but do not come complaining if and when they stop working. &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>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=1501</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=1501"/>
		<updated>2005-10-22T19:03:31Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: /* Parallelogram arena */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is to help map designer to get a grasp of the Map&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This version of the tutorial address the syntax defined by map-0.2.8_beta3.dtd and present the rules of interpreting the syntax as used by the parsing engine in the version 0.2.8_beta3 of Armagetron Advance.&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;
[[Image:original-1.0.1.png|right|thumbnail|Original Armagetron 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;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
	         Converted to XML by philippeqc.&lt;br /&gt;
	         License: Do with it what you want.                          --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
	&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Map format start with a XML header. The actual definition&lt;br /&gt;
of the Map is wrapped in a Resource. The Resource gives a&lt;br /&gt;
description of the content, such as the author and the version of&lt;br /&gt;
the map included. This particuliar map is the xml version of the&lt;br /&gt;
original map that supported directly in the game before version&lt;br /&gt;
0.2.8 (Arthemis). &lt;br /&gt;
&lt;br /&gt;
Skippin ahead in to the Field element, line 11 defines that &lt;br /&gt;
that 4 axes are to be&lt;br /&gt;
used. From line 13 to 26, 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;
== Header ==&lt;br /&gt;
Fill this part&lt;br /&gt;
&lt;br /&gt;
== Resource ==&lt;br /&gt;
This section is under development!&lt;br /&gt;
&lt;br /&gt;
The Resource element describe some meta-information of the Map,&lt;br /&gt;
such as who created it, how should the resource file be named and&lt;br /&gt;
what type of information is to be expected.&lt;br /&gt;
&lt;br /&gt;
One part of the Resource details describe who made this map a&lt;br /&gt;
reality. In the Resource element, it is possible to differenciate&lt;br /&gt;
between the person or organism that comissioned the map, the&lt;br /&gt;
commisionner, and the person who executed the request and coded&lt;br /&gt;
it, the author. &lt;br /&gt;
&lt;br /&gt;
Both operations might be carried by the same and only person, in&lt;br /&gt;
this instance both entities are the same and the commissioner&lt;br /&gt;
field should be left blank. The commissioner field should be used&lt;br /&gt;
when the concept of a map and its execution are performed by two&lt;br /&gt;
different persons or entities. It could range from anything from&lt;br /&gt;
&amp;quot;could someone make a map where the feeling of &amp;lt;X&amp;gt; is emphased&amp;quot; to&lt;br /&gt;
coding from a hand-drawn sketch. The commissioner could also be&lt;br /&gt;
implied. Without him/it ever placing an open request, a&lt;br /&gt;
commisioner could be assign to a map when the author whan to&lt;br /&gt;
express an assumed sharing of the creation of the map. This can be&lt;br /&gt;
the case, for example, when the member of a Clan wrote a map that&lt;br /&gt;
falls in the ideals of the Clan.&lt;br /&gt;
&lt;br /&gt;
To facilitate manipulation of the file over distributed systems,&lt;br /&gt;
the Resource holds explicit information about the naming and&lt;br /&gt;
storing of the file. This information can be used by tools such as&lt;br /&gt;
scripts and resource repositories to manipulate the file. &lt;br /&gt;
&lt;br /&gt;
Many tools, including the game client, will expect the following&lt;br /&gt;
to indicate the location of a &lt;br /&gt;
filee inside the local store of resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Author&amp;gt;/[Category/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;ResourceType&amp;gt;.&amp;lt;Extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
This element is the basic holder of the description of the&lt;br /&gt;
Map. From the opening element to the closing one, all the&lt;br /&gt;
information will be used to construct an in-game representation&lt;br /&gt;
for the players to explore and possibly compete in.&lt;br /&gt;
&lt;br /&gt;
The version attribute of the map indicate an specific parsing&lt;br /&gt;
engine version that should be used to express the map in the exact&lt;br /&gt;
manners that are desired by the map creator. Sooner in the file,&lt;br /&gt;
the dtd has already specified a version. The difference between&lt;br /&gt;
both version is one specify the version of the syntax to be use,&lt;br /&gt;
and the other, the version of the rules to be used to interprete&lt;br /&gt;
the syntax.&lt;br /&gt;
&lt;br /&gt;
The dtd control the syntax, what keywords are valid and in which&lt;br /&gt;
arrangement. The parsing engine has specific rules how to read the&lt;br /&gt;
syntax and create the game elements. It is possible for different&lt;br /&gt;
parsing engine to operate from the same syntax, be it because the syntax&lt;br /&gt;
allows for many interpretation, or because a specific&lt;br /&gt;
interpretation has been found faulty in some case. Because each&lt;br /&gt;
interpretation could lead to very different instantiation, it is&lt;br /&gt;
best for the map designer to specify the one that should be&lt;br /&gt;
used. Even when no alternative interpretation exist, ie: there is&lt;br /&gt;
only one version available, it is best for the map designer to&lt;br /&gt;
specify it. Should a new one be implemented at a later time, the&lt;br /&gt;
map defined would continue to be instanciated properly.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, the only parsing engine version is&lt;br /&gt;
&amp;quot;0.2.8&amp;quot;. Maps using a version that is not understood by the&lt;br /&gt;
parsing engine of a specific client or server will be&lt;br /&gt;
automatically rejected by said application, on the ground that the&lt;br /&gt;
parsing engine doesn&#039;t know how to operate on it.&lt;br /&gt;
&lt;br /&gt;
Even if only one value exist, it is impossible to provide it as a&lt;br /&gt;
default, as there are no assurance that a new interpretation of&lt;br /&gt;
the syntax will not arrive at a future time.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It is possible for a map designer to indicate specific game&lt;br /&gt;
settings, similar to the ones available through the configuration&lt;br /&gt;
files of the application, to be used with the map. When&lt;br /&gt;
this is not desired, the Settings element can be safely removed&lt;br /&gt;
from the map definition.&lt;br /&gt;
&lt;br /&gt;
Any number of Setting can be defined inside of the Settings&lt;br /&gt;
element. Each Setting defined will overwrite the value previously&lt;br /&gt;
defined in the game. Each new Setting addressing a specific&lt;br /&gt;
configuration item will keep on overwriting previously defined&lt;br /&gt;
values. The Settings items are processed in order, from the top to&lt;br /&gt;
the bottom one.&lt;br /&gt;
&lt;br /&gt;
The Settings should be considered to be global to the World and&lt;br /&gt;
its sub-elements. This has very little relevance at the moment as&lt;br /&gt;
only one World and one Field can exist in the game. It is not&lt;br /&gt;
excluded that future version of the game could support multiple&lt;br /&gt;
elements such as World and Field. Each such elements and sub-elements would&lt;br /&gt;
receive the Settings defined in its parents, but would also be&lt;br /&gt;
able to overwrite parent received Settings for itself and its&lt;br /&gt;
sub-elements. &lt;br /&gt;
&lt;br /&gt;
One such overwriting capacity already exist, in the form of the&lt;br /&gt;
Axes element. This element can and will overwrite the value passed&lt;br /&gt;
by the Setting ARENA_AXES.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, there are no known case where the order of&lt;br /&gt;
writing Setting should matter. There are no garanties of it being&lt;br /&gt;
the case. Be carefull of the order of the Setting provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting ==&lt;br /&gt;
Each individual Setting defines a specific element normally&lt;br /&gt;
configurable throught the config files of the game&lt;br /&gt;
application. For a full list and description of the setting&lt;br /&gt;
available, consult &#039;&#039;&#039;TODO&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The Setting has two attributes, the name and the value. The name&lt;br /&gt;
field hold the setting name as found in the various configuration&lt;br /&gt;
files. The value field will be assigned to the designated setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Setting name=&amp;quot;CYCLE_BRAKE_REFILL&amp;quot; value=&amp;quot;.1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will assing .1 to the configuration item CYCLE_BRAKE_REFILL.&lt;br /&gt;
&lt;br /&gt;
No validation are done on either fields by the parsing engine. The&lt;br /&gt;
values are passed directly to the setting engine, where the usual&lt;br /&gt;
validation is performed. Unexisting or misspelled settings names&lt;br /&gt;
will be ignored. Setting with valid names and invalid values have&lt;br /&gt;
an undetermined effect.&lt;br /&gt;
&lt;br /&gt;
The different Setting used have the potential of overwriding&lt;br /&gt;
client or server ones. While this behavior offers great capacity&lt;br /&gt;
to custom behavior for a specific map, users playing locally on&lt;br /&gt;
their machine and server administrator might find it a disruption&lt;br /&gt;
of their craftfully designed settings. Use with care and&lt;br /&gt;
moderation.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the World element is&lt;br /&gt;
the Field element. Only one Field can be defined.&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;
The following 2 paragraph are post map-0.2.8_beta3 and 0.2.8_beta3.&lt;br /&gt;
&lt;br /&gt;
For clarity purpose, the Axes element, if defined, need to be&lt;br /&gt;
defined first. After this, Spawn point, Walls and Zones can be&lt;br /&gt;
defined in any order.&lt;br /&gt;
&lt;br /&gt;
While a Field without any Spawn points is syntaxly valid, and&lt;br /&gt;
the parsing engine doesnt report any error, the effect is&lt;br /&gt;
undetermined. While a Field without any Wall is syntaxly valid,&lt;br /&gt;
and the parsing engine doesn&#039;t report any error, the effect is&lt;br /&gt;
undetermined.&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;&lt;br /&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 6.3.1, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wall ==&lt;br /&gt;
Walls 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;pre&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;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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&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;
The Wall element has one attribute, the height. Controlling the&lt;br /&gt;
height affect the rendering height of a wall. A height of 1.0 is&lt;br /&gt;
about the same as the height of the original cycle model. A height&lt;br /&gt;
of 4.0 correspond to the Walls rendered with the lowRim setting on&lt;br /&gt;
the client. When no height is defined, the client defined setting&lt;br /&gt;
of either lowRim or highRim is used. This has the advantage of&lt;br /&gt;
respecting the players choice and often, capacity to render high&lt;br /&gt;
walls.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;height&#039;&#039;&lt;br /&gt;
: The height used for the rendering of the Wall.&lt;br /&gt;
&lt;br /&gt;
Example : Using the client default height&lt;br /&gt;
&amp;lt;pre&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;10&amp;quot; y=&amp;quot;10&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 : Controling the height&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Wall height=&amp;quot;2.13&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;Point x=&amp;quot;10&amp;quot; y=&amp;quot;10&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;
== 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;
== Zones ==&lt;br /&gt;
Zone are interactive areas on the Field. They manifest themself as&lt;br /&gt;
huge circles slowly rotating. The players can interact with the&lt;br /&gt;
Zones by entering or being inside them.&lt;br /&gt;
&lt;br /&gt;
The Zone has an attribute effect which allows 3 values: win, death and&lt;br /&gt;
fortress. Entering a Zone of effect win makes the player the round&lt;br /&gt;
winner. Entering a Zone of effect death automatically kills the&lt;br /&gt;
player. Zones of effect fortress need to be occupied to be&lt;br /&gt;
triggered, and once triggered, they make the team the round winner.&lt;br /&gt;
&lt;br /&gt;
The Zone requires a sub element named ShapeCircle. &lt;br /&gt;
&lt;br /&gt;
The ShapeCircle has 2 attributes, the radius and the growth. The&lt;br /&gt;
radius attribute describe the size of the CircleShape and is&lt;br /&gt;
required. The unit used is the same game unit that are used as map&lt;br /&gt;
coordinates. A ShapeCircle with a radius of 10 will extend of 10&lt;br /&gt;
game units in every direction from its center.&lt;br /&gt;
&lt;br /&gt;
The growth describe how the radius of the ShapeCircle changes over&lt;br /&gt;
time. This unit is game units per second from the moment the Zone&lt;br /&gt;
is create, which is the round start.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify a negative growth, in which case the ShapeCircle will&lt;br /&gt;
slowly shrink. Should at any time the radius be of 0 or less, the&lt;br /&gt;
Zone is removed without effect.&lt;br /&gt;
The growth is optional and defaults to 0, which hold the&lt;br /&gt;
ShapeCircle at a constant size during the round.&lt;br /&gt;
&lt;br /&gt;
The ShapeCircle requires a Point sub-element which describe the&lt;br /&gt;
center of the ShapeCircle. The syntax of the Point is the same as&lt;br /&gt;
the one used for the Wall.&lt;br /&gt;
&lt;br /&gt;
It is possible and valid to place the center of the Zone in a&lt;br /&gt;
location that is not accessible to the players, such as in a&lt;br /&gt;
walled compound or outside of the play area. This behavior might&lt;br /&gt;
change in future version. Consult the appropriate documentation.&lt;br /&gt;
&lt;br /&gt;
Nota: It is important to note that while Zones are introduced in&lt;br /&gt;
Arthemis, a more complete implementation will follow in&lt;br /&gt;
Bacchus. Curious minds consulting the documentation presenting the&lt;br /&gt;
Bacchus implementation of Zones will notice that fortress isn&#039;t an&lt;br /&gt;
effect, but rather a trigger type. The Arthemis implementation of&lt;br /&gt;
Zones falsely uses it as an effect instead of exposing a trigger&lt;br /&gt;
mechanism. Map designers are to be warned this will no longer be&lt;br /&gt;
possible in maps defined for Bacchus.&lt;br /&gt;
&lt;br /&gt;
=== Fortress Zone ===&lt;br /&gt;
The fortress Zone is particuliar because it uses a scoring system&lt;br /&gt;
to determine if and when the Zone is triggered. The score is&lt;br /&gt;
affected by the time passed in it by attackers and defenders.&lt;br /&gt;
&lt;br /&gt;
At start time, the score is set to 0.0. While the score can move&lt;br /&gt;
freely, 2 restrictions are always applied. First, the score can&lt;br /&gt;
never drop below 0.0. Second, if the score reaches or exceed 1.0,&lt;br /&gt;
the Zone is triggered.&lt;br /&gt;
&lt;br /&gt;
Each single adversary in the Zone add to the score for their time&lt;br /&gt;
passed in it. Each single defender in the Zone remove to the score&lt;br /&gt;
for their time passed in it. Also, the score always decays. Each&lt;br /&gt;
of these aspect is controlled by a different setting,&lt;br /&gt;
CONQUEST_RATE, DEFEND_RATE and CONQUEST_DECAY_RATE. They all&lt;br /&gt;
express a rate in points per seconds.&lt;br /&gt;
&lt;br /&gt;
;CONQUEST_RATE&lt;br /&gt;
: Any single attacking player in the Zone add points to the score at this rate. &lt;br /&gt;
;DEFEND_RATE&lt;br /&gt;
: Any single defending player in the Zone removes points to the score at this rate. &lt;br /&gt;
;CONQUEST_DECAY_RATE&lt;br /&gt;
: The score of a Zone decays at this rate, irrelevantly of the numbers of attackers and defenders in the Zone. &lt;br /&gt;
&lt;br /&gt;
These 3 settings are global for all the Zones on a map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Map writing best practice ===&lt;br /&gt;
&lt;br /&gt;
==== Comment your work ====&lt;br /&gt;
&lt;br /&gt;
You should always comment the various parts of your work. Doing so improve maintainability. Something that is obvious during the creation of a particular map often becomes very cryptic after a few weeks. A good comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comment in xml start with &amp;quot;&amp;lt;!--&amp;quot; (without the quotes) and ends with &amp;quot;--&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t highlight the commented part, be careful not to exclude a part of your map by mistake.&lt;br /&gt;
&lt;br /&gt;
==== Arena size ====&lt;br /&gt;
&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;
==== Don&#039;t overload attributes ====&lt;br /&gt;
&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 following drawbacks:&lt;br /&gt;
&lt;br /&gt;
* File size: The exceeding information is never used, but need to be transmitted as part of the file, and stored.&lt;br /&gt;
* Readability: Exceeding information complicate the reading of a map by humans. &lt;br /&gt;
* Maintenance: Maintenance of the map is not much more complex. If the author is minimalist, he/she risk updating the part of information that is ignored. Extremely good knowledge of the working of the parser is required to avoid this pitfall, and the change is only valid if the rule of precedences aren&#039;t updated. Specifying only one set of information avoid this problem. Also, if both set of information are updated, then the task for the author is double, and so are the risks for error.&lt;br /&gt;
&lt;br /&gt;
=== Resource file name convention ===&lt;br /&gt;
&lt;br /&gt;
Resource are external content that makes the game interesting. Textures, sounds, models and maps are all resources for Armagetron Ad. While at the time of writing of this tutorial, only maps are supported as true resources, soon support for the other types will be added. Also, while this section incorporated in the Maps tutorial, it might be moved as an independent document, and the standard 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 resources for Armagetron Ad should follow the following naming 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&lt;br /&gt;
: The name of the person who created the resource. This can be the full name, a nick name (such as the ones used on the Armagetron Ad forum) of the author. Alternatively, the author can forgo his or her name and instead opt for a group name. Group name should be used when the author want to indicate that a set of resources are associate with a group. Instances of this could be when the resources are for a clan, a community, a [set of] server[s].&lt;br /&gt;
;SubDirectory&lt;br /&gt;
: Prolific authors and those are free to set up any number of sub directories to help them organize and possibly categorize their resources. The Armagetron Ad team recommend you to categorize resources by topics (ie: all the resources required for a particular movie-pack set in the same sub directory) over other categorization, such as categorization by type (ie: all the floor tiles set in the same sub directory). Any number of sub directory level should be supported. This is not a mandatory item.&lt;br /&gt;
;ResourceName&lt;br /&gt;
: The actual name of the resource. This should be descriptive, and somewhat unique to facilitate identification of the described resource. The advantage of specifying a somewhat unique name here is that should the resource be accidentally moved out of its folder, it is still possible to quickly and easily identify it. A special note for maps: the ResourceName should be the same as the name attribute of the Map element defined in the xml file.&lt;br /&gt;
;VersionNumber&lt;br /&gt;
: This part should be used by the author to identify which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new resources, Armagetron Ad rely solely on this part to be updated. Should a resource be updated and the old name kept, it would cause problems between different clients. Client already having the old resource 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 would get the latest version. The actual format to be used for the VersionNumber is left to the choice of the author. While the Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar 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, ...). Keep in mind that it should be obvious to other as to which is the most up to date version of the resource. A special note for maps: the VersionNumber should be the same as the version attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;Extension&lt;br /&gt;
: This is the regular type of extension. While Armagetron Ad doesn&#039;t verify that the extension describe the right type of content, it is favorable for other users that you set it to the appropriate 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;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 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;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Parallelogram arena ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Parallelogram-1.0.png|right|thumbnail|Parallelogram]]&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot; category=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HexaTRON ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HexaTRON-0.2.png|right|thumbnail|HexaTRON]]&lt;br /&gt;
&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 note that this is 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;&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot; category=&amp;quot;HexaTRON&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8_beta3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About the &amp;quot;undefined and unsupported&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and unsupported&amp;quot;. While it may be possible to do them now, and even amusing to do it, they are strongly discouraged. Later version of the World format will most probably conflict with those behaviors. This will make such behaviors difficult to preserve, if possible at all. For this reasons, it has been decided that _NO_ effort would be put to maintain them. Use them if you want, but do not come complaining if and when they stop working. &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>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=1495</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=1495"/>
		<updated>2005-10-22T15:59:34Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: One too many version field in the Resource element&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is to help map designer to get a grasp of the Map&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This version of the tutorial address the syntax defined by map-0.2.8_beta3.dtd and present the rules of interpreting the syntax as used by the parsing engine in the version 0.2.8_beta3 of Armagetron Advance.&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;
[[Image:original-1.0.1.png|right|thumbnail|Original Armagetron 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;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
	         Converted to XML by philippeqc.&lt;br /&gt;
	         License: Do with it what you want.                          --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
	&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Map format start with a XML header. The actual definition&lt;br /&gt;
of the Map is wrapped in a Resource. The Resource gives a&lt;br /&gt;
description of the content, such as the author and the version of&lt;br /&gt;
the map included. This particuliar map is the xml version of the&lt;br /&gt;
original map that supported directly in the game before version&lt;br /&gt;
0.2.8 (Arthemis). &lt;br /&gt;
&lt;br /&gt;
Skippin ahead in to the Field element, line 11 defines that &lt;br /&gt;
that 4 axes are to be&lt;br /&gt;
used. From line 13 to 26, 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;
== Header ==&lt;br /&gt;
Fill this part&lt;br /&gt;
&lt;br /&gt;
== Resource ==&lt;br /&gt;
This section is under development!&lt;br /&gt;
&lt;br /&gt;
The Resource element describe some meta-information of the Map,&lt;br /&gt;
such as who created it, how should the resource file be named and&lt;br /&gt;
what type of information is to be expected.&lt;br /&gt;
&lt;br /&gt;
One part of the Resource details describe who made this map a&lt;br /&gt;
reality. In the Resource element, it is possible to differenciate&lt;br /&gt;
between the person or organism that comissioned the map, the&lt;br /&gt;
commisionner, and the person who executed the request and coded&lt;br /&gt;
it, the author. &lt;br /&gt;
&lt;br /&gt;
Both operations might be carried by the same and only person, in&lt;br /&gt;
this instance both entities are the same and the commissioner&lt;br /&gt;
field should be left blank. The commissioner field should be used&lt;br /&gt;
when the concept of a map and its execution are performed by two&lt;br /&gt;
different persons or entities. It could range from anything from&lt;br /&gt;
&amp;quot;could someone make a map where the feeling of &amp;lt;X&amp;gt; is emphased&amp;quot; to&lt;br /&gt;
coding from a hand-drawn sketch. The commissioner could also be&lt;br /&gt;
implied. Without him/it ever placing an open request, a&lt;br /&gt;
commisioner could be assign to a map when the author whan to&lt;br /&gt;
express an assumed sharing of the creation of the map. This can be&lt;br /&gt;
the case, for example, when the member of a Clan wrote a map that&lt;br /&gt;
falls in the ideals of the Clan.&lt;br /&gt;
&lt;br /&gt;
To facilitate manipulation of the file over distributed systems,&lt;br /&gt;
the Resource holds explicit information about the naming and&lt;br /&gt;
storing of the file. This information can be used by tools such as&lt;br /&gt;
scripts and resource repositories to manipulate the file. &lt;br /&gt;
&lt;br /&gt;
Many tools, including the game client, will expect the following&lt;br /&gt;
to indicate the location of a &lt;br /&gt;
filee inside the local store of resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Author&amp;gt;/[Category/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;ResourceType&amp;gt;.&amp;lt;Extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
This element is the basic holder of the description of the&lt;br /&gt;
Map. From the opening element to the closing one, all the&lt;br /&gt;
information will be used to construct an in-game representation&lt;br /&gt;
for the players to explore and possibly compete in.&lt;br /&gt;
&lt;br /&gt;
The version attribute of the map indicate an specific parsing&lt;br /&gt;
engine version that should be used to express the map in the exact&lt;br /&gt;
manners that are desired by the map creator. Sooner in the file,&lt;br /&gt;
the dtd has already specified a version. The difference between&lt;br /&gt;
both version is one specify the version of the syntax to be use,&lt;br /&gt;
and the other, the version of the rules to be used to interprete&lt;br /&gt;
the syntax.&lt;br /&gt;
&lt;br /&gt;
The dtd control the syntax, what keywords are valid and in which&lt;br /&gt;
arrangement. The parsing engine has specific rules how to read the&lt;br /&gt;
syntax and create the game elements. It is possible for different&lt;br /&gt;
parsing engine to operate from the same syntax, be it because the syntax&lt;br /&gt;
allows for many interpretation, or because a specific&lt;br /&gt;
interpretation has been found faulty in some case. Because each&lt;br /&gt;
interpretation could lead to very different instantiation, it is&lt;br /&gt;
best for the map designer to specify the one that should be&lt;br /&gt;
used. Even when no alternative interpretation exist, ie: there is&lt;br /&gt;
only one version available, it is best for the map designer to&lt;br /&gt;
specify it. Should a new one be implemented at a later time, the&lt;br /&gt;
map defined would continue to be instanciated properly.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, the only parsing engine version is&lt;br /&gt;
&amp;quot;0.2.8&amp;quot;. Maps using a version that is not understood by the&lt;br /&gt;
parsing engine of a specific client or server will be&lt;br /&gt;
automatically rejected by said application, on the ground that the&lt;br /&gt;
parsing engine doesn&#039;t know how to operate on it.&lt;br /&gt;
&lt;br /&gt;
Even if only one value exist, it is impossible to provide it as a&lt;br /&gt;
default, as there are no assurance that a new interpretation of&lt;br /&gt;
the syntax will not arrive at a future time.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It is possible for a map designer to indicate specific game&lt;br /&gt;
settings, similar to the ones available through the configuration&lt;br /&gt;
files of the application, to be used with the map. When&lt;br /&gt;
this is not desired, the Settings element can be safely removed&lt;br /&gt;
from the map definition.&lt;br /&gt;
&lt;br /&gt;
Any number of Setting can be defined inside of the Settings&lt;br /&gt;
element. Each Setting defined will overwrite the value previously&lt;br /&gt;
defined in the game. Each new Setting addressing a specific&lt;br /&gt;
configuration item will keep on overwriting previously defined&lt;br /&gt;
values. The Settings items are processed in order, from the top to&lt;br /&gt;
the bottom one.&lt;br /&gt;
&lt;br /&gt;
The Settings should be considered to be global to the World and&lt;br /&gt;
its sub-elements. This has very little relevance at the moment as&lt;br /&gt;
only one World and one Field can exist in the game. It is not&lt;br /&gt;
excluded that future version of the game could support multiple&lt;br /&gt;
elements such as World and Field. Each such elements and sub-elements would&lt;br /&gt;
receive the Settings defined in its parents, but would also be&lt;br /&gt;
able to overwrite parent received Settings for itself and its&lt;br /&gt;
sub-elements. &lt;br /&gt;
&lt;br /&gt;
One such overwriting capacity already exist, in the form of the&lt;br /&gt;
Axes element. This element can and will overwrite the value passed&lt;br /&gt;
by the Setting ARENA_AXES.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, there are no known case where the order of&lt;br /&gt;
writing Setting should matter. There are no garanties of it being&lt;br /&gt;
the case. Be carefull of the order of the Setting provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting ==&lt;br /&gt;
Each individual Setting defines a specific element normally&lt;br /&gt;
configurable throught the config files of the game&lt;br /&gt;
application. For a full list and description of the setting&lt;br /&gt;
available, consult &#039;&#039;&#039;TODO&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The Setting has two attributes, the name and the value. The name&lt;br /&gt;
field hold the setting name as found in the various configuration&lt;br /&gt;
files. The value field will be assigned to the designated setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Setting name=&amp;quot;CYCLE_BRAKE_REFILL&amp;quot; value=&amp;quot;.1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will assing .1 to the configuration item CYCLE_BRAKE_REFILL.&lt;br /&gt;
&lt;br /&gt;
No validation are done on either fields by the parsing engine. The&lt;br /&gt;
values are passed directly to the setting engine, where the usual&lt;br /&gt;
validation is performed. Unexisting or misspelled settings names&lt;br /&gt;
will be ignored. Setting with valid names and invalid values have&lt;br /&gt;
an undetermined effect.&lt;br /&gt;
&lt;br /&gt;
The different Setting used have the potential of overwriding&lt;br /&gt;
client or server ones. While this behavior offers great capacity&lt;br /&gt;
to custom behavior for a specific map, users playing locally on&lt;br /&gt;
their machine and server administrator might find it a disruption&lt;br /&gt;
of their craftfully designed settings. Use with care and&lt;br /&gt;
moderation.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the World element is&lt;br /&gt;
the Field element. Only one Field can be defined.&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;
The following 2 paragraph are post map-0.2.8_beta3 and 0.2.8_beta3.&lt;br /&gt;
&lt;br /&gt;
For clarity purpose, the Axes element, if defined, need to be&lt;br /&gt;
defined first. After this, Spawn point, Walls and Zones can be&lt;br /&gt;
defined in any order.&lt;br /&gt;
&lt;br /&gt;
While a Field without any Spawn points is syntaxly valid, and&lt;br /&gt;
the parsing engine doesnt report any error, the effect is&lt;br /&gt;
undetermined. While a Field without any Wall is syntaxly valid,&lt;br /&gt;
and the parsing engine doesn&#039;t report any error, the effect is&lt;br /&gt;
undetermined.&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;&lt;br /&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 6.3.1, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wall ==&lt;br /&gt;
Walls 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;pre&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;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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&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;
The Wall element has one attribute, the height. Controlling the&lt;br /&gt;
height affect the rendering height of a wall. A height of 1.0 is&lt;br /&gt;
about the same as the height of the original cycle model. A height&lt;br /&gt;
of 4.0 correspond to the Walls rendered with the lowRim setting on&lt;br /&gt;
the client. When no height is defined, the client defined setting&lt;br /&gt;
of either lowRim or highRim is used. This has the advantage of&lt;br /&gt;
respecting the players choice and often, capacity to render high&lt;br /&gt;
walls.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;height&#039;&#039;&lt;br /&gt;
: The height used for the rendering of the Wall.&lt;br /&gt;
&lt;br /&gt;
Example : Using the client default height&lt;br /&gt;
&amp;lt;pre&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;10&amp;quot; y=&amp;quot;10&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 : Controling the height&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Wall height=&amp;quot;2.13&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;Point x=&amp;quot;10&amp;quot; y=&amp;quot;10&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;
== 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;
== Zones ==&lt;br /&gt;
Zone are interactive areas on the Field. They manifest themself as&lt;br /&gt;
huge circles slowly rotating. The players can interact with the&lt;br /&gt;
Zones by entering or being inside them.&lt;br /&gt;
&lt;br /&gt;
The Zone has an attribute effect which allows 3 values: win, death and&lt;br /&gt;
fortress. Entering a Zone of effect win makes the player the round&lt;br /&gt;
winner. Entering a Zone of effect death automatically kills the&lt;br /&gt;
player. Zones of effect fortress need to be occupied to be&lt;br /&gt;
triggered, and once triggered, they make the team the round winner.&lt;br /&gt;
&lt;br /&gt;
The Zone requires a sub element named ShapeCircle. &lt;br /&gt;
&lt;br /&gt;
The ShapeCircle has 2 attributes, the radius and the growth. The&lt;br /&gt;
radius attribute describe the size of the CircleShape and is&lt;br /&gt;
required. The unit used is the same game unit that are used as map&lt;br /&gt;
coordinates. A ShapeCircle with a radius of 10 will extend of 10&lt;br /&gt;
game units in every direction from its center.&lt;br /&gt;
&lt;br /&gt;
The growth describe how the radius of the ShapeCircle changes over&lt;br /&gt;
time. This unit is game units per second from the moment the Zone&lt;br /&gt;
is create, which is the round start.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify a negative growth, in which case the ShapeCircle will&lt;br /&gt;
slowly shrink. Should at any time the radius be of 0 or less, the&lt;br /&gt;
Zone is removed without effect.&lt;br /&gt;
The growth is optional and defaults to 0, which hold the&lt;br /&gt;
ShapeCircle at a constant size during the round.&lt;br /&gt;
&lt;br /&gt;
The ShapeCircle requires a Point sub-element which describe the&lt;br /&gt;
center of the ShapeCircle. The syntax of the Point is the same as&lt;br /&gt;
the one used for the Wall.&lt;br /&gt;
&lt;br /&gt;
It is possible and valid to place the center of the Zone in a&lt;br /&gt;
location that is not accessible to the players, such as in a&lt;br /&gt;
walled compound or outside of the play area. This behavior might&lt;br /&gt;
change in future version. Consult the appropriate documentation.&lt;br /&gt;
&lt;br /&gt;
Nota: It is important to note that while Zones are introduced in&lt;br /&gt;
Arthemis, a more complete implementation will follow in&lt;br /&gt;
Bacchus. Curious minds consulting the documentation presenting the&lt;br /&gt;
Bacchus implementation of Zones will notice that fortress isn&#039;t an&lt;br /&gt;
effect, but rather a trigger type. The Arthemis implementation of&lt;br /&gt;
Zones falsely uses it as an effect instead of exposing a trigger&lt;br /&gt;
mechanism. Map designers are to be warned this will no longer be&lt;br /&gt;
possible in maps defined for Bacchus.&lt;br /&gt;
&lt;br /&gt;
=== Fortress Zone ===&lt;br /&gt;
The fortress Zone is particuliar because it uses a scoring system&lt;br /&gt;
to determine if and when the Zone is triggered. The score is&lt;br /&gt;
affected by the time passed in it by attackers and defenders.&lt;br /&gt;
&lt;br /&gt;
At start time, the score is set to 0.0. While the score can move&lt;br /&gt;
freely, 2 restrictions are always applied. First, the score can&lt;br /&gt;
never drop below 0.0. Second, if the score reaches or exceed 1.0,&lt;br /&gt;
the Zone is triggered.&lt;br /&gt;
&lt;br /&gt;
Each single adversary in the Zone add to the score for their time&lt;br /&gt;
passed in it. Each single defender in the Zone remove to the score&lt;br /&gt;
for their time passed in it. Also, the score always decays. Each&lt;br /&gt;
of these aspect is controlled by a different setting,&lt;br /&gt;
CONQUEST_RATE, DEFEND_RATE and CONQUEST_DECAY_RATE. They all&lt;br /&gt;
express a rate in points per seconds.&lt;br /&gt;
&lt;br /&gt;
;CONQUEST_RATE&lt;br /&gt;
: Any single attacking player in the Zone add points to the score at this rate. &lt;br /&gt;
;DEFEND_RATE&lt;br /&gt;
: Any single defending player in the Zone removes points to the score at this rate. &lt;br /&gt;
;CONQUEST_DECAY_RATE&lt;br /&gt;
: The score of a Zone decays at this rate, irrelevantly of the numbers of attackers and defenders in the Zone. &lt;br /&gt;
&lt;br /&gt;
These 3 settings are global for all the Zones on a map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Map writing best practice ===&lt;br /&gt;
&lt;br /&gt;
==== Comment your work ====&lt;br /&gt;
&lt;br /&gt;
You should always comment the various parts of your work. Doing so improve maintainability. Something that is obvious during the creation of a particular map often becomes very cryptic after a few weeks. A good comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comment in xml start with &amp;quot;&amp;lt;!--&amp;quot; (without the quotes) and ends with &amp;quot;--&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t highlight the commented part, be careful not to exclude a part of your map by mistake.&lt;br /&gt;
&lt;br /&gt;
==== Arena size ====&lt;br /&gt;
&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;
==== Don&#039;t overload attributes ====&lt;br /&gt;
&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 following drawbacks:&lt;br /&gt;
&lt;br /&gt;
* File size: The exceeding information is never used, but need to be transmitted as part of the file, and stored.&lt;br /&gt;
* Readability: Exceeding information complicate the reading of a map by humans. &lt;br /&gt;
* Maintenance: Maintenance of the map is not much more complex. If the author is minimalist, he/she risk updating the part of information that is ignored. Extremely good knowledge of the working of the parser is required to avoid this pitfall, and the change is only valid if the rule of precedences aren&#039;t updated. Specifying only one set of information avoid this problem. Also, if both set of information are updated, then the task for the author is double, and so are the risks for error.&lt;br /&gt;
&lt;br /&gt;
=== Resource file name convention ===&lt;br /&gt;
&lt;br /&gt;
Resource are external content that makes the game interesting. Textures, sounds, models and maps are all resources for Armagetron Ad. While at the time of writing of this tutorial, only maps are supported as true resources, soon support for the other types will be added. Also, while this section incorporated in the Maps tutorial, it might be moved as an independent document, and the standard 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 resources for Armagetron Ad should follow the following naming 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&lt;br /&gt;
: The name of the person who created the resource. This can be the full name, a nick name (such as the ones used on the Armagetron Ad forum) of the author. Alternatively, the author can forgo his or her name and instead opt for a group name. Group name should be used when the author want to indicate that a set of resources are associate with a group. Instances of this could be when the resources are for a clan, a community, a [set of] server[s].&lt;br /&gt;
;SubDirectory&lt;br /&gt;
: Prolific authors and those are free to set up any number of sub directories to help them organize and possibly categorize their resources. The Armagetron Ad team recommend you to categorize resources by topics (ie: all the resources required for a particular movie-pack set in the same sub directory) over other categorization, such as categorization by type (ie: all the floor tiles set in the same sub directory). Any number of sub directory level should be supported. This is not a mandatory item.&lt;br /&gt;
;ResourceName&lt;br /&gt;
: The actual name of the resource. This should be descriptive, and somewhat unique to facilitate identification of the described resource. The advantage of specifying a somewhat unique name here is that should the resource be accidentally moved out of its folder, it is still possible to quickly and easily identify it. A special note for maps: the ResourceName should be the same as the name attribute of the Map element defined in the xml file.&lt;br /&gt;
;VersionNumber&lt;br /&gt;
: This part should be used by the author to identify which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new resources, Armagetron Ad rely solely on this part to be updated. Should a resource be updated and the old name kept, it would cause problems between different clients. Client already having the old resource 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 would get the latest version. The actual format to be used for the VersionNumber is left to the choice of the author. While the Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar 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, ...). Keep in mind that it should be obvious to other as to which is the most up to date version of the resource. A special note for maps: the VersionNumber should be the same as the version attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;Extension&lt;br /&gt;
: This is the regular type of extension. While Armagetron Ad doesn&#039;t verify that the extension describe the right type of content, it is favorable for other users that you set it to the appropriate 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;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 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;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Parallelogram arena ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Parallelogram-1.0.png|right|thumbnail|Parallelogram]]&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot; category=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8_beta3&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HexaTRON ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HexaTRON-0.2.png|right|thumbnail|HexaTRON]]&lt;br /&gt;
&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 note that this is 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;&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot; category=&amp;quot;HexaTRON&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8_beta3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About the &amp;quot;undefined and unsupported&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and unsupported&amp;quot;. While it may be possible to do them now, and even amusing to do it, they are strongly discouraged. Later version of the World format will most probably conflict with those behaviors. This will make such behaviors difficult to preserve, if possible at all. For this reasons, it has been decided that _NO_ effort would be put to maintain them. Use them if you want, but do not come complaining if and when they stop working. &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>Philippeqc</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Making_Maps_by_Hand&amp;diff=1494</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=1494"/>
		<updated>2005-10-22T15:58:43Z</updated>

		<summary type="html">&lt;p&gt;Philippeqc: Updated to version 0.2.8_beta3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is to help map designer to get a grasp of the Map&lt;br /&gt;
format used by Armagetron Advance.&lt;br /&gt;
&lt;br /&gt;
This version of the tutorial address the syntax defined by map-0.2.8_beta3.dtd and present the rules of interpreting the syntax as used by the parsing engine in the version 0.2.8_beta3 of Armagetron Advance.&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;
[[Image:original-1.0.1.png|right|thumbnail|Original Armagetron 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;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;square&amp;quot; version=&amp;quot;1.0.1&amp;quot; author=&amp;quot;Anonymous&amp;quot; category=&amp;quot;polygon/regular&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Map version=&amp;quot;0.2.8&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- The original square map, technically created by z-man.&lt;br /&gt;
	         Converted to XML by philippeqc.&lt;br /&gt;
	         License: Do with it what you want.                          --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
	&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Map format start with a XML header. The actual definition&lt;br /&gt;
of the Map is wrapped in a Resource. The Resource gives a&lt;br /&gt;
description of the content, such as the author and the version of&lt;br /&gt;
the map included. This particuliar map is the xml version of the&lt;br /&gt;
original map that supported directly in the game before version&lt;br /&gt;
0.2.8 (Arthemis). &lt;br /&gt;
&lt;br /&gt;
Skippin ahead in to the Field element, line 11 defines that &lt;br /&gt;
that 4 axes are to be&lt;br /&gt;
used. From line 13 to 26, 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;
== Header ==&lt;br /&gt;
Fill this part&lt;br /&gt;
&lt;br /&gt;
== Resource ==&lt;br /&gt;
This section is under development!&lt;br /&gt;
&lt;br /&gt;
The Resource element describe some meta-information of the Map,&lt;br /&gt;
such as who created it, how should the resource file be named and&lt;br /&gt;
what type of information is to be expected.&lt;br /&gt;
&lt;br /&gt;
One part of the Resource details describe who made this map a&lt;br /&gt;
reality. In the Resource element, it is possible to differenciate&lt;br /&gt;
between the person or organism that comissioned the map, the&lt;br /&gt;
commisionner, and the person who executed the request and coded&lt;br /&gt;
it, the author. &lt;br /&gt;
&lt;br /&gt;
Both operations might be carried by the same and only person, in&lt;br /&gt;
this instance both entities are the same and the commissioner&lt;br /&gt;
field should be left blank. The commissioner field should be used&lt;br /&gt;
when the concept of a map and its execution are performed by two&lt;br /&gt;
different persons or entities. It could range from anything from&lt;br /&gt;
&amp;quot;could someone make a map where the feeling of &amp;lt;X&amp;gt; is emphased&amp;quot; to&lt;br /&gt;
coding from a hand-drawn sketch. The commissioner could also be&lt;br /&gt;
implied. Without him/it ever placing an open request, a&lt;br /&gt;
commisioner could be assign to a map when the author whan to&lt;br /&gt;
express an assumed sharing of the creation of the map. This can be&lt;br /&gt;
the case, for example, when the member of a Clan wrote a map that&lt;br /&gt;
falls in the ideals of the Clan.&lt;br /&gt;
&lt;br /&gt;
To facilitate manipulation of the file over distributed systems,&lt;br /&gt;
the Resource holds explicit information about the naming and&lt;br /&gt;
storing of the file. This information can be used by tools such as&lt;br /&gt;
scripts and resource repositories to manipulate the file. &lt;br /&gt;
&lt;br /&gt;
Many tools, including the game client, will expect the following&lt;br /&gt;
to indicate the location of a &lt;br /&gt;
filee inside the local store of resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Author&amp;gt;/[Category/]&amp;lt;ResourceName&amp;gt;-&amp;lt;VersionNumber&amp;gt;.&amp;lt;ResourceType&amp;gt;.&amp;lt;Extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
This element is the basic holder of the description of the&lt;br /&gt;
Map. From the opening element to the closing one, all the&lt;br /&gt;
information will be used to construct an in-game representation&lt;br /&gt;
for the players to explore and possibly compete in.&lt;br /&gt;
&lt;br /&gt;
The version attribute of the map indicate an specific parsing&lt;br /&gt;
engine version that should be used to express the map in the exact&lt;br /&gt;
manners that are desired by the map creator. Sooner in the file,&lt;br /&gt;
the dtd has already specified a version. The difference between&lt;br /&gt;
both version is one specify the version of the syntax to be use,&lt;br /&gt;
and the other, the version of the rules to be used to interprete&lt;br /&gt;
the syntax.&lt;br /&gt;
&lt;br /&gt;
The dtd control the syntax, what keywords are valid and in which&lt;br /&gt;
arrangement. The parsing engine has specific rules how to read the&lt;br /&gt;
syntax and create the game elements. It is possible for different&lt;br /&gt;
parsing engine to operate from the same syntax, be it because the syntax&lt;br /&gt;
allows for many interpretation, or because a specific&lt;br /&gt;
interpretation has been found faulty in some case. Because each&lt;br /&gt;
interpretation could lead to very different instantiation, it is&lt;br /&gt;
best for the map designer to specify the one that should be&lt;br /&gt;
used. Even when no alternative interpretation exist, ie: there is&lt;br /&gt;
only one version available, it is best for the map designer to&lt;br /&gt;
specify it. Should a new one be implemented at a later time, the&lt;br /&gt;
map defined would continue to be instanciated properly.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, the only parsing engine version is&lt;br /&gt;
&amp;quot;0.2.8&amp;quot;. Maps using a version that is not understood by the&lt;br /&gt;
parsing engine of a specific client or server will be&lt;br /&gt;
automatically rejected by said application, on the ground that the&lt;br /&gt;
parsing engine doesn&#039;t know how to operate on it.&lt;br /&gt;
&lt;br /&gt;
Even if only one value exist, it is impossible to provide it as a&lt;br /&gt;
default, as there are no assurance that a new interpretation of&lt;br /&gt;
the syntax will not arrive at a future time.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It is possible for a map designer to indicate specific game&lt;br /&gt;
settings, similar to the ones available through the configuration&lt;br /&gt;
files of the application, to be used with the map. When&lt;br /&gt;
this is not desired, the Settings element can be safely removed&lt;br /&gt;
from the map definition.&lt;br /&gt;
&lt;br /&gt;
Any number of Setting can be defined inside of the Settings&lt;br /&gt;
element. Each Setting defined will overwrite the value previously&lt;br /&gt;
defined in the game. Each new Setting addressing a specific&lt;br /&gt;
configuration item will keep on overwriting previously defined&lt;br /&gt;
values. The Settings items are processed in order, from the top to&lt;br /&gt;
the bottom one.&lt;br /&gt;
&lt;br /&gt;
The Settings should be considered to be global to the World and&lt;br /&gt;
its sub-elements. This has very little relevance at the moment as&lt;br /&gt;
only one World and one Field can exist in the game. It is not&lt;br /&gt;
excluded that future version of the game could support multiple&lt;br /&gt;
elements such as World and Field. Each such elements and sub-elements would&lt;br /&gt;
receive the Settings defined in its parents, but would also be&lt;br /&gt;
able to overwrite parent received Settings for itself and its&lt;br /&gt;
sub-elements. &lt;br /&gt;
&lt;br /&gt;
One such overwriting capacity already exist, in the form of the&lt;br /&gt;
Axes element. This element can and will overwrite the value passed&lt;br /&gt;
by the Setting ARENA_AXES.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, there are no known case where the order of&lt;br /&gt;
writing Setting should matter. There are no garanties of it being&lt;br /&gt;
the case. Be carefull of the order of the Setting provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Settings&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;a&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Setting name=&amp;quot;c&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting ==&lt;br /&gt;
Each individual Setting defines a specific element normally&lt;br /&gt;
configurable throught the config files of the game&lt;br /&gt;
application. For a full list and description of the setting&lt;br /&gt;
available, consult &#039;&#039;&#039;TODO&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The Setting has two attributes, the name and the value. The name&lt;br /&gt;
field hold the setting name as found in the various configuration&lt;br /&gt;
files. The value field will be assigned to the designated setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;Setting name=&amp;quot;CYCLE_BRAKE_REFILL&amp;quot; value=&amp;quot;.1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will assing .1 to the configuration item CYCLE_BRAKE_REFILL.&lt;br /&gt;
&lt;br /&gt;
No validation are done on either fields by the parsing engine. The&lt;br /&gt;
values are passed directly to the setting engine, where the usual&lt;br /&gt;
validation is performed. Unexisting or misspelled settings names&lt;br /&gt;
will be ignored. Setting with valid names and invalid values have&lt;br /&gt;
an undetermined effect.&lt;br /&gt;
&lt;br /&gt;
The different Setting used have the potential of overwriding&lt;br /&gt;
client or server ones. While this behavior offers great capacity&lt;br /&gt;
to custom behavior for a specific map, users playing locally on&lt;br /&gt;
their machine and server administrator might find it a disruption&lt;br /&gt;
of their craftfully designed settings. Use with care and&lt;br /&gt;
moderation.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
At this moment, the element possible inside of the World element is&lt;br /&gt;
the Field element. Only one Field can be defined.&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;
The following 2 paragraph are post map-0.2.8_beta3 and 0.2.8_beta3.&lt;br /&gt;
&lt;br /&gt;
For clarity purpose, the Axes element, if defined, need to be&lt;br /&gt;
defined first. After this, Spawn point, Walls and Zones can be&lt;br /&gt;
defined in any order.&lt;br /&gt;
&lt;br /&gt;
While a Field without any Spawn points is syntaxly valid, and&lt;br /&gt;
the parsing engine doesnt report any error, the effect is&lt;br /&gt;
undetermined. While a Field without any Wall is syntaxly valid,&lt;br /&gt;
and the parsing engine doesn&#039;t report any error, the effect is&lt;br /&gt;
undetermined.&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;&lt;br /&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 6.3.1, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or, in degrees:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wall ==&lt;br /&gt;
Walls 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;pre&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;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;
&amp;lt;/pre&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;pre&amp;gt;&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;
&amp;lt;/pre&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;
The Wall element has one attribute, the height. Controlling the&lt;br /&gt;
height affect the rendering height of a wall. A height of 1.0 is&lt;br /&gt;
about the same as the height of the original cycle model. A height&lt;br /&gt;
of 4.0 correspond to the Walls rendered with the lowRim setting on&lt;br /&gt;
the client. When no height is defined, the client defined setting&lt;br /&gt;
of either lowRim or highRim is used. This has the advantage of&lt;br /&gt;
respecting the players choice and often, capacity to render high&lt;br /&gt;
walls.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;height&#039;&#039;&lt;br /&gt;
: The height used for the rendering of the Wall.&lt;br /&gt;
&lt;br /&gt;
Example : Using the client default height&lt;br /&gt;
&amp;lt;pre&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;10&amp;quot; y=&amp;quot;10&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 : Controling the height&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;Wall height=&amp;quot;2.13&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;Point x=&amp;quot;10&amp;quot; y=&amp;quot;10&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;
== 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;
== Zones ==&lt;br /&gt;
Zone are interactive areas on the Field. They manifest themself as&lt;br /&gt;
huge circles slowly rotating. The players can interact with the&lt;br /&gt;
Zones by entering or being inside them.&lt;br /&gt;
&lt;br /&gt;
The Zone has an attribute effect which allows 3 values: win, death and&lt;br /&gt;
fortress. Entering a Zone of effect win makes the player the round&lt;br /&gt;
winner. Entering a Zone of effect death automatically kills the&lt;br /&gt;
player. Zones of effect fortress need to be occupied to be&lt;br /&gt;
triggered, and once triggered, they make the team the round winner.&lt;br /&gt;
&lt;br /&gt;
The Zone requires a sub element named ShapeCircle. &lt;br /&gt;
&lt;br /&gt;
The ShapeCircle has 2 attributes, the radius and the growth. The&lt;br /&gt;
radius attribute describe the size of the CircleShape and is&lt;br /&gt;
required. The unit used is the same game unit that are used as map&lt;br /&gt;
coordinates. A ShapeCircle with a radius of 10 will extend of 10&lt;br /&gt;
game units in every direction from its center.&lt;br /&gt;
&lt;br /&gt;
The growth describe how the radius of the ShapeCircle changes over&lt;br /&gt;
time. This unit is game units per second from the moment the Zone&lt;br /&gt;
is create, which is the round start.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify a negative growth, in which case the ShapeCircle will&lt;br /&gt;
slowly shrink. Should at any time the radius be of 0 or less, the&lt;br /&gt;
Zone is removed without effect.&lt;br /&gt;
The growth is optional and defaults to 0, which hold the&lt;br /&gt;
ShapeCircle at a constant size during the round.&lt;br /&gt;
&lt;br /&gt;
The ShapeCircle requires a Point sub-element which describe the&lt;br /&gt;
center of the ShapeCircle. The syntax of the Point is the same as&lt;br /&gt;
the one used for the Wall.&lt;br /&gt;
&lt;br /&gt;
It is possible and valid to place the center of the Zone in a&lt;br /&gt;
location that is not accessible to the players, such as in a&lt;br /&gt;
walled compound or outside of the play area. This behavior might&lt;br /&gt;
change in future version. Consult the appropriate documentation.&lt;br /&gt;
&lt;br /&gt;
Nota: It is important to note that while Zones are introduced in&lt;br /&gt;
Arthemis, a more complete implementation will follow in&lt;br /&gt;
Bacchus. Curious minds consulting the documentation presenting the&lt;br /&gt;
Bacchus implementation of Zones will notice that fortress isn&#039;t an&lt;br /&gt;
effect, but rather a trigger type. The Arthemis implementation of&lt;br /&gt;
Zones falsely uses it as an effect instead of exposing a trigger&lt;br /&gt;
mechanism. Map designers are to be warned this will no longer be&lt;br /&gt;
possible in maps defined for Bacchus.&lt;br /&gt;
&lt;br /&gt;
=== Fortress Zone ===&lt;br /&gt;
The fortress Zone is particuliar because it uses a scoring system&lt;br /&gt;
to determine if and when the Zone is triggered. The score is&lt;br /&gt;
affected by the time passed in it by attackers and defenders.&lt;br /&gt;
&lt;br /&gt;
At start time, the score is set to 0.0. While the score can move&lt;br /&gt;
freely, 2 restrictions are always applied. First, the score can&lt;br /&gt;
never drop below 0.0. Second, if the score reaches or exceed 1.0,&lt;br /&gt;
the Zone is triggered.&lt;br /&gt;
&lt;br /&gt;
Each single adversary in the Zone add to the score for their time&lt;br /&gt;
passed in it. Each single defender in the Zone remove to the score&lt;br /&gt;
for their time passed in it. Also, the score always decays. Each&lt;br /&gt;
of these aspect is controlled by a different setting,&lt;br /&gt;
CONQUEST_RATE, DEFEND_RATE and CONQUEST_DECAY_RATE. They all&lt;br /&gt;
express a rate in points per seconds.&lt;br /&gt;
&lt;br /&gt;
;CONQUEST_RATE&lt;br /&gt;
: Any single attacking player in the Zone add points to the score at this rate. &lt;br /&gt;
;DEFEND_RATE&lt;br /&gt;
: Any single defending player in the Zone removes points to the score at this rate. &lt;br /&gt;
;CONQUEST_DECAY_RATE&lt;br /&gt;
: The score of a Zone decays at this rate, irrelevantly of the numbers of attackers and defenders in the Zone. &lt;br /&gt;
&lt;br /&gt;
These 3 settings are global for all the Zones on a map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Map writing best practice ===&lt;br /&gt;
&lt;br /&gt;
==== Comment your work ====&lt;br /&gt;
&lt;br /&gt;
You should always comment the various parts of your work. Doing so improve maintainability. Something that is obvious during the creation of a particular map often becomes very cryptic after a few weeks. A good comment allow you to quickly grasp the meaning of what is described.&lt;br /&gt;
&lt;br /&gt;
A comment in xml start with &amp;quot;&amp;lt;!--&amp;quot; (without the quotes) and ends with &amp;quot;--&amp;gt;&amp;quot;. Comment can spawn on multiple lines. If your editor doesn&#039;t highlight the commented part, be careful not to exclude a part of your map by mistake.&lt;br /&gt;
&lt;br /&gt;
==== Arena size ====&lt;br /&gt;
&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;
==== Don&#039;t overload attributes ====&lt;br /&gt;
&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 following drawbacks:&lt;br /&gt;
&lt;br /&gt;
* File size: The exceeding information is never used, but need to be transmitted as part of the file, and stored.&lt;br /&gt;
* Readability: Exceeding information complicate the reading of a map by humans. &lt;br /&gt;
* Maintenance: Maintenance of the map is not much more complex. If the author is minimalist, he/she risk updating the part of information that is ignored. Extremely good knowledge of the working of the parser is required to avoid this pitfall, and the change is only valid if the rule of precedences aren&#039;t updated. Specifying only one set of information avoid this problem. Also, if both set of information are updated, then the task for the author is double, and so are the risks for error.&lt;br /&gt;
&lt;br /&gt;
=== Resource file name convention ===&lt;br /&gt;
&lt;br /&gt;
Resource are external content that makes the game interesting. Textures, sounds, models and maps are all resources for Armagetron Ad. While at the time of writing of this tutorial, only maps are supported as true resources, soon support for the other types will be added. Also, while this section incorporated in the Maps tutorial, it might be moved as an independent document, and the standard 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 resources for Armagetron Ad should follow the following naming 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&lt;br /&gt;
: The name of the person who created the resource. This can be the full name, a nick name (such as the ones used on the Armagetron Ad forum) of the author. Alternatively, the author can forgo his or her name and instead opt for a group name. Group name should be used when the author want to indicate that a set of resources are associate with a group. Instances of this could be when the resources are for a clan, a community, a [set of] server[s].&lt;br /&gt;
;SubDirectory&lt;br /&gt;
: Prolific authors and those are free to set up any number of sub directories to help them organize and possibly categorize their resources. The Armagetron Ad team recommend you to categorize resources by topics (ie: all the resources required for a particular movie-pack set in the same sub directory) over other categorization, such as categorization by type (ie: all the floor tiles set in the same sub directory). Any number of sub directory level should be supported. This is not a mandatory item.&lt;br /&gt;
;ResourceName&lt;br /&gt;
: The actual name of the resource. This should be descriptive, and somewhat unique to facilitate identification of the described resource. The advantage of specifying a somewhat unique name here is that should the resource be accidentally moved out of its folder, it is still possible to quickly and easily identify it. A special note for maps: the ResourceName should be the same as the name attribute of the Map element defined in the xml file.&lt;br /&gt;
;VersionNumber&lt;br /&gt;
: This part should be used by the author to identify which version of the resource is described. During its life, a&lt;br /&gt;
resource can receive many modifications and improvements. To find new resources, Armagetron Ad rely solely on this part to be updated. Should a resource be updated and the old name kept, it would cause problems between different clients. Client already having the old resource 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 would get the latest version. The actual format to be used for the VersionNumber is left to the choice of the author. While the Armagetron Ad team recommend a VERSION.MAJOR.MINOR dot notation similar 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, ...). Keep in mind that it should be obvious to other as to which is the most up to date version of the resource. A special note for maps: the VersionNumber should be the same as the version attribute of the Map element defined in the xml file.&lt;br /&gt;
&lt;br /&gt;
;Extension&lt;br /&gt;
: This is the regular type of extension. While Armagetron Ad doesn&#039;t verify that the extension describe the right type of content, it is favorable for other users that you set it to the appropriate 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;&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 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;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Parallelogram arena ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Parallelogram-1.0.png|right|thumbnail|Parallelogram]]&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource type=&amp;quot;aamap&amp;quot; name=&amp;quot;Parallelogram&amp;quot; version=&amp;quot;1.0&amp;quot; author=&amp;quot;Philippe Villeneuve&amp;quot; category=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8_beta3&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HexaTRON ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HexaTRON-0.2.png|right|thumbnail|HexaTRON]]&lt;br /&gt;
&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 note that this is 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;&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 Resource SYSTEM &amp;quot;map-0.2.8_beta3.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Resource version=&amp;quot;0.2.8_beta3&amp;quot; name=&amp;quot;HexaTRON&amp;quot; version=&amp;quot;0.2&amp;quot; author=&amp;quot;Luke-Jr&amp;quot; category=&amp;quot;HexaTRON&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Map version=&amp;quot;0.2.8_beta3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;World&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;/World&amp;gt;&lt;br /&gt;
&amp;lt;/Map&amp;gt;&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About the &amp;quot;undefined and unsupported&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Many possible combinations are marked as &amp;quot;undefined and unsupported&amp;quot;. While it may be possible to do them now, and even amusing to do it, they are strongly discouraged. Later version of the World format will most probably conflict with those behaviors. This will make such behaviors difficult to preserve, if possible at all. For this reasons, it has been decided that _NO_ effort would be put to maintain them. Use them if you want, but do not come complaining if and when they stop working. &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>Philippeqc</name></author>
	</entry>
</feed>