<?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=Epsy</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=Epsy"/>
	<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Special:Contributions/Epsy"/>
	<updated>2026-11-05T00:37:04Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=TST29.9.2019&amp;diff=44992</id>
		<title>TST29.9.2019</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=TST29.9.2019&amp;diff=44992"/>
		<updated>2013-10-19T03:00:47Z</updated>

		<summary type="html">&lt;p&gt;Epsy: /* Server Settings */ Fixed config name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;font size=&amp;quot;7&amp;quot;&amp;gt;T S T&amp;lt;/font&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;font size=&amp;quot;5&amp;quot;&amp;gt;Team Sumo Tournament - Sunday, October 20, 2013!&amp;lt;/font&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;font size=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Sign-ups are Open!&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:TeamSumoTournament/Blurb}}&lt;br /&gt;
&amp;lt;font size=&amp;quot;4&amp;quot;&amp;gt;[http://forums3.armagetronad.net/viewtopic.php?f=60&amp;amp;t=23346 &#039;&#039;&#039;Sunday, October 20, 2013&#039;&#039;&#039;]&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=General Information=&lt;br /&gt;
===About===&lt;br /&gt;
*This is the Team Sumo Tournament.&lt;br /&gt;
*Times and brackets are listed below.&lt;br /&gt;
*You will also find official settings and guidelines below.&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
*Each team is allowed only 2 Players.  This is a &#039;&#039;&#039;2v2v2v2&#039;&#039;&#039; tournament.&lt;br /&gt;
*Servers will be chosen and positioned on the brackets.&lt;br /&gt;
*Teams will be randomized then placed on the brackets.&lt;br /&gt;
*Team editing will be &#039;&#039;&#039;locked&#039;&#039;&#039; after the brackets are up.&lt;br /&gt;
*If you have &#039;&#039;&#039;played&#039;&#039;&#039; a match with a partner, you are &#039;&#039;&#039;NOT&#039;&#039;&#039; allowed to join another team as you have already locked yourself with the previous team by playing with them.&lt;br /&gt;
*On the day of the event, team captains are allowed to replace there teammate if he does not show up.&lt;br /&gt;
*Each team has 5 minutes after the posted time to be ready or they will be forced to forfeit. If the other team is in a match from a previous round in the tournament they will have 8 minutes after the match to get their team ready and the match started.&lt;br /&gt;
*Be friendly and have fun.&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
*Practically default Sumo settings, apart from the changes said, here.&lt;br /&gt;
*The first team to win two matches advances to the next round.&lt;br /&gt;
*First team to reach 900 points wins a match.&lt;br /&gt;
*10 rounds only.&lt;br /&gt;
*In the open&lt;br /&gt;
*Finals are first to 2 match wins.&lt;br /&gt;
&lt;br /&gt;
===Server Settings===&lt;br /&gt;
 RESOURCE_REPOSITORY_CLIENT http://resource.hashpickup.net/&lt;br /&gt;
 RINCLUDE epsy/sumo/TST/game-2010.09-2.cfg&lt;br /&gt;
 RINCLUDE epsy/generic/teamcolors4-1.0.aacfg.cfg&lt;br /&gt;
&lt;br /&gt;
===Teams===&lt;br /&gt;
To add your team onto the list, simply fill in this template and then post it at the end of the desired location&#039;s list.&lt;br /&gt;
 #&#039;&#039;&#039;TEAMNAMEHERE&#039;&#039;&#039; | Captain (@forums) | Player 2 |&lt;br /&gt;
&lt;br /&gt;
====USA====&lt;br /&gt;
#&#039;&#039;&#039;OMG BECKY!&#039;&#039;&#039; | Razzle (Razzle@x)| Dazzle&lt;br /&gt;
#&#039;&#039;&#039;[http://www.lagtest.net/ Srinivasa]&#039;&#039;&#039; Ramanujan (asdfasdf@forums) | Hardy (johnny.nbk@forums)&lt;br /&gt;
#&#039;&#039;&#039;[http://www.lost-history.com/gilgamesh.php/ The Immortals]&#039;&#039;&#039; | Gilgamesh (gilgamesh@forums) | Enkidu&lt;br /&gt;
#&#039;&#039;&#039;Cheese Under Pie&#039;&#039;&#039; | Capone (Shock@forums) | Paladin&lt;br /&gt;
#&#039;&#039;&#039;Did you catch it?&#039;&#039;&#039; | orion (orion@forums)| b3n&lt;br /&gt;
#&#039;&#039;&#039;XxixXyoloswag420bongXxixX&#039;&#039;&#039; | mecca (Mecca@forums) | TaZ&lt;br /&gt;
#&#039;&#039;&#039;Video Game Arcade&#039;&#039;&#039; | Wreckit Ralph (iamthing1@forums) | Fixit Felix&lt;br /&gt;
#&#039;&#039;&#039;dBdeezNutz&#039;&#039;&#039; | tRonPaul (biasoner@forums) | Nil |&lt;br /&gt;
#&#039;&#039;&#039;Backstreet Boys&#039;&#039;&#039; | Zurd (ZURD101@forums) | MCP |&lt;br /&gt;
#&#039;&#039;&#039;[http://crossfitsyndicate.com/wp-content/uploads/2013/02/archer_crossFit_dangerzone_meme.jpg/ Zone For Sale]&#039;&#039;&#039; Nanu (nanu@aagid) | Agility&lt;br /&gt;
#&#039;&#039;&#039;teamoldskewlll&#039;&#039;&#039; | Biggysmalls (@forums) | IZZIMAHIZZI|&lt;br /&gt;
#&#039;&#039;&#039;What does the fox say?&#039;&#039;&#039; Garingdingding! (cowgoesmooo@forums) | Waapapapapapow! |&lt;br /&gt;
#&#039;&#039;&#039;X and Y&#039;&#039;&#039; | Xerneas (Xerneas@aagid) | Yveltal |&lt;br /&gt;
#&#039;&#039;&#039;Villains&#039;&#039;&#039; | Cruella De Vil (Villains@forums) | Wizard | Dr. Evil&lt;br /&gt;
#&#039;&#039;&#039;The Otter Illusion&#039;&#039;&#039; | Otter (otter@forums) | Illusion |&lt;br /&gt;
#&#039;&#039;&#039;Team^ß&#039;&#039;&#039;|Andrei  (Andrei_35@forums)  | Cyclo&lt;br /&gt;
&lt;br /&gt;
====Europe====&lt;br /&gt;
#&#039;&#039;&#039;[http://www.youtube.com/watch?v=x-64CaD8GXw/ SCUMM]&#039;&#039;&#039; | Fish Breath Patrick (django@aagid) | Misty the Well-Tanned&lt;br /&gt;
#&#039;&#039;&#039;The Sexiest team ever&#039;&#039;&#039; | Chinchilla (DrunkDuck@forums) | soska&lt;br /&gt;
#&#039;&#039;&#039;whatever&#039;&#039;&#039; | liz (Vogue@forums) | wap&lt;br /&gt;
#&#039;&#039;&#039;Team ugly&#039;&#039;&#039; | vov (vov@x) | House&lt;br /&gt;
#&#039;&#039;&#039;[http://images4.wikia.nocookie.net/__cb20111013003324/seuss/images/d/d3/Thing1-and-thing2.jpg/ Box Dwellers]&#039;&#039;&#039; | Thing 1 (Thing1@forums) | Thing 2&lt;br /&gt;
#&#039;&#039;&#039;panda is a masochist&#039;&#039;&#039; | Jericho (Jericho@x) | Panda&lt;br /&gt;
#&#039;&#039;&#039;Surprise&#039;&#039;&#039; | o.o (o.o!@forums) | u.u&lt;br /&gt;
#&#039;&#039;&#039;[http://www.youtube.com/watch?v=Q-ejz2RmueE/ The Winchesters]&#039;&#039;&#039; | Sam Winchester (eagles@forums) | Dean Winchester&lt;br /&gt;
#&#039;&#039;&#039;Magick team&#039;&#039;&#039; | izissise (izissise@forums) | Welanor&lt;br /&gt;
#&#039;&#039;&#039;KingBrezKrone&#039;&#039;&#039; | Krikio (Krikio@forums) | slov&lt;br /&gt;
#&#039;&#039;&#039;Crazy Drones&#039;&#039;&#039; | Voodoo (voodoo@forums) | pike&lt;br /&gt;
#&#039;&#039;&#039;Das Leben der Anderen&#039;&#039;&#039; | blondie (blondie@killst.tk) | korrigan&lt;br /&gt;
#&#039;&#039;&#039;[http://i.imgur.com/PFwE6Wo.jpg/ PG Tips]&#039;&#039;&#039; | ¶Potter (ppotter@forums) | Hoax&lt;br /&gt;
#&#039;&#039;&#039;[http://news.phoenix-clan.org/ Tron Times]&#039;&#039;&#039;  | Nagi (Nagi@forums)  | Venom&lt;br /&gt;
#&#039;&#039;&#039;This is it&#039;&#039;&#039; | Hydramist (Hydra@forums) | Kalimist&lt;br /&gt;
#&#039;&#039;&#039;Metal&#039;s Team&#039;&#039;&#039; | Metal (Metal@phoenix-clan.org) | Nate&lt;br /&gt;
&lt;br /&gt;
====Global Moderators====&lt;br /&gt;
To sign up to be a global moderator, PM either J-Dawgg Or Soul in advance :) Server Donators will Automatically be placed under here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*  Pathetique@forums&lt;br /&gt;
*  Kyle@ct/jedi&lt;br /&gt;
*  Light@forums&lt;br /&gt;
&lt;br /&gt;
=Servers=&lt;br /&gt;
===Server List===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;* &#039;&#039;&#039;Server Name&#039;&#039;&#039; ([[User talk:ServerAdmin|ServerAdmin]]) &amp;lt;code&amp;gt;Address:Port&amp;lt;/code&amp;gt; &#039;&#039;Location&#039;&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====USA====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pathetique&#039;s&#039;&#039;&#039; ([[User:Pathetique|Pathetique]]) &amp;lt;code&amp;gt;wdc.dbdclan.co:4545&amp;lt;/code&amp;gt; &#039;&#039;Washington, D.C (US)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;CT USA&#039;&#039;&#039; ([[User:Kyle|kyle@ct/jedi]]) &amp;lt;code&amp;gt;crazy-tronners.com:4535&amp;lt;/code&amp;gt; &#039;&#039;Atlanta, Georgia (US)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Lowkey&#039;s US&#039;&#039;&#039; ([[User:Lowkey|Lowkey@forums]]) &amp;lt;code&amp;gt;67.18.189.128:4535&amp;lt;/code&amp;gt; &#039;&#039;Connecticut (US)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Renegade&#039;s USA&#039;&#039;&#039; ([[User:Cookie|Renegade@forums]]) &amp;lt;code&amp;gt;happytrontime.tk:4534&amp;lt;/code&amp;gt; &#039;&#039;Atlanta, Georgia&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Light&#039;s USA&#039;&#039;&#039; ([[User:Light|Light@lightron.org]]) &amp;lt;code&amp;gt;lightron.org:4544&amp;lt;/code&amp;gt; &#039;&#039;Pennsylvania, USA&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Europe====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CT LIV&#039;&#039;&#039; ([[User:Kyle|kyle@ct/jedi]]) &amp;lt;code&amp;gt;Address: liv.crazy-tronners.com:4541&amp;lt;/code&amp;gt; &#039;&#039;Germany (EU)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;CT OWL&#039;&#039;&#039; ([[User:Kyle|kyle@ct/jedi]]) &amp;lt;code&amp;gt;Address: owl.crazy-tronners.com:4535&amp;lt;/code&amp;gt; &#039;&#039;Somewhere (EU)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Challenge Board=&lt;br /&gt;
===Times===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Opening Round Starting Time&#039;&#039;&#039;&lt;br /&gt;
 GMT: &#039;&#039;&#039;18:00 (5PM)&#039;&#039;&#039;&lt;br /&gt;
 BST: &#039;&#039;&#039;19:00 (6PM)&#039;&#039;&#039;&lt;br /&gt;
 CEST: &#039;&#039;&#039;20:00 (7PM)&#039;&#039;&#039;&lt;br /&gt;
 EDT:&#039;&#039;&#039; 2:00PM&#039;&#039;&#039;&lt;br /&gt;
 CDT: &#039;&#039;&#039;13:00PM (Noon)&#039;&#039;&#039;&lt;br /&gt;
 MDT: &#039;&#039;&#039;12:00AM&#039;&#039;&#039;&lt;br /&gt;
 PDT: &#039;&#039;&#039;11:00AM&#039;&#039;&#039;&lt;br /&gt;
 MST: &#039;&#039;&#039;11:00AM&#039;&#039;&#039;(Important if you live in the majority part of AZ)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2nd Round Starting Time&#039;&#039;&#039;&lt;br /&gt;
 GMT: &#039;&#039;&#039;18:45 (5:45PM)&#039;&#039;&#039;&lt;br /&gt;
 BST: &#039;&#039;&#039;19:45 (6:45PM)&#039;&#039;&#039;&lt;br /&gt;
 CEST: &#039;&#039;&#039;20:45 (7:45PM)&#039;&#039;&#039;&lt;br /&gt;
 EDT:&#039;&#039;&#039; 2:45PM&#039;&#039;&#039;&lt;br /&gt;
 CDT: &#039;&#039;&#039;13:45PM (Noon)&#039;&#039;&#039;&lt;br /&gt;
 MDT: &#039;&#039;&#039;12:45AM&#039;&#039;&#039;&lt;br /&gt;
 PDT: &#039;&#039;&#039;11:45AM&#039;&#039;&#039;&lt;br /&gt;
 MST: &#039;&#039;&#039;11:45AM&#039;&#039;&#039;(Important if you live in the majority part of AZ)&lt;br /&gt;
&lt;br /&gt;
{{TST Brackets&lt;br /&gt;
| RD1=First Round&lt;br /&gt;
| RD2=Second Round &lt;br /&gt;
| RD3=Finals&lt;br /&gt;
| group1=&lt;br /&gt;
| group2=&lt;br /&gt;
| group3=&lt;br /&gt;
| subgroup1=Backup Server: &lt;br /&gt;
| subgroup2=Backup Server: &lt;br /&gt;
| subgroup3=Backup Server:&lt;br /&gt;
| subgroup4=Backup Server:&lt;br /&gt;
| team-width=220&lt;br /&gt;
&lt;br /&gt;
| RD1-server01=&amp;lt;b&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;USA&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
| RD1-player01=&lt;br /&gt;
| RD1-score01=&lt;br /&gt;
| RD1-player02=&lt;br /&gt;
| RD1-score02=&lt;br /&gt;
| RD1-player03=&lt;br /&gt;
| RD1-score03=&lt;br /&gt;
| RD1-player04=&lt;br /&gt;
| RD1-score04=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| RD1-server02=&amp;lt;b&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;USA&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
| RD1-player05=&lt;br /&gt;
| RD1-score05=&lt;br /&gt;
| RD1-player06=&lt;br /&gt;
| RD1-score06=&lt;br /&gt;
| RD1-player07=&lt;br /&gt;
| RD1-score07=&lt;br /&gt;
| RD1-player08=&lt;br /&gt;
| RD1-score08=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| RD1-server03=&amp;lt;b&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;USA&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
| RD1-player09=&lt;br /&gt;
| RD1-score09=&lt;br /&gt;
| RD1-player10=&lt;br /&gt;
| RD1-score10=&lt;br /&gt;
| RD1-player11=&lt;br /&gt;
| RD1-score11=&lt;br /&gt;
| RD1-player12=&lt;br /&gt;
| RD1-score12=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| RD1-server04=&amp;lt;b&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;USA&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
| RD1-player13=&lt;br /&gt;
| RD1-score13=&lt;br /&gt;
| RD1-player14=&lt;br /&gt;
| RD1-score14=&lt;br /&gt;
| RD1-player15=&lt;br /&gt;
| RD1-score15=&lt;br /&gt;
| RD1-player16=&lt;br /&gt;
| RD1-score16=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| RD1-server05=&amp;lt;b&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;EURO&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
| RD1-player17=&lt;br /&gt;
| RD1-score17=&lt;br /&gt;
| RD1-player18=&lt;br /&gt;
| RD1-score18=&lt;br /&gt;
| RD1-player19=&lt;br /&gt;
| RD1-score19=&lt;br /&gt;
| RD1-player20=&lt;br /&gt;
| RD1-score20=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| RD1-server06=&amp;lt;b&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;EURO&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
| RD1-player21=&lt;br /&gt;
| RD1-score21=&lt;br /&gt;
| RD1-player22=&lt;br /&gt;
| RD1-score22=&lt;br /&gt;
| RD1-player23=&lt;br /&gt;
| RD1-score23=&lt;br /&gt;
| RD1-player24=&lt;br /&gt;
| RD1-score24=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| RD1-server07=&amp;lt;b&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;EURO&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; &lt;br /&gt;
| RD1-player25=&lt;br /&gt;
| RD1-score25=&lt;br /&gt;
| RD1-player26=&lt;br /&gt;
| RD1-score26=&lt;br /&gt;
| RD1-player27=&lt;br /&gt;
| RD1-score27=&lt;br /&gt;
| RD1-player28=&lt;br /&gt;
| RD1-score28=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| RD1-server08=&amp;lt;b&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;EURO&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
| RD1-player29=&lt;br /&gt;
| RD1-score29=&lt;br /&gt;
| RD1-player30=&lt;br /&gt;
| RD1-score30=&lt;br /&gt;
| RD1-player31=&lt;br /&gt;
| RD1-score31=&lt;br /&gt;
| RD1-player32=&lt;br /&gt;
| RD1-score32=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| RD2-server01=&amp;lt;b&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;USA&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
| RD2-player01=&lt;br /&gt;
| RD2-score01=&lt;br /&gt;
| RD2-player02=&lt;br /&gt;
| RD2-score02=&lt;br /&gt;
| RD2-player03=&lt;br /&gt;
| RD2-score03=&lt;br /&gt;
| RD2-player04=&lt;br /&gt;
| RD2-score04=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| RD2-server03=&amp;lt;b&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;EURO&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
| RD2-player05=&lt;br /&gt;
| RD2-score05=&lt;br /&gt;
| RD2-player06=&lt;br /&gt;
| RD2-score06=&lt;br /&gt;
| RD2-player07=&lt;br /&gt;
| RD2-score07=&lt;br /&gt;
| RD2-player08=&lt;br /&gt;
| RD2-score08=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| RD3-server01=&amp;lt;b&amp;gt;&amp;lt;font color=&amp;quot;#00FF00&amp;quot;&amp;gt;USA&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
| RD3-player01=&lt;br /&gt;
| RD3-score01=&lt;br /&gt;
| RD3-player02=&lt;br /&gt;
| RD3-score02=&lt;br /&gt;
| RD3-player03=&lt;br /&gt;
| RD3-score03=&lt;br /&gt;
| RD3-player04=&lt;br /&gt;
| RD3-score04=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=User:Epsy&amp;diff=44561</id>
		<title>User:Epsy</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=User:Epsy&amp;diff=44561"/>
		<updated>2013-09-15T15:27:29Z</updated>

		<summary type="html">&lt;p&gt;Epsy: updated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Active developer of Armagetron Advanced, owner of the pickup channel.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
You can contact me in our [[IRC Channel]], write me a [http://forums.armagetronad.net/privmsg.php?mode=post&amp;amp;u=1588 private message on the forums] or just edit my [[User_talk:Epsy|Talk Page]] (Don&#039;t forget to sign with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;mdash;~~~~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;!)&lt;br /&gt;
&lt;br /&gt;
== Identities ==&lt;br /&gt;
&lt;br /&gt;
* AAGID: epsy@x (main)&lt;br /&gt;
* AAGID: epsy@forums&lt;br /&gt;
* OpenID: https://launchpad.net/~epsy&lt;br /&gt;
&lt;br /&gt;
== Things in [[Armagetron Advanced]] that you can blame me for ==&lt;br /&gt;
&lt;br /&gt;
* The warmup session in 0.4alpha&lt;br /&gt;
* Some of the (not yet merged) cockpit code&lt;br /&gt;
&lt;br /&gt;
== Stuff I do related to Armagetron Advanced ==&lt;br /&gt;
&lt;br /&gt;
* I own the pickup channel(http://www.hashpickup.net/) and some of its servers.&lt;br /&gt;
* I run the @x AAGID authority, for which you can register at http://x.hashpickup.net/ .&lt;br /&gt;
* I authored the [http://forums3.armagetronad.net/viewtopic.php?f=79&amp;amp;t=22652&amp;amp;p=266473#p266473 King of the fortress] ruleset, and host a couple servers running it.&lt;br /&gt;
* I organize Team Sumo Tournaments.&lt;br /&gt;
&lt;br /&gt;
== Stuff I do not related to Armagetron Advanced ==&lt;br /&gt;
&lt;br /&gt;
* I authored [http://pypi.python.org/pypi/clize clize], an argument parser for python.&lt;br /&gt;
* I run [http://www.reddit.com/user/tabledresser /u/tabledresser], a reddit bot that puts recent AMAs on the site in table format.&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Blue_Clan&amp;diff=43959</id>
		<title>Blue Clan</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Blue_Clan&amp;diff=43959"/>
		<updated>2013-07-15T23:36:42Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Undo revision 43941 by YoloSwagman (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;6lu died July 13, 2013&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Tournaments_channel&amp;diff=43783</id>
		<title>Tournaments channel</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Tournaments_channel&amp;diff=43783"/>
		<updated>2013-07-08T00:17:44Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Detailled who channel staffers would be&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tournaments]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;#x23;armagetron.tourneys is an IRC chat room on FreeNode dedicated to Armagetron Advanced tournaments. You can join without an IRC client using [http://webchat.freenode.net/?channels=armagetron%2Carmagetron.pickup%2Carmagetron.tourneys this website]. It is preferred that all tournament-related chat happens in this channel rather than on the main channel, on the pickup channel or on individual tournament channels, so that any tournament-related discussion or logs can easily be found.&lt;br /&gt;
&lt;br /&gt;
==Channel Staffers==&lt;br /&gt;
&lt;br /&gt;
Channel staffers are marked with voice(+v, have + next to their name in some clients) most of the time. Staffer status is given to users who take participation in the running of tournaments, are active on IRC and willing to help. If you need any help with the channel&#039;s operation, please feel free to &#039;&#039;ping&#039;&#039; them by mentioning their nickname.&lt;br /&gt;
&lt;br /&gt;
==Channel Topic==&lt;br /&gt;
&lt;br /&gt;
The channel topic is free for all to edit within reason, to provide an overview of the status of ongoing and upcoming tournaments or leagues. When editing, try to respect the formatting and take care to not erase other tournament info. If you need advice, feel free to ask anyone who has voice(+).&lt;br /&gt;
&lt;br /&gt;
; /topic [new topic]&lt;br /&gt;
: This command sets the channel topic. Some IRC clients let you edit the topic line directly in their UI, so you may not need to use this command. Running the command with no argument usually displays the current channel topic.&lt;br /&gt;
&lt;br /&gt;
==Dispute resolution==&lt;br /&gt;
&lt;br /&gt;
Occasionally, disputes may require tournament participants, for instance team leaders, to use the channel to settle a dispute, perhaps with the help of a mediator. If it is needed for the conversation to be run without interference, a channel operator can set the channel up so that only the relevant parties can talk. Simply ask one of them.&lt;br /&gt;
&lt;br /&gt;
==Staffer cheat sheet==&lt;br /&gt;
&lt;br /&gt;
====Opping yourself====&lt;br /&gt;
; /msg chanserv op #armagetron.tourneys&lt;br /&gt;
: Grants yourself operator status(+o, @ next to your nickname) in the channel, so that you may exert actions such as setting moderated status, voicing other users, or setting bans.&lt;br /&gt;
; /msg chanserv deop #armagetron.tourneys&lt;br /&gt;
; /mode -o YourNickname&lt;br /&gt;
; /deop YourNickname&lt;br /&gt;
: Removes operator status for yourself. Please do this when you do not need operator status.&lt;br /&gt;
&lt;br /&gt;
====Setting moderated mode====&lt;br /&gt;
; /mode +m&lt;br /&gt;
: Sets moderated status to the channel(+m) so that only voiced people can chat. Use this when it is important to make clear conversation between two parties of a dispute.&lt;br /&gt;
; /mode -m&lt;br /&gt;
: Undoes the above.&lt;br /&gt;
; /mode +v nickname&lt;br /&gt;
; /mode +vvv nickname nickname nickname&lt;br /&gt;
; /voice nickname nickname ...&lt;br /&gt;
: Gives the given users voice status(+v, + next to their nickname) so that they may chat even when the channel is moderated.&lt;br /&gt;
; /mode -v nickname&lt;br /&gt;
; /mode -vvv nickname nickname nickname&lt;br /&gt;
; /devoice nickname nickname ...&lt;br /&gt;
: Removes voice from the given users.&lt;br /&gt;
&lt;br /&gt;
====Locking the topic====&lt;br /&gt;
; /mode +t&lt;br /&gt;
: Locks the topic so that only operators can edit it. Use this when users are spamming topic changes.&lt;br /&gt;
; /mode -t&lt;br /&gt;
: Undoes the above&lt;br /&gt;
&lt;br /&gt;
====Dealing with troublemakers====&lt;br /&gt;
; /kick nickname&lt;br /&gt;
; /kickban nickname&lt;br /&gt;
: Removes the given user from the channel.&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Competition_Hub&amp;diff=43782</id>
		<title>Competition Hub</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Competition_Hub&amp;diff=43782"/>
		<updated>2013-07-08T00:13:25Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Added link to Tournament channel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PlayerTbl}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Want to join a tournament, browse an old one, or [[Creating a Competition|organize/create a new one]]...well you&#039;re in the right place. See [[Tournaments channel]] for information on how to use the #armagetron.tourneys IRC chat room.&lt;br /&gt;
&lt;br /&gt;
=Current/Upcoming Competition=&lt;br /&gt;
{{:DFT/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:Spoon/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:Ladle/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:Bowl/Blurb}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{:CTFBRAWL/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:CTWF/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:IllegalExit/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Suspended/Delayed Tournaments=&lt;br /&gt;
{{:4_Team_Fort/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:WarSumoTournament/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old tournaments=&lt;br /&gt;
{{:SBT/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:TiltBlurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:LDFT/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:HSRacing/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:CarCurrus/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:Rddf/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:Wildcat_Tournament_september_2011/Blurp}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:EZDF/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:TL/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:Onslaught/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:Fortress_Brawl/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:Sumo1v1Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:USvsEU/blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:Crosseyed&amp;amp;PainlessBlurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:IFC_Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:Kings_of_the_Grid_Blurb}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{:FFFBlurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:AFL_Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:AVE Fort/Blurb}}&amp;lt;br/&amp;gt;&lt;br /&gt;
{{:FTCM/Blurb}}&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Tournaments_channel&amp;diff=43779</id>
		<title>Tournaments channel</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Tournaments_channel&amp;diff=43779"/>
		<updated>2013-07-08T00:01:25Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tournaments]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;#x23;armagetron.tourneys is an IRC chat room on FreeNode dedicated to Armagetron Advanced tournaments. You can join without an IRC client using [http://webchat.freenode.net/?channels=armagetron%2Carmagetron.pickup%2Carmagetron.tourneys this website]. It is preferred that all tournament-related chat happens in this channel rather than on the main channel, on the pickup channel or on individual tournament channels, so that any tournament-related discussion or logs can easily be found.&lt;br /&gt;
&lt;br /&gt;
==Channel Staffers==&lt;br /&gt;
&lt;br /&gt;
Channel staffers are marked with voice(+v, have + next to their name in some clients) most of the time. If you need any help with the channel&#039;s operation, please feel free to &#039;&#039;ping&#039;&#039; them by mentioning their nickname.&lt;br /&gt;
&lt;br /&gt;
==Channel Topic==&lt;br /&gt;
&lt;br /&gt;
The channel topic is free for all to edit within reason, to provide an overview of the status of ongoing and upcoming tournaments or leagues. When editing, try to respect the formatting and take care to not erase other tournament info. If you need advice, feel free to ask anyone who has voice(+).&lt;br /&gt;
&lt;br /&gt;
; /topic [new topic]&lt;br /&gt;
: This command sets the channel topic. Some IRC clients let you edit the topic line directly in their UI, so you may not need to use this command. Running the command with no argument usually displays the current channel topic.&lt;br /&gt;
&lt;br /&gt;
==Dispute resolution==&lt;br /&gt;
&lt;br /&gt;
Occasionally, disputes may require tournament participants, for instance team leaders, to use the channel to settle a dispute, perhaps with the help of a mediator. If it is needed for the conversation to be run without interference, a channel operator can set the channel up so that only the relevant parties can talk. Simply ask one of them.&lt;br /&gt;
&lt;br /&gt;
==Staffer cheat sheet==&lt;br /&gt;
&lt;br /&gt;
====Opping yourself====&lt;br /&gt;
; /msg chanserv op #armagetron.tourneys&lt;br /&gt;
: Grants yourself operator status(+o, @ next to your nickname) in the channel, so that you may exert actions such as setting moderated status, voicing other users, or setting bans.&lt;br /&gt;
; /msg chanserv deop #armagetron.tourneys&lt;br /&gt;
; /mode -o YourNickname&lt;br /&gt;
; /deop YourNickname&lt;br /&gt;
: Removes operator status for yourself. Please do this when you do not need operator status.&lt;br /&gt;
&lt;br /&gt;
====Setting moderated mode====&lt;br /&gt;
; /mode +m&lt;br /&gt;
: Sets moderated status to the channel(+m) so that only voiced people can chat. Use this when it is important to make clear conversation between two parties of a dispute.&lt;br /&gt;
; /mode -m&lt;br /&gt;
: Undoes the above.&lt;br /&gt;
; /mode +v nickname&lt;br /&gt;
; /mode +vvv nickname nickname nickname&lt;br /&gt;
; /voice nickname nickname ...&lt;br /&gt;
: Gives the given users voice status(+v, + next to their nickname) so that they may chat even when the channel is moderated.&lt;br /&gt;
; /mode -v nickname&lt;br /&gt;
; /mode -vvv nickname nickname nickname&lt;br /&gt;
; /devoice nickname nickname ...&lt;br /&gt;
: Removes voice from the given users.&lt;br /&gt;
&lt;br /&gt;
====Locking the topic====&lt;br /&gt;
; /mode +t&lt;br /&gt;
: Locks the topic so that only operators can edit it. Use this when users are spamming topic changes.&lt;br /&gt;
; /mode -t&lt;br /&gt;
: Undoes the above&lt;br /&gt;
&lt;br /&gt;
====Dealing with troublemakers====&lt;br /&gt;
; /kick nickname&lt;br /&gt;
; /kickban nickname&lt;br /&gt;
: Removes the given user from the channel.&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=42315</id>
		<title>Cockpit Reference</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=42315"/>
		<updated>2013-03-13T00:03:09Z</updated>

		<summary type="html">&lt;p&gt;Epsy: /* Common Attributes */ added blurb and camera attr info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Cockpits Blurb}}&lt;br /&gt;
&lt;br /&gt;
This page describes all the cockpit-related features available in the 0.4-cockpit branch. It has not been merged into 0.4 yet. The current features are explained on the [[Cockpit Tutorial]] page.&lt;br /&gt;
&lt;br /&gt;
==The boilerplate==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;cockpit.dtd&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;Resource type=&amp;quot;aacockpit&amp;quot; name=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;cockpit name&amp;lt;/span&amp;gt;&amp;quot; version=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a version&amp;lt;/span&amp;gt;&amp;quot; author=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;your name&amp;lt;/span&amp;gt;&amp;quot; category=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a category&amp;lt;/span&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Cockpit version=&amp;quot;0.0.1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;Widgets go here&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/Cockpit&amp;gt;&lt;br /&gt;
 &amp;lt;/Resource&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The attributes of the &amp;lt;code&amp;gt;&amp;lt;Resource&amp;gt;&amp;lt;/code&amp;gt; tag form the path your cockpit will have to be placed at:&lt;br /&gt;
&lt;br /&gt;
 author/category/name-version.aacockpit.xml&lt;br /&gt;
&lt;br /&gt;
If category is omitted or empty, the resource will be straight under the author directory. It can contain forward slashes, in which case the file will be several directories deep. See also [[Testing Resources]].&lt;br /&gt;
&lt;br /&gt;
A few rules and recommendations:&lt;br /&gt;
* Don&#039;t use spaces/&lt;br /&gt;
* Don&#039;t use dashes(&amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;) in the name.&lt;br /&gt;
* Use numbers or dotted numbers for your version. For example, you could use &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1.5&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;0.4.3&amp;lt;/code&amp;gt;. Make the version number increase as you publish updates and be consistent with the number of dots in it.&lt;br /&gt;
* Be consistent with your author name.&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;&amp;lt;Cockpit&amp;gt;&amp;lt;/code&amp;gt; tag is where the widgets go. A widget is an element on the HUD. Do &#039;&#039;&#039;not&#039;&#039;&#039; change the version on that tag. It may be used to introduce backward-compatibility changes in the future.&lt;br /&gt;
&lt;br /&gt;
==Common Attributes==&lt;br /&gt;
&lt;br /&gt;
These attributes can be applied to any widget like such:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BarGauge camera=&amp;quot;in&amp;quot; viewport=&amp;quot;cycle&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;nowiki&amp;gt;&amp;lt;!-- ... --&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;/BarGauge&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===camera===&lt;br /&gt;
&lt;br /&gt;
Specifies which cameras, separated by spaces, the widget should be shown in. If omitted, it is shown on all cameras. If it starts with a circumflex accent(&amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt;), then the widget will be shown in all cameras except those specified. Here are the accepted camera names:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! camera=&amp;quot;&amp;amp;hellip;&amp;quot;&lt;br /&gt;
! Full camera name&lt;br /&gt;
|-&lt;br /&gt;
| custom || Custom&lt;br /&gt;
|-&lt;br /&gt;
| follow || External&lt;br /&gt;
|-&lt;br /&gt;
| free || Free&lt;br /&gt;
|-&lt;br /&gt;
| in || Internal&lt;br /&gt;
|-&lt;br /&gt;
| server_custom || Server custom&lt;br /&gt;
|-&lt;br /&gt;
| smart || Smart&lt;br /&gt;
|-&lt;br /&gt;
| mer || Mercam&lt;br /&gt;
|-&lt;br /&gt;
| all || All cameras&lt;br /&gt;
|-&lt;br /&gt;
| * || All cameras&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===viewport===&lt;br /&gt;
&lt;br /&gt;
===toggleSticky, toggleDefault===&lt;br /&gt;
&lt;br /&gt;
===usetemplate===&lt;br /&gt;
&lt;br /&gt;
==Common Tags==&lt;br /&gt;
&lt;br /&gt;
===Position and Size===&lt;br /&gt;
&lt;br /&gt;
Cockpit widgets are positioned with up to 4 tags:&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; designates an anchor relative to the total output area. -1,-1 is the lower-left corner of the output, 1,1 is the higher-left corner.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; positions the widget, relative to the anchor you defined. One unit in a direction is the same amount of pixels than one unit in any other direction.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; gives the size of the widget. The units are also squares of pixels.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Align&amp;gt;&amp;lt;/code&amp;gt; defines what point in the widget corresponds to the point that was positionned with the two first tags. If unspecified, it defaults to the center of the widget.&lt;br /&gt;
&lt;br /&gt;
====Anchor and Position====&lt;br /&gt;
&lt;br /&gt;
Not all players play Armagetron on the same kind of display. Some play it on a 4:3 resolution, while others use 16:9 or 16:10. Or they could be playing splitscreen, causing each player&#039;s cockpit to be 2:3 or 32:9. While those last two cases are a bit extreme, your cockpit has to be able to adapt to 4:3 or 16:9 without trouble. Armagetron used to have one coordinate system that went from -1 to 1 horizontally and from -1 to 0.5 vertically. It was tailored for 4:3 outputs so to adapt cockpits for 16:9 it would just squish the cockpit vertically to fit.&lt;br /&gt;
&lt;br /&gt;
This is no longer the case. Usually cockpit widgets are put near corners or edges of the output area. To help you do that, the &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag lets you tell Armagetron just that. For instance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;-1&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the anchor at -1,-1 tells Armagetron that you are about to put your widget near the bottom left-hand side of the output. If you put it at 1,1, then you&#039;d be in the upper right-hand side. Here is the coordinate space used for the anchor tag, on 4:3 and 16:9 outputs, respectively:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center&amp;quot;&amp;gt;[[File:CockpitAnchor43.png|On a 4:3 output]] [[File:CockpitAnchor169.png|On a 16:9 output]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It will always scale to have x=-1 at the left, x=1 at the right, y=-1 at the bottom and y=1 at the top of the output. If you do not set an anchor, [[#Compatibility mode|compatibility mode]] will be implicitly triggered on the widget.&lt;br /&gt;
&lt;br /&gt;
Once you have an anchor set, you can position your widget relative to it. The difference is that &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt;&#039;s coordinate space always has a 1:1 ratio between width and height units.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center&amp;quot;&amp;gt;[[File:CockpitPosition.png|How Position&#039;s coordinate space works for the previous Anchor example.]][[File:CockpitPosition169.png|The scale does not change with a different aspect ratio.]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0,0 is at the anchor you defined and the output is 2 units wide. Here, the blue elements symbolize the total output area and the anchor coordinates. The red elements show the coordinate space for the position. As you can see from the dashed square, it does not get resized vertically. If you were to write:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;-1&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;.1&amp;quot; y=&amp;quot;.1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You would be telling Armagetron to position your widget close to the bottom left-hand corner, a fraction away from the edge of the output. It would be at an equal distance from the left and bottom edge of the screen, regardless of the output&#039;s aspect ratio.&lt;br /&gt;
&lt;br /&gt;
====Size and Align====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; tags have so far positioned a point on the screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; an area of the screen to the point with its &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; attributes:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Size width=&amp;quot;.5&amp;quot; height=&amp;quot;.4&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will give the widget an area that is a quarter of the width of the screen and is 5:4 in aspect ratio. The coordinate space for the size is the same as for the &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; tag. The size is measured from edge to edge, with most widgets occupying exactly this space. Captions do not count towards it and can be on the outside of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;Align&amp;gt;&amp;lt;/code&amp;gt; is a convenience tag that lets you redefine how the widget aligns with its set position. It positions a point relative to the widget body, like &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; sets a point relative to the output area.&lt;br /&gt;
&lt;br /&gt;
====Adjusting position and size depending on aspect ratio====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag also accepts &amp;lt;code&amp;gt;minadjust&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;maxadjust&amp;lt;/code&amp;gt; attributes. When the widget is processed, its &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; are multiplied by a factor. This factor is determined by dividing the output height by its width, then clamping that value so that it is at least &amp;lt;code&amp;gt;minadjust&amp;lt;/code&amp;gt;&#039;s value and at most &amp;lt;code&amp;gt;maxadjust&amp;lt;/code&amp;gt;&#039;s value. Those attributes both default to 1, so that no change is made by default.&lt;br /&gt;
&lt;br /&gt;
For instance, a widget is positioned and sized like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; minadjust=&amp;quot;0.1&amp;quot; maxadjust=&amp;quot;0.7&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;0&amp;quot; y=&amp;quot;0.1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Align x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Size x=&amp;quot;0.5&amp;quot; y=&amp;quot;0.5&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the output size is 1024x768(or any 4:3 aspect output), the factor is &amp;lt;code&amp;gt;768/1024 = 0.75&amp;lt;/code&amp;gt;. This is over the &amp;lt;code&amp;gt;maxadjust&amp;lt;/code&amp;gt; parameter, so it becomes &amp;lt;code&amp;gt;0.7&amp;lt;/code&amp;gt;. That factor then multiplies the &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; tags. The above code would be equivalent to, in this case:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;0&amp;quot; y=&amp;quot;0.07&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Align x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Size x=&amp;quot;0.35&amp;quot; y=&amp;quot;0.35&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the output size is 1280x800(or any 16:10 aspect output), the factor is &amp;lt;code&amp;gt;800/1280 = 0.625&amp;lt;/code&amp;gt;. This is between the adjust parameters, so it is unchanged. It is then used to multiply the position and size:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;0&amp;quot; y=&amp;quot;0.0625&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Align x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Size x=&amp;quot;0.3125&amp;quot; y=&amp;quot;0.3125&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Background, Foreground and LineColor===&lt;br /&gt;
&lt;br /&gt;
===Caption===&lt;br /&gt;
&lt;br /&gt;
===DataSet===&lt;br /&gt;
&lt;br /&gt;
==Widgets==&lt;br /&gt;
&lt;br /&gt;
===Rectangle===&lt;br /&gt;
&lt;br /&gt;
===BarGauge and VerticalBarGauge===&lt;br /&gt;
&lt;br /&gt;
===NeedleGauge===&lt;br /&gt;
&lt;br /&gt;
===Label===&lt;br /&gt;
&lt;br /&gt;
===Map===&lt;br /&gt;
&lt;br /&gt;
===Camview===&lt;br /&gt;
&lt;br /&gt;
==Related settings==&lt;br /&gt;
&lt;br /&gt;
==Compatibility mode==&lt;br /&gt;
&lt;br /&gt;
Compatibility mode is activated on a widget when it either:&lt;br /&gt;
&lt;br /&gt;
* has no &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag,&lt;br /&gt;
* has an &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag with its &amp;lt;code&amp;gt;oldcoord&amp;lt;/code&amp;gt; attribute set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When it is activated, the game will emulate the old coordinate system used for positioning widgets, and emulate quirks within the widgets themselves.&lt;br /&gt;
&lt;br /&gt;
===Old coordinate system===&lt;br /&gt;
&lt;br /&gt;
In the old coordinate system, &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt;&#039;s coordinate system resizes to fit the output size so that &amp;lt;code&amp;gt;y=-1&amp;lt;/code&amp;gt; is at the bottom of the output, &amp;lt;code&amp;gt;y=0.5&amp;lt;/code&amp;gt; is at the top of the output, &amp;lt;code&amp;gt;x=-1&amp;lt;/code&amp;gt; is at the left edge of the output, and &amp;lt;code&amp;gt;x=1&amp;lt;/code&amp;gt; is at the right edge of the output. This coordinate system is shifted if using an &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; different than &amp;lt;code&amp;gt;0,0.33&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; operates on the same scale, but measures &#039;&#039;&#039;half&#039;&#039;&#039; the width and height of the object, as if from center to edge. &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt;&#039;s &amp;lt;code&amp;gt;minadjust&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;maxadjust&amp;lt;/code&amp;gt; are ignored.&lt;br /&gt;
&lt;br /&gt;
This is an illustration of the old coordinate system. Note that 0.5 on the y axis is always the top of the screen.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cockpit Coordinate System.png|center|illustration of the coordinate system]]&lt;br /&gt;
&lt;br /&gt;
===Label===&lt;br /&gt;
&lt;br /&gt;
The widget will always be aligned from the top left corner, the width will be halved and used to horizontally space cells, the height will be used as text size. Setting cell dimensions is unsupported and the table is locked in auto-sizing mode.&lt;br /&gt;
&lt;br /&gt;
===BarGauge===&lt;br /&gt;
&lt;br /&gt;
The gauge body will only occupy the top half of the allocated room, the other half being reserved for captions.&lt;br /&gt;
&lt;br /&gt;
===Camview===&lt;br /&gt;
&lt;br /&gt;
The widget will always be aligned from the bottom-left corner.&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=42306</id>
		<title>Cockpit Reference</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=42306"/>
		<updated>2013-03-12T22:40:11Z</updated>

		<summary type="html">&lt;p&gt;Epsy: /* Compatibility mode */ Added widget specificities&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Cockpits Blurb}}&lt;br /&gt;
&lt;br /&gt;
This page describes all the cockpit-related features available in the 0.4-cockpit branch. It has not been merged into 0.4 yet. The current features are explained on the [[Cockpit Tutorial]] page.&lt;br /&gt;
&lt;br /&gt;
==The boilerplate==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;cockpit.dtd&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;Resource type=&amp;quot;aacockpit&amp;quot; name=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;cockpit name&amp;lt;/span&amp;gt;&amp;quot; version=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a version&amp;lt;/span&amp;gt;&amp;quot; author=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;your name&amp;lt;/span&amp;gt;&amp;quot; category=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a category&amp;lt;/span&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Cockpit version=&amp;quot;0.0.1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;Widgets go here&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/Cockpit&amp;gt;&lt;br /&gt;
 &amp;lt;/Resource&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The attributes of the &amp;lt;code&amp;gt;&amp;lt;Resource&amp;gt;&amp;lt;/code&amp;gt; tag form the path your cockpit will have to be placed at:&lt;br /&gt;
&lt;br /&gt;
 author/category/name-version.aacockpit.xml&lt;br /&gt;
&lt;br /&gt;
If category is omitted or empty, the resource will be straight under the author directory. It can contain forward slashes, in which case the file will be several directories deep. See also [[Testing Resources]].&lt;br /&gt;
&lt;br /&gt;
A few rules and recommendations:&lt;br /&gt;
* Don&#039;t use spaces/&lt;br /&gt;
* Don&#039;t use dashes(&amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;) in the name.&lt;br /&gt;
* Use numbers or dotted numbers for your version. For example, you could use &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1.5&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;0.4.3&amp;lt;/code&amp;gt;. Make the version number increase as you publish updates and be consistent with the number of dots in it.&lt;br /&gt;
* Be consistent with your author name.&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;&amp;lt;Cockpit&amp;gt;&amp;lt;/code&amp;gt; tag is where the widgets go. A widget is an element on the HUD. Do &#039;&#039;&#039;not&#039;&#039;&#039; change the version on that tag. It may be used to introduce backward-compatibility changes in the future.&lt;br /&gt;
&lt;br /&gt;
==Common Attributes==&lt;br /&gt;
&lt;br /&gt;
===camera===&lt;br /&gt;
&lt;br /&gt;
===viewport===&lt;br /&gt;
&lt;br /&gt;
===toggleSticky, toggleDefault===&lt;br /&gt;
&lt;br /&gt;
===usetemplate===&lt;br /&gt;
&lt;br /&gt;
==Common Tags==&lt;br /&gt;
&lt;br /&gt;
===Position and Size===&lt;br /&gt;
&lt;br /&gt;
Cockpit widgets are positioned with up to 4 tags:&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; designates an anchor relative to the total output area. -1,-1 is the lower-left corner of the output, 1,1 is the higher-left corner.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; positions the widget, relative to the anchor you defined. One unit in a direction is the same amount of pixels than one unit in any other direction.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; gives the size of the widget. The units are also squares of pixels.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Align&amp;gt;&amp;lt;/code&amp;gt; defines what point in the widget corresponds to the point that was positionned with the two first tags. If unspecified, it defaults to the center of the widget.&lt;br /&gt;
&lt;br /&gt;
====Anchor and Position====&lt;br /&gt;
&lt;br /&gt;
Not all players play Armagetron on the same kind of display. Some play it on a 4:3 resolution, while others use 16:9 or 16:10. Or they could be playing splitscreen, causing each player&#039;s cockpit to be 2:3 or 32:9. While those last two cases are a bit extreme, your cockpit has to be able to adapt to 4:3 or 16:9 without trouble. Armagetron used to have one coordinate system that went from -1 to 1 horizontally and from -1 to 0.5 vertically. It was tailored for 4:3 outputs so to adapt cockpits for 16:9 it would just squish the cockpit vertically to fit.&lt;br /&gt;
&lt;br /&gt;
This is no longer the case. Usually cockpit widgets are put near corners or edges of the output area. To help you do that, the &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag lets you tell Armagetron just that. For instance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;-1&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the anchor at -1,-1 tells Armagetron that you are about to put your widget near the bottom left-hand side of the output. If you put it at 1,1, then you&#039;d be in the upper right-hand side. Here is the coordinate space used for the anchor tag, on 4:3 and 16:9 outputs, respectively:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center&amp;quot;&amp;gt;[[File:CockpitAnchor43.png|On a 4:3 output]] [[File:CockpitAnchor169.png|On a 16:9 output]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It will always scale to have x=-1 at the left, x=1 at the right, y=-1 at the bottom and y=1 at the top of the output. If you do not set an anchor, [[#Compatibility mode|compatibility mode]] will be implicitly triggered on the widget.&lt;br /&gt;
&lt;br /&gt;
Once you have an anchor set, you can position your widget relative to it. The difference is that &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt;&#039;s coordinate space always has a 1:1 ratio between width and height units.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center&amp;quot;&amp;gt;[[File:CockpitPosition.png|How Position&#039;s coordinate space works for the previous Anchor example.]][[File:CockpitPosition169.png|The scale does not change with a different aspect ratio.]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0,0 is at the anchor you defined and the output is 2 units wide. Here, the blue elements symbolize the total output area and the anchor coordinates. The red elements show the coordinate space for the position. As you can see from the dashed square, it does not get resized vertically. If you were to write:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;-1&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;.1&amp;quot; y=&amp;quot;.1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You would be telling Armagetron to position your widget close to the bottom left-hand corner, a fraction away from the edge of the output. It would be at an equal distance from the left and bottom edge of the screen, regardless of the output&#039;s aspect ratio.&lt;br /&gt;
&lt;br /&gt;
====Size and Align====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; tags have so far positioned a point on the screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; an area of the screen to the point with its &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; attributes:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Size width=&amp;quot;.5&amp;quot; height=&amp;quot;.4&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will give the widget an area that is a quarter of the width of the screen and is 5:4 in aspect ratio. The coordinate space for the size is the same as for the &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; tag. The size is measured from edge to edge, with most widgets occupying exactly this space. Captions do not count towards it and can be on the outside of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;Align&amp;gt;&amp;lt;/code&amp;gt; is a convenience tag that lets you redefine how the widget aligns with its set position. It positions a point relative to the widget body, like &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; sets a point relative to the output area.&lt;br /&gt;
&lt;br /&gt;
====Adjusting position and size depending on aspect ratio====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag also accepts &amp;lt;code&amp;gt;minadjust&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;maxadjust&amp;lt;/code&amp;gt; attributes. When the widget is processed, its &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; are multiplied by a factor. This factor is determined by dividing the output height by its width, then clamping that value so that it is at least &amp;lt;code&amp;gt;minadjust&amp;lt;/code&amp;gt;&#039;s value and at most &amp;lt;code&amp;gt;maxadjust&amp;lt;/code&amp;gt;&#039;s value. Those attributes both default to 1, so that no change is made by default.&lt;br /&gt;
&lt;br /&gt;
For instance, a widget is positioned and sized like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; minadjust=&amp;quot;0.1&amp;quot; maxadjust=&amp;quot;0.7&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;0&amp;quot; y=&amp;quot;0.1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Align x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Size x=&amp;quot;0.5&amp;quot; y=&amp;quot;0.5&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the output size is 1024x768(or any 4:3 aspect output), the factor is &amp;lt;code&amp;gt;768/1024 = 0.75&amp;lt;/code&amp;gt;. This is over the &amp;lt;code&amp;gt;maxadjust&amp;lt;/code&amp;gt; parameter, so it becomes &amp;lt;code&amp;gt;0.7&amp;lt;/code&amp;gt;. That factor then multiplies the &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; tags. The above code would be equivalent to, in this case:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;0&amp;quot; y=&amp;quot;0.07&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Align x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Size x=&amp;quot;0.35&amp;quot; y=&amp;quot;0.35&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the output size is 1280x800(or any 16:10 aspect output), the factor is &amp;lt;code&amp;gt;800/1280 = 0.625&amp;lt;/code&amp;gt;. This is between the adjust parameters, so it is unchanged. It is then used to multiply the position and size:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;0&amp;quot; y=&amp;quot;0.0625&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Align x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Size x=&amp;quot;0.3125&amp;quot; y=&amp;quot;0.3125&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Background, Foreground and LineColor===&lt;br /&gt;
&lt;br /&gt;
===Caption===&lt;br /&gt;
&lt;br /&gt;
===DataSet===&lt;br /&gt;
&lt;br /&gt;
==Widgets==&lt;br /&gt;
&lt;br /&gt;
===Rectangle===&lt;br /&gt;
&lt;br /&gt;
===BarGauge and VerticalBarGauge===&lt;br /&gt;
&lt;br /&gt;
===NeedleGauge===&lt;br /&gt;
&lt;br /&gt;
===Label===&lt;br /&gt;
&lt;br /&gt;
===Map===&lt;br /&gt;
&lt;br /&gt;
===Camview===&lt;br /&gt;
&lt;br /&gt;
==Related settings==&lt;br /&gt;
&lt;br /&gt;
==Compatibility mode==&lt;br /&gt;
&lt;br /&gt;
Compatibility mode is activated on a widget when it either:&lt;br /&gt;
&lt;br /&gt;
* has no &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag,&lt;br /&gt;
* has an &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag with its &amp;lt;code&amp;gt;oldcoord&amp;lt;/code&amp;gt; attribute set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When it is activated, the game will emulate the old coordinate system used for positioning widgets, and emulate quirks within the widgets themselves.&lt;br /&gt;
&lt;br /&gt;
===Old coordinate system===&lt;br /&gt;
&lt;br /&gt;
In the old coordinate system, &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt;&#039;s coordinate system resizes to fit the output size so that &amp;lt;code&amp;gt;y=-1&amp;lt;/code&amp;gt; is at the bottom of the output, &amp;lt;code&amp;gt;y=0.5&amp;lt;/code&amp;gt; is at the top of the output, &amp;lt;code&amp;gt;x=-1&amp;lt;/code&amp;gt; is at the left edge of the output, and &amp;lt;code&amp;gt;x=1&amp;lt;/code&amp;gt; is at the right edge of the output. This coordinate system is shifted if using an &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; different than &amp;lt;code&amp;gt;0,0.33&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; operates on the same scale, but measures &#039;&#039;&#039;half&#039;&#039;&#039; the width and height of the object, as if from center to edge. &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt;&#039;s &amp;lt;code&amp;gt;minadjust&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;maxadjust&amp;lt;/code&amp;gt; are ignored.&lt;br /&gt;
&lt;br /&gt;
This is an illustration of the old coordinate system. Note that 0.5 on the y axis is always the top of the screen.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cockpit Coordinate System.png|center|illustration of the coordinate system]]&lt;br /&gt;
&lt;br /&gt;
===Label===&lt;br /&gt;
&lt;br /&gt;
The widget will always be aligned from the top left corner, the width will be halved and used to horizontally space cells, the height will be used as text size. Setting cell dimensions is unsupported and the table is locked in auto-sizing mode.&lt;br /&gt;
&lt;br /&gt;
===BarGauge===&lt;br /&gt;
&lt;br /&gt;
The gauge body will only occupy the top half of the allocated room, the other half being reserved for captions.&lt;br /&gt;
&lt;br /&gt;
===Camview===&lt;br /&gt;
&lt;br /&gt;
The widget will always be aligned from the bottom-left corner.&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=42292</id>
		<title>Cockpit Reference</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=42292"/>
		<updated>2013-03-12T18:46:26Z</updated>

		<summary type="html">&lt;p&gt;Epsy: /* Common Tags */ Fixed incorrect heading&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Cockpits Blurb}}&lt;br /&gt;
&lt;br /&gt;
This page describes all the cockpit-related features available in the 0.4-cockpit branch. It has not been merged into 0.4 yet. The current features are explained on the [[Cockpit Tutorial]] page.&lt;br /&gt;
&lt;br /&gt;
==The boilerplate==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;cockpit.dtd&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;Resource type=&amp;quot;aacockpit&amp;quot; name=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;cockpit name&amp;lt;/span&amp;gt;&amp;quot; version=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a version&amp;lt;/span&amp;gt;&amp;quot; author=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;your name&amp;lt;/span&amp;gt;&amp;quot; category=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a category&amp;lt;/span&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Cockpit version=&amp;quot;0.0.1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;Widgets go here&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/Cockpit&amp;gt;&lt;br /&gt;
 &amp;lt;/Resource&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The attributes of the &amp;lt;code&amp;gt;&amp;lt;Resource&amp;gt;&amp;lt;/code&amp;gt; tag form the path your cockpit will have to be placed at:&lt;br /&gt;
&lt;br /&gt;
 author/category/name-version.aacockpit.xml&lt;br /&gt;
&lt;br /&gt;
If category is omitted or empty, the resource will be straight under the author directory. It can contain forward slashes, in which case the file will be several directories deep. See also [[Testing Resources]].&lt;br /&gt;
&lt;br /&gt;
A few rules and recommendations:&lt;br /&gt;
* Don&#039;t use spaces/&lt;br /&gt;
* Don&#039;t use dashes(&amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;) in the name.&lt;br /&gt;
* Use numbers or dotted numbers for your version. For example, you could use &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1.5&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;0.4.3&amp;lt;/code&amp;gt;. Make the version number increase as you publish updates and be consistent with the number of dots in it.&lt;br /&gt;
* Be consistent with your author name.&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;&amp;lt;Cockpit&amp;gt;&amp;lt;/code&amp;gt; tag is where the widgets go. A widget is an element on the HUD. Do &#039;&#039;&#039;not&#039;&#039;&#039; change the version on that tag. It may be used to introduce backward-compatibility changes in the future.&lt;br /&gt;
&lt;br /&gt;
==Common Attributes==&lt;br /&gt;
&lt;br /&gt;
===camera===&lt;br /&gt;
&lt;br /&gt;
===viewport===&lt;br /&gt;
&lt;br /&gt;
===toggleSticky, toggleDefault===&lt;br /&gt;
&lt;br /&gt;
===usetemplate===&lt;br /&gt;
&lt;br /&gt;
==Common Tags==&lt;br /&gt;
&lt;br /&gt;
===Position and Size===&lt;br /&gt;
&lt;br /&gt;
Cockpit widgets are positioned with up to 4 tags:&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; designates an anchor relative to the total output area. -1,-1 is the lower-left corner of the output, 1,1 is the higher-left corner.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; positions the widget, relative to the anchor you defined. One unit in a direction is the same amount of pixels than one unit in any other direction.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; gives the size of the widget. The units are also squares of pixels.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Align&amp;gt;&amp;lt;/code&amp;gt; defines what point in the widget corresponds to the point that was positionned with the two first tags. If unspecified, it defaults to the center of the widget.&lt;br /&gt;
&lt;br /&gt;
====Anchor and Position====&lt;br /&gt;
&lt;br /&gt;
Not all players play Armagetron on the same kind of display. Some play it on a 4:3 resolution, while others use 16:9 or 16:10. Or they could be playing splitscreen, causing each player&#039;s cockpit to be 2:3 or 32:9. While those last two cases are a bit extreme, your cockpit has to be able to adapt to 4:3 or 16:9 without trouble. Armagetron used to have one coordinate system that went from -1 to 1 horizontally and from -1 to 0.5 vertically. It was tailored for 4:3 outputs so to adapt cockpits for 16:9 it would just squish the cockpit vertically to fit.&lt;br /&gt;
&lt;br /&gt;
This is no longer the case. Usually cockpit widgets are put near corners or edges of the output area. To help you do that, the &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag lets you tell Armagetron just that. For instance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;-1&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the anchor at -1,-1 tells Armagetron that you are about to put your widget near the bottom left-hand side of the output. If you put it at 1,1, then you&#039;d be in the upper right-hand side. Here is the coordinate space used for the anchor tag, on 4:3 and 16:9 outputs, respectively:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center&amp;quot;&amp;gt;[[File:CockpitAnchor43.png|On a 4:3 output]] [[File:CockpitAnchor169.png|On a 16:9 output]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It will always scale to have x=-1 at the left, x=1 at the right, y=-1 at the bottom and y=1 at the top of the output. If you do not set an anchor, [[#Compatibility mode|compatibility mode]] will be implicitly triggered on the widget.&lt;br /&gt;
&lt;br /&gt;
Once you have an anchor set, you can position your widget relative to it. The difference is that &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt;&#039;s coordinate space always has a 1:1 ratio between width and height units.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center&amp;quot;&amp;gt;[[File:CockpitPosition.png|How Position&#039;s coordinate space works for the previous Anchor example.]][[File:CockpitPosition169.png|The scale does not change with a different aspect ratio.]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0,0 is at the anchor you defined and the output is 2 units wide. Here, the blue elements symbolize the total output area and the anchor coordinates. The red elements show the coordinate space for the position. As you can see from the dashed square, it does not get resized vertically. If you were to write:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;-1&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;.1&amp;quot; y=&amp;quot;.1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You would be telling Armagetron to position your widget close to the bottom left-hand corner, a fraction away from the edge of the output. It would be at an equal distance from the left and bottom edge of the screen, regardless of the output&#039;s aspect ratio.&lt;br /&gt;
&lt;br /&gt;
====Size and Align====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; tags have so far positioned a point on the screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; an area of the screen to the point with its &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; attributes:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Size width=&amp;quot;.5&amp;quot; height=&amp;quot;.4&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will give the widget an area that is a quarter of the width of the screen and is 5:4 in aspect ratio. The coordinate space for the size is the same as for the &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; tag. The size is measured from edge to edge, with most widgets occupying exactly this space. Captions do not count towards it and can be on the outside of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;Align&amp;gt;&amp;lt;/code&amp;gt; is a convenience tag that lets you redefine how the widget aligns with its set position. It positions a point relative to the widget body, like &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; sets a point relative to the output area.&lt;br /&gt;
&lt;br /&gt;
====Adjusting position and size depending on aspect ratio====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag also accepts &amp;lt;code&amp;gt;minadjust&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;maxadjust&amp;lt;/code&amp;gt; attributes. When the widget is processed, its &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; are multiplied by a factor. This factor is determined by dividing the output height by its width, then clamping that value so that it is at least &amp;lt;code&amp;gt;minadjust&amp;lt;/code&amp;gt;&#039;s value and at most &amp;lt;code&amp;gt;maxadjust&amp;lt;/code&amp;gt;&#039;s value. Those attributes both default to 1, so that no change is made by default.&lt;br /&gt;
&lt;br /&gt;
For instance, a widget is positioned and sized like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; minadjust=&amp;quot;0.1&amp;quot; maxadjust=&amp;quot;0.7&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;0&amp;quot; y=&amp;quot;0.1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Align x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Size x=&amp;quot;0.5&amp;quot; y=&amp;quot;0.5&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the output size is 1024x768(or any 4:3 aspect output), the factor is &amp;lt;code&amp;gt;768/1024 = 0.75&amp;lt;/code&amp;gt;. This is over the &amp;lt;code&amp;gt;maxadjust&amp;lt;/code&amp;gt; parameter, so it becomes &amp;lt;code&amp;gt;0.7&amp;lt;/code&amp;gt;. That factor then multiplies the &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; tags. The above code would be equivalent to, in this case:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;0&amp;quot; y=&amp;quot;0.07&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Align x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Size x=&amp;quot;0.35&amp;quot; y=&amp;quot;0.35&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the output size is 1280x800(or any 16:10 aspect output), the factor is &amp;lt;code&amp;gt;800/1280 = 0.625&amp;lt;/code&amp;gt;. This is between the adjust parameters, so it is unchanged. It is then used to multiply the position and size:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;0&amp;quot; y=&amp;quot;0.0625&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Align x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Size x=&amp;quot;0.3125&amp;quot; y=&amp;quot;0.3125&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Background, Foreground and LineColor===&lt;br /&gt;
&lt;br /&gt;
===Caption===&lt;br /&gt;
&lt;br /&gt;
===DataSet===&lt;br /&gt;
&lt;br /&gt;
==Widgets==&lt;br /&gt;
&lt;br /&gt;
===Rectangle===&lt;br /&gt;
&lt;br /&gt;
===BarGauge and VerticalBarGauge===&lt;br /&gt;
&lt;br /&gt;
===NeedleGauge===&lt;br /&gt;
&lt;br /&gt;
===Label===&lt;br /&gt;
&lt;br /&gt;
===Map===&lt;br /&gt;
&lt;br /&gt;
===Camview===&lt;br /&gt;
&lt;br /&gt;
==Related settings==&lt;br /&gt;
&lt;br /&gt;
==Compatibility mode==&lt;br /&gt;
&lt;br /&gt;
Compatibility mode is activated on a widget when it either:&lt;br /&gt;
&lt;br /&gt;
* has no &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag,&lt;br /&gt;
* has an &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag with its &amp;lt;code&amp;gt;oldcoord&amp;lt;/code&amp;gt; attribute set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When it is activated, the game will emulate the old coordinate system used for positioning widgets, and emulate quirks within the widgets themselves.&lt;br /&gt;
&lt;br /&gt;
===Old coordinate system===&lt;br /&gt;
&lt;br /&gt;
In the old coordinate system, &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt;&#039;s coordinate system resizes to fit the output size so that &amp;lt;code&amp;gt;y=-1&amp;lt;/code&amp;gt; is at the bottom of the output, &amp;lt;code&amp;gt;y=0.5&amp;lt;/code&amp;gt; is at the top of the output, &amp;lt;code&amp;gt;x=-1&amp;lt;/code&amp;gt; is at the left edge of the output, and &amp;lt;code&amp;gt;x=1&amp;lt;/code&amp;gt; is at the right edge of the output. &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; operates on the same scale, but measures &#039;&#039;&#039;half&#039;&#039;&#039; the width and height of the object, as if from center to edge.&lt;br /&gt;
This is an illustration of the coordinate system:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cockpit Coordinate System.png|center|illustration of the coordinate system]]&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=42291</id>
		<title>Cockpit Reference</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=42291"/>
		<updated>2013-03-12T15:29:04Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Started a section about the infamous oldcoord mode.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Cockpits Blurb}}&lt;br /&gt;
&lt;br /&gt;
This page describes all the cockpit-related features available in the 0.4-cockpit branch. It has not been merged into 0.4 yet. The current features are explained on the [[Cockpit Tutorial]] page.&lt;br /&gt;
&lt;br /&gt;
==The boilerplate==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;cockpit.dtd&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;Resource type=&amp;quot;aacockpit&amp;quot; name=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;cockpit name&amp;lt;/span&amp;gt;&amp;quot; version=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a version&amp;lt;/span&amp;gt;&amp;quot; author=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;your name&amp;lt;/span&amp;gt;&amp;quot; category=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a category&amp;lt;/span&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Cockpit version=&amp;quot;0.0.1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;Widgets go here&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/Cockpit&amp;gt;&lt;br /&gt;
 &amp;lt;/Resource&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The attributes of the &amp;lt;code&amp;gt;&amp;lt;Resource&amp;gt;&amp;lt;/code&amp;gt; tag form the path your cockpit will have to be placed at:&lt;br /&gt;
&lt;br /&gt;
 author/category/name-version.aacockpit.xml&lt;br /&gt;
&lt;br /&gt;
If category is omitted or empty, the resource will be straight under the author directory. It can contain forward slashes, in which case the file will be several directories deep. See also [[Testing Resources]].&lt;br /&gt;
&lt;br /&gt;
A few rules and recommendations:&lt;br /&gt;
* Don&#039;t use spaces/&lt;br /&gt;
* Don&#039;t use dashes(&amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;) in the name.&lt;br /&gt;
* Use numbers or dotted numbers for your version. For example, you could use &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1.5&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;0.4.3&amp;lt;/code&amp;gt;. Make the version number increase as you publish updates and be consistent with the number of dots in it.&lt;br /&gt;
* Be consistent with your author name.&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;&amp;lt;Cockpit&amp;gt;&amp;lt;/code&amp;gt; tag is where the widgets go. A widget is an element on the HUD. Do &#039;&#039;&#039;not&#039;&#039;&#039; change the version on that tag. It may be used to introduce backward-compatibility changes in the future.&lt;br /&gt;
&lt;br /&gt;
==Common Attributes==&lt;br /&gt;
&lt;br /&gt;
===camera===&lt;br /&gt;
&lt;br /&gt;
===viewport===&lt;br /&gt;
&lt;br /&gt;
===toggleSticky, toggleDefault===&lt;br /&gt;
&lt;br /&gt;
===usetemplate===&lt;br /&gt;
&lt;br /&gt;
==Common Tags==&lt;br /&gt;
&lt;br /&gt;
===Position and Size===&lt;br /&gt;
&lt;br /&gt;
Cockpit widgets are positioned with up to 4 tags:&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; designates an anchor relative to the total output area. -1,-1 is the lower-left corner of the output, 1,1 is the higher-left corner.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; positions the widget, relative to the anchor you defined. One unit in a direction is the same amount of pixels than one unit in any other direction.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; gives the size of the widget. The units are also squares of pixels.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Align&amp;gt;&amp;lt;/code&amp;gt; defines what point in the widget corresponds to the point that was positionned with the two first tags. If unspecified, it defaults to the center of the widget.&lt;br /&gt;
&lt;br /&gt;
====Anchor and Position====&lt;br /&gt;
&lt;br /&gt;
Not all players play Armagetron on the same kind of display. Some play it on a 4:3 resolution, while others use 16:9 or 16:10. Or they could be playing splitscreen, causing each player&#039;s cockpit to be 2:3 or 32:9. While those last two cases are a bit extreme, your cockpit has to be able to adapt to 4:3 or 16:9 without trouble. Armagetron used to have one coordinate system that went from -1 to 1 horizontally and from -1 to 0.5 vertically. It was tailored for 4:3 outputs so to adapt cockpits for 16:9 it would just squish the cockpit vertically to fit.&lt;br /&gt;
&lt;br /&gt;
This is no longer the case. Usually cockpit widgets are put near corners or edges of the output area. To help you do that, the &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag lets you tell Armagetron just that. For instance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;-1&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the anchor at -1,-1 tells Armagetron that you are about to put your widget near the bottom left-hand side of the output. If you put it at 1,1, then you&#039;d be in the upper right-hand side. Here is the coordinate space used for the anchor tag, on 4:3 and 16:9 outputs, respectively:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center&amp;quot;&amp;gt;[[File:CockpitAnchor43.png|On a 4:3 output]] [[File:CockpitAnchor169.png|On a 16:9 output]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It will always scale to have x=-1 at the left, x=1 at the right, y=-1 at the bottom and y=1 at the top of the output. If you do not set an anchor, [[#Compatibility mode|compatibility mode]] will be implicitly triggered on the widget.&lt;br /&gt;
&lt;br /&gt;
Once you have an anchor set, you can position your widget relative to it. The difference is that &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt;&#039;s coordinate space always has a 1:1 ratio between width and height units.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center&amp;quot;&amp;gt;[[File:CockpitPosition.png|How Position&#039;s coordinate space works for the previous Anchor example.]][[File:CockpitPosition169.png|The scale does not change with a different aspect ratio.]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0,0 is at the anchor you defined and the output is 2 units wide. Here, the blue elements symbolize the total output area and the anchor coordinates. The red elements show the coordinate space for the position. As you can see from the dashed square, it does not get resized vertically. If you were to write:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;-1&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;.1&amp;quot; y=&amp;quot;.1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You would be telling Armagetron to position your widget close to the bottom left-hand corner, a fraction away from the edge of the output. It would be at an equal distance from the left and bottom edge of the screen, regardless of the output&#039;s aspect ratio.&lt;br /&gt;
&lt;br /&gt;
===Size and Align===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; tags have so far positioned a point on the screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; an area of the screen to the point with its &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; attributes:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Size width=&amp;quot;.5&amp;quot; height=&amp;quot;.4&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will give the widget an area that is a quarter of the width of the screen and is 5:4 in aspect ratio. The coordinate space for the size is the same as for the &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; tag. The size is measured from edge to edge, with most widgets occupying exactly this space. Captions do not count towards it and can be on the outside of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;Align&amp;gt;&amp;lt;/code&amp;gt; is a convenience tag that lets you redefine how the widget aligns with its set position. It positions a point relative to the widget body, like &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; sets a point relative to the output area.&lt;br /&gt;
&lt;br /&gt;
===Adjusting position and size depending on aspect ratio===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag also accepts &amp;lt;code&amp;gt;minadjust&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;maxadjust&amp;lt;/code&amp;gt; attributes. When the widget is processed, its &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; are multiplied by a factor. This factor is determined by dividing the output height by its width, then clamping that value so that it is at least &amp;lt;code&amp;gt;minadjust&amp;lt;/code&amp;gt;&#039;s value and at most &amp;lt;code&amp;gt;maxadjust&amp;lt;/code&amp;gt;&#039;s value. Those attributes both default to 1, so that no change is made by default.&lt;br /&gt;
&lt;br /&gt;
For instance, a widget is positioned and sized like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; minadjust=&amp;quot;0.1&amp;quot; maxadjust=&amp;quot;0.7&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;0&amp;quot; y=&amp;quot;0.1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Align x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Size x=&amp;quot;0.5&amp;quot; y=&amp;quot;0.5&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the output size is 1024x768(or any 4:3 aspect output), the factor is &amp;lt;code&amp;gt;768/1024 = 0.75&amp;lt;/code&amp;gt;. This is over the &amp;lt;code&amp;gt;maxadjust&amp;lt;/code&amp;gt; parameter, so it becomes &amp;lt;code&amp;gt;0.7&amp;lt;/code&amp;gt;. That factor then multiplies the &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; tags. The above code would be equivalent to, in this case:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;0&amp;quot; y=&amp;quot;0.07&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Align x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Size x=&amp;quot;0.35&amp;quot; y=&amp;quot;0.35&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the output size is 1280x800(or any 16:10 aspect output), the factor is &amp;lt;code&amp;gt;800/1280 = 0.625&amp;lt;/code&amp;gt;. This is between the adjust parameters, so it is unchanged. It is then used to multiply the position and size:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;0&amp;quot; y=&amp;quot;0.0625&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Align x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Size x=&amp;quot;0.3125&amp;quot; y=&amp;quot;0.3125&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Background, Foreground and LineColor===&lt;br /&gt;
&lt;br /&gt;
===Caption===&lt;br /&gt;
&lt;br /&gt;
===DataSet===&lt;br /&gt;
&lt;br /&gt;
==Widgets==&lt;br /&gt;
&lt;br /&gt;
===Rectangle===&lt;br /&gt;
&lt;br /&gt;
===BarGauge and VerticalBarGauge===&lt;br /&gt;
&lt;br /&gt;
===NeedleGauge===&lt;br /&gt;
&lt;br /&gt;
===Label===&lt;br /&gt;
&lt;br /&gt;
===Map===&lt;br /&gt;
&lt;br /&gt;
===Camview===&lt;br /&gt;
&lt;br /&gt;
==Related settings==&lt;br /&gt;
&lt;br /&gt;
==Compatibility mode==&lt;br /&gt;
&lt;br /&gt;
Compatibility mode is activated on a widget when it either:&lt;br /&gt;
&lt;br /&gt;
* has no &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag,&lt;br /&gt;
* has an &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag with its &amp;lt;code&amp;gt;oldcoord&amp;lt;/code&amp;gt; attribute set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When it is activated, the game will emulate the old coordinate system used for positioning widgets, and emulate quirks within the widgets themselves.&lt;br /&gt;
&lt;br /&gt;
===Old coordinate system===&lt;br /&gt;
&lt;br /&gt;
In the old coordinate system, &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt;&#039;s coordinate system resizes to fit the output size so that &amp;lt;code&amp;gt;y=-1&amp;lt;/code&amp;gt; is at the bottom of the output, &amp;lt;code&amp;gt;y=0.5&amp;lt;/code&amp;gt; is at the top of the output, &amp;lt;code&amp;gt;x=-1&amp;lt;/code&amp;gt; is at the left edge of the output, and &amp;lt;code&amp;gt;x=1&amp;lt;/code&amp;gt; is at the right edge of the output. &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; operates on the same scale, but measures &#039;&#039;&#039;half&#039;&#039;&#039; the width and height of the object, as if from center to edge.&lt;br /&gt;
This is an illustration of the coordinate system:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cockpit Coordinate System.png|center|illustration of the coordinate system]]&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=42290</id>
		<title>Cockpit Reference</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=42290"/>
		<updated>2013-03-12T15:05:56Z</updated>

		<summary type="html">&lt;p&gt;Epsy: /* Position and Size */ Added section content for &amp;lt;Align&amp;gt; and &amp;lt;Size&amp;gt; tags, and for the min-/maxadjust &amp;lt;Anchor&amp;gt; parameters&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Cockpits Blurb}}&lt;br /&gt;
&lt;br /&gt;
This page describes all the cockpit-related features available in the 0.4-cockpit branch. It has not been merged into 0.4 yet. The current features are explained on the [[Cockpit Tutorial]] page.&lt;br /&gt;
&lt;br /&gt;
==The boilerplate==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;cockpit.dtd&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;Resource type=&amp;quot;aacockpit&amp;quot; name=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;cockpit name&amp;lt;/span&amp;gt;&amp;quot; version=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a version&amp;lt;/span&amp;gt;&amp;quot; author=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;your name&amp;lt;/span&amp;gt;&amp;quot; category=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a category&amp;lt;/span&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Cockpit version=&amp;quot;0.0.1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;Widgets go here&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/Cockpit&amp;gt;&lt;br /&gt;
 &amp;lt;/Resource&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The attributes of the &amp;lt;code&amp;gt;&amp;lt;Resource&amp;gt;&amp;lt;/code&amp;gt; tag form the path your cockpit will have to be placed at:&lt;br /&gt;
&lt;br /&gt;
 author/category/name-version.aacockpit.xml&lt;br /&gt;
&lt;br /&gt;
If category is omitted or empty, the resource will be straight under the author directory. It can contain forward slashes, in which case the file will be several directories deep. See also [[Testing Resources]].&lt;br /&gt;
&lt;br /&gt;
A few rules and recommendations:&lt;br /&gt;
* Don&#039;t use spaces/&lt;br /&gt;
* Don&#039;t use dashes(&amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;) in the name.&lt;br /&gt;
* Use numbers or dotted numbers for your version. For example, you could use &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1.5&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;0.4.3&amp;lt;/code&amp;gt;. Make the version number increase as you publish updates and be consistent with the number of dots in it.&lt;br /&gt;
* Be consistent with your author name.&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;&amp;lt;Cockpit&amp;gt;&amp;lt;/code&amp;gt; tag is where the widgets go. A widget is an element on the HUD. Do &#039;&#039;&#039;not&#039;&#039;&#039; change the version on that tag. It may be used to introduce backward-compatibility changes in the future.&lt;br /&gt;
&lt;br /&gt;
==Common Attributes==&lt;br /&gt;
&lt;br /&gt;
===camera===&lt;br /&gt;
&lt;br /&gt;
===viewport===&lt;br /&gt;
&lt;br /&gt;
===toggleSticky, toggleDefault===&lt;br /&gt;
&lt;br /&gt;
===usetemplate===&lt;br /&gt;
&lt;br /&gt;
==Common Tags==&lt;br /&gt;
&lt;br /&gt;
===Position and Size===&lt;br /&gt;
&lt;br /&gt;
Cockpit widgets are positioned with up to 4 tags:&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; designates an anchor relative to the total output area. -1,-1 is the lower-left corner of the output, 1,1 is the higher-left corner.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; positions the widget, relative to the anchor you defined. One unit in a direction is the same amount of pixels than one unit in any other direction.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; gives the size of the widget. The units are also squares of pixels.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Align&amp;gt;&amp;lt;/code&amp;gt; defines what point in the widget corresponds to the point that was positionned with the two first tags. If unspecified, it defaults to the center of the widget.&lt;br /&gt;
&lt;br /&gt;
====Anchor and Position====&lt;br /&gt;
&lt;br /&gt;
Not all players play Armagetron on the same kind of display. Some play it on a 4:3 resolution, while others use 16:9 or 16:10. Or they could be playing splitscreen, causing each player&#039;s cockpit to be 2:3 or 32:9. While those last two cases are a bit extreme, your cockpit has to be able to adapt to 4:3 or 16:9 without trouble. Armagetron used to have one coordinate system that went from -1 to 1 horizontally and from -1 to 0.5 vertically. It was tailored for 4:3 outputs so to adapt cockpits for 16:9 it would just squish the cockpit vertically to fit.&lt;br /&gt;
&lt;br /&gt;
This is no longer the case. Usually cockpit widgets are put near corners or edges of the output area. To help you do that, the &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag lets you tell Armagetron just that. For instance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;-1&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the anchor at -1,-1 tells Armagetron that you are about to put your widget near the bottom left-hand side of the output. If you put it at 1,1, then you&#039;d be in the upper right-hand side. Here is the coordinate space used for the anchor tag, on 4:3 and 16:9 outputs, respectively:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center&amp;quot;&amp;gt;[[File:CockpitAnchor43.png|On a 4:3 output]] [[File:CockpitAnchor169.png|On a 16:9 output]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It will always scale to have x=-1 at the left, x=1 at the right, y=-1 at the bottom and y=1 at the top of the output. If you do not set an anchor, [[#Compatibility mode|compatibility mode]] will be implicitly triggered on the widget.&lt;br /&gt;
&lt;br /&gt;
Once you have an anchor set, you can position your widget relative to it. The difference is that &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt;&#039;s coordinate space always has a 1:1 ratio between width and height units.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center&amp;quot;&amp;gt;[[File:CockpitPosition.png|How Position&#039;s coordinate space works for the previous Anchor example.]][[File:CockpitPosition169.png|The scale does not change with a different aspect ratio.]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0,0 is at the anchor you defined and the output is 2 units wide. Here, the blue elements symbolize the total output area and the anchor coordinates. The red elements show the coordinate space for the position. As you can see from the dashed square, it does not get resized vertically. If you were to write:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;-1&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;.1&amp;quot; y=&amp;quot;.1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You would be telling Armagetron to position your widget close to the bottom left-hand corner, a fraction away from the edge of the output. It would be at an equal distance from the left and bottom edge of the screen, regardless of the output&#039;s aspect ratio.&lt;br /&gt;
&lt;br /&gt;
===Size and Align===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; tags have so far positioned a point on the screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; an area of the screen to the point with its &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; attributes:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Size width=&amp;quot;.5&amp;quot; height=&amp;quot;.4&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will give the widget an area that is a quarter of the width of the screen and is 5:4 in aspect ratio. The coordinate space for the size is the same as for the &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; tag. The size is measured from edge to edge, with most widgets occupying exactly this space. Captions do not count towards it and can be on the outside of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;Align&amp;gt;&amp;lt;/code&amp;gt; is a convenience tag that lets you redefine how the widget aligns with its set position. It positions a point relative to the widget body, like &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; sets a point relative to the output area.&lt;br /&gt;
&lt;br /&gt;
===Adjusting position and size depending on aspect ratio===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag also accepts &amp;lt;code&amp;gt;minadjust&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;maxadjust&amp;lt;/code&amp;gt; attributes. When the widget is processed, its &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; are multiplied by a factor. This factor is determined by dividing the output height by its width, then clamping that value so that it is at least &amp;lt;code&amp;gt;minadjust&amp;lt;/code&amp;gt;&#039;s value and at most &amp;lt;code&amp;gt;maxadjust&amp;lt;/code&amp;gt;&#039;s value. Those attributes both default to 1, so that no change is made by default.&lt;br /&gt;
&lt;br /&gt;
For instance, a widget is positioned and sized like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; minadjust=&amp;quot;0.1&amp;quot; maxadjust=&amp;quot;0.7&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;0&amp;quot; y=&amp;quot;0.1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Align x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Size x=&amp;quot;0.5&amp;quot; y=&amp;quot;0.5&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the output size is 1024x768(or any 4:3 aspect output), the factor is &amp;lt;code&amp;gt;768/1024 = 0.75&amp;lt;/code&amp;gt;. This is over the &amp;lt;code&amp;gt;maxadjust&amp;lt;/code&amp;gt; parameter, so it becomes &amp;lt;code&amp;gt;0.7&amp;lt;/code&amp;gt;. That factor then multiplies the &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; tags. The above code would be equivalent to, in this case:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;0&amp;quot; y=&amp;quot;0.07&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Align x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Size x=&amp;quot;0.35&amp;quot; y=&amp;quot;0.35&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the output size is 1280x800(or any 16:10 aspect output), the factor is &amp;lt;code&amp;gt;800/1280 = 0.625&amp;lt;/code&amp;gt;. This is between the adjust parameters, so it is unchanged. It is then used to multiply the position and size:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;0&amp;quot; y=&amp;quot;0.0625&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Align x=&amp;quot;0&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Size x=&amp;quot;0.3125&amp;quot; y=&amp;quot;0.3125&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Background, Foreground and LineColor===&lt;br /&gt;
&lt;br /&gt;
===Caption===&lt;br /&gt;
&lt;br /&gt;
===DataSet===&lt;br /&gt;
&lt;br /&gt;
==Widgets==&lt;br /&gt;
&lt;br /&gt;
===Rectangle===&lt;br /&gt;
&lt;br /&gt;
===BarGauge and VerticalBarGauge===&lt;br /&gt;
&lt;br /&gt;
===NeedleGauge===&lt;br /&gt;
&lt;br /&gt;
===Label===&lt;br /&gt;
&lt;br /&gt;
===Map===&lt;br /&gt;
&lt;br /&gt;
===Camview===&lt;br /&gt;
&lt;br /&gt;
==Related settings==&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=IllegalExit/Board&amp;diff=41594</id>
		<title>IllegalExit/Board</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=IllegalExit/Board&amp;diff=41594"/>
		<updated>2013-01-24T19:31:20Z</updated>

		<summary type="html">&lt;p&gt;Epsy: /* Participants */ Added G&amp;amp;D&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|- style=&amp;quot;width: 100%; border: 2px solid #black;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: lightgray; border: 1px solid #darkgray&amp;quot; | {{IllegalExitTbl}} &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:IllegalExit05.png]]&lt;br /&gt;
&lt;br /&gt;
=Policy=&lt;br /&gt;
Illegal Exit does not currently follow team rules popularized by other tournaments. You are not required to sign up substitutes and players can join or switch teams however they like before &#039;&#039;and during&#039;&#039; the tournament. The goal is for everyone to play as much as possible and make strong competition. Of course, as the tournament grows so will complaints and this policy may change.&lt;br /&gt;
&lt;br /&gt;
=Participants=&lt;br /&gt;
&lt;br /&gt;
===[http://wiki.armagetronad.org LFO]===&lt;br /&gt;
* sinewav@forums, Jericho@mym, Vogue@forums&lt;br /&gt;
* color: r3 g7 b11&lt;br /&gt;
&lt;br /&gt;
===[http://forums.armagetronad.net Creeping Death]===&lt;br /&gt;
* orion@forums, Concord@forums, Gaz@forums&lt;br /&gt;
* color: r15 g0 b0&lt;br /&gt;
&lt;br /&gt;
===[http://www.mymclan.com Open Team(ish)]===&lt;br /&gt;
* ElmosWorld@forums, fingerbib@forums (contact me if you wanna play (irc, forums, etc))&lt;br /&gt;
* color: r15 g13 b3&lt;br /&gt;
&lt;br /&gt;
===[http://r.jumpingness.com/forum _~Rogue Tronners~_]===&lt;br /&gt;
* DaGarBBaGeMAN@forums, Titanaboa@forums, Overrated@forums&lt;br /&gt;
* color: r1 g15 b8&lt;br /&gt;
&lt;br /&gt;
===[http://forums.armagetronad.net .LucK]===&lt;br /&gt;
* LucK@forums, ai1, ai2&lt;br /&gt;
* color: r0 g9 b6&lt;br /&gt;
&lt;br /&gt;
===[http://forums.armagetronad.net {\/}adness]===&lt;br /&gt;
* Bytes@forums, Monkey@forums, Lowkey@forums&lt;br /&gt;
* color: r3 g16 b3&lt;br /&gt;
&lt;br /&gt;
===[http://epsilon.x10.bz .e!Epsilon]===&lt;br /&gt;
* Absolution@forums, DeathZone@forums, nanu@aagid&lt;br /&gt;
* color: r0 g15 b0&lt;br /&gt;
&lt;br /&gt;
===[http://wiki.armagetronad.org/index.php/Manic_Tentacles Manic Tentacles]===&lt;br /&gt;
* pike@ct/senior, ai1, ai2&lt;br /&gt;
* color: r15 g11 b14&lt;br /&gt;
&lt;br /&gt;
===G&amp;amp;D===&lt;br /&gt;
* epsy@x, vov@forums, RoterBaron1337@forums&lt;br /&gt;
* color: r15 g8 b0&lt;br /&gt;
&lt;br /&gt;
=Brackets=&lt;br /&gt;
To be completed one hour before event.&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=41526</id>
		<title>Cockpit Reference</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=41526"/>
		<updated>2013-01-17T18:05:47Z</updated>

		<summary type="html">&lt;p&gt;Epsy: /* Position and Size */ Added &amp;lt;Position&amp;gt; graphics and text.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Cockpits Blurb}}&lt;br /&gt;
&lt;br /&gt;
This page describes all the cockpit-related features available in the 0.4-cockpit branch. It has not been merged into 0.4 yet. The current features are explained on the [[Cockpit Tutorial]] page.&lt;br /&gt;
&lt;br /&gt;
==The boilerplate==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;cockpit.dtd&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;Resource type=&amp;quot;aacockpit&amp;quot; name=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;cockpit name&amp;lt;/span&amp;gt;&amp;quot; version=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a version&amp;lt;/span&amp;gt;&amp;quot; author=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;your name&amp;lt;/span&amp;gt;&amp;quot; category=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a category&amp;lt;/span&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Cockpit version=&amp;quot;0.0.1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;Widgets go here&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/Cockpit&amp;gt;&lt;br /&gt;
 &amp;lt;/Resource&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The attributes of the &amp;lt;code&amp;gt;&amp;lt;Resource&amp;gt;&amp;lt;/code&amp;gt; tag form the path your cockpit will have to be placed at:&lt;br /&gt;
&lt;br /&gt;
 author/category/name-version.aacockpit.xml&lt;br /&gt;
&lt;br /&gt;
If category is omitted or empty, the resource will be straight under the author directory. It can contain forward slashes, in which case the file will be several directories deep. See also [[Testing Resources]].&lt;br /&gt;
&lt;br /&gt;
A few rules and recommendations:&lt;br /&gt;
* Don&#039;t use spaces/&lt;br /&gt;
* Don&#039;t use dashes(&amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;) in the name.&lt;br /&gt;
* Use numbers or dotted numbers for your version. For example, you could use &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1.5&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;0.4.3&amp;lt;/code&amp;gt;. Make the version number increase as you publish updates and be consistent with the number of dots in it.&lt;br /&gt;
* Be consistent with your author name.&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;&amp;lt;Cockpit&amp;gt;&amp;lt;/code&amp;gt; tag is where the widgets go. A widget is an element on the HUD. Do &#039;&#039;&#039;not&#039;&#039;&#039; change the version on that tag. It may be used to introduce backward-compatibility changes in the future.&lt;br /&gt;
&lt;br /&gt;
==Common Attributes==&lt;br /&gt;
&lt;br /&gt;
===camera===&lt;br /&gt;
&lt;br /&gt;
===viewport===&lt;br /&gt;
&lt;br /&gt;
===toggleSticky, toggleDefault===&lt;br /&gt;
&lt;br /&gt;
===usetemplate===&lt;br /&gt;
&lt;br /&gt;
==Common Tags==&lt;br /&gt;
&lt;br /&gt;
===Position and Size===&lt;br /&gt;
&lt;br /&gt;
Cockpit widgets are positioned with up to 4 tags:&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; designates an anchor relative to the total output area. -1,-1 is the lower-left corner of the output, 1,1 is the higher-left corner.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; positions the widget, relative to the anchor you defined. One unit in a direction is the same amount of pixels than one unit in any other direction.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Align&amp;gt;&amp;lt;/code&amp;gt; defines what point in the widget is being positioned. If unspecified, it defaults to the center.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; gives the size of the widget. The units are also squares of pixels.&lt;br /&gt;
&lt;br /&gt;
====Anchor and Position====&lt;br /&gt;
&lt;br /&gt;
Not all players play Armagetron on the same kind of display. Some play it on a 4:3 resolution, while others use 16:9 or 16:10. Or they could be playing splitscreen, causing each player&#039;s cockpit to be 2:3 or 32:9. While those last two cases are a bit extreme, your cockpit has to be able to adapt to 4:3 or 16:9 without trouble. Armagetron used to have one coordinate system that went from -1 to 1 horizontally and from -1 to 0.5 vertically. It was tailored for 4:3 outputs so to adapt cockpits for 16:9 it would just squish the cockpit vertically to fit.&lt;br /&gt;
&lt;br /&gt;
This is no longer the case. Usually cockpit widgets are put near corners or edges of the output area. To help you do that, the &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag lets you tell Armagetron just that. For instance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;-1&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the anchor at -1,-1 tells Armagetron that you are about to put your widget near the bottom left-hand side of the output. If you put it at 1,1, then you&#039;d be in the upper right-hand side. Here is the coordinate space used for the anchor tag, on 4:3 and 16:9 outputs, respectively:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center&amp;quot;&amp;gt;[[File:CockpitAnchor43.png|On a 4:3 output]] [[File:CockpitAnchor169.png|On a 16:9 output]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It will always scale to have x=-1 at the left, x=1 at the right, y=-1 at the bottom and y=1 at the top of the output.&lt;br /&gt;
&lt;br /&gt;
Once you have an anchor set, you can position your widget relative to it. The difference is that &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt;&#039;s coordinate space always has a 1:1 ratio between width and height units.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center&amp;quot;&amp;gt;[[File:CockpitPosition.png|How Position&#039;s coordinate space works for the previous Anchor example.]][[File:CockpitPosition169.png|The scale does not change with a different aspect ratio.]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0,0 is at the anchor you defined and the output is 2 units wide. Here, the blue elements symbolize the total output area and the anchor coordinates. The red elements show the coordinate space for the position. As you can see from the dashed square, it does not get resized vertically. If you were to write:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;-1&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;Position x=&amp;quot;.1&amp;quot; y=&amp;quot;.1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You would be telling Armagetron to position your widget close to the bottom left-hand corner, a fraction away from the edge of the output. It would be at an equal distance from the left and bottom edge of the screen, regardless of the output&#039;s aspect ratio.&lt;br /&gt;
&lt;br /&gt;
===Background, Foreground and LineColor===&lt;br /&gt;
&lt;br /&gt;
===Caption===&lt;br /&gt;
&lt;br /&gt;
===DataSet===&lt;br /&gt;
&lt;br /&gt;
==Widgets==&lt;br /&gt;
&lt;br /&gt;
===Rectangle===&lt;br /&gt;
&lt;br /&gt;
===BarGauge and VerticalBarGauge===&lt;br /&gt;
&lt;br /&gt;
===NeedleGauge===&lt;br /&gt;
&lt;br /&gt;
===Label===&lt;br /&gt;
&lt;br /&gt;
===Map===&lt;br /&gt;
&lt;br /&gt;
===Camview===&lt;br /&gt;
&lt;br /&gt;
==Related settings==&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=File:CockpitPosition169.png&amp;diff=41525</id>
		<title>File:CockpitPosition169.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=File:CockpitPosition169.png&amp;diff=41525"/>
		<updated>2013-01-17T17:56:12Z</updated>

		<summary type="html">&lt;p&gt;Epsy: The scale is the same on a 16:9 aspect ratio.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The scale is the same on a 16:9 aspect ratio.&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=File:CockpitPosition.png&amp;diff=41524</id>
		<title>File:CockpitPosition.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=File:CockpitPosition.png&amp;diff=41524"/>
		<updated>2013-01-17T17:49:53Z</updated>

		<summary type="html">&lt;p&gt;Epsy: With an anchor at -1,-1 on the output described by the blue rectangle, this shows(in red) the specification of &amp;lt;Position&amp;gt;&amp;#039;s coordinate space.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With an anchor at -1,-1 on the output described by the blue rectangle, this shows(in red) the specification of &amp;lt;Position&amp;gt;&#039;s coordinate space.&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=41521</id>
		<title>Cockpit Reference</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=41521"/>
		<updated>2013-01-17T05:00:13Z</updated>

		<summary type="html">&lt;p&gt;Epsy: /* Position and Size */ Completed part of the Anchor/Position ref&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Cockpits Blurb}}&lt;br /&gt;
&lt;br /&gt;
This page describes all the cockpit-related features available in the 0.4-cockpit branch. It has not been merged into 0.4 yet. The current features are explained on the [[Cockpit Tutorial]] page.&lt;br /&gt;
&lt;br /&gt;
==The boilerplate==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;cockpit.dtd&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;Resource type=&amp;quot;aacockpit&amp;quot; name=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;cockpit name&amp;lt;/span&amp;gt;&amp;quot; version=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a version&amp;lt;/span&amp;gt;&amp;quot; author=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;your name&amp;lt;/span&amp;gt;&amp;quot; category=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a category&amp;lt;/span&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Cockpit version=&amp;quot;0.0.1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;Widgets go here&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/Cockpit&amp;gt;&lt;br /&gt;
 &amp;lt;/Resource&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The attributes of the &amp;lt;code&amp;gt;&amp;lt;Resource&amp;gt;&amp;lt;/code&amp;gt; tag form the path your cockpit will have to be placed at:&lt;br /&gt;
&lt;br /&gt;
 author/category/name-version.aacockpit.xml&lt;br /&gt;
&lt;br /&gt;
If category is omitted or empty, the resource will be straight under the author directory. It can contain forward slashes, in which case the file will be several directories deep. See also [[Testing Resources]].&lt;br /&gt;
&lt;br /&gt;
A few rules and recommendations:&lt;br /&gt;
* Don&#039;t use spaces/&lt;br /&gt;
* Don&#039;t use dashes(&amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;) in the name.&lt;br /&gt;
* Use numbers or dotted numbers for your version. For example, you could use &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1.5&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;0.4.3&amp;lt;/code&amp;gt;. Make the version number increase as you publish updates and be consistent with the number of dots in it.&lt;br /&gt;
* Be consistent with your author name.&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;&amp;lt;Cockpit&amp;gt;&amp;lt;/code&amp;gt; tag is where the widgets go. A widget is an element on the HUD. Do &#039;&#039;&#039;not&#039;&#039;&#039; change the version on that tag. It may be used to introduce backward-compatibility changes in the future.&lt;br /&gt;
&lt;br /&gt;
==Common Attributes==&lt;br /&gt;
&lt;br /&gt;
===camera===&lt;br /&gt;
&lt;br /&gt;
===viewport===&lt;br /&gt;
&lt;br /&gt;
===toggleSticky, toggleDefault===&lt;br /&gt;
&lt;br /&gt;
===usetemplate===&lt;br /&gt;
&lt;br /&gt;
==Common Tags==&lt;br /&gt;
&lt;br /&gt;
===Position and Size===&lt;br /&gt;
&lt;br /&gt;
Cockpit widgets are positioned with up to 4 tags:&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; designates an anchor relative to the total output area. -1,-1 is the lower-left corner of the output, 1,1 is the higher-left corner.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; positions the widget, relative to the anchor you defined. One unit in a direction is the same amount of pixels than one unit in any other direction.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Align&amp;gt;&amp;lt;/code&amp;gt; defines what point in the widget is being positioned. If unspecified, it defaults to the center.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;Size&amp;gt;&amp;lt;/code&amp;gt; gives the size of the widget. The units are also squares of pixels.&lt;br /&gt;
&lt;br /&gt;
====Anchor and Position====&lt;br /&gt;
&lt;br /&gt;
Not all players play Armagetron on the same kind of display. Some play it on a 4:3 resolution, while others use 16:9 or 16:10. Or they could be playing splitscreen, causing each player&#039;s cockpit to be 2:3 or 32:9. While those last two cases are a bit extreme, your cockpit has to be able to adapt to 4:3 or 16:9 without trouble. Armagetron used to have one coordinate system that went from -1 to 1 horizontally and from -1 to 0.5 vertically. It was tailored for 4:3 outputs so to adapt cockpits for 16:9 it would just squish the cockpit vertically to fit.&lt;br /&gt;
&lt;br /&gt;
This is no longer the case. Usually cockpit widgets are put near corners or edges of the output area. To help you do that, the &amp;lt;code&amp;gt;&amp;lt;Anchor&amp;gt;&amp;lt;/code&amp;gt; tag lets you tell Armagetron just that. For instance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Anchor x=&amp;quot;-1&amp;quot; y=&amp;quot;-1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the anchor at -1,-1 tells Armagetron that you are about to put your widget near the bottom left-hand side of the output. If you put it at 1,1, then you&#039;d be in the upper right-hand side. Here is the coordinate space used for the anchor tag, on 4:3 and 16:9 outputs, respectively:&lt;br /&gt;
&lt;br /&gt;
[[File:CockpitAnchor43.png|On a 4:3 output]] [[File:CockpitAnchor169.png|On a 16:9 output]]&lt;br /&gt;
&lt;br /&gt;
It will always scale to have x=-1 at the left, x=1 at the right, y=-1 at the bottom and y=1 at the top of the output.&lt;br /&gt;
&lt;br /&gt;
Once you have an anchor set, you can position your widget relative to it. The difference is that &amp;lt;code&amp;gt;&amp;lt;Position&amp;gt;&amp;lt;/code&amp;gt; uses a different coordinate space. 0,0 is at the anchor you defined, the output is 2 units wide, and the units vertically are the same size as they are horizontally.&lt;br /&gt;
&lt;br /&gt;
[[File:CockpitPosition.png|How Position&#039;s coordinate space works for the previous Anchor example.]]&lt;br /&gt;
&lt;br /&gt;
===Background, Foreground and LineColor===&lt;br /&gt;
&lt;br /&gt;
===Caption===&lt;br /&gt;
&lt;br /&gt;
===DataSet===&lt;br /&gt;
&lt;br /&gt;
==Widgets==&lt;br /&gt;
&lt;br /&gt;
===Rectangle===&lt;br /&gt;
&lt;br /&gt;
===BarGauge and VerticalBarGauge===&lt;br /&gt;
&lt;br /&gt;
===NeedleGauge===&lt;br /&gt;
&lt;br /&gt;
===Label===&lt;br /&gt;
&lt;br /&gt;
===Map===&lt;br /&gt;
&lt;br /&gt;
===Camview===&lt;br /&gt;
&lt;br /&gt;
==Related settings==&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=File:CockpitAnchor169.png&amp;diff=41520</id>
		<title>File:CockpitAnchor169.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=File:CockpitAnchor169.png&amp;diff=41520"/>
		<updated>2013-01-17T03:45:24Z</updated>

		<summary type="html">&lt;p&gt;Epsy: What the cockpit anchoring looks like on a 16:9 output.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;What the cockpit anchoring looks like on a 16:9 output.&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=File:CockpitAnchor43.png&amp;diff=41519</id>
		<title>File:CockpitAnchor43.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=File:CockpitAnchor43.png&amp;diff=41519"/>
		<updated>2013-01-17T03:43:08Z</updated>

		<summary type="html">&lt;p&gt;Epsy: What the cockpit anchoring looks like on a 4:3 output.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;What the cockpit anchoring looks like on a 4:3 output.&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=41518</id>
		<title>Cockpit Reference</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=41518"/>
		<updated>2013-01-17T03:02:59Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Added subsection skeleton for common attributes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Cockpits Blurb}}&lt;br /&gt;
&lt;br /&gt;
This page describes all the cockpit-related features available in the 0.4-cockpit branch. It has not been merged into 0.4 yet. The current features are explained on the [[Cockpit Tutorial]] page.&lt;br /&gt;
&lt;br /&gt;
==The boilerplate==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;cockpit.dtd&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;Resource type=&amp;quot;aacockpit&amp;quot; name=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;cockpit name&amp;lt;/span&amp;gt;&amp;quot; version=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a version&amp;lt;/span&amp;gt;&amp;quot; author=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;your name&amp;lt;/span&amp;gt;&amp;quot; category=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a category&amp;lt;/span&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Cockpit version=&amp;quot;0.0.1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;Widgets go here&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/Cockpit&amp;gt;&lt;br /&gt;
 &amp;lt;/Resource&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The attributes of the &amp;lt;code&amp;gt;&amp;lt;Resource&amp;gt;&amp;lt;/code&amp;gt; tag form the path your cockpit will have to be placed at:&lt;br /&gt;
&lt;br /&gt;
 author/category/name-version.aacockpit.xml&lt;br /&gt;
&lt;br /&gt;
If category is omitted or empty, the resource will be straight under the author directory. It can contain forward slashes, in which case the file will be several directories deep. See also [[Testing Resources]].&lt;br /&gt;
&lt;br /&gt;
A few rules and recommendations:&lt;br /&gt;
* Don&#039;t use spaces/&lt;br /&gt;
* Don&#039;t use dashes(&amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;) in the name.&lt;br /&gt;
* Use numbers or dotted numbers for your version. For example, you could use &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1.5&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;0.4.3&amp;lt;/code&amp;gt;. Make the version number increase as you publish updates and be consistent with the number of dots in it.&lt;br /&gt;
* Be consistent with your author name.&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;&amp;lt;Cockpit&amp;gt;&amp;lt;/code&amp;gt; tag is where the widgets go. A widget is an element on the HUD. Do &#039;&#039;&#039;not&#039;&#039;&#039; change the version on that tag. It may be used to introduce backward-compatibility changes in the future.&lt;br /&gt;
&lt;br /&gt;
==Common Attributes==&lt;br /&gt;
&lt;br /&gt;
===camera===&lt;br /&gt;
&lt;br /&gt;
===viewport===&lt;br /&gt;
&lt;br /&gt;
===toggleSticky, toggleDefault===&lt;br /&gt;
&lt;br /&gt;
===usetemplate===&lt;br /&gt;
&lt;br /&gt;
==Common Tags==&lt;br /&gt;
&lt;br /&gt;
===Position and Size===&lt;br /&gt;
&lt;br /&gt;
===Background, Foreground and LineColor===&lt;br /&gt;
&lt;br /&gt;
===Caption===&lt;br /&gt;
&lt;br /&gt;
===DataSet===&lt;br /&gt;
&lt;br /&gt;
==Widgets==&lt;br /&gt;
&lt;br /&gt;
===Rectangle===&lt;br /&gt;
&lt;br /&gt;
===BarGauge and VerticalBarGauge===&lt;br /&gt;
&lt;br /&gt;
===NeedleGauge===&lt;br /&gt;
&lt;br /&gt;
===Label===&lt;br /&gt;
&lt;br /&gt;
===Map===&lt;br /&gt;
&lt;br /&gt;
===Camview===&lt;br /&gt;
&lt;br /&gt;
==Related settings==&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=41516</id>
		<title>Cockpit Reference</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Cockpit_Reference&amp;diff=41516"/>
		<updated>2013-01-17T01:33:52Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Created with a skeleton and the first section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Cockpits Blurb}}&lt;br /&gt;
&lt;br /&gt;
This page describes all the cockpit-related features available in the 0.4-cockpit branch. It has not been merged into 0.4 yet. The current features are explained on the [[Cockpit Tutorial]] page.&lt;br /&gt;
&lt;br /&gt;
==The boilerplate==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;!DOCTYPE Resource SYSTEM &amp;quot;cockpit.dtd&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;Resource type=&amp;quot;aacockpit&amp;quot; name=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;cockpit name&amp;lt;/span&amp;gt;&amp;quot; version=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a version&amp;lt;/span&amp;gt;&amp;quot; author=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;your name&amp;lt;/span&amp;gt;&amp;quot; category=&amp;quot;&amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;a category&amp;lt;/span&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Cockpit version=&amp;quot;0.0.1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: #999&amp;quot;&amp;gt;Widgets go here&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/Cockpit&amp;gt;&lt;br /&gt;
 &amp;lt;/Resource&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The attributes of the &amp;lt;code&amp;gt;&amp;lt;Resource&amp;gt;&amp;lt;/code&amp;gt; tag form the path your cockpit will have to be placed at:&lt;br /&gt;
&lt;br /&gt;
 author/category/name-version.aacockpit.xml&lt;br /&gt;
&lt;br /&gt;
If category is omitted or empty, the resource will be straight under the author directory. It can contain forward slashes, in which case the file will be several directories deep. See also [[Testing Resources]].&lt;br /&gt;
&lt;br /&gt;
A few rules and recommendations:&lt;br /&gt;
* Don&#039;t use spaces/&lt;br /&gt;
* Don&#039;t use dashes(&amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;) in the name.&lt;br /&gt;
* Use numbers or dotted numbers for your version. For example, you could use &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1.5&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;0.4.3&amp;lt;/code&amp;gt;. Make the version number increase as you publish updates and be consistent with the number of dots in it.&lt;br /&gt;
* Be consistent with your author name.&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;&amp;lt;Cockpit&amp;gt;&amp;lt;/code&amp;gt; tag is where the widgets go. A widget is an element on the HUD. Do &#039;&#039;&#039;not&#039;&#039;&#039; change the version on that tag. It may be used to introduce backward-compatibility changes in the future.&lt;br /&gt;
&lt;br /&gt;
==Common Attributes==&lt;br /&gt;
&lt;br /&gt;
==Common Tags==&lt;br /&gt;
&lt;br /&gt;
===Position and Size===&lt;br /&gt;
&lt;br /&gt;
===Background, Foreground and LineColor===&lt;br /&gt;
&lt;br /&gt;
===Caption===&lt;br /&gt;
&lt;br /&gt;
===DataSet===&lt;br /&gt;
&lt;br /&gt;
==Widgets==&lt;br /&gt;
&lt;br /&gt;
===Rectangle===&lt;br /&gt;
&lt;br /&gt;
===BarGauge and VerticalBarGauge===&lt;br /&gt;
&lt;br /&gt;
===NeedleGauge===&lt;br /&gt;
&lt;br /&gt;
===Label===&lt;br /&gt;
&lt;br /&gt;
===Map===&lt;br /&gt;
&lt;br /&gt;
===Camview===&lt;br /&gt;
&lt;br /&gt;
==Templates==&lt;br /&gt;
&lt;br /&gt;
==Related settings==&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Template:Cockpits_Blurb&amp;diff=41515</id>
		<title>Template:Cockpits Blurb</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Template:Cockpits_Blurb&amp;diff=41515"/>
		<updated>2013-01-16T23:39:02Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Add a category for cockpits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BoxLinkGroup|Cockpits|[[Cockpits List]] {{!}} [[Cockpit Tutorial]] {{!}} [[Cockpit Reference]]|Cockpit files can be used to customize the game&#039;s HUD in the current development builds and in the upcoming version 0.4.0.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cockpits]]&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Cockpit_Tutorial&amp;diff=41514</id>
		<title>Cockpit Tutorial</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Cockpit_Tutorial&amp;diff=41514"/>
		<updated>2013-01-16T23:37:59Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Add the cockpits blurb&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Cockpits Blurb}}&lt;br /&gt;
&lt;br /&gt;
This document describes canonically how to create a cockpit resource file.  Hopefully it&#039;ll be easy to read, too.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is only fully implemented in the latest unreleased development versions. There&#039;s a [http://wiki.armagetronad.net/index.php?title=Cockpit_Tutorial&amp;amp;oldid=15841 snapshot of this article] that describes the features implemented in 0.3.0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== A Cockpit&amp;amp;mdash;The Concept ==&lt;br /&gt;
&lt;br /&gt;
The cockpit is where you&#039;re sitting when you play the game.  There is the concept of a virtual cockpit which is implemented in the internal camera view, but we&#039;ll ignore that, for the most part.  Otherwise, the cockpit is where you&#039;re sitting and what you&#039;re using.&lt;br /&gt;
&lt;br /&gt;
A cockpit resource file provides the layout of some of the visual items you see while you&#039;re playing.  Traditionally, these were referred to as the HUD, and the HUD is still the main information that&#039;s carried in a cockpit file.&lt;br /&gt;
&lt;br /&gt;
In the resource file, gauges and other things have been abstracted to a Widget.  Each Widget is capable of displaying all of the information you&#039;re used to seeing, and is likely capable of displaying the same information in different formats...thanks to the cockpit resource file.&lt;br /&gt;
&lt;br /&gt;
== Overview of the Cockpit file ==&lt;br /&gt;
&lt;br /&gt;
The cockpit file consists of two sections.  Technically they&#039;re just one, but you don&#039;t really have to worry about that.  The two sections are pretty simple.  The first just hooks it into the resource system for the whole game, using tags and stuff you may already know from the map files.  The second section contains all the beautful cockpit stuff.&lt;br /&gt;
&lt;br /&gt;
In the Cockpit section you&#039;ll find a series of widget tags that contain data tags to hook the widget into some game data.  There&#039;s a caption, some position and size parameters, and so forth.  You can also specify background and foreground colors, with gradiants, and with graphics, to provide a really custom gauge.  Additionally, widgets can be associated with a camera, or made for all cameras, with the option of excluding specific cameras, offering the possibility to give a completely custom view for each camera you use.  All of this gets mixed together and rendered to screen as your cockpit.&lt;br /&gt;
&lt;br /&gt;
A complete gauge, in concept, isn&#039;t necessary a single widget in the cockpit file.  As an example, you might want to build a &amp;quot;Performance&amp;quot; gauge that includes ping, frames per second, cpu usage, overall system load, and bandwidth usage.  That would require placing several widgets together, stacked on top of each other or on each other&#039;s sides, to build the conceptual Performance gauge you intend.  Here, we&#039;ll use &amp;quot;gauge&amp;quot; to refer to a specific gauge and &amp;quot;widget&amp;quot; to refer to the larger conceptual gauge.  Most widgets that you&#039;ll build will just be gauges, so it&#039;s not a big deal.  (Note: At the time of writing, all of the data in the hypothetical Performance gauge isn&#039;t available to the cockpit, but the system is easily extensible and there&#039;s no reason to think it will never be available)&lt;br /&gt;
&lt;br /&gt;
Within each gauge there are a series of tags that are used to define what it looks like, what data it uses, and so forth.  The tags that are available vary from gauge to gauge, but the meaning of each tag never varies.  Two gauges that are diametrically opposite to each other might interpret the tag differently, but it will still mean the same thing for both gauges.  That&#039;s an important subtlety that you should keep in mind.&lt;br /&gt;
&lt;br /&gt;
== Construction of a Gauge ==&lt;br /&gt;
&lt;br /&gt;
Each gauge is a layered affair.  In technical terms, first the back of the gauge is painted.  Then the middle is painted on top of the back, and finally the front is painted on top of the middle.  This is intended to allow for complete configurability for each gauge.  The middle layer is always the representation of the data, whatever it is.  The back and front are equivalent in size and shape and are intended for window-dressing.  By painting a texture with alpha-blended pixels it should be possible to reshape parts of the gauge and give it a unique appearance.  Two gauges can be identical in all ways except which texture is used for the front and have very different appearances to the user.&lt;br /&gt;
&lt;br /&gt;
Gauges that are text-driven are generally constructed on a table.  While you don&#039;t have to use a table to build the gauge, the table allows you to organize it in rows and columns, which is the most useful way to organize data that you expect to read only in glances.&lt;br /&gt;
&lt;br /&gt;
Each gauge has to specify which piece of data it displays, along with related pieces of data, and how to display them.  This can vary dramatically!  As an example, on the old HUD, in the rubber gauge, you saw a needle with some text to show the amount of rubber currently used.  Then you had a minimum, which was 0, and a maximum, which varied from server to server.  In the new rubber gauge you&#039;ll choose an appropriate widget and tell it where to get its minimum, its maximum, and its current data.  Technically this is implemented with callbacks so that any data can be made available to be used by a gauge, even if it doesn&#039;t make sense to do so, and the callback name to use is what you&#039;ll give it in the cockpit file.  If that doesn&#039;t make sense to you, don&#039;t worry about it.  Just make sure to provide what&#039;s needed to show your gauge and be happy.&lt;br /&gt;
&lt;br /&gt;
Every gauge supports an attribute called &amp;quot;camera&amp;quot;.  The camera attribute allows you to specify for which camera the gauge will appear.  This in turn allows your cockpit to look/feel/be completely different depending on the user&#039;s camera.  The primary purpose is to allow the internal camera to actually appear like you&#039;re inside the light cycle while providing minimal HUDs for the other cameras, and it&#039;s this purpose from which the name &amp;quot;cockpit&amp;quot; is derived.  But you shouldn&#039;t let that block your creativity when you&#039;re creating your own nice cockpit. Possible cameras are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;custom&amp;lt;/code&amp;gt;&amp;amp;mdash;Custom camera&lt;br /&gt;
* &amp;lt;code&amp;gt;follow&amp;lt;/code&amp;gt;&amp;amp;mdash;Following camera (the one that follows the cycle, but doesn&#039;t turn by itself)&lt;br /&gt;
* &amp;lt;code&amp;gt;free&amp;lt;/code&amp;gt;&amp;amp;mdash;Free camera&lt;br /&gt;
* &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt;&amp;amp;mdash;Incam and the autoincam of the smartacm if enabled&lt;br /&gt;
* &amp;lt;code&amp;gt;server_custom&amp;lt;/code&amp;gt;&amp;amp;mdash;Server&amp;amp;ndash;defined custom camera&lt;br /&gt;
* &amp;lt;code&amp;gt;smart&amp;lt;/code&amp;gt;&amp;amp;mdash;Smartcam, default camera&lt;br /&gt;
* &amp;lt;code&amp;gt;mer&amp;lt;/code&amp;gt;&amp;amp;mdash;The new mercam&lt;br /&gt;
* &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;&amp;amp;mdash;All cameras at once (default if you omit the attribute)&lt;br /&gt;
&lt;br /&gt;
The camera attribute can contain multiple cameras separated by spaces, if it starts with a &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; the widget will appear in all cameras but the ones specified. Examples:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;camera=&amp;quot;in&amp;quot;&amp;lt;/code&amp;gt;&amp;amp;mdash;Only show in incam mode&lt;br /&gt;
* &amp;lt;code&amp;gt;camera=&amp;quot;^in free&amp;quot;&amp;lt;/code&amp;gt;&amp;amp;mdash;Don&#039;t show in in&amp;amp;ndash; or freecam mode, but in everything else&lt;br /&gt;
* &amp;lt;code&amp;gt;camera=&amp;quot;^all&amp;quot;&amp;lt;/code&amp;gt;&amp;amp;mdash;Never show, kinda pointless.&lt;br /&gt;
&lt;br /&gt;
Finally all gauges support the &amp;lt;code&amp;gt;viewport&amp;lt;/code&amp;gt; attribute. Possible values are “top”, “cycle” and “all”, the latter being the default. “top” means that the widget will be rendered on top of the screen, “all” means it will be rendered for every player in multiplayer mode. Some data sources are only available in “all” mode, but you might not want a separate map for each player, so choose “top” then.&lt;br /&gt;
&lt;br /&gt;
“cycle” is a special viewport, it means that the widget will be rendered over every cycle, just like the label (name). The orign of the coordinate system will be right above the centre of the label in this case.&lt;br /&gt;
&lt;br /&gt;
== General Gauge Information ==&lt;br /&gt;
&lt;br /&gt;
Every gauge supports an interpretation of some tags that are needed for every gauge.  We&#039;ll discuss those here.&lt;br /&gt;
&lt;br /&gt;
=== Data Source ===&lt;br /&gt;
&lt;br /&gt;
The DataSet tag is a container that contains AtomicData tags.  It defines all of the data that will be used to construct the gauge and may contain from 1 to 3 AtomicData tags within it.  Here&#039;s an example:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;DataSet&amp;gt;&lt;br /&gt;
        &amp;lt;AtomicData field=&amp;quot;source&amp;quot; source=&amp;quot;player_speed&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;AtomicData field=&amp;quot;minimum&amp;quot; source=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;AtomicData field=&amp;quot;maximum&amp;quot; source=&amp;quot;max_speed&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/DataSet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, each AtomicData tag contains two attributes, field and source.  Field may be any of source, minimum, or maximum.  Source determines where the data will be retrieved.  If the contents of source match up with a known location of data, then that location will be called.  If not, then the contents of source will be the data.  This is easier to understand by just reading the snippet given, where &amp;quot;player_speed&amp;quot; will put the player&#039;s cycle&#039;s current speed in the field &amp;quot;source&amp;quot;, but it will just put &amp;quot;0&amp;quot; in the field &amp;quot;minimum&amp;quot;.  This snippet is a speed gauge, and you can easily visualize a needle with 0 on the left, &amp;quot;max_speed&amp;quot; on the right, and the player&#039;s current speed marked by the needle itself as on the old HUD.&lt;br /&gt;
&lt;br /&gt;
A DataSet can have an id associated with it that you can use to refer to it later for presentation.  This is most important in a Label.  Indeed, it&#039;s required in a Label but it doesn&#039;t really make sense in a NeedleGauge, does it?&lt;br /&gt;
&lt;br /&gt;
==== Possible contents for data sources ====&lt;br /&gt;
&lt;br /&gt;
===== Numbers =====&lt;br /&gt;
&lt;br /&gt;
Those can be whole numbers or fractions. Examples: &amp;lt;code&amp;gt;source=&amp;quot;42&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;source=&amp;quot;1.5&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Strings =====&lt;br /&gt;
&lt;br /&gt;
Any text, example: &amp;lt;code&amp;gt;source=&amp;quot;Hello World!&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Configuration Items =====&lt;br /&gt;
&lt;br /&gt;
Any config items as you would type them on the console to get their value: &amp;lt;code&amp;gt;source=&amp;quot;CYCLE_RUBBER&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Special Values =====&lt;br /&gt;
&lt;br /&gt;
These values are replaced by actual data from the game. Here&#039;s a complete list of possibilities:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- CSS code for the table taken from the German Wikipedia --&amp;gt;&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#F9F9F9; font-size:95%; empty-cells:show;&amp;quot;&lt;br /&gt;
! souce=&amp;quot;&amp;amp;hellip;&amp;quot;&lt;br /&gt;
! Content&lt;br /&gt;
|-&lt;br /&gt;
| player_rubber         || The rubber that&#039;s used for the player currently being watched. Ranges from 0 to CYCLE_RUBBER.&lt;br /&gt;
|-&lt;br /&gt;
| current_ping          || The ping time in milliseconds for the client. Note, in order for this to work, it needs to be assigned to all viewports, ie: viewport=&amp;quot;all&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| player_speed          || The speed of the cycle currently being watched.&lt;br /&gt;
|-&lt;br /&gt;
| max_speed             || The theorethical maximum of the speed a cycle can reach according to the current settings.&lt;br /&gt;
|-&lt;br /&gt;
| player_brakes         || The amount of brakes left. Ranges from 0 to 1.&lt;br /&gt;
|-&lt;br /&gt;
| enemies_alive         || The number of enemies alive, from the view of the player the viewport belongs to.&lt;br /&gt;
|-&lt;br /&gt;
| friends_alive         || The number of teammates alive, from the view of the player the viewport belongs to.&lt;br /&gt;
|-&lt;br /&gt;
| current_framerate     || The current framerate in frames per second.&lt;br /&gt;
|-&lt;br /&gt;
| current_acceleration  || The current cycle acceleration in m/s^2.  Note, this is instantaneous acceleration, not average acceleration.&lt;br /&gt;
|-&lt;br /&gt;
| time_since_start      || The time the game is running in seconds.&lt;br /&gt;
|-&lt;br /&gt;
| current_minutes       || The time of the day in minutes.&lt;br /&gt;
|-&lt;br /&gt;
| current_hours         || The time of the day in hours.&lt;br /&gt;
|-&lt;br /&gt;
| current_hours12h      || The time of the day in hours (12- hour format).&lt;br /&gt;
|-&lt;br /&gt;
| current_seconds       || The time of the day in seconds.&lt;br /&gt;
|-&lt;br /&gt;
| current_score         || The score of the player the viewport belongs to.&lt;br /&gt;
|-&lt;br /&gt;
| top_score             || The highest score.&lt;br /&gt;
|-&lt;br /&gt;
| fastest_speed         || The speed of the fastest cycle.&lt;br /&gt;
|-&lt;br /&gt;
| fastest_name          || The name of the player that&#039;s fastest right now.&lt;br /&gt;
|-&lt;br /&gt;
| fastest_speed_round   || The speed of the fastest cycle during the whole round. This doesn&#039;t have to be the fastest cycle on the grid, it is just the hightest &amp;amp;ldquo;peak&amp;amp;rdquo;.&lt;br /&gt;
|-&lt;br /&gt;
| fastest_name_round    || The name of the player that reached the hightest speed during the round.&lt;br /&gt;
|-&lt;br /&gt;
| time_to_impact_front  || The approximate time it will take the cycle to reach a wall in front of it. This source is stupid, it has no prediction, so if it returns 3 seconds and someone drives in front of you in that time it will jump&lt;br /&gt;
|-&lt;br /&gt;
| time_to_impact_right  || Same as time_to_impact_front, but on the right side (if you were to turn in that direction without loss of speed)&lt;br /&gt;
|-&lt;br /&gt;
| time_to_impact_left   || Same as time_to_impact_front, but on the left side (if you were to turn in that direction without loss of speed)&lt;br /&gt;
|-&lt;br /&gt;
| current_song          || The filepath to the song that&#039;s currently played. Should be altered to display the title instead.&lt;br /&gt;
|-&lt;br /&gt;
| current_name          || The name of the player that&#039;s currently being watched&lt;br /&gt;
|-&lt;br /&gt;
| current_colored_name  || The name of the player that&#039;s currently being watched, in the correct color&lt;br /&gt;
|-&lt;br /&gt;
| current_pos_x         || The position of the player in grid units, x- coordinate&lt;br /&gt;
|-&lt;br /&gt;
| current_pos_y         || The position of the player in grid units, y- coordinate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Position and Size ===&lt;br /&gt;
&lt;br /&gt;
Position and size are given by two tags, aptly &amp;quot;Position&amp;quot; and &amp;quot;Size&amp;quot;.  The point given by position represents the center of the gauge.  Don&#039;t forget this!  It&#039;s common for the position point of a widget to be the top left corner, but that is not the case.  Here, it&#039;s the center of the gauge.  An example says everything that needs to be said:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;Position x=&amp;quot;-0.165&amp;quot; y=&amp;quot;-0.9&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Size height=&amp;quot;0.15&amp;quot; width=&amp;quot;0.15&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Positions and sizes are not in pixels, but in units of a special coordinate plane. The point at the bottom left is always (-1, -1) and the point at the bottom right is always (1, -1). So the x- coordinate always goes from -1 (left) to 1 (right).&lt;br /&gt;
&lt;br /&gt;
The y- coordinate is chosen in a way so x and y have the same scale. (-1, 1) would refer to the point that is (width of your screen) up from the bottom edge. Of course, for most screens this means this point is off the screen.&lt;br /&gt;
&lt;br /&gt;
This is an illustration of the coordinate system:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cockpit Coordinate System.png|illustration of the coordinate system]]&lt;br /&gt;
&lt;br /&gt;
=== Field Flags ===&lt;br /&gt;
&lt;br /&gt;
Besides determining where the data should come from for a given field it is also necessary to tell the gauge whether or not to show that field.  It&#039;s important to understand the distinction between using the data to draw the gauge and displaying the data on the gauge.  The canonical example is the brake gauge displayed as a bar.  In this example, minimum is always 0 and maximum is always 1, and current is always something in between.  In order to compute the size of the gauge for the purpose of drawing the bar, you must have AtomicData for all three fields as discussed above.  But you may not want to present that data.  Maybe you just want to see the bar and nothing else.  In that case, you need to deal with the field flags.  How to actually use them is best seen in an example:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;ShowCurrent value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;ShowMaximum value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;ShowMinimum value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reverse ===&lt;br /&gt;
&lt;br /&gt;
Sometimes it&#039;s better to show a gauge the other way, ie the maximum on the left instead of on the right. This is how it&#039;s done:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;Reverse value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Caption ===&lt;br /&gt;
&lt;br /&gt;
Every gauge can have a caption.  The caption need not be displayed.  Again, an example says everything that needs to be said:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;&amp;lt;Caption location=&amp;quot;bottom&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Text value=&amp;quot;Speed&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/Caption&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Possible locations are top, bottom, and off.  Location of &amp;quot;off&amp;quot; means the caption won&#039;t be displayed.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
As previously discussed, each gauge is drawn with three layers.  So far we&#039;ve only talked about what is shown in the middle layer, the data layer.  That is the gauge itself.  In addition to the middle layer you have the background and foreground layers in which you can draw, and they are done with the aptly named Background and Foreground tags.  You can put textures, solid colors, and gradients, or just leave the tag out completely if you don&#039;t need it.  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
* A solid foreground color, red, with no alpha transparency.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;Foreground&amp;gt;&lt;br /&gt;
        &amp;lt;Solid&amp;gt;&lt;br /&gt;
            &amp;lt;Color r=&amp;quot;1.&amp;quot; g=&amp;quot;0.&amp;quot; b=&amp;quot;0.&amp;quot; alpha=&amp;quot;1.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Solid&amp;gt;&lt;br /&gt;
    &amp;lt;/Foreground&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A lightly transparent 3-color gradient.  The &amp;quot;at&amp;quot; parameter marks the borders between the colors and ranges from 0 to 1.  The orientation determines how the gradient will be drawn.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;Foreground&amp;gt;&lt;br /&gt;
        &amp;lt;Gradient orientation=&amp;quot;horizontal&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Color r=&amp;quot;0.&amp;quot; g=&amp;quot;1.&amp;quot; b=&amp;quot;1.&amp;quot; alpha=&amp;quot;.7&amp;quot; at=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Color r=&amp;quot;0.&amp;quot; g=&amp;quot;0.&amp;quot; b=&amp;quot;1.&amp;quot; alpha=&amp;quot;.7&amp;quot; at=&amp;quot;.5&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Color r=&amp;quot;1.&amp;quot; g=&amp;quot;0.&amp;quot; b=&amp;quot;1.&amp;quot; alpha=&amp;quot;.7&amp;quot; at=&amp;quot;0.8&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Gradient&amp;gt;&lt;br /&gt;
    &amp;lt;/Foreground&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: There are three different types of gradients, indicated by the orientation attribute. Possible values are &amp;quot;horizontal&amp;quot; and &amp;quot;vertical&amp;quot; which will make horizontal or vertical gradients. A special value is &amp;quot;value&amp;quot; which will result in a solid area which changes color according to the value of the displayed data. The color with at=&amp;quot;0&amp;quot; will be used at the minimum value and at=&amp;quot;1&amp;quot; will be used at the maximum.&lt;br /&gt;
&lt;br /&gt;
==== Textures ====&lt;br /&gt;
&lt;br /&gt;
There&#039;s some basic support for textures in recent builds. A texture can be added to any &amp;lt;code&amp;gt;&amp;lt;Foreground /&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;Background /&amp;gt;&amp;lt;/code&amp;gt; tag, either instead or before the color or even gradient. Although you can specify a texture for all gauges that support foregrounds/backgrounds they only make sense for widgets that render more than just lines :-)&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example of a working texture:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;Background&amp;gt;&lt;br /&gt;
        &amp;lt;Image scale_x=&amp;quot;1&amp;quot; scale_y=&amp;quot;1&amp;quot; repeat=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Graphic category=&amp;quot;&amp;quot; author=&amp;quot;wrtlprnft&amp;quot; version=&amp;quot;1&amp;quot; name=&amp;quot;wood_512&amp;quot; extension=&amp;quot;jpg&amp;quot; uri=&amp;quot;http://wrtlprnft.ath.cx/wood512.jpg&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Image&amp;gt;&lt;br /&gt;
        &amp;lt;Solid&amp;gt;&lt;br /&gt;
             &amp;lt;Color r=&amp;quot;1.&amp;quot; g=&amp;quot;1.&amp;quot; b=&amp;quot;1.&amp;quot; alpha=&amp;quot;.5&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;/Solid&amp;gt;&lt;br /&gt;
    &amp;lt;/Background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;Image /&amp;gt;&amp;lt;/code&amp;gt; tag supports the following attributes:&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;scale_x&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;scale_y&amp;lt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
:The scale factor for the texture. If both are set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; the texture is stretched so it covers the entire area of the widget.&lt;br /&gt;
;&amp;lt;code&amp;gt;repeat&amp;lt;/code&amp;gt;&lt;br /&gt;
:Can be one of &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;both&amp;lt;/code&amp;gt;. This specifies in which directions the texture will repeat itself. The area not covered by the image will be filled by the last row/column of the texture. Usually you&#039;ll want &amp;lt;code&amp;gt;both&amp;lt;/code&amp;gt;, so this is the default.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;Graphic /&amp;gt;&amp;lt;/code&amp;gt; tag contains information on where to find the texture. The attrubutes &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; (default: the author of the cockpit), &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt; (default:the category of the cockpit), &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;extension&amp;lt;/code&amp;gt; (default: &amp;lt;code&amp;gt;png&amp;lt;/code&amp;gt;) specify the resource path of the texture, &amp;lt;code&amp;gt;&amp;lt;author&amp;gt;/&amp;lt;category&amp;gt;/&amp;lt;name&amp;gt;-&amp;lt;version&amp;gt;.&amp;lt;aatex&amp;gt;.&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt;. If the attribute &amp;lt;code&amp;gt;uri&amp;lt;/code&amp;gt; is given the file will be downloaded from the given URI instead of the resource repository if it&#039;s not already cached.&lt;br /&gt;
&lt;br /&gt;
If there&#039;s a &amp;lt;code&amp;gt;&amp;lt;Color /&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;lt;Gradient /&amp;gt;&amp;lt;/code&amp;gt; tag after the &amp;lt;code&amp;gt;&amp;lt;Image /&amp;gt;&amp;lt;/code&amp;gt; tag the color at each pixel of the texture will be multiplied by the color at the corresponding point of the gradient (or the single color given). In the example this is used to make a semitransparent background image.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General advice on textures&#039;&#039;&#039;: Make sure the dimensions of every image you want are in powers of two, for example 64×64, 256×256, 512×512 or 1024×1024. Rectangular images are OK, too, so you can use 32×1024 images, too, if you really want to. Images of other dimensions will be scaled to be powers of two by OpenGL, which doesn&#039;t excactly lead to pretty results.&lt;br /&gt;
&lt;br /&gt;
== Available Gauges ==&lt;br /&gt;
&lt;br /&gt;
Here are all of the available gauges, along with which tags are supported.&lt;br /&gt;
&lt;br /&gt;
=== NeedleGauge ===&lt;br /&gt;
&lt;br /&gt;
A needle gauge requires all three fields to exist in the DataSet tag.  It supports all general tags.  Here&#039;s an example speed gauge:&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;NeedleGauge camera=&amp;quot;*&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;DataSet&amp;gt;&lt;br /&gt;
                &amp;lt;AtomicData field=&amp;quot;source&amp;quot; source=&amp;quot;player_speed&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;AtomicData field=&amp;quot;minimum&amp;quot; source=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;AtomicData field=&amp;quot;maximum&amp;quot; source=&amp;quot;max_speed&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/DataSet&amp;gt;&lt;br /&gt;
            &amp;lt;Position x=&amp;quot;-0.165&amp;quot; y=&amp;quot;-0.9&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Size height=&amp;quot;0.15&amp;quot; width=&amp;quot;0.15&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;ShowCurrent value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;ShowMaximum value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;ShowMinimum value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Caption location=&amp;quot;bottom&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Text value=&amp;quot;Speed&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/Caption&amp;gt;&lt;br /&gt;
            &amp;lt;Foreground&amp;gt;&lt;br /&gt;
                &amp;lt;Solid&amp;gt;&lt;br /&gt;
                    &amp;lt;Color r=&amp;quot;1.&amp;quot; g=&amp;quot;0.&amp;quot; b=&amp;quot;0.&amp;quot; alpha=&amp;quot;1.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Solid&amp;gt;&lt;br /&gt;
            &amp;lt;/Foreground&amp;gt;&lt;br /&gt;
        &amp;lt;/NeedleGauge&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== BarGauge ===&lt;br /&gt;
&lt;br /&gt;
A bar gauge requires all three fields to exist in the DataSet tag.  It supports all general tags.  Here&#039;s an example rubber gauge:&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;BarGauge camera=&amp;quot;^in&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;DataSet&amp;gt;&lt;br /&gt;
                &amp;lt;AtomicData field=&amp;quot;source&amp;quot; source=&amp;quot;player_rubber&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;AtomicData field=&amp;quot;minimum&amp;quot; source=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;AtomicData field=&amp;quot;maximum&amp;quot; source=&amp;quot;cycle_rubber&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/DataSet&amp;gt;&lt;br /&gt;
            &amp;lt;Position x=&amp;quot;-0.55&amp;quot; y=&amp;quot;-0.9&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Size height=&amp;quot;0.05&amp;quot; width=&amp;quot;0.15&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;ShowCurrent value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;ShowMaximum value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;ShowMinimum value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Caption location=&amp;quot;bottom&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Text value=&amp;quot;Rubber&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/Caption&amp;gt;&lt;br /&gt;
            &amp;lt;Background&amp;gt;&lt;br /&gt;
                &amp;lt;Gradient orientation=&amp;quot;value&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Color r=&amp;quot;0.&amp;quot; g=&amp;quot;1.&amp;quot; b=&amp;quot;0.&amp;quot; alpha=&amp;quot;.0&amp;quot; at=&amp;quot;0.&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;Color r=&amp;quot;0.&amp;quot; g=&amp;quot;1.&amp;quot; b=&amp;quot;0.&amp;quot; alpha=&amp;quot;.1&amp;quot; at=&amp;quot;.3&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;Color r=&amp;quot;1.&amp;quot; g=&amp;quot;1.&amp;quot; b=&amp;quot;1.&amp;quot; alpha=&amp;quot;.2&amp;quot; at=&amp;quot;.4&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;Color r=&amp;quot;1.&amp;quot; g=&amp;quot;1.&amp;quot; b=&amp;quot;1.&amp;quot; alpha=&amp;quot;.2&amp;quot; at=&amp;quot;1.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Gradient&amp;gt;&lt;br /&gt;
            &amp;lt;/Background&amp;gt;&lt;br /&gt;
            &amp;lt;Foreground&amp;gt;&lt;br /&gt;
                &amp;lt;Gradient orientation=&amp;quot;value&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Color r=&amp;quot;0.&amp;quot; g=&amp;quot;1.&amp;quot; b=&amp;quot;0.&amp;quot; alpha=&amp;quot;.7&amp;quot; at=&amp;quot;0.&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;Color r=&amp;quot;0.&amp;quot; g=&amp;quot;1.&amp;quot; b=&amp;quot;0.&amp;quot; alpha=&amp;quot;.7&amp;quot; at=&amp;quot;.3&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;Color r=&amp;quot;1.&amp;quot; g=&amp;quot;1.&amp;quot; b=&amp;quot;0.&amp;quot; alpha=&amp;quot;.7&amp;quot; at=&amp;quot;.6&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;Color r=&amp;quot;1.&amp;quot; g=&amp;quot;0.&amp;quot; b=&amp;quot;0.&amp;quot; alpha=&amp;quot;.7&amp;quot; at=&amp;quot;.8&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;Color r=&amp;quot;1.&amp;quot; g=&amp;quot;0.&amp;quot; b=&amp;quot;0.&amp;quot; alpha=&amp;quot;.7&amp;quot; at=&amp;quot;1.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Gradient&amp;gt;&lt;br /&gt;
            &amp;lt;/Foreground&amp;gt;&lt;br /&gt;
        &amp;lt;/BarGauge&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== VerticalBarGauge ===&lt;br /&gt;
&lt;br /&gt;
Identical to a BarGauge, but renders vertically instead. Labels are currently broken for it, so don&#039;t use them yet.&lt;br /&gt;
&lt;br /&gt;
=== Label ===&lt;br /&gt;
&lt;br /&gt;
A label may have only one field in each DataSet tag and that field must be &amp;quot;source&amp;quot;.  It also requires each DataSet to have an id, which you will use to reference that data farther down.  It supports any number of DataSets.  In addition, you need a Face to describe how to build the Label.  Here&#039;s an example for the enemies alive gauge:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;Label camera=&amp;quot;*&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;DataSet id=&amp;quot;enemies&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AtomicData field=&amp;quot;source&amp;quot; source=&amp;quot;enemies_alive&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataSet&amp;gt;&lt;br /&gt;
        &amp;lt;DataSet id=&amp;quot;friends&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AtomicData field=&amp;quot;source&amp;quot; source=&amp;quot;friends_alive&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataSet&amp;gt;&lt;br /&gt;
        &amp;lt;Position x=&amp;quot;0.06&amp;quot; y=&amp;quot;-0.96&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;Size height=&amp;quot;0.035&amp;quot; width=&amp;quot;0.017&amp;quot; /&amp;gt; &amp;lt;!-- Size would be the font size in this case --&amp;gt;&lt;br /&gt;
        &amp;lt;Caption location=&amp;quot;off&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Text value=&amp;quot;Player Status&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Caption&amp;gt;&lt;br /&gt;
        &amp;lt;Face&amp;gt;&lt;br /&gt;
            &amp;lt;Table&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                    &amp;lt;Cell&amp;gt;&amp;lt;Text value=&amp;quot;Enemies:&amp;quot; /&amp;gt;&amp;lt;/Cell&amp;gt;&lt;br /&gt;
                    &amp;lt;Cell&amp;gt;&amp;lt;GameData data=&amp;quot;enemies&amp;quot; /&amp;gt;&amp;lt;/Cell&amp;gt;&lt;br /&gt;
                    &amp;lt;Cell&amp;gt;&amp;lt;Text value=&amp;quot;Friends:&amp;quot; /&amp;gt;&amp;lt;/Cell&amp;gt;&lt;br /&gt;
                    &amp;lt;Cell&amp;gt;&amp;lt;GameData data=&amp;quot;friends&amp;quot; /&amp;gt;&amp;lt;/Cell&amp;gt;&lt;br /&gt;
                &amp;lt;/Row&amp;gt;&lt;br /&gt;
            &amp;lt;/Table&amp;gt;&lt;br /&gt;
        &amp;lt;/Face&amp;gt;&lt;br /&gt;
    &amp;lt;/Label&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tables ====&lt;br /&gt;
&lt;br /&gt;
A table is much like a basic HTML table: It consists of rows, coulumns, and cells. Each cell can contain multiple &amp;lt;Text&amp;gt; or &amp;lt;GameData&amp;gt; nodes, they will just be concatenated. Here&#039;s an example of a table that shows the time, the framerate, and how long Armagetron Advanced is running:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;       &amp;lt;Label camera=&amp;quot;*&amp;quot; viewport=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;DataSet id=&amp;quot;hours&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;AtomicData source=&amp;quot;current_hours12h&amp;quot; minwidth=&amp;quot;2&amp;quot; fill=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/DataSet&amp;gt;&lt;br /&gt;
            &amp;lt;DataSet id=&amp;quot;minutes&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;AtomicData source=&amp;quot;current_minutes&amp;quot; minwidth=&amp;quot;2&amp;quot; fill=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/DataSet&amp;gt;&lt;br /&gt;
            &amp;lt;DataSet id=&amp;quot;ampm&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Conditional field=&amp;quot;source&amp;quot; lvalue=&amp;quot;current_hours&amp;quot; rvalue=&amp;quot;12&amp;quot; operator=&amp;quot;le&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;IfTrue&amp;gt;&lt;br /&gt;
                        &amp;lt;AtomicData source=&amp;quot;AM&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/IfTrue&amp;gt;&lt;br /&gt;
                    &amp;lt;IfFalse&amp;gt;&lt;br /&gt;
                        &amp;lt;AtomicData source=&amp;quot;PM&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/IfFalse&amp;gt;&lt;br /&gt;
                &amp;lt;/Conditional&amp;gt;&lt;br /&gt;
            &amp;lt;/DataSet&amp;gt;&lt;br /&gt;
            &amp;lt;DataSet id=&amp;quot;fps&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;AtomicData source=&amp;quot;current_framerate&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/DataSet&amp;gt;&lt;br /&gt;
            &amp;lt;DataSet id=&amp;quot;seconds&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;AtomicData source=&amp;quot;time_since_start&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/DataSet&amp;gt;&lt;br /&gt;
            &amp;lt;Position x=&amp;quot;0.4&amp;quot; y=&amp;quot;0.45&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;Size height=&amp;quot;0.04&amp;quot; width=&amp;quot;0.02&amp;quot; /&amp;gt; &amp;lt;!-- Size would be the font size in this case --&amp;gt;&lt;br /&gt;
            &amp;lt;Caption location=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Text value=&amp;quot;Time/Fps/Timestamp&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/Caption&amp;gt;&lt;br /&gt;
            &amp;lt;Face&amp;gt;&lt;br /&gt;
                &amp;lt;Table&amp;gt;&lt;br /&gt;
                    &amp;lt;Row&amp;gt;&lt;br /&gt;
                        &amp;lt;Cell&amp;gt;&amp;lt;Text value=&amp;quot;Time:&amp;quot; /&amp;gt;&amp;lt;/Cell&amp;gt;&lt;br /&gt;
                        &amp;lt;Cell&amp;gt;&amp;lt;GameData data=&amp;quot;hours&amp;quot; /&amp;gt;&amp;lt;Text value=&amp;quot;:&amp;quot; /&amp;gt;&amp;lt;GameData data=&amp;quot;minutes&amp;quot; /&amp;gt;&amp;lt;Text value=&amp;quot; &amp;quot; /&amp;gt;&amp;lt;GameData data=&amp;quot;ampm&amp;quot; /&amp;gt;&amp;lt;/Cell&amp;gt;&lt;br /&gt;
                    &amp;lt;/Row&amp;gt;&lt;br /&gt;
                    &amp;lt;Row&amp;gt;&lt;br /&gt;
                        &amp;lt;Cell&amp;gt;&amp;lt;Text value=&amp;quot;Framerate:&amp;quot; /&amp;gt;&amp;lt;/Cell&amp;gt;&lt;br /&gt;
                        &amp;lt;Cell&amp;gt;&amp;lt;GameData data=&amp;quot;fps&amp;quot; /&amp;gt;&amp;lt;Text value=&amp;quot; FPS&amp;quot; /&amp;gt;&amp;lt;/Cell&amp;gt;&lt;br /&gt;
                    &amp;lt;/Row&amp;gt;&lt;br /&gt;
                    &amp;lt;Row&amp;gt;&lt;br /&gt;
                        &amp;lt;Cell&amp;gt;&amp;lt;Text value=&amp;quot;Running for:&amp;quot; /&amp;gt;&amp;lt;/Cell&amp;gt;&lt;br /&gt;
                        &amp;lt;Cell&amp;gt;&amp;lt;GameData data=&amp;quot;seconds&amp;quot; /&amp;gt;&amp;lt;Text value=&amp;quot; Seconds&amp;quot; /&amp;gt;&amp;lt;/Cell&amp;gt;&lt;br /&gt;
                    &amp;lt;/Row&amp;gt;&lt;br /&gt;
                &amp;lt;/Table&amp;gt;&lt;br /&gt;
            &amp;lt;/Face&amp;gt;&lt;br /&gt;
        &amp;lt;/Label&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Map ===&lt;br /&gt;
&lt;br /&gt;
The Map is a very special gauge that displays a map of the arena.  As a special gauge it has very special requirements.  It supports Position, and Size, nothing else.  Also, it will anchor its own aspect ratio, so it might not use the whole width or height you specified. The map will be as big as possible while keeping its aspect ratio and fitting in the width and height you specify.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;Map camera=&amp;quot;*&amp;quot; viewport=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Position x=&amp;quot;0.73&amp;quot; y=&amp;quot;-0.72&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;Size height=&amp;quot;0.25&amp;quot; width=&amp;quot;0.25&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Map&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Map Settings ====&lt;br /&gt;
&lt;br /&gt;
You can configure the way the minimap looks by using a special &amp;lt;code&amp;gt;&amp;lt;MapModes /&amp;gt;&amp;lt;/code&amp;gt; tag. It should contain one or more &amp;lt;code&amp;gt;&amp;lt;MapMode /&amp;gt;&amp;lt;/code&amp;gt; tags, like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Map&amp;gt;&lt;br /&gt;
  &amp;lt;!-- normal settings for a map; see above. --&amp;gt;&lt;br /&gt;
  &amp;lt;MapModes toggleKey=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;MapMode mode=&amp;quot;full&amp;quot; rotation=&amp;quot;spawn&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;MapMode mode=&amp;quot;closestZone&amp;quot; rotation=&amp;quot;spawn&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;MapMode mode=&amp;quot;cycle&amp;quot; rotation=&amp;quot;camera&amp;quot; zoomFactor=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;MapMode mode=&amp;quot;cycle&amp;quot; rotation=&amp;quot;cycle&amp;quot; zoomFactor=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;MapMode mode=&amp;quot;cycle&amp;quot; rotation=&amp;quot;spawn&amp;quot; zoomFactor=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;MapMode mode=&amp;quot;full&amp;quot; rotation=&amp;quot;fixed&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/MapModes&amp;gt;&lt;br /&gt;
 &amp;lt;/Map&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;toggleKey&amp;lt;/code&amp;gt; is a cockpit key that can be used to switch between the settings given in the &amp;lt;code&amp;gt;&amp;lt;MapMode /&amp;gt;&amp;lt;/code&amp;gt; tags. These are independent of each other. They can have the following attributes:&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;mode&amp;lt;/code&amp;gt;&lt;br /&gt;
:The way the map pans. Currently the following values are implemented:&lt;br /&gt;
:;&amp;lt;code&amp;gt;full&amp;lt;/code&amp;gt;&lt;br /&gt;
::The default; show the entire map&lt;br /&gt;
:;&amp;lt;code&amp;gt;cycle&amp;lt;/code&amp;gt;&lt;br /&gt;
::Center around the cycle, like a radar&lt;br /&gt;
:;&amp;lt;code&amp;gt;closestZone&amp;lt;/code&amp;gt;&lt;br /&gt;
::Center around the closest zone&lt;br /&gt;
;&amp;lt;code&amp;gt;zoomFactor&amp;lt;/code&amp;gt;&lt;br /&gt;
:This determines how much of the map you see at once. If the mode is &amp;lt;code&amp;gt;full&amp;lt;/code&amp;gt;, this doesn&#039;t have any effect, if it&#039;s &amp;lt;code&amp;gt;cycle&amp;lt;/code&amp;gt; it&#039;ll be multiplied by the cycle&#039;s speed, and if it&#039;s &amp;lt;code&amp;gt;closestZone&amp;lt;/code&amp;gt; it&#039;ll be multiplied by the zone&#039;s radius&lt;br /&gt;
;&amp;lt;code&amp;gt;roatation&amp;lt;/code&amp;gt;&lt;br /&gt;
:This controls how the map is rotated. Valid values are:&lt;br /&gt;
:;&amp;lt;code&amp;gt;fixed&amp;lt;/code&amp;gt;&lt;br /&gt;
::Don&#039;t rotate at all; positive y-coordinates will be at the top of the map.&lt;br /&gt;
:;&amp;lt;code&amp;gt;spawn&amp;lt;/code&amp;gt;&lt;br /&gt;
::Rotate the map so the direction the cycle spawned in is facing upwards&lt;br /&gt;
:;&amp;lt;code&amp;gt;cycle&amp;lt;/code&amp;gt;&lt;br /&gt;
::Rotate so the current cycle is always facing upwards&lt;br /&gt;
:;&amp;lt;code&amp;gt;camera&amp;lt;/code&amp;gt;&lt;br /&gt;
::Rotate so the direction the camera is facing is pointing upwards on the map&lt;br /&gt;
&lt;br /&gt;
== Gauge Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates can be used for multiple similar gauges. Say you want three gauges for Brakes, Speed and rubber, they&#039;re all the same exept for position, caption and data.&lt;br /&gt;
&lt;br /&gt;
You could copy and paste the different attributes, but that leads to a larger file, and if you later decide you want your gauges smaller you&#039;d have to edit all three of them. That&#039;s where templates come in.&lt;br /&gt;
&lt;br /&gt;
This is how you define a template:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;WidgetTemplate id=&amp;quot;MyTemplate&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Size height=&amp;quot;0.3&amp;quot; width=&amp;quot;0.3&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;Position y=&amp;quot;-.7&amp;quot; x=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;!-- other tags in here --&amp;gt;&lt;br /&gt;
 &amp;lt;/WidgetTemplate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; attribute is used to reference your template for later use. Inside a &amp;lt;code&amp;gt;&amp;lt;WidgetTemplate /&amp;gt;&amp;lt;/code&amp;gt; you can have all possible tags for widgets.&lt;br /&gt;
&lt;br /&gt;
This is how you use your template:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;NeedleGauge usetemplate=&amp;quot;MyTemplate&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Position x=&amp;quot;-.5&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;!-- other tags in here --&amp;gt;&lt;br /&gt;
 &amp;lt;/NeedleGauge&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This internally gets replaced by the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;NeedleGauge&amp;gt;&lt;br /&gt;
     &amp;lt;Size height=&amp;quot;0.3&amp;quot; width=&amp;quot;0.3&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;Position y=&amp;quot;-.7&amp;quot; x=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;!-- other tags in here --&amp;gt;&lt;br /&gt;
     &amp;lt;Position x=&amp;quot;-.5&amp;quot; y=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;!-- other tags in here --&amp;gt;&lt;br /&gt;
 &amp;lt;/NeedleGauge&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See how there&#039;s two &amp;lt;code&amp;gt;&amp;lt;Position /&amp;gt;&amp;lt;/code&amp;gt; tags now? Since there&#039;s more than one tag they&#039;ll get added to each other, resulting in the widget being positioned at (-.5, -.7). &amp;lt;code&amp;gt;&amp;lt;Size /&amp;gt;&amp;lt;/code&amp;gt; tags will get multiplied, so you could scale a template. All other tags just overwrite each other, so the last one &amp;quot;wins&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You can use multiple templates in one tag by seperating their names by spaces, like this: &amp;lt;code&amp;gt;&amp;lt;Label usetemplate=&amp;quot;MyTemplate MyOtherTemplate&amp;quot;&amp;gt;...&amp;lt;/Label&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Toggle Keys ==&lt;br /&gt;
&lt;br /&gt;
Are you annoyed by the HUD map being to small, but don&#039;t like a big map permanently cluttering up your screen? There&#039;s a solution, toggle keys. You can map the five available toggle keys in the global keybord configuration screen, and what they do depends entirely on the cockpit file.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example of a HUD map that gets toggled by key 1 and is visible by default (that is, until you press the key and turn it off):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Map camera=&amp;quot;*&amp;quot; viewport=&amp;quot;top&amp;quot; toggle=&amp;quot;1&amp;quot; toggleSticky=&amp;quot;true&amp;quot; toggleDefault=&amp;quot;on&amp;quot; &amp;gt;&lt;br /&gt;
     &amp;lt;Position x=&amp;quot;0&amp;quot; y=&amp;quot;-.25&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;Size height=&amp;quot;.75&amp;quot; width=&amp;quot;0.7&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/Map&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are three attributes that influence toggling behavior:&lt;br /&gt;
;toggle&lt;br /&gt;
:The toggle key to be used, needs to be a number from 1-5 or 0 for no toggle key (default if you omit it)&lt;br /&gt;
;toggleSticky&lt;br /&gt;
:If the value is &amp;quot;true&amp;quot; (default) pressing the key and releasing it will change the visibility. If it is false pressing the key and holding it will change the state, but it will return the default once you release it.&lt;br /&gt;
;toggleDefault&lt;br /&gt;
:&amp;quot;on&amp;quot; (default) means the widget will be visible until you press the toggle key, &amp;quot;off&amp;quot; means it will be invisible first.&lt;br /&gt;
&lt;br /&gt;
== For Server Admins ==&lt;br /&gt;
&lt;br /&gt;
There are many new kinds of gauges that might be considered as cheating by some people, or at least it gives a certain advantage to people who use them.&lt;br /&gt;
&lt;br /&gt;
If you want to disable certain data sources you can change the FORBID_COCKPIT_DATA setting. It contains a colon&amp;amp;ndash;separated list of data sources that will be disabled (it will just display 0 instead of a value):&lt;br /&gt;
&lt;br /&gt;
 FORBID_COCKPIT_DATA time_to_impact_front:time_to_impact_left:time_to_impact_right:player_rubber&lt;br /&gt;
&lt;br /&gt;
This will prevent the client from displaying the time_to_impact data sources and the current rubber. Likewise the HUD minimap can be disabled by the following command:&lt;br /&gt;
&lt;br /&gt;
 FORBID_HUD_MAP 1&lt;br /&gt;
&lt;br /&gt;
Bear in mind, though, that the server has no way of knowing if the client is actually following these rules. All data sources use data that is known to the client, it wouldn&#039;t be hard to hack a client to ignore this setting. This is basically the same problem as with the FORBID_CAMERA_* settings: You have to trust on the users of your servers to play fair.&lt;br /&gt;
&lt;br /&gt;
== QA and release ==&lt;br /&gt;
&lt;br /&gt;
For testing your cockpit, see [[Testing Resources]]. You can make your work available to others by uploading it to the [[Resource repository]]. If you do that, you might want to add an entry to [[Cockpits list]] to tell users about your cockpit.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client Features]]&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Template:Cockpits_Blurb&amp;diff=41513</id>
		<title>Template:Cockpits Blurb</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Template:Cockpits_Blurb&amp;diff=41513"/>
		<updated>2013-01-16T23:36:10Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Unlink Cockpits as it is now just a redirect to Cockpits List&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BoxLinkGroup|Cockpits|[[Cockpits List]] {{!}} [[Cockpit Tutorial]] {{!}} [[Cockpit Reference]]|Cockpit files can be used to customize the game&#039;s HUD in the current development builds and in the upcoming version 0.4.0.}}&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Cockpits_List&amp;diff=41512</id>
		<title>Cockpits List</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Cockpits_List&amp;diff=41512"/>
		<updated>2013-01-16T23:35:07Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Add the cockpits blurb&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Cockpits Blurb}}&lt;br /&gt;
&lt;br /&gt;
This is a list of a few cockpit files that are available. You can only use them if you have downloaded a version of Armagetronad later than 0.3.0_alpha4872 and if you know how to use the [[Console]]. Be aware that your use of upper/lowercase for the console command matters. To make your own cockpits see the [[Cockpit Tutorial]].&lt;br /&gt;
&lt;br /&gt;
== Abyss ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Abyss-0.0.1.aacockpit.xml (Screenshot).png|thumb|&lt;br /&gt;
Abyss]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Spidey|Spidey]]&lt;br /&gt;
;Description&lt;br /&gt;
:TODO-Spidey: add this.&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE spidey/abyss-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Link&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/spidey/abyss-0.0.1.aacockpit.xml Version 0.0.1]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Classic ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Classic-0.0.1.aacockpit.xml (Screenshot).png|thumb|&lt;br /&gt;
Classic cockpit]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Wrtlprnft|Wrtlprnft]]&lt;br /&gt;
;Description&lt;br /&gt;
:This cockpit file tries to emulate the cockpit of 0.2.8 as much as possible. It doesn&#039;t include a HUD minimap and uses the traditional needle gauges. Boooooring.&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE wrtlprnft/classic-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Link&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/wrtlprnft/classic-0.0.1.aacockpit.xml Version 0.0.1]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Essential ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Essential-0.0.5_(win).png|thumb|&lt;br /&gt;
Essential (win)]]&lt;br /&gt;
[[Image:Essential-0.0.5_(death+debug).png|thumb|&lt;br /&gt;
Essential (death+debug)]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:rain|rain]]&lt;br /&gt;
;Description&lt;br /&gt;
:Simple, lightweight, or just essential.&lt;br /&gt;
:New version (0.0.5) is finally ready, some layout modifications and some features added. It is working good with aa v0.3_alpha_z1333. Enjoy.&lt;br /&gt;
;Toggle Keys&lt;br /&gt;
:1: hide/view brake and speed labels&lt;br /&gt;
:2: view/hide debug tools (see screenshots...)&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE rain/essential-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE rain/essential-0.0.5.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Link&lt;br /&gt;
:[http://resource.armagetronad.net/resource/rain/essential-0.0.1.aacockpit.xml Version 0.0.1]&lt;br /&gt;
:[http://resource.armagetronad.net/resource/rain/essential-0.0.5.aacockpit.xml Version 0.0.5]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Essential Remix ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Screenshot_78.png|thumb|EssentialRemix v3.6 (alive)]]&lt;br /&gt;
[[Image:Essentialremix-0.3.1.aacockpit002.png|thumb|EssentialRemix v3.6 (death)]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Flex|Flex]]&lt;br /&gt;
;Description&lt;br /&gt;
:A &amp;quot;remix&amp;quot; to rains Essential Cockpit (New homepage at http://flex.armagetron.co.uk/essentialremix/).&lt;br /&gt;
;Toggle Keys (0.3.7)&lt;br /&gt;
*Toggle key 1: Toggle between the top right labels. Time &amp;amp; FPS / Fastest player &amp;amp; Max rubber.&lt;br /&gt;
*Toggle key 2: Show/Hide Minimap.&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE flex/cockpits/essentialremix-0.3.7.aacockpit.xml(http://flex.armagetron.co.uk/resource/flex/cockpits/essentialremix-0.3.7.aacockpit.xml)&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Link&lt;br /&gt;
:[http://flex.armagetron.co.uk/resource/flex/essentialremix-0.3.6.aacockpit.xml Version 0.3.6]&lt;br /&gt;
:[http://flex.armagetron.co.uk/resource/flex/cockpits/essentialremix-0.3.7.aacockpit.xml Version 0.3.7] (Fixed the minimap not working on latest 0.3.x clients.)&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pink ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Pink-0.0.1.aacockpit.xml (Screenshot).png|thumb|&lt;br /&gt;
Pink]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Spidey|Spidey]]&lt;br /&gt;
;Description&lt;br /&gt;
:TODO-Spidey: add this.&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE spidey/pink-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Link&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/spidey/pink-0.0.1.aacockpit.xml Version 0.0.1]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Playroom ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Playground-0.0.1.aacockpit.xml (Screenshot).png|thumb|&lt;br /&gt;
Playground]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Lucifer|Lucifer]]&lt;br /&gt;
;Description&lt;br /&gt;
:This cockpit is designed for fortress play.  All gauges are placed near where your eyes are normally focused so you never have to look far.  Play with it enough and you find you always know your speed, amount of brake, and stuff.  Enemies alive gauge is color-coded to show at a glance whether or not you&#039;re outnumbered.  Look at the gauge itself to see how badly you&#039;re outnumbered, and look at the map to see where everybody is.&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE Lucifer/sick/Playroom-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Skypit ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Skypit-0.0.1.aacockpit.xml.png|thumb|Skypit]]&lt;br /&gt;
;Author&lt;br /&gt;
: LukeSky&lt;br /&gt;
;Description&lt;br /&gt;
:Toggle Key 1 -&amp;gt; Map&lt;br /&gt;
:Toggle Key 2 -&amp;gt; Time/FPS&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE lukesky/skypit-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Link&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/lukesky/skypit-0.0.1.aacockpit.xml Version 0.0.1]&lt;br /&gt;
&amp;lt;div sryle=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Standard Cockpit ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Standard-0.0.1.aacockpit.xml (Screenshot) (1).png|thumb|Standard cockpit in smartcam mode]]&lt;br /&gt;
[[Image:Standard-0.0.1.aacockpit.xml (Screenshot) (2).png|thumb|Standard cockpit in incam mode]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Wrtlprnft|Wrtlprnft]] and [[User:Lucifer|Lucifer]]&lt;br /&gt;
;Description&lt;br /&gt;
:This is the default cockpit in 0.3.0. It has the new HUD map and bar gauges, but displays about the same data as 0.2.8.&lt;br /&gt;
:Try switching to incam mode for a camera tailored to incam playing.&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE Anonymous/standard-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vanoriginal ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Vanoriginal-0.0.1.aacockpit.xml (Screenshot).png|thumb|&lt;br /&gt;
Vanoriginal]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Vanhayes|Vanhayes]]&lt;br /&gt;
;Description&lt;br /&gt;
:I Made all the meters Vertical Bar guages, took out all of the information that was showed in the top right corner except time and FPS, though you can toggle them off.Put the enemies/friends alive meter from incam. You can also toggle off the map If it is in the way and you can toggle on the impact meters, Front left and right.The toggles are cockpit keys: 1(map),2(impact meters), and 5(FPS/Time)&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE Vanhayes/cockpit/vanoriginal-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Link&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/Vanhayes/cockpit/vanoriginal-0.0.1.aacockpit.xml Version 0.0.1]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wrtl&#039;s Cockpit ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Testfile-0.0.1.aacockpit.xml (Screenshot) (1).png|thumb|&lt;br /&gt;
Wrtl&#039;s cockpit with everything at initial state]]&lt;br /&gt;
[[Image:Testfile-0.0.1.aacockpit.xml (Screenshot) (2).png|thumb|&lt;br /&gt;
Wrtl&#039;s cockpit with the HUD map switched off]]&lt;br /&gt;
[[Image:Testfile-0.0.1.aacockpit.xml (Screenshot) (3).png|thumb|&lt;br /&gt;
Wrtl&#039;s cockpit with dimmed 3D rendering]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Wrtlprnft|Wrtlprnft]]&lt;br /&gt;
;Description&lt;br /&gt;
:This is my approach on creating the ultimate cockpit.&lt;br /&gt;
:The huge rubber gauge on the left helps you know instantly how risky you can play and the player information on the top right helps you determine if your help defending is needed.&lt;br /&gt;
:On the bottom right is a special gauge that shows the approximate time to the next impact with a wall, useful if you want to know if you outgrinded someone. You can switch of the big map by pressing the first cockpit key (bind it in global keyboard config) and dim the 3D rendering by pressing the second key—useful for chico maps.&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE wrtlprnft/testfile-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Links&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/wrtlprnft/testfile-0.0.1.aacockpit.xml Version 0.0.1]&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/wrtlprnft/testfile-0.0.3.aacockpit.xml Version 0.0.3—doesn&#039;t work with 0.3.0, will work with 0.3.1]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Xevi&#039;s Cockpit ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Xevi-0.0.3.aacockpit.xml (Screenshot).png|thumb|Xevi&#039;s Cockpit, version 0.0.3]]&lt;br /&gt;
[[Image:Xevi-0.0.4.aacockpit.xml (Screenshot).png|thumb|Xevi&#039;s Cockpit, version 0.0.4]]&lt;br /&gt;
[[Image:Xevi_cockpit_05.JPG|thumb|Xevi&#039;s Cockpit, version 0.0.5]]&lt;br /&gt;
[[Image:Xevi.0.0.7.JPG|thumb|Xevi&#039;s Cockpit, version 0.0.7]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Xevic|Xevi]]&lt;br /&gt;
;Description&lt;br /&gt;
:Some evolutions of the real hud ;) there are also versions 0.0.1 and 0.0.2, but they are just a step to 0.0.3, then there is a couple of evolutions, in 0.0.4 I added wrtl&#039;s impact time widget. Version 0.0.5 adds warning bars, there is one for front impact, another for left and one for right. The new 0.0.6 is a improvement of last one with better look bars and better parameters. News on 7: bars tunning, front impact moved bottom to allow better notice, avoid chat and transparency problems there, new big map switch with toggle 3, now it won&#039;t desappear, it will appear the full screen version.&lt;br /&gt;
Enjoy them.&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE xevi/xevi-0.0.7.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Links&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/xevi/xevi-0.0.3.aacockpit.xml Version 0.0.3]&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/xevi/xevi-0.0.4.aacockpit.xml Version 0.0.4]&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/xevi/xevi-0.0.5.aacockpit.xml Version 0.0.5]&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/xevi/xevi-0.0.6.aacockpit.xml Version 0.0.6]&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/xevi/xevi-0.0.7.aacockpit.xml Version 0.0.7]&lt;br /&gt;
:[http://crazy-tronners.com/resource/xevi/xevi-0.0.8.aacockpit.xml Version 0.0.8] -&amp;gt; last version on 0.3.0&lt;br /&gt;
:[http://crazy-tronners.com/resource/xevi/xevi-0.0.9.aacockpit.xml Version 0.0.9] -&amp;gt; minimap 0.3.1 ready.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client Features]]&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Cockpits&amp;diff=41511</id>
		<title>Cockpits</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Cockpits&amp;diff=41511"/>
		<updated>2013-01-16T23:33:52Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Redirect to Cockpits List&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Cockpits List]]&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Cockpit&amp;diff=41510</id>
		<title>Cockpit</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Cockpit&amp;diff=41510"/>
		<updated>2013-01-16T23:33:40Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Redirect to Cockpits List&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Cockpits List]]&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Template:Cockpits_Blurb&amp;diff=41509</id>
		<title>Template:Cockpits Blurb</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Template:Cockpits_Blurb&amp;diff=41509"/>
		<updated>2013-01-16T23:32:17Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Create a blurb for cockpit pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BoxLinkGroup|[[Cockpits]]|[[Cockpits List]] {{!}} [[Cockpit Tutorial]] {{!}} [[Cockpit Reference]]|Cockpit files can be used to customize the game&#039;s HUD in the current development builds and in the upcoming version 0.4.0.}}&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Template:BoxLinkGroup&amp;diff=41508</id>
		<title>Template:BoxLinkGroup</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Template:BoxLinkGroup&amp;diff=41508"/>
		<updated>2013-01-16T23:24:48Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Added a category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;box box-linkgroup&amp;quot; style=&amp;quot;background: rgba(255,255,255,.65); padding: 2px;&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;linkgroup-links&amp;quot; style=&amp;quot;background: lightgray;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{1}}}&#039;&#039;&#039; | {{{2}}}&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;linkgroup-description&amp;quot;&amp;gt;{{{3|}}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;This template is useful for grouping a few pages together and linking between them.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
Give a title as first argument, and a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt; {{!}} &amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;-separated list of links as second argument:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{BoxLinkGroup|Title|[[Page One]] {{!}} [[Page Two]]}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BoxLinkGroup|Title|[[Page One]] {{!}} [[Page Two]]}}&lt;br /&gt;
&lt;br /&gt;
You can use the optional third argument to provide a description.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{BoxLinkGroup|Title|[[Page One]] {{!}} [[Page Two]]|Description}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BoxLinkGroup|Title|[[Page One]] {{!}} [[Page Two]]|Description}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Box Templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Template:BoxLinkGroup&amp;diff=41507</id>
		<title>Template:BoxLinkGroup</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Template:BoxLinkGroup&amp;diff=41507"/>
		<updated>2013-01-16T23:23:24Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Made description optional and added docs.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;box box-linkgroup&amp;quot; style=&amp;quot;background: rgba(255,255,255,.65); padding: 2px;&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;linkgroup-links&amp;quot; style=&amp;quot;background: lightgray;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{1}}}&#039;&#039;&#039; | {{{2}}}&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;linkgroup-description&amp;quot;&amp;gt;{{{3|}}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;This template is useful for grouping a few pages together and linking between them.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
Give a title as first argument, and a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt; {{!}} &amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;-separated list of links as second argument:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{BoxLinkGroup|Title|[[Page One]] {{!}} [[Page Two]]}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BoxLinkGroup|Title|[[Page One]] {{!}} [[Page Two]]}}&lt;br /&gt;
&lt;br /&gt;
You can use the optional third argument to provide a description.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{BoxLinkGroup|Title|[[Page One]] {{!}} [[Page Two]]|Description}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BoxLinkGroup|Title|[[Page One]] {{!}} [[Page Two]]|Description}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Template:!&amp;diff=41506</id>
		<title>Template:!</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Template:!&amp;diff=41506"/>
		<updated>2013-01-16T23:18:26Z</updated>

		<summary type="html">&lt;p&gt;Epsy: A pipe for use in template calls.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;|&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Template:BoxLinkGroup&amp;diff=41505</id>
		<title>Template:BoxLinkGroup</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Template:BoxLinkGroup&amp;diff=41505"/>
		<updated>2013-01-16T23:15:16Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Created a template for grouped pages, like tournaments&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;box box-linkgroup&amp;quot; style=&amp;quot;background: rgba(255,255,255,.65); padding: 2px;&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;linkgroup-links&amp;quot; style=&amp;quot;background: lightgray;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{1}}}&#039;&#039;&#039; | {{{2}}}&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;linkgroup-description&amp;quot;&amp;gt;{{{3}}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;This template is useful for grouping a few pages together and linking between them.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
Give a title and a pipe-separated list of links as first and second argument, respectively:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{BoxLinkGroup|Title|[[Page One]]\|[[Page Two]]}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BoxLinkGroup|Title|[[Page One]]\|[[Page Two]]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Template:If&amp;diff=41504</id>
		<title>Template:If</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Template:If&amp;diff=41504"/>
		<updated>2013-01-16T23:06:43Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Created an if-then-else conditional for other templates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{{else{{{test|}}}|{{{test{{{test|}}}|{{{then|}}}}}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&amp;lt;code&amp;gt;if-then-else&amp;lt;/code&amp;gt; conditional:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{if|test=non-empty|then=yes|else=no}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gives &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{if|test=|then=yes|else=no}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gives &amp;lt;code&amp;gt;no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yanked from [http://meta.wikimedia.org/wiki/Template:Ifold WikiMedia].&lt;br /&gt;
&lt;br /&gt;
[[Category:Utility_Templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Authentication_for_Players&amp;diff=41382</id>
		<title>Authentication for Players</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Authentication_for_Players&amp;diff=41382"/>
		<updated>2013-01-04T18:15:05Z</updated>

		<summary type="html">&lt;p&gt;Epsy: /* Alternate Authentication Authorities */ reordered and added @x&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;
= Authentication for Players =&lt;br /&gt;
&lt;br /&gt;
Authentication is the process of proving to a server who you are. In itself, it is not terribly useful, because you usually don&#039;t get anything for it; but the server will recognize you better, it will be impossible for others to destroy your stats by picking your name in your absence, it can make tournaments less stressful by only letting registered players participate, and it provides a more secure remote server administration interface.&lt;br /&gt;
&lt;br /&gt;
== What you need ==&lt;br /&gt;
&lt;br /&gt;
First, you need an account. The system is designed to be open and can accept accounts from various places; one place to get an account that works is the [http://forums.armagetronad.net official forum]. To the game, those accounts are identified as something that looks like an email address; a forum account would look like &amp;quot;&amp;lt;your user name&amp;gt;@forums&amp;quot;. When you pick your username, you definitely should avoid non-ASCII characters (user names with those will likely change representation in the future), and it is wise to avoid the @ itself (and absolutely the &amp;quot;@forums&amp;quot;, it gets added automatically), quotation marks, whitespace, and the symbols %, :, and \, an the sequence 0x. Not that the system can&#039;t handle them, but they have to be &amp;quot;escaped&amp;quot; or encoded and will look ugly, and if you ever want to ask a server administrator to give you elevated access rights, those symbols make it more difficult, leading to mistakes and you not getting your rights and missing the tournament.&lt;br /&gt;
&lt;br /&gt;
What you also should definitely keep out of your username are clan tags. Clan affiliation can vary over time, and server admins are unlikely to go to the trouble to update their score tables to your new name, so you&#039;ll either use your past achievements or will have to go around with that outdated clan tag forever.&lt;br /&gt;
&lt;br /&gt;
Second, what you don&#039;t need (but it&#039;s highly recommended anyway, see the notes on security below) is a new client. Yep. Even plain old Armagetron clients have the required functionality, way back to 0.2.6 and even earlier. See the history secion on why that is so.&lt;br /&gt;
&lt;br /&gt;
What you also don&#039;t need is to post on the forums. Seriously. The only thing you may need to do on the forums if you have a very, very old account is to log out and log in again. If you just got the account, it should be ready to go.&lt;br /&gt;
&lt;br /&gt;
Second, you need a server that supports authentication. The serverside part of the protocol was missing some bits all the time, again I refer you to the history section if you want to know details. Anyway, because the support is brand-new at the time of this writing, there are only a few servers out there that support authentication. At the time of this writing (outdated, pretty much all servers support it by now), those are:&lt;br /&gt;
&lt;br /&gt;
*1v1 Sumo Bistro&lt;br /&gt;
*Bugfarm Elimination Sumo&lt;br /&gt;
*Chico&#039;s Brake Boost Styball&lt;br /&gt;
*Crazy Tronners C T F&lt;br /&gt;
*Crazy Tronners Catfight 2&lt;br /&gt;
*Crazy Tronners Open Sumo&lt;br /&gt;
*Crazy Tronners Wild Fortress Lounge&lt;br /&gt;
*Crazy Tronners Wild Sumo&lt;br /&gt;
*Day Tripper Fortress&lt;br /&gt;
*Fortress Café&lt;br /&gt;
*Strawberry Fields&lt;br /&gt;
*Tag Test&lt;br /&gt;
*Wild Cat&lt;br /&gt;
*¦×¦.Team.Sumo.Server&lt;br /&gt;
&lt;br /&gt;
== Alternate Authentication Authorities ==&lt;br /&gt;
&lt;br /&gt;
There are also other open-for-all authorities:&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
Dead?&lt;br /&gt;
* [http://durkadurkaland.com durkadurkaland.com]&lt;br /&gt;
* [http://twixted-xats.ath.cx/forum/ twixted-xats.ath.cx/forum/]&lt;br /&gt;
* [http://www.lagtest.net/forum/index.php lagtest.net]&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* [http://www.aagid.net @aagid]&lt;br /&gt;
* [http://crazy-tronners.com @ct]&lt;br /&gt;
* [http://deathbydistraction.net/forums @dbd]&lt;br /&gt;
* [http://trongame.de/forum @pru]&lt;br /&gt;
* [http://roadrunnerz.net @roadrunnerz.net]&lt;br /&gt;
* [http://x.hashpickup.net/ @x]&lt;br /&gt;
Some of these are tied to their forums, so all you have to do is register there.&lt;br /&gt;
&lt;br /&gt;
If you only want an account that is valid on one server, talk to the administrator of that server, they can give you one.&lt;br /&gt;
&lt;br /&gt;
== How to authenticate with a new client ==&lt;br /&gt;
&lt;br /&gt;
Go to your player&#039;s setup menu and scroll down; you&#039;ll find an item titled &amp;quot;Global ID&amp;quot;. Enter your account name there. For a forum account, that would be &amp;quot;&amp;lt;user name&amp;gt;@forums&amp;quot;. The bit before the @ typically is your username, and the bit afterwards is the host where the authentication server runs, or an abbreviation thereof (&amp;quot;forums&amp;quot; is shorthand for &amp;quot;forums.authentication.armagetronad.net&amp;quot;.) If you always want to be logged in to any server you play on, enable the toggle item below that, titled &amp;quot;Auto Login&amp;quot;. If you don&#039;t want that, you have to hit the &amp;quot;Authentication&amp;quot; menu item in the ingame menu. If that menu item is missing, then the server does not support authentication.&lt;br /&gt;
&lt;br /&gt;
You will be prompted for a password; check your username and enter the password of your account there, then press return. On the top of the menu, you can select whether you want to store your password. See the security section for recommendations. You will be either logged in or have received an error message on the console.&lt;br /&gt;
&lt;br /&gt;
Of course, you can also use the following method:&lt;br /&gt;
&lt;br /&gt;
== How to authenticate with an old client ==&lt;br /&gt;
&lt;br /&gt;
Old clients (before 0.2.8) are missing the menu items where you can enter your account name and where you can trigger the login process. For them, you trigger the login procedure with chat commands. There are three variants.&lt;br /&gt;
* Plain &amp;quot;/login&amp;quot;, will trigger authentication for a local server account.&lt;br /&gt;
* &amp;quot;/login &amp;lt;authority name&amp;gt;&amp;quot;, will trigger login with an account at a remote authority.&lt;br /&gt;
In both cases, you&#039;ll have to enter your username at the password prompt, it will default to your current screen name (and due to a quirk, you will rename to the selected username after you logged in). &lt;br /&gt;
* The third way is to say &amp;quot;/login &amp;lt;account@authority&amp;gt;&amp;quot;, this will try to log you log in as that, and preselect the username for you in the menu (in theory. This works for new clients only, sorry). Binding an instachat to that would probably not be a bad idea.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Keep in mind, that in the appearing login menu, you do not have to write the @authority part again.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Also beware, on old clients the &amp;quot;Abort&amp;quot; button disconnects you from the server.&lt;br /&gt;
&lt;br /&gt;
== troubleshooting ==&lt;br /&gt;
# Make sure that you are typing your username exactly as it is at the place for authentication. For instance if you have the Player1 account on the forums it would be Player1@forums instead of player1@forums.&lt;br /&gt;
# If you are using an old client make sure that when you are prompted for a password that your username is correct. On older clients this will rename it to your gridname.&lt;br /&gt;
#Ensure that you are using the correct authority where you have an account.&lt;br /&gt;
&lt;br /&gt;
== Benefits ==&lt;br /&gt;
&lt;br /&gt;
Can vary. In default server settings, the only benefit you get is that the server can track you better in the hightscore tables. Other players will be able to see the account you used to log in, and that will make it harder for other players to imposter you.&lt;br /&gt;
&lt;br /&gt;
One huge benefit of getting authenticated are organized tournaments. You are going to have far less problems in organized matches (clan wars and our [[Competition Hub|various other competitions]]) if you can authenticate to the server; At least, you&#039;re going to make the server administrator running the match happy because he doesn&#039;t have to constantly ask who you are :) Getting authenticated and registered with the competition manager or server admin (they&#039;ll have to authorize you) can give you access to the team management interface. If you have sufficient rights, you can&lt;br /&gt;
&lt;br /&gt;
* lock your current team by saying &amp;quot;/lock&amp;quot;. No further team members may then join, unless you&lt;br /&gt;
* invite your teammates to play with &amp;quot;/invite &amp;lt;player name&amp;gt;&amp;quot;. Invited players that are not yet playing will also receive your team&#039;s /team messages.&lt;br /&gt;
* kick players out or revoke invitations with &amp;quot;/uninvite &amp;lt;player name&amp;gt;&amp;quot;.&lt;br /&gt;
* unlock the team again to the public with &amp;quot;/unlock&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
(As safeguard against teams getting orphaned in a state where nobody can invite new members or unlock it, /invite and /unlock can always be used by those active team members that have the highest access level.)&lt;br /&gt;
&lt;br /&gt;
Of course, you can get the same functionality if the server admin is present and gives you the appropriate access rights with /op, but what if the server admin is a forgetful lazy bum who forgets about scheduled matches?&lt;br /&gt;
&lt;br /&gt;
There may be some servers where you have to be authenticated to chat or to play, but that is not recommended; by default, servers should be open to anyone.&lt;br /&gt;
&lt;br /&gt;
=== Benefits on specific servers ===&lt;br /&gt;
&lt;br /&gt;
* Chico&#039;s Brake Boost Styball : [http://crazy-tronners.com/p4/commands.php Custom Commands].&lt;br /&gt;
* Crazy Tronners Open Sumo : [http://crazy-tronners.com/p4/commands.php Custom Commands].&lt;br /&gt;
* Crazy Tronners Wild Sumo : [http://crazy-tronners.com/p4/commands.php Custom Commands].&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
&lt;br /&gt;
=== The main weakness ===&lt;br /&gt;
&lt;br /&gt;
Naturally, the authentication system has been designed with security in mind. The original protocol that old clients support, however, was designed to be used on a small group of trusted servers, and that makes it vulnerable to attacks from the side of the server. The one attack that is easily possible basically works like this:&lt;br /&gt;
* as you enter a server, the server badmin uses a modified client to play on another server.&lt;br /&gt;
* as you trigger the authentication procedure, the badmin does the same on the other server.&lt;br /&gt;
* the badmin&#039;s server relays the communication between the other server and the badmin&#039;s client to your client, and your response is routed back.&lt;br /&gt;
That way, the badmin will be logged on to the other server with your user account. Such a thing is called man in the middle-attack, because the badmin is the man in the middle between you and the other server.&lt;br /&gt;
&lt;br /&gt;
This is the most dangerous attack on the protocol, and the modified protocol on new clients (the ones with the &amp;quot;Authentication&amp;quot; button) has protection built in; the server IP address is entangled into the communication between server and client, so that the other server would notice that your login data was not intended for it. Unless the badmin also manages to counterfeit the other server&#039;s IP address, of course, which is not impossile; however, it would usually be much easier to steal your password by other means; web forums are a pretty insecure thing, passwords of unmodded phpBB are transmitted in plain text, for example.&lt;br /&gt;
&lt;br /&gt;
=== Smaller Threats ===&lt;br /&gt;
&lt;br /&gt;
- If someone gets his hands on the authentication database, he will have everything he needs to imposter anyone in it. The alternative would be to transmit something in clear text so that anyone wo intercepts it can imposter you any time.&lt;br /&gt;
- An infinite supply of throwaway remote accounts is possible; server admins have white and blacklists at their disposal against that, however.&lt;br /&gt;
&lt;br /&gt;
If you have your own concerns, please voice them on the forums first. We don&#039;t want to let this section blow up with discussions.&lt;br /&gt;
&lt;br /&gt;
=== Password Storage ===&lt;br /&gt;
&lt;br /&gt;
The password menu allows you to store passwords on disk. This, of course, is insecure, as anyone who gets access to your configuration file, where the passwords are stored, will be able to use your account. The data is scrambled in a form that makes it not really feasible to extract the raw passwords, though. Anyway, our recommendation has to be not to store passwords on disk. That is especially true for users of 0.2.8.1 and earlier; there is a bug that will cause duplicate password entries to accumulate in your user.cfg.&lt;br /&gt;
&lt;br /&gt;
=== Debug Recordings ===&lt;br /&gt;
&lt;br /&gt;
For old clients, debug recordings where you enter passwords in the password menu are insecure, do not share them. While you can&#039;t read the password on the screen, it will be encoded in the recording and easy to extract. The same goes for the old ADMIN_PASS interface, of course.&lt;br /&gt;
&lt;br /&gt;
For new clients and new servers, debug recordings are safe to share. They are cleared of the password storage data you may have in the config files, they do not contain local server accounts, and the keypresses you make while in the password menu are all replaced by &amp;quot;x&amp;quot;, apart from the control keys that navigate the menu, of course.&lt;br /&gt;
&lt;br /&gt;
Serverside debug recordings come with a performance penalty; as without ZThread, a recording server will make remote account lookups only between rounds.&lt;br /&gt;
&lt;br /&gt;
== Small notes for server admins ==&lt;br /&gt;
&lt;br /&gt;
To run an authentication server, you need an experimental version, either [http://beta.armagetronad.net/ 0.2.8_alpha20080209] (the server binaries for Linux and Windows have authentication built in) or later or SVN from the 0.2.8 branch:&lt;br /&gt;
 svn co https://armagetronad.svn.sourceforge.net/svnroot/armagetronad/armagetronad/branches/0.2.8/armagetronad&lt;br /&gt;
Or of course, the same from bzr:&lt;br /&gt;
 bzr co lp:armagetronad/0.2.8 armagetronad&lt;br /&gt;
followed by&lt;br /&gt;
 cd armagetronad&lt;br /&gt;
 ./bootstrap.sh&lt;br /&gt;
 ./configure --enable-armathentication --disable-glout&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
The extra --enable-armathentication is important, authentication is not enabled by default. It is strongly recommended that you install the library [http://zthread.sourceforge.net/ ZThread] before; only with that, the requests to the remote authentication servers will be able to run in the background. Without ZThread, they will be done in the pauses between rounds. ZThread is a bit outdated and does not go well with recent versions of GCC; be sure to get the latest version (2.3.2) and to configure and build it like this (all as root):&lt;br /&gt;
 CXXFLAGS=-fpermissive ./configure --prefix=/usr&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
The &#039;--prefix=/usr&#039; is only required on systems that don&#039;t include /usr/local in /etc/ld.so.conf.&lt;br /&gt;
&lt;br /&gt;
Then, have a look at the&lt;br /&gt;
[http://armagetronad.svn.sourceforge.net/viewvc/armagetronad/armagetronad/branches/0.2.8/armagetronad/config/settings_authentication.cfg?view=markup configration file settings_authentication.cfg], it should tell you how you can configure the system.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
For details of the design of the system and the protocol, check out [[Hash Authentication Design|this document]].&lt;br /&gt;
&lt;br /&gt;
== How to run an Armathentication Server ==&lt;br /&gt;
&lt;br /&gt;
Check it out [[Authentication Server|here]].&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
Back in 2001, when there was not yet a master server, the [http://www.krawall.de/ Krawall Gaming Network] approached Z-Man with a deal. They would run a master server and a couple of permanent game servers, which were pretty rare back then, and also wanted to distribute a special client with a bit of branding. Their condition: players from Germany would only be allowed to use the master server and play on the game servers with an account at Krawall.&lt;br /&gt;
&lt;br /&gt;
Work was begun, a client-server protocol was specified and implemented, but somehow, the two functions only the KGN people could implement (password check and geocheck of the IPs) were never finished.&lt;br /&gt;
&lt;br /&gt;
I found no source for it, but I remember a while back Tank produced a modified client that was able to authenticate over the Krawall protocol with accounts on the forums.&lt;br /&gt;
&lt;br /&gt;
Then, lots of discussion about possible ways to implement authentication were started. Things got quite heated at times, with everyone accusing everyone else that their suggested scheme would not support critical feature X or would not have security propery Y. Here are some relevant threads:&lt;br /&gt;
&lt;br /&gt;
[http://forums.armagetronad.net/viewtopic.php?t=1993 Authentication Thread of Doom]&lt;br /&gt;
&lt;br /&gt;
[http://forums.armagetronad.net/viewtopic.php?t=2029 Distributed Authentication]&lt;br /&gt;
&lt;br /&gt;
[http://forums.armagetronad.net/viewtopic.php?t=18178 XMPP integration]&lt;br /&gt;
&lt;br /&gt;
[http://forums.armagetronad.net/viewtopic.php?t=18176 Krawall style, resulting in the code discussed here]&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>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Talk:Cockpits_list&amp;diff=40832</id>
		<title>Talk:Cockpits list</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Talk:Cockpits_list&amp;diff=40832"/>
		<updated>2012-10-28T21:30:33Z</updated>

		<summary type="html">&lt;p&gt;Epsy: moved Talk:Cockpits list to Talk:Cockpits List: consistency with other page capitalisations&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Talk:Cockpits List]]&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Talk:Cockpits_List&amp;diff=40831</id>
		<title>Talk:Cockpits List</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Talk:Cockpits_List&amp;diff=40831"/>
		<updated>2012-10-28T21:30:33Z</updated>

		<summary type="html">&lt;p&gt;Epsy: moved Talk:Cockpits list to Talk:Cockpits List: consistency with other page capitalisations&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;i like wrtl&#039;s, though i may have to tweek it some... never seen an impact gauge before ehhehe... [[User:2020|2020]] 24 june&lt;br /&gt;
:Then tweak it and give us your tweaked version, if it&#039;s any good I might even decide to use it myself ;)&lt;br /&gt;
:Hint: sign with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;--~~~~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;mdash;~~~~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; :) &amp;amp;mdash;[[User:Wrtlprnft|Wrtlprnft]] 16:34, 24 June 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Cockpits_List&amp;diff=40829</id>
		<title>Cockpits List</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Cockpits_List&amp;diff=40829"/>
		<updated>2012-10-28T21:30:32Z</updated>

		<summary type="html">&lt;p&gt;Epsy: moved Cockpits list to Cockpits List: consistency with other page capitalisations&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of a few cockpit files that are available. You can only use them if you have downloaded a version of Armagetronad later than 0.3.0_alpha4872 and if you know how to use the [[Console]]. Be aware that your use of upper/lowercase for the console command matters. To make your own cockpits see the [[Cockpit Tutorial]].&lt;br /&gt;
&lt;br /&gt;
== Abyss ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Abyss-0.0.1.aacockpit.xml (Screenshot).png|thumb|&lt;br /&gt;
Abyss]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Spidey|Spidey]]&lt;br /&gt;
;Description&lt;br /&gt;
:TODO-Spidey: add this.&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE spidey/abyss-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Link&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/spidey/abyss-0.0.1.aacockpit.xml Version 0.0.1]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Classic ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Classic-0.0.1.aacockpit.xml (Screenshot).png|thumb|&lt;br /&gt;
Classic cockpit]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Wrtlprnft|Wrtlprnft]]&lt;br /&gt;
;Description&lt;br /&gt;
:This cockpit file tries to emulate the cockpit of 0.2.8 as much as possible. It doesn&#039;t include a HUD minimap and uses the traditional needle gauges. Boooooring.&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE wrtlprnft/classic-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Link&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/wrtlprnft/classic-0.0.1.aacockpit.xml Version 0.0.1]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Essential ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Essential-0.0.5_(win).png|thumb|&lt;br /&gt;
Essential (win)]]&lt;br /&gt;
[[Image:Essential-0.0.5_(death+debug).png|thumb|&lt;br /&gt;
Essential (death+debug)]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:rain|rain]]&lt;br /&gt;
;Description&lt;br /&gt;
:Simple, lightweight, or just essential.&lt;br /&gt;
:New version (0.0.5) is finally ready, some layout modifications and some features added. It is working good with aa v0.3_alpha_z1333. Enjoy.&lt;br /&gt;
;Toggle Keys&lt;br /&gt;
:1: hide/view brake and speed labels&lt;br /&gt;
:2: view/hide debug tools (see screenshots...)&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE rain/essential-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE rain/essential-0.0.5.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Link&lt;br /&gt;
:[http://resource.armagetronad.net/resource/rain/essential-0.0.1.aacockpit.xml Version 0.0.1]&lt;br /&gt;
:[http://resource.armagetronad.net/resource/rain/essential-0.0.5.aacockpit.xml Version 0.0.5]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Essential Remix ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Screenshot_78.png|thumb|EssentialRemix v3.6 (alive)]]&lt;br /&gt;
[[Image:Essentialremix-0.3.1.aacockpit002.png|thumb|EssentialRemix v3.6 (death)]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Flex|Flex]]&lt;br /&gt;
;Description&lt;br /&gt;
:A &amp;quot;remix&amp;quot; to rains Essential Cockpit (New homepage at http://flex.armagetron.co.uk/essentialremix/).&lt;br /&gt;
;Toggle Keys (0.3.7)&lt;br /&gt;
*Toggle key 1: Toggle between the top right labels. Time &amp;amp; FPS / Fastest player &amp;amp; Max rubber.&lt;br /&gt;
*Toggle key 2: Show/Hide Minimap.&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE flex/cockpits/essentialremix-0.3.7.aacockpit.xml(http://flex.armagetron.co.uk/resource/flex/cockpits/essentialremix-0.3.7.aacockpit.xml)&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Link&lt;br /&gt;
:[http://flex.armagetron.co.uk/resource/flex/essentialremix-0.3.6.aacockpit.xml Version 0.3.6]&lt;br /&gt;
:[http://flex.armagetron.co.uk/resource/flex/cockpits/essentialremix-0.3.7.aacockpit.xml Version 0.3.7] (Fixed the minimap not working on latest 0.3.x clients.)&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pink ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Pink-0.0.1.aacockpit.xml (Screenshot).png|thumb|&lt;br /&gt;
Pink]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Spidey|Spidey]]&lt;br /&gt;
;Description&lt;br /&gt;
:TODO-Spidey: add this.&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE spidey/pink-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Link&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/spidey/pink-0.0.1.aacockpit.xml Version 0.0.1]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Playroom ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Playground-0.0.1.aacockpit.xml (Screenshot).png|thumb|&lt;br /&gt;
Playground]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Lucifer|Lucifer]]&lt;br /&gt;
;Description&lt;br /&gt;
:This cockpit is designed for fortress play.  All gauges are placed near where your eyes are normally focused so you never have to look far.  Play with it enough and you find you always know your speed, amount of brake, and stuff.  Enemies alive gauge is color-coded to show at a glance whether or not you&#039;re outnumbered.  Look at the gauge itself to see how badly you&#039;re outnumbered, and look at the map to see where everybody is.&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE Lucifer/sick/Playroom-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Skypit ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Skypit-0.0.1.aacockpit.xml.png|thumb|Skypit]]&lt;br /&gt;
;Author&lt;br /&gt;
: LukeSky&lt;br /&gt;
;Description&lt;br /&gt;
:Toggle Key 1 -&amp;gt; Map&lt;br /&gt;
:Toggle Key 2 -&amp;gt; Time/FPS&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE lukesky/skypit-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Link&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/lukesky/skypit-0.0.1.aacockpit.xml Version 0.0.1]&lt;br /&gt;
&amp;lt;div sryle=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Standard Cockpit ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Standard-0.0.1.aacockpit.xml (Screenshot) (1).png|thumb|Standard cockpit in smartcam mode]]&lt;br /&gt;
[[Image:Standard-0.0.1.aacockpit.xml (Screenshot) (2).png|thumb|Standard cockpit in incam mode]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Wrtlprnft|Wrtlprnft]] and [[User:Lucifer|Lucifer]]&lt;br /&gt;
;Description&lt;br /&gt;
:This is the default cockpit in 0.3.0. It has the new HUD map and bar gauges, but displays about the same data as 0.2.8.&lt;br /&gt;
:Try switching to incam mode for a camera tailored to incam playing.&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE Anonymous/standard-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vanoriginal ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Vanoriginal-0.0.1.aacockpit.xml (Screenshot).png|thumb|&lt;br /&gt;
Vanoriginal]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Vanhayes|Vanhayes]]&lt;br /&gt;
;Description&lt;br /&gt;
:I Made all the meters Vertical Bar guages, took out all of the information that was showed in the top right corner except time and FPS, though you can toggle them off.Put the enemies/friends alive meter from incam. You can also toggle off the map If it is in the way and you can toggle on the impact meters, Front left and right.The toggles are cockpit keys: 1(map),2(impact meters), and 5(FPS/Time)&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE Vanhayes/cockpit/vanoriginal-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Link&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/Vanhayes/cockpit/vanoriginal-0.0.1.aacockpit.xml Version 0.0.1]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wrtl&#039;s Cockpit ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Testfile-0.0.1.aacockpit.xml (Screenshot) (1).png|thumb|&lt;br /&gt;
Wrtl&#039;s cockpit with everything at initial state]]&lt;br /&gt;
[[Image:Testfile-0.0.1.aacockpit.xml (Screenshot) (2).png|thumb|&lt;br /&gt;
Wrtl&#039;s cockpit with the HUD map switched off]]&lt;br /&gt;
[[Image:Testfile-0.0.1.aacockpit.xml (Screenshot) (3).png|thumb|&lt;br /&gt;
Wrtl&#039;s cockpit with dimmed 3D rendering]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Wrtlprnft|Wrtlprnft]]&lt;br /&gt;
;Description&lt;br /&gt;
:This is my approach on creating the ultimate cockpit.&lt;br /&gt;
:The huge rubber gauge on the left helps you know instantly how risky you can play and the player information on the top right helps you determine if your help defending is needed.&lt;br /&gt;
:On the bottom right is a special gauge that shows the approximate time to the next impact with a wall, useful if you want to know if you outgrinded someone. You can switch of the big map by pressing the first cockpit key (bind it in global keyboard config) and dim the 3D rendering by pressing the second key—useful for chico maps.&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE wrtlprnft/testfile-0.0.1.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Links&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/wrtlprnft/testfile-0.0.1.aacockpit.xml Version 0.0.1]&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/wrtlprnft/testfile-0.0.3.aacockpit.xml Version 0.0.3—doesn&#039;t work with 0.3.0, will work with 0.3.1]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Xevi&#039;s Cockpit ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Xevi-0.0.3.aacockpit.xml (Screenshot).png|thumb|Xevi&#039;s Cockpit, version 0.0.3]]&lt;br /&gt;
[[Image:Xevi-0.0.4.aacockpit.xml (Screenshot).png|thumb|Xevi&#039;s Cockpit, version 0.0.4]]&lt;br /&gt;
[[Image:Xevi_cockpit_05.JPG|thumb|Xevi&#039;s Cockpit, version 0.0.5]]&lt;br /&gt;
[[Image:Xevi.0.0.7.JPG|thumb|Xevi&#039;s Cockpit, version 0.0.7]]&lt;br /&gt;
;Author&lt;br /&gt;
:[[User:Xevic|Xevi]]&lt;br /&gt;
;Description&lt;br /&gt;
:Some evolutions of the real hud ;) there are also versions 0.0.1 and 0.0.2, but they are just a step to 0.0.3, then there is a couple of evolutions, in 0.0.4 I added wrtl&#039;s impact time widget. Version 0.0.5 adds warning bars, there is one for front impact, another for left and one for right. The new 0.0.6 is a improvement of last one with better look bars and better parameters. News on 7: bars tunning, front impact moved bottom to allow better notice, avoid chat and transparency problems there, new big map switch with toggle 3, now it won&#039;t desappear, it will appear the full screen version.&lt;br /&gt;
Enjoy them.&lt;br /&gt;
;Console Command&lt;br /&gt;
:&amp;lt;code&amp;gt;COCKPIT_FILE xevi/xevi-0.0.7.aacockpit.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
;Resource Repository Links&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/xevi/xevi-0.0.3.aacockpit.xml Version 0.0.3]&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/xevi/xevi-0.0.4.aacockpit.xml Version 0.0.4]&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/xevi/xevi-0.0.5.aacockpit.xml Version 0.0.5]&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/xevi/xevi-0.0.6.aacockpit.xml Version 0.0.6]&lt;br /&gt;
:[http://beta.armagetronad.net/resource-browser/resource/xevi/xevi-0.0.7.aacockpit.xml Version 0.0.7]&lt;br /&gt;
:[http://crazy-tronners.com/resource/xevi/xevi-0.0.8.aacockpit.xml Version 0.0.8] -&amp;gt; last version on 0.3.0&lt;br /&gt;
:[http://crazy-tronners.com/resource/xevi/xevi-0.0.9.aacockpit.xml Version 0.0.9] -&amp;gt; minimap 0.3.1 ready.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client Features]]&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Cockpits&amp;diff=40828</id>
		<title>Cockpits</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Cockpits&amp;diff=40828"/>
		<updated>2012-10-28T21:29:31Z</updated>

		<summary type="html">&lt;p&gt;Epsy: created introductory page linking to the other currently available cockpit pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cockpit files are what define the game&#039;s HUD. In version 0.4.0, and in current development builds, you can use this kind of files to replace the default HUD.&lt;br /&gt;
&lt;br /&gt;
;[[Cockpits List]]&lt;br /&gt;
:A list of user-submitted cockpits&lt;br /&gt;
;[[Cockpit Tutorial]]&lt;br /&gt;
:How to make a cockpit from nothing&lt;br /&gt;
;[[Cockpit Reference]]&lt;br /&gt;
:Everything about cockpits from A to Z&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Cockpit&amp;diff=40827</id>
		<title>Cockpit</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Cockpit&amp;diff=40827"/>
		<updated>2012-10-28T20:56:18Z</updated>

		<summary type="html">&lt;p&gt;Epsy: create redirect to cockpits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Cockpits]]&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Template:WarSumoBrackets12&amp;diff=40729</id>
		<title>Template:WarSumoBrackets12</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Template:WarSumoBrackets12&amp;diff=40729"/>
		<updated>2012-10-21T17:10:50Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Fixed times to match the table beforehand&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WarSumoBracket2 | RD1=Opening Round (17:15 GMT)&lt;br /&gt;
|RD2=First Round (18:15 GMT)&lt;br /&gt;
| RD3=Quarterfinals (19:00 GMT)&lt;br /&gt;
| RD4=Semi Finals (19:45 GMT)&lt;br /&gt;
| RD5=Finals (20:30 GMT)&lt;br /&gt;
| group1=&lt;br /&gt;
| group2=&lt;br /&gt;
| group3=&lt;br /&gt;
| subgroup1=&lt;br /&gt;
| subgroup2=&lt;br /&gt;
| subgroup3=&lt;br /&gt;
| subgroup4=&lt;br /&gt;
| team-width=220&lt;br /&gt;
&lt;br /&gt;
| RD1-server01=&lt;br /&gt;
| RD1-team01=Addicted Animals&lt;br /&gt;
| RD1-score01=&lt;br /&gt;
| RD1-team02=~Bye 8~&lt;br /&gt;
| RD1-score02=&lt;br /&gt;
&lt;br /&gt;
| RD1-server02=RoadRunnerz #1  &lt;br /&gt;
| RD1-team03=What&lt;br /&gt;
| RD1-score03=&lt;br /&gt;
| RD1-team04=Dark Hordes&lt;br /&gt;
| RD1-score04=&lt;br /&gt;
&lt;br /&gt;
| RD1-server03=Z-man&#039;s&lt;br /&gt;
| RD1-team05=Cheers Crew&lt;br /&gt;
| RD1-score05=&lt;br /&gt;
| RD1-team06=Wonder Pets&lt;br /&gt;
| RD1-score06=&lt;br /&gt;
&lt;br /&gt;
| RD1-server04=&lt;br /&gt;
| RD1-team07=~Bye 1~&lt;br /&gt;
| RD1-score07=&lt;br /&gt;
| RD1-team08=Redemption/%&lt;br /&gt;
| RD1-score08=&lt;br /&gt;
&lt;br /&gt;
| RD1-server05=&lt;br /&gt;
| RD1-team09=_~`Wild West_&lt;br /&gt;
| RD1-score09=&lt;br /&gt;
| RD1-team10=~Bye 4~&lt;br /&gt;
| RD1-score10=&lt;br /&gt;
&lt;br /&gt;
| RD1-server06=RoadRunnerz #2 &lt;br /&gt;
| RD1-team11=Music Lovers&lt;br /&gt;
| RD1-score11=&lt;br /&gt;
| RD1-team12=Spice Girls&lt;br /&gt;
| RD1-score12=&lt;br /&gt;
&lt;br /&gt;
| RD1-server07=WST UK 001&lt;br /&gt;
| RD1-team13=\\african wildlyf&lt;br /&gt;
| RD1-score13=&lt;br /&gt;
| RD1-team14=Famous Wizards&lt;br /&gt;
| RD1-score14=&lt;br /&gt;
&lt;br /&gt;
| RD1-server08=&lt;br /&gt;
| RD1-team15=~Bye 5~&lt;br /&gt;
| RD1-score15=&lt;br /&gt;
| RD1-team16=_~`The Rest of the West&lt;br /&gt;
| RD1-score16=&lt;br /&gt;
&lt;br /&gt;
| RD1-server09=&lt;br /&gt;
| RD1-team17=Matrix&lt;br /&gt;
| RD1-score17=&lt;br /&gt;
| RD1-team18=~Bye 6~&lt;br /&gt;
| RD1-score18=&lt;br /&gt;
&lt;br /&gt;
| RD1-server10=CT USA &lt;br /&gt;
| RD1-team19=rZ`&lt;br /&gt;
| RD1-score19=&lt;br /&gt;
| RD1-team20=Fox River 3&lt;br /&gt;
| RD1-score20=&lt;br /&gt;
&lt;br /&gt;
| RD1-server11=CT LIV &lt;br /&gt;
| RD1-team21=Littles&lt;br /&gt;
| RD1-score21=&lt;br /&gt;
| RD1-team22=Wild and Westless&lt;br /&gt;
| RD1-score22=&lt;br /&gt;
&lt;br /&gt;
| RD1-server12=&lt;br /&gt;
| RD1-team23=~Bye 3~&lt;br /&gt;
| RD1-score23=&lt;br /&gt;
| RD1-team24=ReDamnnnSon/%&lt;br /&gt;
| RD1-score24=&lt;br /&gt;
&lt;br /&gt;
| RD1-server13=&lt;br /&gt;
| RD1-team25=Hobos&lt;br /&gt;
| RD1-score25=&lt;br /&gt;
| RD1-team26=~Bye 2~&lt;br /&gt;
| RD1-score26=&lt;br /&gt;
&lt;br /&gt;
| RD1-server14=WST US&lt;br /&gt;
| RD1-team27=Blood Meridian&lt;br /&gt;
| RD1-score27=&lt;br /&gt;
| RD1-team28=Rz`2&lt;br /&gt;
| RD1-score28=&lt;br /&gt;
&lt;br /&gt;
| RD1-server15=Ww 3 &lt;br /&gt;
| RD1-team29=\\dino babies&lt;br /&gt;
| RD1-score29=&lt;br /&gt;
| RD1-team30=Speeders&lt;br /&gt;
| RD1-score30=&lt;br /&gt;
&lt;br /&gt;
| RD1-server16=&lt;br /&gt;
| RD1-team31=~Bye 7~&lt;br /&gt;
| RD1-score31=&lt;br /&gt;
| RD1-team32=_~R~_&lt;br /&gt;
| RD1-score32=&lt;br /&gt;
&lt;br /&gt;
| RD2-server01=RoadRunnerz #1&lt;br /&gt;
| RD2-team01=&lt;br /&gt;
| RD2-score01=&lt;br /&gt;
| RD2-team02=&lt;br /&gt;
| RD2-score02=&lt;br /&gt;
&lt;br /&gt;
| RD2-server02=Z-man&#039;s&lt;br /&gt;
| RD2-team03=&lt;br /&gt;
| RD2-score03=&lt;br /&gt;
| RD2-team04=&lt;br /&gt;
| RD2-score04=&lt;br /&gt;
&lt;br /&gt;
| RD2-server03=RoadRunnerz #2&lt;br /&gt;
| RD2-team05=&lt;br /&gt;
| RD2-score05=&lt;br /&gt;
| RD2-team06=&lt;br /&gt;
| RD2-score06=&lt;br /&gt;
&lt;br /&gt;
| RD2-server04=WST UK 001&lt;br /&gt;
| RD2-team07=&lt;br /&gt;
| RD2-score07=&lt;br /&gt;
| RD2-team08=&lt;br /&gt;
| RD2-score08=&lt;br /&gt;
&lt;br /&gt;
| RD2-server05=CT USA&lt;br /&gt;
| RD2-team09=&lt;br /&gt;
| RD2-score09=&lt;br /&gt;
| RD2-team10= &lt;br /&gt;
| RD2-score10=&lt;br /&gt;
&lt;br /&gt;
| RD2-server06=CT LIV&lt;br /&gt;
| RD2-team11=&lt;br /&gt;
| RD2-score11=&lt;br /&gt;
| RD2-team12=&lt;br /&gt;
| RD2-score12=&lt;br /&gt;
&lt;br /&gt;
| RD2-server07=WST US&lt;br /&gt;
| RD2-team13=&lt;br /&gt;
| RD2-score13=&lt;br /&gt;
| RD2-team14=&lt;br /&gt;
| RD2-score14=&lt;br /&gt;
&lt;br /&gt;
| RD2-server08=Ww 3&lt;br /&gt;
| RD2-team15=&lt;br /&gt;
| RD2-score15=&lt;br /&gt;
| RD2-team16=&lt;br /&gt;
| RD2-score16=&lt;br /&gt;
&lt;br /&gt;
| RD3-server01-1=Z-man&#039;s&lt;br /&gt;
| RD3-server01-2=RoadRunnerz #1&lt;br /&gt;
| RD3-team01=&lt;br /&gt;
| RD3-score01=&lt;br /&gt;
| RD3-team02=&lt;br /&gt;
| RD3-score02=&lt;br /&gt;
&lt;br /&gt;
| RD3-server02-1=RoadRunnerz #2&lt;br /&gt;
| RD3-server02-2=WST UK 001&lt;br /&gt;
| RD3-team03=&lt;br /&gt;
| RD3-score03=&lt;br /&gt;
| RD3-team04=&lt;br /&gt;
| RD3-score04=&lt;br /&gt;
&lt;br /&gt;
| RD3-server03-1=CT LIV&lt;br /&gt;
| RD3-server03-2=CT USA&lt;br /&gt;
| RD3-team05=&lt;br /&gt;
| RD3-score05=&lt;br /&gt;
| RD3-team06=&lt;br /&gt;
| RD3-score06=&lt;br /&gt;
&lt;br /&gt;
| RD3-server04-1=WST US&lt;br /&gt;
| RD3-server04-2=Ww 3&lt;br /&gt;
| RD3-team07=&lt;br /&gt;
| RD3-score07=&lt;br /&gt;
| RD3-team08=&lt;br /&gt;
| RD3-score08=1&lt;br /&gt;
&lt;br /&gt;
| RD4-server01-1=Z-man&#039;s&lt;br /&gt;
| RD4-server01-2=RoadRunnerz #2&lt;br /&gt;
| RD4-team01=&lt;br /&gt;
| RD4-score01=&lt;br /&gt;
| RD4-team02=&lt;br /&gt;
| RD4-score02=&lt;br /&gt;
&lt;br /&gt;
| RD4-server02-1=WST US&lt;br /&gt;
| RD4-server02-2=CT LIV&lt;br /&gt;
| RD4-team03=&lt;br /&gt;
| RD4-score03=&lt;br /&gt;
| RD4-team04=&lt;br /&gt;
| RD4-score04=&lt;br /&gt;
&lt;br /&gt;
| RD5-server01-1=Z-man&#039;s&lt;br /&gt;
| RD5-server01-2=WST US&lt;br /&gt;
| RD5-team01=&lt;br /&gt;
| RD5-score01=&lt;br /&gt;
| RD5-team02=&lt;br /&gt;
| RD5-score02=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Ladle/Challenge_Board&amp;diff=39808</id>
		<title>Ladle/Challenge Board</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Ladle/Challenge_Board&amp;diff=39808"/>
		<updated>2012-07-25T00:27:09Z</updated>

		<summary type="html">&lt;p&gt;Epsy: /* Subculture */ Fixed link to my server browser&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Ladle/Blurb}}&lt;br /&gt;
&lt;br /&gt;
==Signing Up==&lt;br /&gt;
Please post your team name and the players who will play for your team below. If you&#039;re confused on how to do so, look at the examples below. You may also create a wiki page for your team. Placement on the Bracket is done randomly the Thursday before the Ladle.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{LadleTeam|Your Team Name|Team Captain&#039;s Name|Team Captain&#039;s Global ID|Teammate 1, Teammate 2, ...|Wiki Page Name}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{LadleTeamExternal|Your Team Name|Team Captain&#039;s Name|Team Captain&#039;s Global ID|Teammate 1, Teammate 2, ...|http://teamwebsite.com}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
For more information, see [[Template:LadleTeam]] or [[Template:LadleTeamExternal]]. Make collecting authorities easier with [http://www.adventuresoftron.com/ this tool].&lt;br /&gt;
&lt;br /&gt;
By signing up you agree to follow the [[Ladle/Operations#Rules_for_players|Rules]]. Rule breakers may be subject to disciplinary action. Team Captains, please be up to date on [[Ladle/Operations#How_the_Ladle_Works|how the Ladle works]] as well.&lt;br /&gt;
&lt;br /&gt;
==Teams==&lt;br /&gt;
{{LadleTeamExternal|Pure Luck|Slick, Ritsuka|Slickster@forums, Ritsuka@forums|zat, algid, Mac&amp;amp;Cheese, rugkei, liz, vov, Kuba, bilbo, Loki, hypnosis, Hallucinate, DaWg, Pyrriah |http://www.pureluckclan.tk/}}&lt;br /&gt;
{{LadleTeamExternal|Wild West|Ratchet|Ratchet@forums|TBA |http://www.lagtest.net}}&lt;br /&gt;
{{LadleTeamExternal|RoadRunnerZ|Zero, Vinny|0000@forums, Vinny@roadrunnerz.net|Chop, Misny, Rotc, Siege, Soar, Vital|http://roadrunnerz.net}}&lt;br /&gt;
&lt;br /&gt;
==Challenge Board==&lt;br /&gt;
&lt;br /&gt;
===Brackets===&lt;br /&gt;
*All games are best of 3 matches (the first team to win 2 matches advances to the next round).&lt;br /&gt;
*All finals are played in the server listed in &#039;&#039;&#039;bold&#039;&#039;&#039;. Teams may agree to move to the backup server if there is a regional preference or problem with the primary server.&amp;lt;br /&amp;gt;&lt;br /&gt;
To change brackets, edit [[Template:Ladle60Bracket]]&lt;br /&gt;
&lt;br /&gt;
{{Ladle60Bracket}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Times===&lt;br /&gt;
{{:Ladle/SummerTimes}} &amp;lt;!-- November - March) --&amp;gt;&lt;br /&gt;
&amp;lt;!--{{:Ladle/WinterTimes}}--&amp;gt; &amp;lt;!--(April-October)--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Servers==&lt;br /&gt;
Admins, by offering your server you agree to abide by the [[Ladle/Operations#Rules_for_server_owners_.26_operators|Rules for server owners and operators]]. It is also advisable that you are up to date on [[Ladle/Operations#How_the_Ladle_Works|how the Ladle works]] as well. Thank you.&lt;br /&gt;
&lt;br /&gt;
===Server Configuration===&lt;br /&gt;
*Please review the changes [http://forums3.armagetronad.net/viewtopic.php?p=209381#p209381 here].&lt;br /&gt;
 RINCLUDE ladle/ladle49.cfg(http://crazy-tronners.com/resource/ladle/ladle49.cfg)&lt;br /&gt;
 RINCLUDE ladle/ladle60_authorities.cfg(http://crazy-tronners.com/resource/ladle/ladle60_authorities.cfg)&lt;br /&gt;
 SERVER_NAME 0x7fff7fLadle 60 0xff7f7f(0x7f7fffPlayer 1&#039;s Server0xff7f7f)&lt;br /&gt;
&lt;br /&gt;
===Server List===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{LadleServer|Your server name|ip|port|Location|[http://serverwebsite.com http://serverwebsite.com]}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;Europe&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
{{:Ladle/Permanent Servers Europe}}&lt;br /&gt;
{{LadleServer|dlh&#039;s NL|72.251.241.155|4534|Netherlands|[[User:Dlh|dlh]]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Place Euro servers in here on reset&lt;br /&gt;
{{LadleServer|ID&#039;s Ireland|46.137.26.229|4535|Ireland(EU)|[[User talk:compguygene|compguygene]]}}&lt;br /&gt;
{{LadleServer|uNk&#039;s|unk.me|4538|Germany (EU)|[http://forums.unk.me noob13/Jip]}}&lt;br /&gt;
{{LadleServer|PhX UK|85.243.147.28|4536|United Kingdon (EU)|[http://Phoenix-clan.org Phoenix]}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;US &amp;amp; Others&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
{{:Ladle/Permanent Servers US}}&lt;br /&gt;
{{LadleServer|dlh&#039;s USA|72.251.217.58|4534|New York City, USA|[[User:Dlh|dlh]]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Place US/Other servers in here on reset&lt;br /&gt;
&lt;br /&gt;
{{LadleServer|TeamElite|64.79.107.14|4541|NorthCarolina (US)|[[User:Loki|Loki]]}}&lt;br /&gt;
{{LadleServer|Tweezy|184.22.204.209|4534|Pennsylvania (US)|[[User talk:Tweezy|Tweezy]]}}&lt;br /&gt;
{{LadleServer|ID&#039;s VA1|10.117.49.162|4535|Virginia (US)|[[User talk:compguygene|compguygene]]}}&lt;br /&gt;
{{LadleServer|ID&#039;s VA2|50.19.152.214|4535|Virginia (US)|[[User talk:compguygene|compguygene]]}}&lt;br /&gt;
{{LadleServer|ID&#039;s VA3|10.210.34.191|4535|Virginia (US)|[[User talk:compguygene|compguygene]]}}&lt;br /&gt;
{{LadleServer|ID&#039;s VA4|50.19.66.133|4535|Virginia (US)|[[User talk:compguygene|compguygene]]}}&lt;br /&gt;
{{LadleServer|Team Elite&#039;s|65.18.193.128|4535| Connecticut (US)|[[User talk:Dorit0Z|Dorit0Z]]}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subculture===&lt;br /&gt;
&lt;br /&gt;
* [http://forums3.armagetronad.net/viewtopic.php?f=60&amp;amp;t=19311 Subculture]&lt;br /&gt;
* [http://browser.hashpickup.net/#filter_empty%3Dtrue%3Bfilter_re_name%3DLadle%20%5C%5Cd%2B epsy&#039;s Online Server Browser]&lt;br /&gt;
* [http://generalconsumption.org/armagetronad/ladle dlh&#039;s Online Server Browser]&lt;br /&gt;
&lt;br /&gt;
==Recordings/Screenshots==&lt;br /&gt;
Post all recordings/screenshots that you have of the ladle here, along with the names of the two teams in the match:&lt;br /&gt;
&lt;br /&gt;
* http://    - TeamA vs TeamB&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Authentication_Groups_Draft&amp;diff=38555</id>
		<title>Authentication Groups Draft</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Authentication_Groups_Draft&amp;diff=38555"/>
		<updated>2012-04-02T00:07:28Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Added a clause on how the server should handle refreshes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Things that were bad==&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Group&amp;quot; authentication (subdirectories):&lt;br /&gt;
** Terrible usability: One must specifically authenticate to the subgroup for it to work, or the authority has to do arbitrary guesswork.&lt;br /&gt;
*** ie. &amp;lt;code&amp;gt;/login user@authority/directory&amp;lt;/code&amp;gt;&lt;br /&gt;
*** As for authority guesswork, they can currently guess from the server&#039;s IP. The remote port data at this point is irrelevant, and the IP can be hidden by a proxy authority.&lt;br /&gt;
** Inability to express multiple groups&lt;br /&gt;
* Web Auth&lt;br /&gt;
** Needs DB access on the consumer end. Could be avoided&lt;br /&gt;
** Disabled by default in the reference implementations. Next to no adoption on the authority end.&lt;br /&gt;
** Only interfaces with websites specifically designed for it (read: none)&lt;br /&gt;
&lt;br /&gt;
==Improvements that can be conducted==&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Group&amp;quot; authentication===&lt;br /&gt;
&lt;br /&gt;
====Group preference====&lt;br /&gt;
&lt;br /&gt;
The server could take a list of preferred authorities/groups and forward it to the authorities. The setting would be optional.&lt;br /&gt;
&lt;br /&gt;
 PREFER_AUTHORITIES authority...&lt;br /&gt;
 PREFER_AUTHORITIES ct/senior x/ctseniors x/ctoverseniors&lt;br /&gt;
&lt;br /&gt;
When authentifying someone, the server can send the applicable authorities(same host) with the check requestas a &amp;lt;code&amp;gt;prefer&amp;lt;/code&amp;gt; parameter. For instance, when querying &amp;lt;code&amp;gt;x.authentication.armagetronad.net&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /armaauth/0.1/?query=check&amp;amp;method=md5user=john&amp;amp;hash=abcd&amp;amp;salt=efgh&amp;amp;prefer=ctseniors&amp;amp;prefer=ctoverseniors&lt;br /&gt;
&lt;br /&gt;
The authority respond with the first group in the list that the user is allowed into.&lt;br /&gt;
&lt;br /&gt;
Additionally, the server can provide a setting that would automatically provide group preferences based on &amp;quot;best&amp;quot; AUTHORITY_LEVEL settings. Similar to &amp;lt;code&amp;gt;/listadmins&amp;lt;/code&amp;gt;, this poses a moderate security threat, advertising what authorities grant high access, so this should be disabled by default.&lt;br /&gt;
&lt;br /&gt;
 PREFER_AUTHORITIES_AUTO 1&lt;br /&gt;
 AUTHORITY_LEVEL ct/senior 2&lt;br /&gt;
 AUTHORITY_LEVEL x/ctsenior 2&lt;br /&gt;
 AUTHORITY_LEVEL x/ctoversenior 1&lt;br /&gt;
&lt;br /&gt;
 /armaauth/0.1/?query=check&amp;amp;method=md5&amp;amp;user=johnhash=abcd&amp;amp;salt=efgh&amp;amp;prefer=ctoverseniors&amp;amp;prefer=ctseniors&lt;br /&gt;
&lt;br /&gt;
An authority could &amp;quot;abuse&amp;quot; this system to voluntarily return different authorities than those requested. This could be used to create server tokens. For example:&lt;br /&gt;
&lt;br /&gt;
 PREFER_AUTHORITIES x/tournaments/ladle/servers/myserver&lt;br /&gt;
 AUTHORITY_LEVEL x/tournaments/players/playing 8&lt;br /&gt;
 AUTHORITY_LEVEL x/tournaments/players/captain 7&lt;br /&gt;
&lt;br /&gt;
If it were the time for the finals, the authority could identify &amp;quot;myserver&amp;quot; as referring to the server used in the finals, and identify each player as playing or captain or neither, at login time.&lt;br /&gt;
&lt;br /&gt;
===Updating preferences===&lt;br /&gt;
&lt;br /&gt;
If the preferences have changed while people are in the server, it might be in the best interest of everyone to update the current players&#039; status. Of course, everyone could log out and back in, but that&#039;s very impractical.&lt;br /&gt;
&lt;br /&gt;
I suggest instead a mass update mechanism, by sending a bulk query to each authority. For instance:&lt;br /&gt;
&lt;br /&gt;
 /armaauth/0.1/?query=refresh&amp;amp;prefer=tournaments/ladle/servers/myserver&amp;amp;users=john&amp;amp;users=may&amp;amp;users=jack&lt;br /&gt;
&lt;br /&gt;
The server may merge all queries to one per authentication host. The authority responds:&lt;br /&gt;
&lt;br /&gt;
 USER john@x/tournaments/players/playing&lt;br /&gt;
 USER may@x/tournaments/players/captain&lt;br /&gt;
 USER jack@x/tournaments/players&lt;br /&gt;
&lt;br /&gt;
In case a user is not found, the authority should replace the corresponding USER line with:&lt;br /&gt;
&lt;br /&gt;
 USER_NOT_FOUND username&lt;br /&gt;
&lt;br /&gt;
This system can be otherwise used to check player GIDs. If it matters, a client should be able to override the server time like such:&lt;br /&gt;
&lt;br /&gt;
 /armaauth/0.1/?query=refresh&amp;amp;prefer=tournaments/ladle/servers/myserver&amp;amp;users=john&amp;amp;users=may&amp;amp;users=jack&amp;amp;time=1333333333&lt;br /&gt;
&lt;br /&gt;
On the server end, the server should change the players&#039; GIDs accordingly, elevating players where relevant.&lt;br /&gt;
&lt;br /&gt;
The server could initiate such a refresh at the command of a server admin, or before every new warmup(side note: the warmup system allows for multiple matches to be played simultaneously). All priviledges could also be first revoked at first on such an occasion, for instance for resetting temporary captains.&lt;br /&gt;
&lt;br /&gt;
==Web Authentication==&lt;br /&gt;
&lt;br /&gt;
===OpenID===&lt;br /&gt;
&lt;br /&gt;
OpenID would standardize the process into something that has software already available for it. This would result in making it an easier process to convert software to consume OpenIDs. It would be signaled as &amp;quot;openid&amp;quot; in the METHODS response. More info TBD.&lt;br /&gt;
&lt;br /&gt;
==Actually use MESSAGE==&lt;br /&gt;
&lt;br /&gt;
The server would print the message to the client.&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Authentication_Groups_Draft&amp;diff=38554</id>
		<title>Authentication Groups Draft</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Authentication_Groups_Draft&amp;diff=38554"/>
		<updated>2012-04-01T23:50:07Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Things that were bad==&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Group&amp;quot; authentication (subdirectories):&lt;br /&gt;
** Terrible usability: One must specifically authenticate to the subgroup for it to work, or the authority has to do arbitrary guesswork.&lt;br /&gt;
*** ie. &amp;lt;code&amp;gt;/login user@authority/directory&amp;lt;/code&amp;gt;&lt;br /&gt;
*** As for authority guesswork, they can currently guess from the server&#039;s IP. The remote port data at this point is irrelevant, and the IP can be hidden by a proxy authority.&lt;br /&gt;
** Inability to express multiple groups&lt;br /&gt;
* Web Auth&lt;br /&gt;
** Needs DB access on the consumer end. Could be avoided&lt;br /&gt;
** Disabled by default in the reference implementations. Next to no adoption on the authority end.&lt;br /&gt;
** Only interfaces with websites specifically designed for it (read: none)&lt;br /&gt;
&lt;br /&gt;
==Improvements that can be conducted==&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Group&amp;quot; authentication===&lt;br /&gt;
&lt;br /&gt;
====Group preference====&lt;br /&gt;
&lt;br /&gt;
The server could take a list of preferred authorities/groups and forward it to the authorities. The setting would be optional.&lt;br /&gt;
&lt;br /&gt;
 PREFER_AUTHORITIES authority...&lt;br /&gt;
 PREFER_AUTHORITIES ct/senior x/ctseniors x/ctoverseniors&lt;br /&gt;
&lt;br /&gt;
When authentifying someone, the server can send the applicable authorities(same host) with the check requestas a &amp;lt;code&amp;gt;prefer&amp;lt;/code&amp;gt; parameter. For instance, when querying &amp;lt;code&amp;gt;x.authentication.armagetronad.net&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /armaauth/0.1/?query=check&amp;amp;method=md5user=john&amp;amp;hash=abcd&amp;amp;salt=efgh&amp;amp;prefer=ctseniors&amp;amp;prefer=ctoverseniors&lt;br /&gt;
&lt;br /&gt;
The authority respond with the first group in the list that the user is allowed into.&lt;br /&gt;
&lt;br /&gt;
Additionally, the server can provide a setting that would automatically provide group preferences based on &amp;quot;best&amp;quot; AUTHORITY_LEVEL settings. Similar to &amp;lt;code&amp;gt;/listadmins&amp;lt;/code&amp;gt;, this poses a moderate security threat, advertising what authorities grant high access, so this should be disabled by default.&lt;br /&gt;
&lt;br /&gt;
 PREFER_AUTHORITIES_AUTO 1&lt;br /&gt;
 AUTHORITY_LEVEL ct/senior 2&lt;br /&gt;
 AUTHORITY_LEVEL x/ctsenior 2&lt;br /&gt;
 AUTHORITY_LEVEL x/ctoversenior 1&lt;br /&gt;
&lt;br /&gt;
 /armaauth/0.1/?query=check&amp;amp;method=md5&amp;amp;user=johnhash=abcd&amp;amp;salt=efgh&amp;amp;prefer=ctoverseniors&amp;amp;prefer=ctseniors&lt;br /&gt;
&lt;br /&gt;
An authority could &amp;quot;abuse&amp;quot; this system to voluntarily return different authorities than those requested. This could be used to create server tokens. For example:&lt;br /&gt;
&lt;br /&gt;
 PREFER_AUTHORITIES x/tournaments/ladle/servers/myserver&lt;br /&gt;
 AUTHORITY_LEVEL x/tournaments/players/playing 8&lt;br /&gt;
 AUTHORITY_LEVEL x/tournaments/players/captain 7&lt;br /&gt;
&lt;br /&gt;
If it were the time for the finals, the authority could identify &amp;quot;myserver&amp;quot; as referring to the server used in the finals, and identify each player as playing or captain or neither, at login time.&lt;br /&gt;
&lt;br /&gt;
===Updating preferences===&lt;br /&gt;
&lt;br /&gt;
If the preferences have changed while people are in the server, it might be in the best interest of everyone to update the current players&#039; status. Of course, everyone could log out and back in, but that&#039;s very impractical.&lt;br /&gt;
&lt;br /&gt;
I suggest instead a mass update mechanism, by sending a bulk query to each authority. For instance:&lt;br /&gt;
&lt;br /&gt;
 /armaauth/0.1/?query=refresh&amp;amp;prefer=tournaments/ladle/servers/myserver&amp;amp;users=john&amp;amp;users=may&amp;amp;users=jack&lt;br /&gt;
&lt;br /&gt;
The server may merge all queries to one per authentication host. The authority responds:&lt;br /&gt;
&lt;br /&gt;
 USER john@x/tournaments/players/playing&lt;br /&gt;
 USER may@x/tournaments/players/captain&lt;br /&gt;
 USER jack@x/tournaments/players&lt;br /&gt;
&lt;br /&gt;
In case a user is not found, the authority should replace the corresponding USER line with:&lt;br /&gt;
&lt;br /&gt;
 USER_NOT_FOUND username&lt;br /&gt;
&lt;br /&gt;
This system can be otherwise used to check player GIDs. If it matters, a client should be able to override the server time like such:&lt;br /&gt;
&lt;br /&gt;
 /armaauth/0.1/?query=refresh&amp;amp;prefer=tournaments/ladle/servers/myserver&amp;amp;users=john&amp;amp;users=may&amp;amp;users=jack&amp;amp;time=1333333333&lt;br /&gt;
&lt;br /&gt;
==Web Authentication==&lt;br /&gt;
&lt;br /&gt;
===OpenID===&lt;br /&gt;
&lt;br /&gt;
OpenID would standardize the process into something that has software already available for it. This would result in making it an easier process to convert software to consume OpenIDs. It would be signaled as &amp;quot;openid&amp;quot; in the METHODS response. More info TBD.&lt;br /&gt;
&lt;br /&gt;
==Actually use MESSAGE==&lt;br /&gt;
&lt;br /&gt;
The server would print the message to the client.&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Authentication&amp;diff=38553</id>
		<title>Authentication</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Authentication&amp;diff=38553"/>
		<updated>2012-04-01T22:34:26Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Oops, fixed a typo in the link.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;This is a development document. You may find information about the current authentication systems on [[Authentication for Players]].&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several possible ways of doing authentication are listed here.&lt;br /&gt;
&lt;br /&gt;
== IM Based ==&lt;br /&gt;
&lt;br /&gt;
Read about how we could profit from the work of others by abusing instant message systems in [[XMPP Based Authentication]].&lt;br /&gt;
&lt;br /&gt;
== Full Blown ==&lt;br /&gt;
&lt;br /&gt;
On the forum, a way to handle authentication with full fledged security and privacy has been worked out. It is based on public key cryptography and allows central or decentral player account management. Read about it in [[Key  Based Authentication]]. Meriton has suggested another approach: [[Distributed Authentification Using Digital Signatures]].&lt;br /&gt;
&lt;br /&gt;
== Test Balloon ==&lt;br /&gt;
&lt;br /&gt;
Since the full blown protocol uses features not yet included in the game and is rather involved, an alternative, easier to implement scheme has been suggested. The drawback: It is vulnerable against attackers who can intercept and modify network communications. It&#039;s not that bad, being able to listen to network traffic alone is not enough. Read about it in [[Hash Based Authentication]].&lt;br /&gt;
&lt;br /&gt;
Disadvantages over key based scheme:&lt;br /&gt;
* Less privacy, the authentication server is contacted on every login&lt;br /&gt;
* Less security, it suffices if an attacker can intercept and take over communication between the game and authentication server to log in as anyone. In the key based scheme, the attacker needs to steal the authority&#039;s private key.&lt;br /&gt;
* It does not support self-signed login where the fact that you&#039;re playing on a certain machine is taken as enough authentication.&lt;br /&gt;
&lt;br /&gt;
Advantage:&lt;br /&gt;
* It&#039;s so simple we should be able to supply it as a patch to 0.2.8.&lt;br /&gt;
&lt;br /&gt;
== What&#039;s Already There ==&lt;br /&gt;
&lt;br /&gt;
Complete support for password verification is already built in into every client, and with the configure option --enable-krawall, server code that triggers it is activated on the server. What is missing is a function that actually retrieves the right password for a player. The test balloon would reuse it to minimize work to be done and to allow existing clients to participate.&lt;br /&gt;
&lt;br /&gt;
Authentication there is handled like this:&lt;br /&gt;
* The client connects to the server as usual, sending the player&#039;s data, among that the player name.&lt;br /&gt;
* The server generates some random data (the salt) and sends it along with an authentication request to the client.&lt;br /&gt;
* The client takes a MD5 hash of the password, appends the salt and does another MD5 checksum of the combined data (that&#039;s called scrambling, and the MD5 hash of the password is called an egg).&lt;br /&gt;
* The client sends the resulted scrambled egg MD5 hash back to the server.&lt;br /&gt;
* The server has done the same operation on the MD5 hash of the password from the player database (The retrieval of that is the missing bit) and compares the result with what it gets from the client. If the results match, the client is authorized to use that player name.&lt;br /&gt;
&lt;br /&gt;
== How To Set Up Authentication ==&lt;br /&gt;
Read the file &amp;lt;code&amp;gt;settings_authentication.cfg&amp;lt;/code&amp;gt; in your [[Configuration Files]] directory for more details.&lt;br /&gt;
&lt;br /&gt;
In short: One can configure the 0.3.x (perhaps even 0.2.8.x) server in a way, so that users can use their forum&#039;s user name and password for authenticating on your server. To aquire this, create a file &amp;lt;code&amp;gt;/etc/armagetronad-dedicated/server_info.cfg&amp;lt;/code&amp;gt;, enable GLOBAL_ID 1 and assign a USER_LEVEL &amp;lt;username&amp;gt;@forums &amp;lt;level&amp;gt;. To login, type &amp;quot;/login forums&amp;quot; when connected to the server in-game (Using the menu didn&#039;t work for me).&lt;br /&gt;
&lt;br /&gt;
You can define &amp;quot;local users&amp;quot;, too, if you don&#039;t want to use external sources for authentication (Or if you just have no forum account). This would require these two settings: LOCAL_USER &amp;lt;name&amp;gt; &amp;lt;password&amp;gt;  and  USER_LEVEL &amp;lt;name&amp;gt;@ &amp;lt;level&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example server_info.cfg ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GLOBAL_ID   1                      # Enable external authentication authorities&lt;br /&gt;
USER_LEVEL  itsme@forums  0        # Grant user &amp;quot;itsme&amp;quot; from forums.armagetronad.net &amp;quot;Owner&amp;quot; privileges&lt;br /&gt;
                                   # Login in-game by typing:  /login forums&lt;br /&gt;
&lt;br /&gt;
TRUST_LAN   1                      # Allow login via local network (LAN)&lt;br /&gt;
LOCAL_USER  itsme   superpassword  # Define username and password&lt;br /&gt;
USER_LEVEL  itsme@  0              # Grant &amp;quot;Owner&amp;quot; privileges&lt;br /&gt;
                                   # Login in-game by using the Authentication menu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Authentication&amp;diff=38552</id>
		<title>Authentication</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Authentication&amp;diff=38552"/>
		<updated>2012-04-01T22:33:26Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Added a link to Authentication For Players&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;This is a development document. You may find information about the current authentication systems on [[Authentication For Players]].&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several possible ways of doing authentication are listed here.&lt;br /&gt;
&lt;br /&gt;
== IM Based ==&lt;br /&gt;
&lt;br /&gt;
Read about how we could profit from the work of others by abusing instant message systems in [[XMPP Based Authentication]].&lt;br /&gt;
&lt;br /&gt;
== Full Blown ==&lt;br /&gt;
&lt;br /&gt;
On the forum, a way to handle authentication with full fledged security and privacy has been worked out. It is based on public key cryptography and allows central or decentral player account management. Read about it in [[Key  Based Authentication]]. Meriton has suggested another approach: [[Distributed Authentification Using Digital Signatures]].&lt;br /&gt;
&lt;br /&gt;
== Test Balloon ==&lt;br /&gt;
&lt;br /&gt;
Since the full blown protocol uses features not yet included in the game and is rather involved, an alternative, easier to implement scheme has been suggested. The drawback: It is vulnerable against attackers who can intercept and modify network communications. It&#039;s not that bad, being able to listen to network traffic alone is not enough. Read about it in [[Hash Based Authentication]].&lt;br /&gt;
&lt;br /&gt;
Disadvantages over key based scheme:&lt;br /&gt;
* Less privacy, the authentication server is contacted on every login&lt;br /&gt;
* Less security, it suffices if an attacker can intercept and take over communication between the game and authentication server to log in as anyone. In the key based scheme, the attacker needs to steal the authority&#039;s private key.&lt;br /&gt;
* It does not support self-signed login where the fact that you&#039;re playing on a certain machine is taken as enough authentication.&lt;br /&gt;
&lt;br /&gt;
Advantage:&lt;br /&gt;
* It&#039;s so simple we should be able to supply it as a patch to 0.2.8.&lt;br /&gt;
&lt;br /&gt;
== What&#039;s Already There ==&lt;br /&gt;
&lt;br /&gt;
Complete support for password verification is already built in into every client, and with the configure option --enable-krawall, server code that triggers it is activated on the server. What is missing is a function that actually retrieves the right password for a player. The test balloon would reuse it to minimize work to be done and to allow existing clients to participate.&lt;br /&gt;
&lt;br /&gt;
Authentication there is handled like this:&lt;br /&gt;
* The client connects to the server as usual, sending the player&#039;s data, among that the player name.&lt;br /&gt;
* The server generates some random data (the salt) and sends it along with an authentication request to the client.&lt;br /&gt;
* The client takes a MD5 hash of the password, appends the salt and does another MD5 checksum of the combined data (that&#039;s called scrambling, and the MD5 hash of the password is called an egg).&lt;br /&gt;
* The client sends the resulted scrambled egg MD5 hash back to the server.&lt;br /&gt;
* The server has done the same operation on the MD5 hash of the password from the player database (The retrieval of that is the missing bit) and compares the result with what it gets from the client. If the results match, the client is authorized to use that player name.&lt;br /&gt;
&lt;br /&gt;
== How To Set Up Authentication ==&lt;br /&gt;
Read the file &amp;lt;code&amp;gt;settings_authentication.cfg&amp;lt;/code&amp;gt; in your [[Configuration Files]] directory for more details.&lt;br /&gt;
&lt;br /&gt;
In short: One can configure the 0.3.x (perhaps even 0.2.8.x) server in a way, so that users can use their forum&#039;s user name and password for authenticating on your server. To aquire this, create a file &amp;lt;code&amp;gt;/etc/armagetronad-dedicated/server_info.cfg&amp;lt;/code&amp;gt;, enable GLOBAL_ID 1 and assign a USER_LEVEL &amp;lt;username&amp;gt;@forums &amp;lt;level&amp;gt;. To login, type &amp;quot;/login forums&amp;quot; when connected to the server in-game (Using the menu didn&#039;t work for me).&lt;br /&gt;
&lt;br /&gt;
You can define &amp;quot;local users&amp;quot;, too, if you don&#039;t want to use external sources for authentication (Or if you just have no forum account). This would require these two settings: LOCAL_USER &amp;lt;name&amp;gt; &amp;lt;password&amp;gt;  and  USER_LEVEL &amp;lt;name&amp;gt;@ &amp;lt;level&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example server_info.cfg ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GLOBAL_ID   1                      # Enable external authentication authorities&lt;br /&gt;
USER_LEVEL  itsme@forums  0        # Grant user &amp;quot;itsme&amp;quot; from forums.armagetronad.net &amp;quot;Owner&amp;quot; privileges&lt;br /&gt;
                                   # Login in-game by typing:  /login forums&lt;br /&gt;
&lt;br /&gt;
TRUST_LAN   1                      # Allow login via local network (LAN)&lt;br /&gt;
LOCAL_USER  itsme   superpassword  # Define username and password&lt;br /&gt;
USER_LEVEL  itsme@  0              # Grant &amp;quot;Owner&amp;quot; privileges&lt;br /&gt;
                                   # Login in-game by using the Authentication menu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Ladle/Challenge_Board&amp;diff=34227</id>
		<title>Ladle/Challenge Board</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Ladle/Challenge_Board&amp;diff=34227"/>
		<updated>2011-07-03T16:42:22Z</updated>

		<summary type="html">&lt;p&gt;Epsy: /* Server List */ Fixed immortal dynasty de IP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Ladle/Blurb}}&lt;br /&gt;
&lt;br /&gt;
==Signing Up==&lt;br /&gt;
Please post your team name and the players who will play for your team below. If you&#039;re confused on how to do so, look at the examples below. You may also create a wiki page for your team. Placement on the Bracket is done randomly the Thursday before the Ladle.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{LadleTeam|Your Team Name|Team Captain&#039;s Name|Team Captain&#039;s Global ID|Teammate 1, Teammate 2, ...|Wiki Page Name}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{LadleTeamExternal|Your Team Name|Team Captain&#039;s Name|Team Captain&#039;s Global ID|Teammate 1, Teammate 2, ...|http://teamwebsite.com}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
For more information, see [[Template:LadleTeam]] or [[Template:LadleTeamExternal]]. Make collecting authorities easier with [http://www.adventuresoftron.com/ this tool].&lt;br /&gt;
&lt;br /&gt;
By signing up you agree to follow the [[Ladle/Operations#Rules_for_players|Rules]]. Rule breakers may be subject to disciplinary action. Team Captains, please be up to date on [[Ladle/Operations#How_the_Ladle_Works|how the Ladle works]] as well.&lt;br /&gt;
&lt;br /&gt;
==Teams==&lt;br /&gt;
{{LadleTeamExternal|§ï¦¦ÿ þÛÐÐÿ|Thump, Spin|Thump@forums, INW@forums|2020, Helena, JameZflameZ, Scorch, Syde, &#039;Syre&#039;, Zimblunk|http://sillypuddy.pro-forum.co.uk/}}&lt;br /&gt;
{{LadleTeamExternal|Dark Syndicate|Milan, Spook|Milan@forums, Spook@forums|Animal, ChrisGW, Zion, CruZ, Akizo, Divine, Doctor, Fate, Plage, Sunny|http://dsexperimentalworks.net}}&lt;br /&gt;
{{LadleTeamExternal|Speedhax|Aíphaton, kult|Aiphaton@forums, helllo@forums|Magic, Flex, cyclo, rogerthat, Delta|http://www.speedersclan.org}}&lt;br /&gt;
{{LadleTeamExternal|PRU|Word|Word@forums, | Garial, Eggman, Fire, Sixzero, Ai , Hamar, Longball, Agility, Phenomenon, Daedalus, VonDutch|http://www.trongame.de}}&lt;br /&gt;
{{LadleTeam|TIC|toy, akira|bubble@forums, akira@forums| epsy, sine.wav, Vanhayes, subliminal.freq, tremor|TIC}}&lt;br /&gt;
{{LadleTeamExternal|uNa|Stripes, Lawkey|Stripes@forums, ~Loki@forums|Tweezy, Tock, Az95, DGM,J-Dawg , Doritoz,Roy, Ben Kenobi, WillyWonka|http://www.unaclan.smfnew.com}}&lt;br /&gt;
{{LadleTeamExternal|Meet Your Maker|eckz|Eckz@forums| bellum, chah, devicat, dimebag, envy, fini, insa, kairo, kim pine, liz, weed|http://www.meetyourmaker.com}}&lt;br /&gt;
{{LadleTeamExternal|Next Generation|Titanoboa, Demon|Titanoboa@forums, Demon@forums| King, Kriki, Spica, Tech, box, &amp;lt;^w{}w^&amp;gt;|http://speedersclan.org}}&lt;br /&gt;
{{LadleTeamExternal|DpG|Prema, 16|premaDpG@forums, *16@forums| , flea, Ubuntu, baggins, edition, FroGGer, 4m1c0, Hell©ats Duffel, lampan, jameyjames04, pRo.BallA, Hunkules, CR7, MaDnEsS, pioniri, lowlyworm, holer |http://respwn.us}}&lt;br /&gt;
{{LadleTeamExternal|Immortal Dynasty|Dal, Robo| Dalsue@forums, Robo@forums|Coco, Jester, Arilou, Tsugaru, Alpha, Yoda, Scene, AvA, compguygene|http://www.idclansite.info}}&lt;br /&gt;
{{LadleTeamExternal|Tx|Hoax, Deso|Hoax@forums, Desolate@forums| Rudy, olive, Durka, Karma, Speed, raph, Roterbaron|http://twixted-xats.com}}&lt;br /&gt;
{{LadleTeamExternal|Dv|teen, acid|teen@aagid, acid@forums| first0v, subfoucus, swiss, plate, boxed, quack, a_nub,prestige|http://unlimited-clan.com}}&lt;br /&gt;
{{LadleTeamExternal|Team.uNk|tls, Wildcat|thelastSunrise@unk.me, wildcat@forums| fingerbib, Potter, Luzifer, 0ma, NoobSaibot, bmg|http://unk.me}}&lt;br /&gt;
{{LadleTeamExternal|uNk.Team|noob13, MaZuffeR|noob13@forums, yesihavemyownauthority@mazuffer.com| Pr3, DrHouse, slash, Jip, dreadlord|http://unk.me}}&lt;br /&gt;
{{LadleTeamExternal|~*Speeders*~|FoFo, Psy|FoFo@forums, Psy@forums|mkay, viper, xyron, slov, nubilous, Free, algid|http://www.speedersclan.org}}&lt;br /&gt;
{{LadleTeam|Open Team|Lackadaisical|Lackadaisical@forums|LucK, CxDy, Poke&#039; Master, over, Baphomet, ADD YO SELF gurl.}}&lt;br /&gt;
{{LadleTeamExternal|CTa|Woned, Gonzap|owned@forums, Gonzap@forums|mb53, puuquie, wap, emmy, safariskater, theroze, cronix|http://crazy-tronners.com}}&lt;br /&gt;
{{LadleTeamExternal|CTb|apparition|apparition@forums|gazelle, btd, punk, pike, orly?, voodoo|http://crazy-tronners.com}}&lt;br /&gt;
{{LadleTeamExternal|Already Dead|koala|Pre@forums| dariv, eber, syllabear, vov, zat|http://sillalive.freeforums.org/nothing-is-endless-t141.html#p1063}}&lt;br /&gt;
{{LadleTeamExternal|Rx|dukevin|dukevin@forums|iNoob, Slyfoxx, KeyLime, OddFuture, Who, TBA|http://insomniaclan.com}}&lt;br /&gt;
&lt;br /&gt;
==Challenge Board==&lt;br /&gt;
&lt;br /&gt;
===Brackets===&lt;br /&gt;
*All games are best of 3 matches (the first team to win 2 matches advances to the next round).&lt;br /&gt;
*All finals are played in the server listed in &#039;&#039;&#039;bold&#039;&#039;&#039;. Teams may agree to move to the backup server if there is a regional preference or problem with the primary server.&amp;lt;br /&amp;gt;&lt;br /&gt;
To change brackets, edit [[Template:Ladle47Bracket]]&lt;br /&gt;
&lt;br /&gt;
{{Ladle47Bracket}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Times===&lt;br /&gt;
&amp;lt;!--{{:Ladle/WinterTimes}}--&amp;gt;&lt;br /&gt;
{{:Ladle/SummerTimes}}&lt;br /&gt;
&lt;br /&gt;
==Servers==&lt;br /&gt;
Admins, by offering your server you agree to abide by the [[Ladle/Operations#Rules_for_server_owners_.26_operators|Rules for server owners and operators]]. It is also advisable that you are up to date on [[Ladle/Operations#How_the_Ladle_Works|how the Ladle works]] as well. Thank you.&lt;br /&gt;
&lt;br /&gt;
===Server Configuration===&lt;br /&gt;
*Please review the changes [http://forums3.armagetronad.net/viewtopic.php?p=209381#p209381 here].&lt;br /&gt;
 RINCLUDE ladle/ladle36.cfg(http://crazy-tronners.com/resource/ladle/ladle36.cfg)&lt;br /&gt;
 RINCLUDE ladle/ladle47_authorities.cfg(http://adventuresoftron.com/aa/resource/ladle47_authorities.cfg)&lt;br /&gt;
 SERVER_NAME 0x7fff7fLadle 47 0xff7f7f(0x7f7fffPlayer 1&#039;s Server0xff7f7f)&lt;br /&gt;
&lt;br /&gt;
===Server List===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{LadleServer|Your server name|ip|port|Location|[http://serverwebsite.com http://serverwebsite.com]}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;Europe&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
{{LadleServer|Immortal Dynasty&#039;s DE|178.63.118.135|4535|Germany (EU)|[[User talk:compguygene|compguygene]]}}&lt;br /&gt;
{{LadleServer|uNk&#039;s|unk.me|4536|Germany (EU)|[http://forums.unk.me noob13/Jip]}}&lt;br /&gt;
{{LadleServer|Crazy Tronner&#039;s LIV|liv.crazy-tronners.com|4541|Germany (EU)|[http://crazy-tronners.com/servertech CT Server Tech]}}&lt;br /&gt;
{{LadleServer|Crazy Tronner&#039;s MBX|85.114.128.17|4534|Germany (EU)|[http://crazy-tronners.com/servertech CT Server Tech]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Place Euro servers in here on reset&lt;br /&gt;
{{LadleServer|Z-Man&#039;s|simamo.de|4536|Frankfurt, Germany (EU)|[[User talk:Z-Man|Z-Man]]}}&lt;br /&gt;
{{LadleServer|G5&#039;s|gaming.junidas.de|4534|Strasbourg, France (EU)|[[User talk:G5|G5]]}}&lt;br /&gt;
{{LadleServer|Crazy Tronner&#039;s STO|sto.crazy-tronners.com|4538|Germany (EU)|[http://crazy-tronners.com/servertech CT Server Tech]}}&lt;br /&gt;
&lt;br /&gt;
{{LadleServer|PlsResUs!|trongame.de|4535|Germany (EU)|[http://trongame.de/forum/memberlist.php?mode&amp;amp;#x3d;viewprofile&amp;amp;u&amp;amp;#x3d;2 Ai]}}\&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;US &amp;amp; Others&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
{{LadleServer|Immortal Dynasty&#039;s Kansas|208.94.246.202|4535|Kansas (US)|[[User talk:compguygene|compguygene]]}}&lt;br /&gt;
{{LadleServer|Immortal Dynasty&#039;s New York|63.251.20.188|4535|New York (US)|[[User talk:compguygene|compguygene]]}} &lt;br /&gt;
{{LadleServer|AoT|65.18.192.127|4541|Connecticut (NE US)|[http://forums3.armagetronad.net/ucp.php?i&amp;amp;#x3d;pm&amp;amp;mode&amp;amp;#x3d;compose&amp;amp;u&amp;amp;#x3d;2439 sinewav]}}&lt;br /&gt;
{{LadleServer|Crazy Tronner&#039;s USA|usa.crazy-tronners.com|4535|Chicago, Illinois (US)|[http://crazy-tronners.com/servertech CT Server Tech]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Place US/Other servers in here on reset&lt;br /&gt;
{{LadleServer|INW&#039;s|108.60.130.235|4535|Montclair, New Jersey (East Coast US)|[[User talk:INW|INW]]}}&lt;br /&gt;
&lt;br /&gt;
{{LadleServer|Animuson&#039;s|ladle.animuson.com|4534|Dallas, TX (US)|[http://forums3.armagetronad.net/memberlist.php?mode&amp;amp;#x3d;viewprofile&amp;amp;u&amp;amp;#x3d;2765 animuson]}}&lt;br /&gt;
&lt;br /&gt;
{{LadleServer|Velocity|174.122.236.227|4541|Houston, Texas|[http://vclclan.co.cc/ TaZ]}}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subculture===&lt;br /&gt;
&lt;br /&gt;
* [http://forums3.armagetronad.net/viewtopic.php?f=60&amp;amp;t=19311 Subculture]&lt;br /&gt;
* [http://generalconsumption.org/armagetronad/ladle Online Server Browser]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Recordings/Screenshots==&lt;br /&gt;
Post all recordings/screenshots that you have of the ladle here, along with the names of the two teams in the match:&lt;br /&gt;
&lt;br /&gt;
* http://    - TeamA vs TeamB&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Ladle/Challenge_Board&amp;diff=26765</id>
		<title>Ladle/Challenge Board</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Ladle/Challenge_Board&amp;diff=26765"/>
		<updated>2010-04-17T13:19:42Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Fed link to forum thread&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Ladle/Blurb}}&lt;br /&gt;
&amp;lt;font size=&amp;quot;4&amp;quot;&amp;gt;[http://forums3.armagetronad.net/viewtopic.php?f=60&amp;amp;t=20173 &#039;&#039;&#039;Sunday, May 2nd, 2010!&#039;&#039;&#039;]&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Signing Up==&lt;br /&gt;
Please post your team name and the players who will play for your team below. If you&#039;re confused on how to do so, look at the examples below. You may also wish to create a wiki page for your team. The teams will be randomly selected for slot #s on the Thursday before the Ladle.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{LadleTeam|Your Team Name|Team Captain&#039;s Name|Team Captain&#039;s Global ID|Teammate 1, Teammate 2, ..|Wiki Page Name}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{LadleTeamExternal|Your Team Name|Team Captain&#039;s Name|Team Captain&#039;s Global ID|Teammate 1, Teammate 2, ..|http://teamwebsite.com}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information, see [[Template:LadleTeam]] or [[Template:LadleTeamExternal]].&lt;br /&gt;
&lt;br /&gt;
By signing up you agree to follow the [[Ladle/Guidelines|Guidelines]]&lt;br /&gt;
&lt;br /&gt;
==Teams==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Servers==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Server Configuration===&lt;br /&gt;
*Please review the changes [http://forums3.armagetronad.net/viewtopic.php?p=209381#p209381 here].&lt;br /&gt;
 RINCLUDE ladle24.cfg(http://durka.ath.cx/resource/ladle/ladle24.cfg)&lt;br /&gt;
 RINCLUDE ladle32_authorities.cfg(http://crazy-tronners.com/resource/ladle/ladle32_authorities.cfg)&lt;br /&gt;
 SERVER_NAME 0x7fff7fLadle 32 0xff7f7f(0x7f7fffPlayer 1&#039;s Server0xff7f7f)&lt;br /&gt;
&lt;br /&gt;
===Server List===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{LadleServer|Your server name|ip|port|Location|[http://serverwebsite.com http://serverwebsite.com]}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;Europe&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
{{LadleServer|Crazy Tronner&#039;s LIV|liv.crazy-tronners.com|4542|Germany (EU)|[http://crazy-tronners.com/servertech CT Server Tech]}}&lt;br /&gt;
{{LadleServer|Z-Man&#039;s|simamo.de|4536|Frankfurt, Germany (EU)|[[User talk:Z-Man|Z-Man]]}}&lt;br /&gt;
{{LadleServer|The Server Pharm FR|fr.theserverpharm.net|4536|Roubaix, France (EU)|[[User talk:Compguygene|Compguygene]]}}&lt;br /&gt;
{{LadleServer|The Server Pharm DE|de.theserverpharm.net|4534|Frankfurt, Germany(EU)|[[User talk:Compguygene|Compguygene]]}}&lt;br /&gt;
{{LadleServer|Dark Syndicate|gaming.junidas.de|4536|Frankfurt, Germany (EU)|[[User talk:G5|G5]]}}&lt;br /&gt;
{{LadleServer|PlsResUs!|trongame.de|4535|Germany (EU)|[http://trongame.de/forum/memberlist.php?mode&amp;amp;#x3d;viewprofile&amp;amp;u&amp;amp;#x3d;2 Ai]}}&lt;br /&gt;
&amp;lt;!--Place Euro servers in here on reset&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;US &amp;amp; Others&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
{{LadleServer|Crazy Tronner&#039;s USA|usa.crazy-tronners.com|4535|Chicago, Illinois (US)|[http://crazy-tronners.com/servertech CT Server Tech]}}&lt;br /&gt;
{{LadleServer|Twi¦×¦ted ¦×¦ats|xats.ath.cx|4541|Philadelphia, Pennsylvania (US)|[http://forums3.armagetronad.net/memberlist.php?mode&amp;amp;#x3d;viewprofile&amp;amp;u&amp;amp;#x3d;1152 Durka]}}&lt;br /&gt;
{{LadleServer|The Server Pharm PA0|173.212.246.162|4535|Philadelphia, Pennsylvania (US)|[[User talk:Compguygene|Compguygene]]}}&lt;br /&gt;
{{LadleServer|The Server Pharm PA1|64.191.33.74|4535|Philadelphia, Pennsylvania (US)|[[User talk:Compguygene|Compguygene]]}}&lt;br /&gt;
{{LadleServer|The Server Pharm PA2|64.191.127.248|4535|Philadelphia, Pennsylvania (US)|[[User talk:Compguygene|Compguygene]]}}&lt;br /&gt;
&amp;lt;!--Place US/Other servers in here on reset&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subculture===&lt;br /&gt;
&lt;br /&gt;
* [http://forums3.armagetronad.net/viewtopic.php?f=60&amp;amp;t=19311 Subculture]&lt;br /&gt;
* [http://generalconsumption.org/armagetronad/ladle Online Server Browser]&lt;br /&gt;
&lt;br /&gt;
==Challenge Board==&lt;br /&gt;
===Times===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;5&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
! (24 HOURS) || &amp;lt;span style=&amp;quot;cursor:help;border-bottom: 1px dashed black&amp;quot; title=&amp;quot;Pacific Daylight Time&amp;quot;&amp;gt;PDT (GMT-7)&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;cursor:help;border-bottom: 1px dashed black&amp;quot; title=&amp;quot;Eastern Daylight Time&amp;quot;&amp;gt;EDT (GMT-4)&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;cursor:help;border-bottom: 1px dashed black&amp;quot; title=&amp;quot;Greenwich Mean Time&amp;quot;&amp;gt;GMT&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;cursor:help;border-bottom: 1px dashed black&amp;quot; title=&amp;quot;British Summer Time&amp;quot;&amp;gt;BST (GMT+1)&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;cursor:help;border-bottom: 1px dashed black&amp;quot; title=&amp;quot;Central European Summer Time&amp;quot;&amp;gt;CEST (GMT+2)&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Opening Round&#039;&#039;&#039; || 10:45 || 13:45 || 17:45 || 18:45 || 19:45 &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Quarter Finals&#039;&#039;&#039; || 11:30 || 14:30 || 18:30 || 19:30 || 20:30 &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Semi Finals&#039;&#039;&#039; || 12:15 || 15:15 || 19:15 || 20:15 || 21:15 &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Finals&#039;&#039;&#039; || 13:00 || 16:00 || 20:00 || 21:00 || 22:00 &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
([http://www.greenwichmeantime.com/ time conversion here])&lt;br /&gt;
&lt;br /&gt;
===Brackets===&lt;br /&gt;
*All games are best of 3 matches (the first team to win 2 matches advances to the next round).&lt;br /&gt;
*If there are 2 servers listed for a specific game, the game will be played in each team&#039;s home server (European or American) if &#039;&#039;&#039;both&#039;&#039;&#039; teams are European or &#039;&#039;&#039;both&#039;&#039;&#039; are American. If there is a mixture, the game will be played in the server that is in &#039;&#039;&#039;bold&#039;&#039;&#039;.&amp;lt;br /&amp;gt;&lt;br /&gt;
To change brackets, edit [[Template:Ladle33Bracket]]&lt;br /&gt;
&lt;br /&gt;
{{Ladle33Bracket}}&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Ladle/Challenge_Board&amp;diff=26764</id>
		<title>Ladle/Challenge Board</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Ladle/Challenge_Board&amp;diff=26764"/>
		<updated>2010-04-17T13:11:57Z</updated>

		<summary type="html">&lt;p&gt;Epsy: /* Times */ Arranged the time table, adding BST&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Ladle/Blurb}}&lt;br /&gt;
&amp;lt;font size=&amp;quot;4&amp;quot;&amp;gt;[http://link-to-forums-topic &#039;&#039;&#039;Sunday, May 2nd, 2010!&#039;&#039;&#039;]&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Signing Up==&lt;br /&gt;
Please post your team name and the players who will play for your team below. If you&#039;re confused on how to do so, look at the examples below. You may also wish to create a wiki page for your team. The teams will be randomly selected for slot #s on the Thursday before the Ladle.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{LadleTeam|Your Team Name|Team Captain&#039;s Name|Team Captain&#039;s Global ID|Teammate 1, Teammate 2, ..|Wiki Page Name}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{LadleTeamExternal|Your Team Name|Team Captain&#039;s Name|Team Captain&#039;s Global ID|Teammate 1, Teammate 2, ..|http://teamwebsite.com}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information, see [[Template:LadleTeam]] or [[Template:LadleTeamExternal]].&lt;br /&gt;
&lt;br /&gt;
By signing up you agree to follow the [[Ladle/Guidelines|Guidelines]]&lt;br /&gt;
&lt;br /&gt;
==Teams==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Servers==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Server Configuration===&lt;br /&gt;
*Please review the changes [http://forums3.armagetronad.net/viewtopic.php?p=209381#p209381 here].&lt;br /&gt;
 RINCLUDE ladle24.cfg(http://durka.ath.cx/resource/ladle/ladle24.cfg)&lt;br /&gt;
 RINCLUDE ladle32_authorities.cfg(http://crazy-tronners.com/resource/ladle/ladle32_authorities.cfg)&lt;br /&gt;
 SERVER_NAME 0x7fff7fLadle 32 0xff7f7f(0x7f7fffPlayer 1&#039;s Server0xff7f7f)&lt;br /&gt;
&lt;br /&gt;
===Server List===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{LadleServer|Your server name|ip|port|Location|[http://serverwebsite.com http://serverwebsite.com]}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;Europe&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
{{LadleServer|Crazy Tronner&#039;s LIV|liv.crazy-tronners.com|4542|Germany (EU)|[http://crazy-tronners.com/servertech CT Server Tech]}}&lt;br /&gt;
{{LadleServer|Z-Man&#039;s|simamo.de|4536|Frankfurt, Germany (EU)|[[User talk:Z-Man|Z-Man]]}}&lt;br /&gt;
{{LadleServer|The Server Pharm FR|fr.theserverpharm.net|4536|Roubaix, France (EU)|[[User talk:Compguygene|Compguygene]]}}&lt;br /&gt;
{{LadleServer|The Server Pharm DE|de.theserverpharm.net|4534|Frankfurt, Germany(EU)|[[User talk:Compguygene|Compguygene]]}}&lt;br /&gt;
{{LadleServer|Dark Syndicate|gaming.junidas.de|4536|Frankfurt, Germany (EU)|[[User talk:G5|G5]]}}&lt;br /&gt;
{{LadleServer|PlsResUs!|trongame.de|4535|Germany (EU)|[http://trongame.de/forum/memberlist.php?mode&amp;amp;#x3d;viewprofile&amp;amp;u&amp;amp;#x3d;2 Ai]}}&lt;br /&gt;
&amp;lt;!--Place Euro servers in here on reset&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;US &amp;amp; Others&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
{{LadleServer|Crazy Tronner&#039;s USA|usa.crazy-tronners.com|4535|Chicago, Illinois (US)|[http://crazy-tronners.com/servertech CT Server Tech]}}&lt;br /&gt;
{{LadleServer|Twi¦×¦ted ¦×¦ats|xats.ath.cx|4541|Philadelphia, Pennsylvania (US)|[http://forums3.armagetronad.net/memberlist.php?mode&amp;amp;#x3d;viewprofile&amp;amp;u&amp;amp;#x3d;1152 Durka]}}&lt;br /&gt;
{{LadleServer|The Server Pharm PA0|173.212.246.162|4535|Philadelphia, Pennsylvania (US)|[[User talk:Compguygene|Compguygene]]}}&lt;br /&gt;
{{LadleServer|The Server Pharm PA1|64.191.33.74|4535|Philadelphia, Pennsylvania (US)|[[User talk:Compguygene|Compguygene]]}}&lt;br /&gt;
{{LadleServer|The Server Pharm PA2|64.191.127.248|4535|Philadelphia, Pennsylvania (US)|[[User talk:Compguygene|Compguygene]]}}&lt;br /&gt;
&amp;lt;!--Place US/Other servers in here on reset&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subculture===&lt;br /&gt;
&lt;br /&gt;
* [http://forums3.armagetronad.net/viewtopic.php?f=60&amp;amp;t=19311 Subculture]&lt;br /&gt;
* [http://generalconsumption.org/armagetronad/ladle Online Server Browser]&lt;br /&gt;
&lt;br /&gt;
==Challenge Board==&lt;br /&gt;
===Times===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;5&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
! (24 HOURS) || &amp;lt;span style=&amp;quot;cursor:help;border-bottom: 1px dashed black&amp;quot; title=&amp;quot;Pacific Daylight Time&amp;quot;&amp;gt;PDT (GMT-7)&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;cursor:help;border-bottom: 1px dashed black&amp;quot; title=&amp;quot;Eastern Daylight Time&amp;quot;&amp;gt;EDT (GMT-4)&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;cursor:help;border-bottom: 1px dashed black&amp;quot; title=&amp;quot;Greenwich Mean Time&amp;quot;&amp;gt;GMT&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;cursor:help;border-bottom: 1px dashed black&amp;quot; title=&amp;quot;British Summer Time&amp;quot;&amp;gt;BST (GMT+1)&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;cursor:help;border-bottom: 1px dashed black&amp;quot; title=&amp;quot;Central European Summer Time&amp;quot;&amp;gt;CEST (GMT+2)&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Opening Round&#039;&#039;&#039; || 10:45 || 13:45 || 17:45 || 18:45 || 19:45 &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Quarter Finals&#039;&#039;&#039; || 11:30 || 14:30 || 18:30 || 19:30 || 20:30 &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Semi Finals&#039;&#039;&#039; || 12:15 || 15:15 || 19:15 || 20:15 || 21:15 &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Finals&#039;&#039;&#039; || 13:00 || 16:00 || 20:00 || 21:00 || 22:00 &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
([http://www.greenwichmeantime.com/ time conversion here])&lt;br /&gt;
&lt;br /&gt;
===Brackets===&lt;br /&gt;
*All games are best of 3 matches (the first team to win 2 matches advances to the next round).&lt;br /&gt;
*If there are 2 servers listed for a specific game, the game will be played in each team&#039;s home server (European or American) if &#039;&#039;&#039;both&#039;&#039;&#039; teams are European or &#039;&#039;&#039;both&#039;&#039;&#039; are American. If there is a mixture, the game will be played in the server that is in &#039;&#039;&#039;bold&#039;&#039;&#039;.&amp;lt;br /&amp;gt;&lt;br /&gt;
To change brackets, edit [[Template:Ladle33Bracket]]&lt;br /&gt;
&lt;br /&gt;
{{Ladle33Bracket}}&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=US_vs_EU&amp;diff=26612</id>
		<title>US vs EU</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=US_vs_EU&amp;diff=26612"/>
		<updated>2010-04-10T09:46:51Z</updated>

		<summary type="html">&lt;p&gt;Epsy: /* Europe */ nominated some people and reordered the list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Information =&lt;br /&gt;
&lt;br /&gt;
North America vs Europe..&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= The Teams =&lt;br /&gt;
&lt;br /&gt;
To nominate a player, add them to the list.&lt;br /&gt;
----&lt;br /&gt;
== North America ==&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{US Nominate|Player Name||Player@authority}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
=== Nominees ===&lt;br /&gt;
{{US Nominate|Durka||DDMJ@forums}}&lt;br /&gt;
{{US Nominate|Psyko||psyko@forums(?)}}&lt;br /&gt;
{{US Nominate|Woned||owned@forums}}&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Nominees ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Europe ==&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{EU Nominate|Player Name||Player@authority}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
=== Nominees ===&lt;br /&gt;
{{EU Nominate|akira||akira@forums}}&lt;br /&gt;
{{EU Nominate|FoFo||FoFo@forums}}&lt;br /&gt;
{{EU Nominate|Gonzap||Gonzap@forums}}&lt;br /&gt;
{{EU Nominate|judders||Judders@forums}}&lt;br /&gt;
{{EU Nominate|Lackadaisical||Lackadaisical@forums}}&lt;br /&gt;
{{EU Nominate|MaZuffeR||yesihavemyownauthority@mazuffer.com}}&lt;br /&gt;
{{EU Nominate|olive||olive@forums}}&lt;br /&gt;
{{EU Nominate|Xyron||??}}&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Nominees ===&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Running_Multiple_Servers_on_a_single_Linux_computer&amp;diff=26242</id>
		<title>Running Multiple Servers on a single Linux computer</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Running_Multiple_Servers_on_a_single_Linux_computer&amp;diff=26242"/>
		<updated>2010-03-13T22:30:18Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Missed one.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
If you like to experiment new settings, it might be that you come with a set of interesting servers. A shame if you cannot run them all at the same time. Here is how you can achieve this on a Linux server. Please refer to the lag and bandwidth chapters in the wiki before to run multiple servers. If you run too many, you might end with a very bad gameplay.&lt;br /&gt;
&lt;br /&gt;
This chapter will present you an easy way to run multiple servers on a single Linux computer, using GNU screen.&lt;br /&gt;
&lt;br /&gt;
== Server installation ==&lt;br /&gt;
&lt;br /&gt;
First of all, you have to install the Armagetron Advanced Dedicated Server from source, not using the provided install script. This will allow to manage at will the settings and var directories. To do so, download the latest source package, and untar it in a temporary folder. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bzr branch lp:armagetronad/0.2.8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the &amp;quot;configure&amp;quot; command, the prefix will be the application directory. I have choose to install it in /opt/armagetronad/. Make your own choice:&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=/opt/armagetronad/ --disable-glout --enable-automakedefaults --disable-sysinstall --disable-etc --disable-useradd --disable-initscripts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Authentication:&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=/opt/armagetronad/ --disable-glout --enable-automakedefaults --disable-sysinstall --disable-etc --disable-useradd --disable-initscripts --enable-armathentication&lt;br /&gt;
&lt;br /&gt;
Then, compile and install:&lt;br /&gt;
 ./bootstrap.sh&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Now, armagetron advanced dedicated is installed in the /opt/armagetronad/ folder.&lt;br /&gt;
&lt;br /&gt;
== Preparing the servers ==&lt;br /&gt;
&lt;br /&gt;
=== The tree ===&lt;br /&gt;
&lt;br /&gt;
CD to /opt/armagetronad/ &lt;br /&gt;
 cd /opt/armagetronad/&lt;br /&gt;
&lt;br /&gt;
Create the following subdirectories:&lt;br /&gt;
&lt;br /&gt;
 mkdir servers      &#039;This folder will be used to store server configurations&lt;br /&gt;
 mkdir logs         &#039;This one will be used to save the server logs&lt;br /&gt;
 mkdir scripts      &#039;And this one will be used to same the scripts we will see below&lt;br /&gt;
&lt;br /&gt;
We have now to create our servers. To do so, go to the servers directory you have created earlier, and for each server, create a subfolder with a one-word name for the server, and two subfolders: var and settings. For exemple:&lt;br /&gt;
&lt;br /&gt;
 cd /opt/armagetronad/servers&lt;br /&gt;
&lt;br /&gt;
To create a server called server1:&lt;br /&gt;
&lt;br /&gt;
 mkdir server1&lt;br /&gt;
 mkdir server1/settings&lt;br /&gt;
 mkdir server1/var&lt;br /&gt;
then copy your config files in the settings subfolder.&lt;br /&gt;
&lt;br /&gt;
You can then create a second server, and more...&lt;br /&gt;
&lt;br /&gt;
 mkdir server2&lt;br /&gt;
 mkdir server2/settings&lt;br /&gt;
 mkdir server2/var&lt;br /&gt;
and so on...&lt;br /&gt;
&lt;br /&gt;
=== The setting files ===&lt;br /&gt;
&lt;br /&gt;
For each server, do not forget to create a &amp;quot;server_info.cfg&amp;quot; file (search the wiki about it), and to change the port number. Port can be from 4534 to 4540, meaning you can safely run up to 7 servers on the same computer, depending obviously on the settings of each servers, and the bandwidth they need.&lt;br /&gt;
&lt;br /&gt;
We assume that you know enough about Server Administration to understand the above explainations. This article is about Advanced Server Administration, isn&#039;t it ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The scripts ==&lt;br /&gt;
&lt;br /&gt;
Now you have to create the scripts to launch and log all your servers. To allow managing each server separately, we will use GNU Screen. GNU screen is a terminal window manager. If it is not install on your server, you can get it with the usual installation tool (yum install screen, apt get screen, etc...). Again... advanced.... We assume you know how to install applications on linux and therefore, we assume GNU screen has been installed&lt;br /&gt;
&lt;br /&gt;
You have to create two scripts. The first one will run a server and start logging the window in which the server has started. The second one will execute the first one for each folder in the /opt/armagetronad/servers folder. It will create a window for each of them. Therefore, if you don&#039;t want a server to run, you will have to temporarily move the server folder out from the /opt/armagetronad/servers directory.&lt;br /&gt;
&lt;br /&gt;
Save the scripts in the /opt/armagetronad/scripts directory. I use nano which is an easy text editor. &lt;br /&gt;
&lt;br /&gt;
=== The server script ===&lt;br /&gt;
&lt;br /&gt;
The first script will be called in this example: srv&lt;br /&gt;
&lt;br /&gt;
 nano /opt/armagetronad/scripts/srv &lt;br /&gt;
That creates a text file called srv in the scripts directory. Write the following lines in the file:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 screen -S $1 -X logtstamp on 					# print timestamps in log file&lt;br /&gt;
 screen -S $1 -X logfile /opt/armagetronad/logs/$1_%d%m%Y-%c.log 	# create a logfile in the logs subfolder&lt;br /&gt;
 screen -S $1 -X log on 					# Turn on logging for the server window&lt;br /&gt;
 while true; do 						# start a loop to allow server restart if it crashes&lt;br /&gt;
 &lt;br /&gt;
 # runs the actual server. By default, the binary is called armagetronad-dedicated and is located in the prefix/bin directory. In this example, it is in /opt/armagetronad/bin directory.&lt;br /&gt;
 	/opt/armagetronad/bin/armagetronad-dedicated --configdir /opt/armagetronad/servers/$1/settings --vardir /opt/armagetronad/servers/$1/var 	&lt;br /&gt;
 &lt;br /&gt;
 # Shows the errors and indicates that the server has crashed, and then, waits 5 seconds before restarting the server, allowing you to quit with CTRL-C&lt;br /&gt;
 	echo &amp;quot;Server has crashed. It will restart immediately..., press CTRL-C to cancel&amp;quot;&lt;br /&gt;
 	sleep 5&lt;br /&gt;
 &lt;br /&gt;
 done # end the loop&lt;br /&gt;
To save the file, press CTRL-X and Y to confirm. You have now a file called srv in /opt/armagetronad/scripts.&lt;br /&gt;
&lt;br /&gt;
=== the global script ===&lt;br /&gt;
&lt;br /&gt;
Create the second script. I called it start: &amp;lt;code&amp;gt; nano /opt/armagetronad/scripts/start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 # If you run the script with a parameter (server name), only that server will be start. Otherwise, all servers in the /opt/armagetronad/servers directory will be started&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; != &amp;quot;&amp;quot; ]; then&lt;br /&gt;
 	screen -S $1 -X quit				# Kill the window if it exists already, avoiding to run the same server twice&lt;br /&gt;
 	screen -dmS $1 /opt/armagetronad/scripts/srv $1			# start a GNU screen window with the specified server inside&lt;br /&gt;
 else&lt;br /&gt;
 	for f in $(ls /opt/armagetronad/servers/.)				# start a loop running the following command for any existing folders in the /opt/armagetronad/servers folder&lt;br /&gt;
 		do&lt;br /&gt;
 			screen -S $f -X quit				# Kill the window if it exists already, avoiding to run the same server twice&lt;br /&gt;
 			screen -dmS $f /opt/armagetronad/scripts/srv $f	# start a GNU screen window with the server inside for each server folder&lt;br /&gt;
 		done							# ends the loop&lt;br /&gt;
 fi&lt;br /&gt;
Save it and exit the same way as before.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to set both files with execute permissions:&lt;br /&gt;
&amp;lt;code&amp;gt;chmod +x srv start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Starting all servers ===&lt;br /&gt;
&lt;br /&gt;
To make your servers start at boot, edit the /etc/rc.local file and add the &amp;quot;start&amp;quot; script at the end of &amp;lt;code&amp;gt;/opt/armagetronad/scripts/start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to manually start all servers, just run the &amp;lt;code&amp;gt;./start&amp;lt;/code&amp;gt; script. &lt;br /&gt;
&lt;br /&gt;
=== Starting a single specific server ===&lt;br /&gt;
&lt;br /&gt;
If you want to start (or restart) a single server, just run&lt;br /&gt;
 ./start servername&lt;br /&gt;
&lt;br /&gt;
== Server management ==&lt;br /&gt;
&lt;br /&gt;
=== GNU screen ===&lt;br /&gt;
&lt;br /&gt;
GNU screen is a great tool. As explained above, it allow a multi-windowed environement on the simple terminal. And even better, the windows stay alive, evening when you disconnect from the server. You can find everything about GNU screen by typing &amp;lt;code&amp;gt;man screen&amp;lt;/code&amp;gt; on a terminal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Listing the running servers ===&lt;br /&gt;
&lt;br /&gt;
To see the existing windows, meaning here, the running servers, type &amp;lt;code&amp;gt;screen -ls&amp;lt;/code&amp;gt;. It will gives you a list of running windows.&lt;br /&gt;
&lt;br /&gt;
=== Accessing and leaving a server console ===&lt;br /&gt;
&lt;br /&gt;
To attach to a window, type &amp;lt;code&amp;gt;screen -r servername&amp;lt;/code&amp;gt;. You will be in the server console. You can then do all the command you would usually do there. Remote moderation, server adjustment, and so on.&lt;br /&gt;
&lt;br /&gt;
To detach, but keep the server running, press CTRL-a d (control key + low case A, then low case D to detach). You can find all GNU screen key combinations by reading &amp;lt;code&amp;gt;man screen&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Killing a server ===&lt;br /&gt;
&lt;br /&gt;
To kill a server, attach to its window, and press CTRL-C. This will kill the script, and the window. Then press ESC to exit the dead window. An alternate way is to run &lt;br /&gt;
 screen -S servername -X quit&lt;br /&gt;
This will kill and end the window and the server inside.&lt;br /&gt;
&lt;br /&gt;
=== Log files ===&lt;br /&gt;
&lt;br /&gt;
Everytime the &amp;lt;code&amp;gt;srv&amp;lt;/code&amp;gt; script is run, a new logfile will be created in the /opt/armagetronad/logs folder. Keep an eye on log sizes. You don&#039;t want to run out of disk space because of Armagetron Advanced, do you ?&lt;br /&gt;
&lt;br /&gt;
=== Test the server autorestart ===&lt;br /&gt;
&lt;br /&gt;
If you want to try if the server restarts when it crash, do not press CTRL-C into the window. CTRL-C kill the script, therefore it will not be able to restart. Instead, run the &amp;lt;code&amp;gt;quit&amp;lt;/code&amp;gt; command inside the server console. It will close the server, and you will be able to see the message, and the server restarting.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
This article has been written by Superkikim. These scripts and setup details are used to run the &amp;quot;FAST TRACK&amp;quot; servers.&lt;br /&gt;
&lt;br /&gt;
== VPS packs to install ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;yum groupinstall &amp;quot;Development Tools&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
yum install libxml2-devel&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install BZR&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;su -c &#039;rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm&#039;&amp;lt;br \&amp;gt;&lt;br /&gt;
su -c &#039;yum install bzr&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compiling Zthreads&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
CXXFLAGS=-fpermissive ./configure --prefix=/usr&amp;lt;br&amp;gt;&lt;br /&gt;
make&amp;lt;br&amp;gt;&lt;br /&gt;
make install&amp;lt;br&amp;gt;&lt;br /&gt;
ldconfig&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Running_Multiple_Servers_on_a_single_Linux_computer&amp;diff=26241</id>
		<title>Running Multiple Servers on a single Linux computer</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Running_Multiple_Servers_on_a_single_Linux_computer&amp;diff=26241"/>
		<updated>2010-03-13T22:29:34Z</updated>

		<summary type="html">&lt;p&gt;Epsy: Undo revision 23049 by Superkikim (Talk) - Almost qualifies as vandalism.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
If you like to experiment new settings, it might be that you come with a set of interesting servers. A shame if you cannot run them all at the same time. Here is how you can achieve this on a Linux server. Please refer to the lag and bandwidth chapters in the wiki before to run multiple servers. If you run too many, you might end with a very bad gameplay.&lt;br /&gt;
&lt;br /&gt;
This chapter will present you an easy way to run multiple servers on a single Linux computer, using GNU screen.&lt;br /&gt;
&lt;br /&gt;
== Server installation ==&lt;br /&gt;
&lt;br /&gt;
First of all, you have to install the Armagetron Advanced Dedicated Server from source, not using the provided install script. This will allow to manage at will the settings and var directories. To do so, download the latest source package, and untar it in a temporary folder. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bzr branch lp:armagetronad/0.2.8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the &amp;quot;configure&amp;quot; command, the prefix will be the application directory. I have choose to install it in /opt/armagetronad/. Make your own choice:&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=/opt/armagetronad/ --disable-glout --enable-automakedefaults --disable-sysinstall --disable-etc --disable-useradd --disable-initscripts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Authentication:&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=/etc/arma --disable-glout --enable-automakedefaults --disable-sysinstall --disable-etc --disable-useradd --disable-initscripts --enable-armathentication&lt;br /&gt;
&lt;br /&gt;
Then, compile and install:&lt;br /&gt;
 ./bootstrap.sh&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Now, armagetron advanced dedicated is installed in the /opt/armagetronad/ folder.&lt;br /&gt;
&lt;br /&gt;
== Preparing the servers ==&lt;br /&gt;
&lt;br /&gt;
=== The tree ===&lt;br /&gt;
&lt;br /&gt;
CD to /opt/armagetronad/ &lt;br /&gt;
 cd /opt/armagetronad/&lt;br /&gt;
&lt;br /&gt;
Create the following subdirectories:&lt;br /&gt;
&lt;br /&gt;
 mkdir servers      &#039;This folder will be used to store server configurations&lt;br /&gt;
 mkdir logs         &#039;This one will be used to save the server logs&lt;br /&gt;
 mkdir scripts      &#039;And this one will be used to same the scripts we will see below&lt;br /&gt;
&lt;br /&gt;
We have now to create our servers. To do so, go to the servers directory you have created earlier, and for each server, create a subfolder with a one-word name for the server, and two subfolders: var and settings. For exemple:&lt;br /&gt;
&lt;br /&gt;
 cd /opt/armagetronad/servers&lt;br /&gt;
&lt;br /&gt;
To create a server called server1:&lt;br /&gt;
&lt;br /&gt;
 mkdir server1&lt;br /&gt;
 mkdir server1/settings&lt;br /&gt;
 mkdir server1/var&lt;br /&gt;
then copy your config files in the settings subfolder.&lt;br /&gt;
&lt;br /&gt;
You can then create a second server, and more...&lt;br /&gt;
&lt;br /&gt;
 mkdir server2&lt;br /&gt;
 mkdir server2/settings&lt;br /&gt;
 mkdir server2/var&lt;br /&gt;
and so on...&lt;br /&gt;
&lt;br /&gt;
=== The setting files ===&lt;br /&gt;
&lt;br /&gt;
For each server, do not forget to create a &amp;quot;server_info.cfg&amp;quot; file (search the wiki about it), and to change the port number. Port can be from 4534 to 4540, meaning you can safely run up to 7 servers on the same computer, depending obviously on the settings of each servers, and the bandwidth they need.&lt;br /&gt;
&lt;br /&gt;
We assume that you know enough about Server Administration to understand the above explainations. This article is about Advanced Server Administration, isn&#039;t it ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The scripts ==&lt;br /&gt;
&lt;br /&gt;
Now you have to create the scripts to launch and log all your servers. To allow managing each server separately, we will use GNU Screen. GNU screen is a terminal window manager. If it is not install on your server, you can get it with the usual installation tool (yum install screen, apt get screen, etc...). Again... advanced.... We assume you know how to install applications on linux and therefore, we assume GNU screen has been installed&lt;br /&gt;
&lt;br /&gt;
You have to create two scripts. The first one will run a server and start logging the window in which the server has started. The second one will execute the first one for each folder in the /opt/armagetronad/servers folder. It will create a window for each of them. Therefore, if you don&#039;t want a server to run, you will have to temporarily move the server folder out from the /opt/armagetronad/servers directory.&lt;br /&gt;
&lt;br /&gt;
Save the scripts in the /opt/armagetronad/scripts directory. I use nano which is an easy text editor. &lt;br /&gt;
&lt;br /&gt;
=== The server script ===&lt;br /&gt;
&lt;br /&gt;
The first script will be called in this example: srv&lt;br /&gt;
&lt;br /&gt;
 nano /opt/armagetronad/scripts/srv &lt;br /&gt;
That creates a text file called srv in the scripts directory. Write the following lines in the file:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 screen -S $1 -X logtstamp on 					# print timestamps in log file&lt;br /&gt;
 screen -S $1 -X logfile /opt/armagetronad/logs/$1_%d%m%Y-%c.log 	# create a logfile in the logs subfolder&lt;br /&gt;
 screen -S $1 -X log on 					# Turn on logging for the server window&lt;br /&gt;
 while true; do 						# start a loop to allow server restart if it crashes&lt;br /&gt;
 &lt;br /&gt;
 # runs the actual server. By default, the binary is called armagetronad-dedicated and is located in the prefix/bin directory. In this example, it is in /opt/armagetronad/bin directory.&lt;br /&gt;
 	/opt/armagetronad/bin/armagetronad-dedicated --configdir /opt/armagetronad/servers/$1/settings --vardir /opt/armagetronad/servers/$1/var 	&lt;br /&gt;
 &lt;br /&gt;
 # Shows the errors and indicates that the server has crashed, and then, waits 5 seconds before restarting the server, allowing you to quit with CTRL-C&lt;br /&gt;
 	echo &amp;quot;Server has crashed. It will restart immediately..., press CTRL-C to cancel&amp;quot;&lt;br /&gt;
 	sleep 5&lt;br /&gt;
 &lt;br /&gt;
 done # end the loop&lt;br /&gt;
To save the file, press CTRL-X and Y to confirm. You have now a file called srv in /opt/armagetronad/scripts.&lt;br /&gt;
&lt;br /&gt;
=== the global script ===&lt;br /&gt;
&lt;br /&gt;
Create the second script. I called it start: &amp;lt;code&amp;gt; nano /opt/armagetronad/scripts/start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 # If you run the script with a parameter (server name), only that server will be start. Otherwise, all servers in the /opt/armagetronad/servers directory will be started&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; != &amp;quot;&amp;quot; ]; then&lt;br /&gt;
 	screen -S $1 -X quit				# Kill the window if it exists already, avoiding to run the same server twice&lt;br /&gt;
 	screen -dmS $1 /opt/armagetronad/scripts/srv $1			# start a GNU screen window with the specified server inside&lt;br /&gt;
 else&lt;br /&gt;
 	for f in $(ls /opt/armagetronad/servers/.)				# start a loop running the following command for any existing folders in the /opt/armagetronad/servers folder&lt;br /&gt;
 		do&lt;br /&gt;
 			screen -S $f -X quit				# Kill the window if it exists already, avoiding to run the same server twice&lt;br /&gt;
 			screen -dmS $f /opt/armagetronad/scripts/srv $f	# start a GNU screen window with the server inside for each server folder&lt;br /&gt;
 		done							# ends the loop&lt;br /&gt;
 fi&lt;br /&gt;
Save it and exit the same way as before.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to set both files with execute permissions:&lt;br /&gt;
&amp;lt;code&amp;gt;chmod +x srv start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Starting all servers ===&lt;br /&gt;
&lt;br /&gt;
To make your servers start at boot, edit the /etc/rc.local file and add the &amp;quot;start&amp;quot; script at the end of &amp;lt;code&amp;gt;/opt/armagetronad/scripts/start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to manually start all servers, just run the &amp;lt;code&amp;gt;./start&amp;lt;/code&amp;gt; script. &lt;br /&gt;
&lt;br /&gt;
=== Starting a single specific server ===&lt;br /&gt;
&lt;br /&gt;
If you want to start (or restart) a single server, just run&lt;br /&gt;
 ./start servername&lt;br /&gt;
&lt;br /&gt;
== Server management ==&lt;br /&gt;
&lt;br /&gt;
=== GNU screen ===&lt;br /&gt;
&lt;br /&gt;
GNU screen is a great tool. As explained above, it allow a multi-windowed environement on the simple terminal. And even better, the windows stay alive, evening when you disconnect from the server. You can find everything about GNU screen by typing &amp;lt;code&amp;gt;man screen&amp;lt;/code&amp;gt; on a terminal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Listing the running servers ===&lt;br /&gt;
&lt;br /&gt;
To see the existing windows, meaning here, the running servers, type &amp;lt;code&amp;gt;screen -ls&amp;lt;/code&amp;gt;. It will gives you a list of running windows.&lt;br /&gt;
&lt;br /&gt;
=== Accessing and leaving a server console ===&lt;br /&gt;
&lt;br /&gt;
To attach to a window, type &amp;lt;code&amp;gt;screen -r servername&amp;lt;/code&amp;gt;. You will be in the server console. You can then do all the command you would usually do there. Remote moderation, server adjustment, and so on.&lt;br /&gt;
&lt;br /&gt;
To detach, but keep the server running, press CTRL-a d (control key + low case A, then low case D to detach). You can find all GNU screen key combinations by reading &amp;lt;code&amp;gt;man screen&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Killing a server ===&lt;br /&gt;
&lt;br /&gt;
To kill a server, attach to its window, and press CTRL-C. This will kill the script, and the window. Then press ESC to exit the dead window. An alternate way is to run &lt;br /&gt;
 screen -S servername -X quit&lt;br /&gt;
This will kill and end the window and the server inside.&lt;br /&gt;
&lt;br /&gt;
=== Log files ===&lt;br /&gt;
&lt;br /&gt;
Everytime the &amp;lt;code&amp;gt;srv&amp;lt;/code&amp;gt; script is run, a new logfile will be created in the /opt/armagetronad/logs folder. Keep an eye on log sizes. You don&#039;t want to run out of disk space because of Armagetron Advanced, do you ?&lt;br /&gt;
&lt;br /&gt;
=== Test the server autorestart ===&lt;br /&gt;
&lt;br /&gt;
If you want to try if the server restarts when it crash, do not press CTRL-C into the window. CTRL-C kill the script, therefore it will not be able to restart. Instead, run the &amp;lt;code&amp;gt;quit&amp;lt;/code&amp;gt; command inside the server console. It will close the server, and you will be able to see the message, and the server restarting.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
This article has been written by Superkikim. These scripts and setup details are used to run the &amp;quot;FAST TRACK&amp;quot; servers.&lt;br /&gt;
&lt;br /&gt;
== VPS packs to install ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;yum groupinstall &amp;quot;Development Tools&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
yum install libxml2-devel&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install BZR&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;su -c &#039;rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm&#039;&amp;lt;br \&amp;gt;&lt;br /&gt;
su -c &#039;yum install bzr&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compiling Zthreads&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
CXXFLAGS=-fpermissive ./configure --prefix=/usr&amp;lt;br&amp;gt;&lt;br /&gt;
make&amp;lt;br&amp;gt;&lt;br /&gt;
make install&amp;lt;br&amp;gt;&lt;br /&gt;
ldconfig&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Epsy</name></author>
	</entry>
</feed>