<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://springrts-wiki.p2004a.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Smoth</id>
	<title>Spring - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://springrts-wiki.p2004a.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Smoth"/>
	<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/wiki/Special:Contributions/Smoth"/>
	<updated>2026-11-08T18:00:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21112</id>
		<title>User:Smoth</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21112"/>
		<updated>2014-09-07T22:28:03Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
https://www.youtube.com/watch?v=ShNUz8dXTIY&lt;br /&gt;
^ gimp texturing in a similar style to my own for those who are poor and DON&#039;T have a pegleg and a cutlas.&lt;br /&gt;
[09:09:47] &amp;lt;[LCC]jK&amp;gt; truth is there are only 2 facts: synced can never READ unsynced data, and unsynced can never WRITE synced data&lt;br /&gt;
[09:10:02] &amp;lt;[LCC]jK&amp;gt; everything else is allowed&lt;br /&gt;
&lt;br /&gt;
Plans for game developer restructure:&amp;lt;br/&amp;gt;3 sections, beginer, intermediate and advanced.&lt;br /&gt;
&lt;br /&gt;
Game creation:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Beginner:(1 star)&lt;br /&gt;
&lt;br /&gt;
#focus on how does I get my game in spring&lt;br /&gt;
#how can I alter what is already there&lt;br /&gt;
#stay within knorkes beginner game, we want to have the user in a sort of sandbox.&lt;br /&gt;
#think mutator&lt;br /&gt;
&lt;br /&gt;
Intermediate:(2 stars)&lt;br /&gt;
&lt;br /&gt;
#focus on creating your own content and using it in game&lt;br /&gt;
#introduce them into existing resources lua/models/art&lt;br /&gt;
#most tutorials will be located here.&lt;br /&gt;
#think mod&lt;br /&gt;
&lt;br /&gt;
Advanced:(3 stars)&lt;br /&gt;
&lt;br /&gt;
#person is experience programmer or familiar with spring already.&lt;br /&gt;
#no tutorials, just informational links, this person wants information not how tos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Map creation:&lt;br /&gt;
&lt;br /&gt;
#pretty much just a big dump of all the map related resources for now.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes for SimpleParticleSystem:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;float3 pos&#039;&#039;&#039;&amp;lt;br/&amp;gt;Origon point for your particle system.&lt;br /&gt;
*&#039;&#039;&#039;[[AtlasedTexture]] texture&#039;&#039;&#039;&amp;lt;br/&amp;gt;Texture for the particles, defined in resources.tdf.&lt;br /&gt;
*&#039;&#039;&#039;float3 emitVector&#039;&#039;&#039;&amp;lt;br/&amp;gt;Use DIR to have it acquire a direction, this will utilize a poly on your object that you choose as an emitter.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;See my notes on vectors to understand how to use the vectors of this:&amp;lt;br/&amp;gt;&#039;&#039;i.e. 0,1,0 is straight up&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[CColorMap]] colorMap&#039;&#039;&#039;&amp;lt;br/&amp;gt;This will give your system a range of colors spread over time.&amp;lt;br/&amp;gt;it has 4 parts:&amp;lt;br/&amp;gt;RED, GREEN, BLUE, ALPHA&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;note:&amp;lt;br/&amp;gt;For additive blend use values that are low like: 0.1 or 0.05&amp;lt;br/&amp;gt;For overlay use 1.0&amp;lt;br/&amp;gt;see notes on overlay versus additive blend.&lt;br /&gt;
*&#039;&#039;&#039;float3 gravity&#039;&#039;&#039;&amp;lt;br/&amp;gt;Gravity applied along a vector.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;For example, if you want your particles to fall after being emmited.&amp;lt;br/&amp;gt;Emitvector would be: 0,1,0&amp;lt;br/&amp;gt;and gravity would need to be 0,-1,0&amp;lt;br/&amp;gt;This would result in particles falling straight down.&lt;br /&gt;
*&#039;&#039;&#039;float airdrag&#039;&#039;&#039;&amp;lt;br/&amp;gt;Constant multiplier on the particle each frame, a value of 1.0 means the particles will keep their current momentum, a value bellow 1 and they will slow down each frame.&lt;br /&gt;
*&#039;&#039;&#039;float particleLife&#039;&#039;&#039;&amp;lt;br/&amp;gt;Life of the particles in frames.&lt;br /&gt;
*&#039;&#039;&#039;float particleLifeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleLifeSpread added to particleLife.&lt;br /&gt;
*&#039;&#039;&#039;int numParticles&#039;&#039;&#039;&amp;lt;br/&amp;gt;Number of particles that will be spawned.&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeed&#039;&#039;&#039;&amp;lt;br/&amp;gt;Initial speed of the particles.&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeedSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSpeedSpread added to particleSpeed.&lt;br /&gt;
*&#039;&#039;&#039;float particleSize&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size of the particles.&lt;br /&gt;
*&#039;&#039;&#039;float particleSizeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSizeSpread added to particleSize.&lt;br /&gt;
*&#039;&#039;&#039;float sizeGrowth&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size added to particles each frame.&lt;br /&gt;
*&#039;&#039;&#039;float sizeMod&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size frame multiplier.&lt;br /&gt;
*&#039;&#039;&#039;float emitRot&#039;&#039;&#039;&amp;lt;br/&amp;gt;Rotation in degree from emitVector that particles will be spawned from, a value of 90 will emmit particles in a plane perpendicular to the emitVector.&lt;br /&gt;
*&#039;&#039;&#039;float emitRotSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and emitRotSpread added to emitRot, a value of 180 will make the particles spawn in a full sphere.&lt;br /&gt;
*&#039;&#039;&#039;bool directional&#039;&#039;&#039;&amp;lt;br/&amp;gt;If the particles should be oriented to point at the direction of their velocity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes vectors:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Vectors are directional systems represented by a 3d graph here: [[File:Untitled-1.png]]&amp;lt;br/&amp;gt;See how each vector points along it&#039;s own line?&amp;lt;br/&amp;gt;We have 6 possible directions:&amp;lt;br/&amp;gt;&amp;lt;center&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
X = right&amp;lt;br/&amp;gt;-X = left&amp;lt;br/&amp;gt;Z = Front&amp;lt;br/&amp;gt;-Z = Rear&amp;lt;br/&amp;gt;Y = Up&amp;lt;br/&amp;gt;-Y = Down&lt;br /&gt;
&lt;br /&gt;
WORK IN PROGRESS!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&#039;&#039;&#039;Notes Additive blend versus overlay blend:&#039;&#039;&#039; WORK IN PROGRESS!&lt;br /&gt;
&lt;br /&gt;
*ADDTITIVE&lt;br /&gt;
*OVERLAY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;IsShield=1; // if 1 mean the weapon is a shield and not a weapon shieldrepulser=1; // 0=destroy projectile,1=repulse (bounce) projectile smartshield=1; // 1=shield doesnt affect allies weapons exteriorshield=1; // 1=shield doesnt affect weapons fired from within shield visibleshield=1; // 1=see a visible shell representing the shield visibleshieldrepulse=1; // 1=see a beam showing when shield repulses something shieldenergyuse=10; // how much energy the shield use when repulsing/destroying something shieldforce=1000; // how hard shield can accelerate some sort of projectiles away shieldradius=30; // size of shield effect shieldmaxspeed=1100; // maximum speed the shield can push some sort of projectiles away shieldpower=300; // how much power the shield can store, power is drained by the affected weapons damage, 0=infinite shieldpowerregen=5; // how fast the shield regenerates power shieldpowerregenenergy=10; // how much energy the shield uses when regenerating power shieldintercepttype=2; // which types of weapon the shield can affect (bitfield) //interceptedbyshieldtype=; // which types of shields can affect this weapon, if (shieldInterceptType &amp;amp; interceptedByShieldType) is not zero the shield can affect the weapon, default 1 for plasma, 2 for laser, 4 for missiles, 0 for other shieldgoodcolor=0.0 0.05 0.75; // color of shield when power is full shieldbadcolor=0.6 0.05 0.75; // color of shield when power is empty shieldalpha=1; // how visible the shield shell is with visibleshield=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=SMOTHS SVN STUFFS!=&lt;br /&gt;
==Credentials==&lt;br /&gt;
This is a limited acess account to allow people to go in and read/test code bits. I am not officially releasing ANYTHING in this svn. Just that it is here for people to read and try things out for the betterment of the community.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;User: tester&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pass: rageflame&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Spring TD==&lt;br /&gt;
I have no idea WHAT is in here, just a bunch of stuff from the old spring towerdefense project. I am not sure if it even works. it is a largely untested/unmaintained vaporware wasteland.&lt;br /&gt;
&lt;br /&gt;
https://venture2.projectlocker.com/GundamRTSdevs/Spring_TD/svn &lt;br /&gt;
&lt;br /&gt;
==my halloween thing==&lt;br /&gt;
just a bunch of stuff from a while back was mostly just trying out some ideas. Another lua testbed where I played with some ideas. Not all code is complete or actually properly done/functional. Some more recent chili tinkering. Nothing big yet just a bunch of random stuff.&lt;br /&gt;
&lt;br /&gt;
https://venture2.projectlocker.com/GundamRTSdevs/Halloween/svn&lt;br /&gt;
&lt;br /&gt;
==My test bed for my next project==&lt;br /&gt;
contains several sdds, they just get them all.&lt;br /&gt;
&lt;br /&gt;
https://venture2.projectlocker.com/GundamRTSdevs/RTSCore/svn&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Template:API&amp;diff=22310</id>
		<title>Template:API</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Template:API&amp;diff=22310"/>
		<updated>2014-02-16T17:36:34Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span style=&amp;quot;color:#cccccc;text-shadow: #111 2px 2px 2px;&amp;quot;&amp;gt;{{{1}}}&#039;&#039;&#039;{{anchor|API:{{{2}}}}}{{{2}}}&#039;&#039;&#039;({{{3}}})&amp;lt;/span&amp;gt; &lt;br /&gt;
: &amp;lt;span style=&amp;quot;color:#E6F08C&amp;quot;&amp;gt;{{{4}}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: {{{5}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{FIXME}}Usage old colour &amp;lt;nowiki&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#00ff88&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21111</id>
		<title>User:Smoth</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21111"/>
		<updated>2013-11-01T17:11:55Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[09:09:47] &amp;lt;[LCC]jK&amp;gt; truth is there are only 2 facts: synced can never READ unsynced data, and unsynced can never WRITE synced data&lt;br /&gt;
[09:10:02] &amp;lt;[LCC]jK&amp;gt; everything else is allowed&lt;br /&gt;
&lt;br /&gt;
Plans for game developer restructure:&amp;lt;br/&amp;gt;3 sections, beginer, intermediate and advanced.&lt;br /&gt;
&lt;br /&gt;
Game creation:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Beginner:(1 star)&lt;br /&gt;
&lt;br /&gt;
#focus on how does I get my game in spring&lt;br /&gt;
#how can I alter what is already there&lt;br /&gt;
#stay within knorkes beginner game, we want to have the user in a sort of sandbox.&lt;br /&gt;
#think mutator&lt;br /&gt;
&lt;br /&gt;
Intermediate:(2 stars)&lt;br /&gt;
&lt;br /&gt;
#focus on creating your own content and using it in game&lt;br /&gt;
#introduce them into existing resources lua/models/art&lt;br /&gt;
#most tutorials will be located here.&lt;br /&gt;
#think mod&lt;br /&gt;
&lt;br /&gt;
Advanced:(3 stars)&lt;br /&gt;
&lt;br /&gt;
#person is experience programmer or familiar with spring already.&lt;br /&gt;
#no tutorials, just informational links, this person wants information not how tos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Map creation:&lt;br /&gt;
&lt;br /&gt;
#pretty much just a big dump of all the map related resources for now.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes for SimpleParticleSystem:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;float3 pos&#039;&#039;&#039;&amp;lt;br/&amp;gt;Origon point for your particle system.&lt;br /&gt;
*&#039;&#039;&#039;[[AtlasedTexture]] texture&#039;&#039;&#039;&amp;lt;br/&amp;gt;Texture for the particles, defined in resources.tdf.&lt;br /&gt;
*&#039;&#039;&#039;float3 emitVector&#039;&#039;&#039;&amp;lt;br/&amp;gt;Use DIR to have it acquire a direction, this will utilize a poly on your object that you choose as an emitter.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;See my notes on vectors to understand how to use the vectors of this:&amp;lt;br/&amp;gt;&#039;&#039;i.e. 0,1,0 is straight up&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[CColorMap]] colorMap&#039;&#039;&#039;&amp;lt;br/&amp;gt;This will give your system a range of colors spread over time.&amp;lt;br/&amp;gt;it has 4 parts:&amp;lt;br/&amp;gt;RED, GREEN, BLUE, ALPHA&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;note:&amp;lt;br/&amp;gt;For additive blend use values that are low like: 0.1 or 0.05&amp;lt;br/&amp;gt;For overlay use 1.0&amp;lt;br/&amp;gt;see notes on overlay versus additive blend.&lt;br /&gt;
*&#039;&#039;&#039;float3 gravity&#039;&#039;&#039;&amp;lt;br/&amp;gt;Gravity applied along a vector.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;For example, if you want your particles to fall after being emmited.&amp;lt;br/&amp;gt;Emitvector would be: 0,1,0&amp;lt;br/&amp;gt;and gravity would need to be 0,-1,0&amp;lt;br/&amp;gt;This would result in particles falling straight down.&lt;br /&gt;
*&#039;&#039;&#039;float airdrag&#039;&#039;&#039;&amp;lt;br/&amp;gt;Constant multiplier on the particle each frame, a value of 1.0 means the particles will keep their current momentum, a value bellow 1 and they will slow down each frame.&lt;br /&gt;
*&#039;&#039;&#039;float particleLife&#039;&#039;&#039;&amp;lt;br/&amp;gt;Life of the particles in frames.&lt;br /&gt;
*&#039;&#039;&#039;float particleLifeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleLifeSpread added to particleLife.&lt;br /&gt;
*&#039;&#039;&#039;int numParticles&#039;&#039;&#039;&amp;lt;br/&amp;gt;Number of particles that will be spawned.&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeed&#039;&#039;&#039;&amp;lt;br/&amp;gt;Initial speed of the particles.&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeedSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSpeedSpread added to particleSpeed.&lt;br /&gt;
*&#039;&#039;&#039;float particleSize&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size of the particles.&lt;br /&gt;
*&#039;&#039;&#039;float particleSizeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSizeSpread added to particleSize.&lt;br /&gt;
*&#039;&#039;&#039;float sizeGrowth&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size added to particles each frame.&lt;br /&gt;
*&#039;&#039;&#039;float sizeMod&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size frame multiplier.&lt;br /&gt;
*&#039;&#039;&#039;float emitRot&#039;&#039;&#039;&amp;lt;br/&amp;gt;Rotation in degree from emitVector that particles will be spawned from, a value of 90 will emmit particles in a plane perpendicular to the emitVector.&lt;br /&gt;
*&#039;&#039;&#039;float emitRotSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and emitRotSpread added to emitRot, a value of 180 will make the particles spawn in a full sphere.&lt;br /&gt;
*&#039;&#039;&#039;bool directional&#039;&#039;&#039;&amp;lt;br/&amp;gt;If the particles should be oriented to point at the direction of their velocity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes vectors:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Vectors are directional systems represented by a 3d graph here: [[File:Untitled-1.png]]&amp;lt;br/&amp;gt;See how each vector points along it&#039;s own line?&amp;lt;br/&amp;gt;We have 6 possible directions:&amp;lt;br/&amp;gt;&amp;lt;center&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
X = right&amp;lt;br/&amp;gt;-X = left&amp;lt;br/&amp;gt;Z = Front&amp;lt;br/&amp;gt;-Z = Rear&amp;lt;br/&amp;gt;Y = Up&amp;lt;br/&amp;gt;-Y = Down&lt;br /&gt;
&lt;br /&gt;
WORK IN PROGRESS!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&#039;&#039;&#039;Notes Additive blend versus overlay blend:&#039;&#039;&#039; WORK IN PROGRESS!&lt;br /&gt;
&lt;br /&gt;
*ADDTITIVE&lt;br /&gt;
*OVERLAY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;IsShield=1; // if 1 mean the weapon is a shield and not a weapon shieldrepulser=1; // 0=destroy projectile,1=repulse (bounce) projectile smartshield=1; // 1=shield doesnt affect allies weapons exteriorshield=1; // 1=shield doesnt affect weapons fired from within shield visibleshield=1; // 1=see a visible shell representing the shield visibleshieldrepulse=1; // 1=see a beam showing when shield repulses something shieldenergyuse=10; // how much energy the shield use when repulsing/destroying something shieldforce=1000; // how hard shield can accelerate some sort of projectiles away shieldradius=30; // size of shield effect shieldmaxspeed=1100; // maximum speed the shield can push some sort of projectiles away shieldpower=300; // how much power the shield can store, power is drained by the affected weapons damage, 0=infinite shieldpowerregen=5; // how fast the shield regenerates power shieldpowerregenenergy=10; // how much energy the shield uses when regenerating power shieldintercepttype=2; // which types of weapon the shield can affect (bitfield) //interceptedbyshieldtype=; // which types of shields can affect this weapon, if (shieldInterceptType &amp;amp; interceptedByShieldType) is not zero the shield can affect the weapon, default 1 for plasma, 2 for laser, 4 for missiles, 0 for other shieldgoodcolor=0.0 0.05 0.75; // color of shield when power is full shieldbadcolor=0.6 0.05 0.75; // color of shield when power is empty shieldalpha=1; // how visible the shield shell is with visibleshield=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=SMOTHS SVN STUFFS!=&lt;br /&gt;
==Credentials==&lt;br /&gt;
This is a limited acess account to allow people to go in and read/test code bits. I am not officially releasing ANYTHING in this svn. Just that it is here for people to read and try things out for the betterment of the community.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;User: tester&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pass: rageflame&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Spring TD==&lt;br /&gt;
I have no idea WHAT is in here, just a bunch of stuff from the old spring towerdefense project. I am not sure if it even works. it is a largely untested/unmaintained vaporware wasteland.&lt;br /&gt;
&lt;br /&gt;
https://venture2.projectlocker.com/GundamRTSdevs/Spring_TD/svn &lt;br /&gt;
&lt;br /&gt;
==my halloween thing==&lt;br /&gt;
just a bunch of stuff from a while back was mostly just trying out some ideas. Another lua testbed where I played with some ideas. Not all code is complete or actually properly done/functional. Some more recent chili tinkering. Nothing big yet just a bunch of random stuff.&lt;br /&gt;
&lt;br /&gt;
https://venture2.projectlocker.com/GundamRTSdevs/Halloween/svn&lt;br /&gt;
&lt;br /&gt;
==My test bed for my next project==&lt;br /&gt;
contains several sdds, they just get them all.&lt;br /&gt;
&lt;br /&gt;
https://venture2.projectlocker.com/GundamRTSdevs/RTSCore/svn&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21110</id>
		<title>User:Smoth</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21110"/>
		<updated>2013-11-01T17:11:13Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[09:09:47] &amp;lt;[LCC]jK&amp;gt; truth is there are only 2 facts: synced can never READ unsynced data, and unsynced can never WRITE synced data&lt;br /&gt;
[09:10:02] &amp;lt;[LCC]jK&amp;gt; everything else is allowed&lt;br /&gt;
&lt;br /&gt;
Plans for game developer restructure:&amp;lt;br/&amp;gt;3 sections, beginer, intermediate and advanced.&lt;br /&gt;
&lt;br /&gt;
Game creation:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Beginner:(1 star)&lt;br /&gt;
&lt;br /&gt;
#focus on how does I get my game in spring&lt;br /&gt;
#how can I alter what is already there&lt;br /&gt;
#stay within knorkes beginner game, we want to have the user in a sort of sandbox.&lt;br /&gt;
#think mutator&lt;br /&gt;
&lt;br /&gt;
Intermediate:(2 stars)&lt;br /&gt;
&lt;br /&gt;
#focus on creating your own content and using it in game&lt;br /&gt;
#introduce them into existing resources lua/models/art&lt;br /&gt;
#most tutorials will be located here.&lt;br /&gt;
#think mod&lt;br /&gt;
&lt;br /&gt;
Advanced:(3 stars)&lt;br /&gt;
&lt;br /&gt;
#person is experience programmer or familiar with spring already.&lt;br /&gt;
#no tutorials, just informational links, this person wants information not how tos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Map creation:&lt;br /&gt;
&lt;br /&gt;
#pretty much just a big dump of all the map related resources for now.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes for SimpleParticleSystem:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;float3 pos&#039;&#039;&#039;&amp;lt;br/&amp;gt;Origon point for your particle system.&lt;br /&gt;
*&#039;&#039;&#039;[[AtlasedTexture]] texture&#039;&#039;&#039;&amp;lt;br/&amp;gt;Texture for the particles, defined in resources.tdf.&lt;br /&gt;
*&#039;&#039;&#039;float3 emitVector&#039;&#039;&#039;&amp;lt;br/&amp;gt;Use DIR to have it acquire a direction, this will utilize a poly on your object that you choose as an emitter.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;See my notes on vectors to understand how to use the vectors of this:&amp;lt;br/&amp;gt;&#039;&#039;i.e. 0,1,0 is straight up&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[CColorMap]] colorMap&#039;&#039;&#039;&amp;lt;br/&amp;gt;This will give your system a range of colors spread over time.&amp;lt;br/&amp;gt;it has 4 parts:&amp;lt;br/&amp;gt;RED, GREEN, BLUE, ALPHA&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;note:&amp;lt;br/&amp;gt;For additive blend use values that are low like: 0.1 or 0.05&amp;lt;br/&amp;gt;For overlay use 1.0&amp;lt;br/&amp;gt;see notes on overlay versus additive blend.&lt;br /&gt;
*&#039;&#039;&#039;float3 gravity&#039;&#039;&#039;&amp;lt;br/&amp;gt;Gravity applied along a vector.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;For example, if you want your particles to fall after being emmited.&amp;lt;br/&amp;gt;Emitvector would be: 0,1,0&amp;lt;br/&amp;gt;and gravity would need to be 0,-1,0&amp;lt;br/&amp;gt;This would result in particles falling straight down.&lt;br /&gt;
*&#039;&#039;&#039;float airdrag&#039;&#039;&#039;&amp;lt;br/&amp;gt;Constant multiplier on the particle each frame, a value of 1.0 means the particles will keep their current momentum, a value bellow 1 and they will slow down each frame.&lt;br /&gt;
*&#039;&#039;&#039;float particleLife&#039;&#039;&#039;&amp;lt;br/&amp;gt;Life of the particles in frames.&lt;br /&gt;
*&#039;&#039;&#039;float particleLifeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleLifeSpread added to particleLife.&lt;br /&gt;
*&#039;&#039;&#039;int numParticles&#039;&#039;&#039;&amp;lt;br/&amp;gt;Number of particles that will be spawned.&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeed&#039;&#039;&#039;&amp;lt;br/&amp;gt;Initial speed of the particles.&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeedSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSpeedSpread added to particleSpeed.&lt;br /&gt;
*&#039;&#039;&#039;float particleSize&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size of the particles.&lt;br /&gt;
*&#039;&#039;&#039;float particleSizeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSizeSpread added to particleSize.&lt;br /&gt;
*&#039;&#039;&#039;float sizeGrowth&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size added to particles each frame.&lt;br /&gt;
*&#039;&#039;&#039;float sizeMod&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size frame multiplier.&lt;br /&gt;
*&#039;&#039;&#039;float emitRot&#039;&#039;&#039;&amp;lt;br/&amp;gt;Rotation in degree from emitVector that particles will be spawned from, a value of 90 will emmit particles in a plane perpendicular to the emitVector.&lt;br /&gt;
*&#039;&#039;&#039;float emitRotSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and emitRotSpread added to emitRot, a value of 180 will make the particles spawn in a full sphere.&lt;br /&gt;
*&#039;&#039;&#039;bool directional&#039;&#039;&#039;&amp;lt;br/&amp;gt;If the particles should be oriented to point at the direction of their velocity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes vectors:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Vectors are directional systems represented by a 3d graph here: [[File:Untitled-1.png]]&amp;lt;br/&amp;gt;See how each vector points along it&#039;s own line?&amp;lt;br/&amp;gt;We have 6 possible directions:&amp;lt;br/&amp;gt;&amp;lt;center&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
X = right&amp;lt;br/&amp;gt;-X = left&amp;lt;br/&amp;gt;Z = Front&amp;lt;br/&amp;gt;-Z = Rear&amp;lt;br/&amp;gt;Y = Up&amp;lt;br/&amp;gt;-Y = Down&lt;br /&gt;
&lt;br /&gt;
WORK IN PROGRESS!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&#039;&#039;&#039;Notes Additive blend versus overlay blend:&#039;&#039;&#039; WORK IN PROGRESS!&lt;br /&gt;
&lt;br /&gt;
*ADDTITIVE&lt;br /&gt;
*OVERLAY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;IsShield=1; // if 1 mean the weapon is a shield and not a weapon shieldrepulser=1; // 0=destroy projectile,1=repulse (bounce) projectile smartshield=1; // 1=shield doesnt affect allies weapons exteriorshield=1; // 1=shield doesnt affect weapons fired from within shield visibleshield=1; // 1=see a visible shell representing the shield visibleshieldrepulse=1; // 1=see a beam showing when shield repulses something shieldenergyuse=10; // how much energy the shield use when repulsing/destroying something shieldforce=1000; // how hard shield can accelerate some sort of projectiles away shieldradius=30; // size of shield effect shieldmaxspeed=1100; // maximum speed the shield can push some sort of projectiles away shieldpower=300; // how much power the shield can store, power is drained by the affected weapons damage, 0=infinite shieldpowerregen=5; // how fast the shield regenerates power shieldpowerregenenergy=10; // how much energy the shield uses when regenerating power shieldintercepttype=2; // which types of weapon the shield can affect (bitfield) //interceptedbyshieldtype=; // which types of shields can affect this weapon, if (shieldInterceptType &amp;amp; interceptedByShieldType) is not zero the shield can affect the weapon, default 1 for plasma, 2 for laser, 4 for missiles, 0 for other shieldgoodcolor=0.0 0.05 0.75; // color of shield when power is full shieldbadcolor=0.6 0.05 0.75; // color of shield when power is empty shieldalpha=1; // how visible the shield shell is with visibleshield=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==SMOTHS SVN STUFFS!==&lt;br /&gt;
=Credentials=&lt;br /&gt;
This is a limited acess account to allow people to go in and read/test code bits. I am not officially releasing ANYTHING in this svn. Just that it is here for people to read and try things out for the betterment of the community.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;User: tester&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pass: rageflame&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Spring TD=&lt;br /&gt;
I have no idea WHAT is in here, just a bunch of stuff from the old spring towerdefense project. I am not sure if it even works. it is a largely untested/unmaintained vaporware wasteland.&lt;br /&gt;
&lt;br /&gt;
https://venture2.projectlocker.com/GundamRTSdevs/Spring_TD/svn &lt;br /&gt;
&lt;br /&gt;
=my halloween thing=&lt;br /&gt;
just a bunch of stuff from a while back was mostly just trying out some ideas. Another lua testbed where I played with some ideas. Not all code is complete or actually properly done/functional. Some more recent chili tinkering. Nothing big yet just a bunch of random stuff.&lt;br /&gt;
&lt;br /&gt;
https://venture2.projectlocker.com/GundamRTSdevs/Halloween/svn&lt;br /&gt;
&lt;br /&gt;
=My test bed for my next project=&lt;br /&gt;
contains several sdds, they just get them all.&lt;br /&gt;
&lt;br /&gt;
https://venture2.projectlocker.com/GundamRTSdevs/RTSCore/svn&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21109</id>
		<title>User:Smoth</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21109"/>
		<updated>2013-11-01T17:09:48Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[09:09:47] &amp;lt;[LCC]jK&amp;gt; truth is there are only 2 facts: synced can never READ unsynced data, and unsynced can never WRITE synced data&lt;br /&gt;
[09:10:02] &amp;lt;[LCC]jK&amp;gt; everything else is allowed&lt;br /&gt;
&lt;br /&gt;
Plans for game developer restructure:&amp;lt;br/&amp;gt;3 sections, beginer, intermediate and advanced.&lt;br /&gt;
&lt;br /&gt;
Game creation:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Beginner:(1 star)&lt;br /&gt;
&lt;br /&gt;
#focus on how does I get my game in spring&lt;br /&gt;
#how can I alter what is already there&lt;br /&gt;
#stay within knorkes beginner game, we want to have the user in a sort of sandbox.&lt;br /&gt;
#think mutator&lt;br /&gt;
&lt;br /&gt;
Intermediate:(2 stars)&lt;br /&gt;
&lt;br /&gt;
#focus on creating your own content and using it in game&lt;br /&gt;
#introduce them into existing resources lua/models/art&lt;br /&gt;
#most tutorials will be located here.&lt;br /&gt;
#think mod&lt;br /&gt;
&lt;br /&gt;
Advanced:(3 stars)&lt;br /&gt;
&lt;br /&gt;
#person is experience programmer or familiar with spring already.&lt;br /&gt;
#no tutorials, just informational links, this person wants information not how tos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Map creation:&lt;br /&gt;
&lt;br /&gt;
#pretty much just a big dump of all the map related resources for now.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes for SimpleParticleSystem:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;float3 pos&#039;&#039;&#039;&amp;lt;br/&amp;gt;Origon point for your particle system.&lt;br /&gt;
*&#039;&#039;&#039;[[AtlasedTexture]] texture&#039;&#039;&#039;&amp;lt;br/&amp;gt;Texture for the particles, defined in resources.tdf.&lt;br /&gt;
*&#039;&#039;&#039;float3 emitVector&#039;&#039;&#039;&amp;lt;br/&amp;gt;Use DIR to have it acquire a direction, this will utilize a poly on your object that you choose as an emitter.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;See my notes on vectors to understand how to use the vectors of this:&amp;lt;br/&amp;gt;&#039;&#039;i.e. 0,1,0 is straight up&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[CColorMap]] colorMap&#039;&#039;&#039;&amp;lt;br/&amp;gt;This will give your system a range of colors spread over time.&amp;lt;br/&amp;gt;it has 4 parts:&amp;lt;br/&amp;gt;RED, GREEN, BLUE, ALPHA&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;note:&amp;lt;br/&amp;gt;For additive blend use values that are low like: 0.1 or 0.05&amp;lt;br/&amp;gt;For overlay use 1.0&amp;lt;br/&amp;gt;see notes on overlay versus additive blend.&lt;br /&gt;
*&#039;&#039;&#039;float3 gravity&#039;&#039;&#039;&amp;lt;br/&amp;gt;Gravity applied along a vector.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;For example, if you want your particles to fall after being emmited.&amp;lt;br/&amp;gt;Emitvector would be: 0,1,0&amp;lt;br/&amp;gt;and gravity would need to be 0,-1,0&amp;lt;br/&amp;gt;This would result in particles falling straight down.&lt;br /&gt;
*&#039;&#039;&#039;float airdrag&#039;&#039;&#039;&amp;lt;br/&amp;gt;Constant multiplier on the particle each frame, a value of 1.0 means the particles will keep their current momentum, a value bellow 1 and they will slow down each frame.&lt;br /&gt;
*&#039;&#039;&#039;float particleLife&#039;&#039;&#039;&amp;lt;br/&amp;gt;Life of the particles in frames.&lt;br /&gt;
*&#039;&#039;&#039;float particleLifeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleLifeSpread added to particleLife.&lt;br /&gt;
*&#039;&#039;&#039;int numParticles&#039;&#039;&#039;&amp;lt;br/&amp;gt;Number of particles that will be spawned.&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeed&#039;&#039;&#039;&amp;lt;br/&amp;gt;Initial speed of the particles.&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeedSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSpeedSpread added to particleSpeed.&lt;br /&gt;
*&#039;&#039;&#039;float particleSize&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size of the particles.&lt;br /&gt;
*&#039;&#039;&#039;float particleSizeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSizeSpread added to particleSize.&lt;br /&gt;
*&#039;&#039;&#039;float sizeGrowth&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size added to particles each frame.&lt;br /&gt;
*&#039;&#039;&#039;float sizeMod&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size frame multiplier.&lt;br /&gt;
*&#039;&#039;&#039;float emitRot&#039;&#039;&#039;&amp;lt;br/&amp;gt;Rotation in degree from emitVector that particles will be spawned from, a value of 90 will emmit particles in a plane perpendicular to the emitVector.&lt;br /&gt;
*&#039;&#039;&#039;float emitRotSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and emitRotSpread added to emitRot, a value of 180 will make the particles spawn in a full sphere.&lt;br /&gt;
*&#039;&#039;&#039;bool directional&#039;&#039;&#039;&amp;lt;br/&amp;gt;If the particles should be oriented to point at the direction of their velocity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes vectors:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Vectors are directional systems represented by a 3d graph here: [[File:Untitled-1.png]]&amp;lt;br/&amp;gt;See how each vector points along it&#039;s own line?&amp;lt;br/&amp;gt;We have 6 possible directions:&amp;lt;br/&amp;gt;&amp;lt;center&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
X = right&amp;lt;br/&amp;gt;-X = left&amp;lt;br/&amp;gt;Z = Front&amp;lt;br/&amp;gt;-Z = Rear&amp;lt;br/&amp;gt;Y = Up&amp;lt;br/&amp;gt;-Y = Down&lt;br /&gt;
&lt;br /&gt;
WORK IN PROGRESS!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&#039;&#039;&#039;Notes Additive blend versus overlay blend:&#039;&#039;&#039; WORK IN PROGRESS!&lt;br /&gt;
&lt;br /&gt;
*ADDTITIVE&lt;br /&gt;
*OVERLAY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;IsShield=1; // if 1 mean the weapon is a shield and not a weapon shieldrepulser=1; // 0=destroy projectile,1=repulse (bounce) projectile smartshield=1; // 1=shield doesnt affect allies weapons exteriorshield=1; // 1=shield doesnt affect weapons fired from within shield visibleshield=1; // 1=see a visible shell representing the shield visibleshieldrepulse=1; // 1=see a beam showing when shield repulses something shieldenergyuse=10; // how much energy the shield use when repulsing/destroying something shieldforce=1000; // how hard shield can accelerate some sort of projectiles away shieldradius=30; // size of shield effect shieldmaxspeed=1100; // maximum speed the shield can push some sort of projectiles away shieldpower=300; // how much power the shield can store, power is drained by the affected weapons damage, 0=infinite shieldpowerregen=5; // how fast the shield regenerates power shieldpowerregenenergy=10; // how much energy the shield uses when regenerating power shieldintercepttype=2; // which types of weapon the shield can affect (bitfield) //interceptedbyshieldtype=; // which types of shields can affect this weapon, if (shieldInterceptType &amp;amp; interceptedByShieldType) is not zero the shield can affect the weapon, default 1 for plasma, 2 for laser, 4 for missiles, 0 for other shieldgoodcolor=0.0 0.05 0.75; // color of shield when power is full shieldbadcolor=0.6 0.05 0.75; // color of shield when power is empty shieldalpha=1; // how visible the shield shell is with visibleshield=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==SMOTHS SVN STUFFS!==&lt;br /&gt;
=Spring TD=&lt;br /&gt;
I have no idea WHAT is in here, just a bunch of stuff from the old spring towerdefense project. I am not sure if it even works. it is a largely untested/unmaintained vaporware wasteland.&lt;br /&gt;
&lt;br /&gt;
https://venture2.projectlocker.com/GundamRTSdevs/Spring_TD/svn &lt;br /&gt;
&lt;br /&gt;
=my halloween thing=&lt;br /&gt;
just a bunch of stuff from a while back was mostly just trying out some ideas. Another lua testbed where I played with some ideas. Not all code is complete or actually properly done/functional. Some more recent chili tinkering. Nothing big yet just a bunch of random stuff.&lt;br /&gt;
&lt;br /&gt;
https://venture2.projectlocker.com/GundamRTSdevs/Halloween/svn&lt;br /&gt;
&lt;br /&gt;
=My test bed for my next project=&lt;br /&gt;
contains several sdds, they just get them all.&lt;br /&gt;
&lt;br /&gt;
https://venture2.projectlocker.com/GundamRTSdevs/RTSCore/svn&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;User: tester&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pass: rageflame&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21108</id>
		<title>User:Smoth</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21108"/>
		<updated>2013-11-01T17:08:06Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* my halloween thing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[09:09:47] &amp;lt;[LCC]jK&amp;gt; truth is there are only 2 facts: synced can never READ unsynced data, and unsynced can never WRITE synced data&lt;br /&gt;
[09:10:02] &amp;lt;[LCC]jK&amp;gt; everything else is allowed&lt;br /&gt;
&lt;br /&gt;
Plans for game developer restructure:&amp;lt;br/&amp;gt;3 sections, beginer, intermediate and advanced.&lt;br /&gt;
&lt;br /&gt;
Game creation:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Beginner:(1 star)&lt;br /&gt;
&lt;br /&gt;
#focus on how does I get my game in spring&lt;br /&gt;
#how can I alter what is already there&lt;br /&gt;
#stay within knorkes beginner game, we want to have the user in a sort of sandbox.&lt;br /&gt;
#think mutator&lt;br /&gt;
&lt;br /&gt;
Intermediate:(2 stars)&lt;br /&gt;
&lt;br /&gt;
#focus on creating your own content and using it in game&lt;br /&gt;
#introduce them into existing resources lua/models/art&lt;br /&gt;
#most tutorials will be located here.&lt;br /&gt;
#think mod&lt;br /&gt;
&lt;br /&gt;
Advanced:(3 stars)&lt;br /&gt;
&lt;br /&gt;
#person is experience programmer or familiar with spring already.&lt;br /&gt;
#no tutorials, just informational links, this person wants information not how tos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Map creation:&lt;br /&gt;
&lt;br /&gt;
#pretty much just a big dump of all the map related resources for now.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes for SimpleParticleSystem:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;float3 pos&#039;&#039;&#039;&amp;lt;br/&amp;gt;Origon point for your particle system.&lt;br /&gt;
*&#039;&#039;&#039;[[AtlasedTexture]] texture&#039;&#039;&#039;&amp;lt;br/&amp;gt;Texture for the particles, defined in resources.tdf.&lt;br /&gt;
*&#039;&#039;&#039;float3 emitVector&#039;&#039;&#039;&amp;lt;br/&amp;gt;Use DIR to have it acquire a direction, this will utilize a poly on your object that you choose as an emitter.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;See my notes on vectors to understand how to use the vectors of this:&amp;lt;br/&amp;gt;&#039;&#039;i.e. 0,1,0 is straight up&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[CColorMap]] colorMap&#039;&#039;&#039;&amp;lt;br/&amp;gt;This will give your system a range of colors spread over time.&amp;lt;br/&amp;gt;it has 4 parts:&amp;lt;br/&amp;gt;RED, GREEN, BLUE, ALPHA&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;note:&amp;lt;br/&amp;gt;For additive blend use values that are low like: 0.1 or 0.05&amp;lt;br/&amp;gt;For overlay use 1.0&amp;lt;br/&amp;gt;see notes on overlay versus additive blend.&lt;br /&gt;
*&#039;&#039;&#039;float3 gravity&#039;&#039;&#039;&amp;lt;br/&amp;gt;Gravity applied along a vector.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;For example, if you want your particles to fall after being emmited.&amp;lt;br/&amp;gt;Emitvector would be: 0,1,0&amp;lt;br/&amp;gt;and gravity would need to be 0,-1,0&amp;lt;br/&amp;gt;This would result in particles falling straight down.&lt;br /&gt;
*&#039;&#039;&#039;float airdrag&#039;&#039;&#039;&amp;lt;br/&amp;gt;Constant multiplier on the particle each frame, a value of 1.0 means the particles will keep their current momentum, a value bellow 1 and they will slow down each frame.&lt;br /&gt;
*&#039;&#039;&#039;float particleLife&#039;&#039;&#039;&amp;lt;br/&amp;gt;Life of the particles in frames.&lt;br /&gt;
*&#039;&#039;&#039;float particleLifeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleLifeSpread added to particleLife.&lt;br /&gt;
*&#039;&#039;&#039;int numParticles&#039;&#039;&#039;&amp;lt;br/&amp;gt;Number of particles that will be spawned.&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeed&#039;&#039;&#039;&amp;lt;br/&amp;gt;Initial speed of the particles.&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeedSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSpeedSpread added to particleSpeed.&lt;br /&gt;
*&#039;&#039;&#039;float particleSize&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size of the particles.&lt;br /&gt;
*&#039;&#039;&#039;float particleSizeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSizeSpread added to particleSize.&lt;br /&gt;
*&#039;&#039;&#039;float sizeGrowth&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size added to particles each frame.&lt;br /&gt;
*&#039;&#039;&#039;float sizeMod&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size frame multiplier.&lt;br /&gt;
*&#039;&#039;&#039;float emitRot&#039;&#039;&#039;&amp;lt;br/&amp;gt;Rotation in degree from emitVector that particles will be spawned from, a value of 90 will emmit particles in a plane perpendicular to the emitVector.&lt;br /&gt;
*&#039;&#039;&#039;float emitRotSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and emitRotSpread added to emitRot, a value of 180 will make the particles spawn in a full sphere.&lt;br /&gt;
*&#039;&#039;&#039;bool directional&#039;&#039;&#039;&amp;lt;br/&amp;gt;If the particles should be oriented to point at the direction of their velocity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes vectors:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Vectors are directional systems represented by a 3d graph here: [[File:Untitled-1.png]]&amp;lt;br/&amp;gt;See how each vector points along it&#039;s own line?&amp;lt;br/&amp;gt;We have 6 possible directions:&amp;lt;br/&amp;gt;&amp;lt;center&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
X = right&amp;lt;br/&amp;gt;-X = left&amp;lt;br/&amp;gt;Z = Front&amp;lt;br/&amp;gt;-Z = Rear&amp;lt;br/&amp;gt;Y = Up&amp;lt;br/&amp;gt;-Y = Down&lt;br /&gt;
&lt;br /&gt;
WORK IN PROGRESS!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&#039;&#039;&#039;Notes Additive blend versus overlay blend:&#039;&#039;&#039; WORK IN PROGRESS!&lt;br /&gt;
&lt;br /&gt;
*ADDTITIVE&lt;br /&gt;
*OVERLAY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;IsShield=1; // if 1 mean the weapon is a shield and not a weapon shieldrepulser=1; // 0=destroy projectile,1=repulse (bounce) projectile smartshield=1; // 1=shield doesnt affect allies weapons exteriorshield=1; // 1=shield doesnt affect weapons fired from within shield visibleshield=1; // 1=see a visible shell representing the shield visibleshieldrepulse=1; // 1=see a beam showing when shield repulses something shieldenergyuse=10; // how much energy the shield use when repulsing/destroying something shieldforce=1000; // how hard shield can accelerate some sort of projectiles away shieldradius=30; // size of shield effect shieldmaxspeed=1100; // maximum speed the shield can push some sort of projectiles away shieldpower=300; // how much power the shield can store, power is drained by the affected weapons damage, 0=infinite shieldpowerregen=5; // how fast the shield regenerates power shieldpowerregenenergy=10; // how much energy the shield uses when regenerating power shieldintercepttype=2; // which types of weapon the shield can affect (bitfield) //interceptedbyshieldtype=; // which types of shields can affect this weapon, if (shieldInterceptType &amp;amp; interceptedByShieldType) is not zero the shield can affect the weapon, default 1 for plasma, 2 for laser, 4 for missiles, 0 for other shieldgoodcolor=0.0 0.05 0.75; // color of shield when power is full shieldbadcolor=0.6 0.05 0.75; // color of shield when power is empty shieldalpha=1; // how visible the shield shell is with visibleshield=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==SMOTHS SVN STUFFS!==&lt;br /&gt;
=my halloween thing=&lt;br /&gt;
just a bunch of stuff from a while back was mostly just trying out some ideas. Another lua testbed where I played with some ideas. Not all code is complete or actually properly done/functional. Some more recent chili tinkering. Nothing big yet just a bunch of random stuff.&lt;br /&gt;
&lt;br /&gt;
https://venture2.projectlocker.com/GundamRTSdevs/Halloween/svn&lt;br /&gt;
&lt;br /&gt;
=My test bed for my next project=&lt;br /&gt;
contains several sdds, they just get them all.&lt;br /&gt;
&lt;br /&gt;
https://venture2.projectlocker.com/GundamRTSdevs/RTSCore/svn&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;User: tester&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pass: rageflame&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21107</id>
		<title>User:Smoth</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21107"/>
		<updated>2013-11-01T17:07:06Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[09:09:47] &amp;lt;[LCC]jK&amp;gt; truth is there are only 2 facts: synced can never READ unsynced data, and unsynced can never WRITE synced data&lt;br /&gt;
[09:10:02] &amp;lt;[LCC]jK&amp;gt; everything else is allowed&lt;br /&gt;
&lt;br /&gt;
Plans for game developer restructure:&amp;lt;br/&amp;gt;3 sections, beginer, intermediate and advanced.&lt;br /&gt;
&lt;br /&gt;
Game creation:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Beginner:(1 star)&lt;br /&gt;
&lt;br /&gt;
#focus on how does I get my game in spring&lt;br /&gt;
#how can I alter what is already there&lt;br /&gt;
#stay within knorkes beginner game, we want to have the user in a sort of sandbox.&lt;br /&gt;
#think mutator&lt;br /&gt;
&lt;br /&gt;
Intermediate:(2 stars)&lt;br /&gt;
&lt;br /&gt;
#focus on creating your own content and using it in game&lt;br /&gt;
#introduce them into existing resources lua/models/art&lt;br /&gt;
#most tutorials will be located here.&lt;br /&gt;
#think mod&lt;br /&gt;
&lt;br /&gt;
Advanced:(3 stars)&lt;br /&gt;
&lt;br /&gt;
#person is experience programmer or familiar with spring already.&lt;br /&gt;
#no tutorials, just informational links, this person wants information not how tos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Map creation:&lt;br /&gt;
&lt;br /&gt;
#pretty much just a big dump of all the map related resources for now.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes for SimpleParticleSystem:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;float3 pos&#039;&#039;&#039;&amp;lt;br/&amp;gt;Origon point for your particle system.&lt;br /&gt;
*&#039;&#039;&#039;[[AtlasedTexture]] texture&#039;&#039;&#039;&amp;lt;br/&amp;gt;Texture for the particles, defined in resources.tdf.&lt;br /&gt;
*&#039;&#039;&#039;float3 emitVector&#039;&#039;&#039;&amp;lt;br/&amp;gt;Use DIR to have it acquire a direction, this will utilize a poly on your object that you choose as an emitter.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;See my notes on vectors to understand how to use the vectors of this:&amp;lt;br/&amp;gt;&#039;&#039;i.e. 0,1,0 is straight up&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[CColorMap]] colorMap&#039;&#039;&#039;&amp;lt;br/&amp;gt;This will give your system a range of colors spread over time.&amp;lt;br/&amp;gt;it has 4 parts:&amp;lt;br/&amp;gt;RED, GREEN, BLUE, ALPHA&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;note:&amp;lt;br/&amp;gt;For additive blend use values that are low like: 0.1 or 0.05&amp;lt;br/&amp;gt;For overlay use 1.0&amp;lt;br/&amp;gt;see notes on overlay versus additive blend.&lt;br /&gt;
*&#039;&#039;&#039;float3 gravity&#039;&#039;&#039;&amp;lt;br/&amp;gt;Gravity applied along a vector.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;For example, if you want your particles to fall after being emmited.&amp;lt;br/&amp;gt;Emitvector would be: 0,1,0&amp;lt;br/&amp;gt;and gravity would need to be 0,-1,0&amp;lt;br/&amp;gt;This would result in particles falling straight down.&lt;br /&gt;
*&#039;&#039;&#039;float airdrag&#039;&#039;&#039;&amp;lt;br/&amp;gt;Constant multiplier on the particle each frame, a value of 1.0 means the particles will keep their current momentum, a value bellow 1 and they will slow down each frame.&lt;br /&gt;
*&#039;&#039;&#039;float particleLife&#039;&#039;&#039;&amp;lt;br/&amp;gt;Life of the particles in frames.&lt;br /&gt;
*&#039;&#039;&#039;float particleLifeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleLifeSpread added to particleLife.&lt;br /&gt;
*&#039;&#039;&#039;int numParticles&#039;&#039;&#039;&amp;lt;br/&amp;gt;Number of particles that will be spawned.&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeed&#039;&#039;&#039;&amp;lt;br/&amp;gt;Initial speed of the particles.&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeedSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSpeedSpread added to particleSpeed.&lt;br /&gt;
*&#039;&#039;&#039;float particleSize&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size of the particles.&lt;br /&gt;
*&#039;&#039;&#039;float particleSizeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSizeSpread added to particleSize.&lt;br /&gt;
*&#039;&#039;&#039;float sizeGrowth&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size added to particles each frame.&lt;br /&gt;
*&#039;&#039;&#039;float sizeMod&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size frame multiplier.&lt;br /&gt;
*&#039;&#039;&#039;float emitRot&#039;&#039;&#039;&amp;lt;br/&amp;gt;Rotation in degree from emitVector that particles will be spawned from, a value of 90 will emmit particles in a plane perpendicular to the emitVector.&lt;br /&gt;
*&#039;&#039;&#039;float emitRotSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and emitRotSpread added to emitRot, a value of 180 will make the particles spawn in a full sphere.&lt;br /&gt;
*&#039;&#039;&#039;bool directional&#039;&#039;&#039;&amp;lt;br/&amp;gt;If the particles should be oriented to point at the direction of their velocity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes vectors:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Vectors are directional systems represented by a 3d graph here: [[File:Untitled-1.png]]&amp;lt;br/&amp;gt;See how each vector points along it&#039;s own line?&amp;lt;br/&amp;gt;We have 6 possible directions:&amp;lt;br/&amp;gt;&amp;lt;center&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
X = right&amp;lt;br/&amp;gt;-X = left&amp;lt;br/&amp;gt;Z = Front&amp;lt;br/&amp;gt;-Z = Rear&amp;lt;br/&amp;gt;Y = Up&amp;lt;br/&amp;gt;-Y = Down&lt;br /&gt;
&lt;br /&gt;
WORK IN PROGRESS!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&#039;&#039;&#039;Notes Additive blend versus overlay blend:&#039;&#039;&#039; WORK IN PROGRESS!&lt;br /&gt;
&lt;br /&gt;
*ADDTITIVE&lt;br /&gt;
*OVERLAY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;IsShield=1; // if 1 mean the weapon is a shield and not a weapon shieldrepulser=1; // 0=destroy projectile,1=repulse (bounce) projectile smartshield=1; // 1=shield doesnt affect allies weapons exteriorshield=1; // 1=shield doesnt affect weapons fired from within shield visibleshield=1; // 1=see a visible shell representing the shield visibleshieldrepulse=1; // 1=see a beam showing when shield repulses something shieldenergyuse=10; // how much energy the shield use when repulsing/destroying something shieldforce=1000; // how hard shield can accelerate some sort of projectiles away shieldradius=30; // size of shield effect shieldmaxspeed=1100; // maximum speed the shield can push some sort of projectiles away shieldpower=300; // how much power the shield can store, power is drained by the affected weapons damage, 0=infinite shieldpowerregen=5; // how fast the shield regenerates power shieldpowerregenenergy=10; // how much energy the shield uses when regenerating power shieldintercepttype=2; // which types of weapon the shield can affect (bitfield) //interceptedbyshieldtype=; // which types of shields can affect this weapon, if (shieldInterceptType &amp;amp; interceptedByShieldType) is not zero the shield can affect the weapon, default 1 for plasma, 2 for laser, 4 for missiles, 0 for other shieldgoodcolor=0.0 0.05 0.75; // color of shield when power is full shieldbadcolor=0.6 0.05 0.75; // color of shield when power is empty shieldalpha=1; // how visible the shield shell is with visibleshield=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==SMOTHS SVN STUFFS!==&lt;br /&gt;
=my halloween thing=&lt;br /&gt;
just a bunch of shit from a while back and some more recent chili tinkering. Nothing big yet just a bunch of random stuff.&lt;br /&gt;
&lt;br /&gt;
https://venture2.projectlocker.com/GundamRTSdevs/Halloween/svn &lt;br /&gt;
&lt;br /&gt;
=My test bed for my next project=&lt;br /&gt;
contains several sdds, they just get them all.&lt;br /&gt;
&lt;br /&gt;
https://venture2.projectlocker.com/GundamRTSdevs/RTSCore/svn&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;User: tester&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pass: rageflame&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Vehicles&amp;diff=20348</id>
		<title>Talk:Vehicles</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Vehicles&amp;diff=20348"/>
		<updated>2013-06-01T02:17:30Z</updated>

		<summary type="html">&lt;p&gt;Smoth: Created page with &amp;quot;Suggested rename: VehicleFactories_BA or something similar. This has little to do with general vehicles and spring&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Suggested rename:&lt;br /&gt;
VehicleFactories_BA or something similar. This has little to do with general vehicles and spring&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Spring_MT&amp;diff=20335</id>
		<title>Talk:Spring MT</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Spring_MT&amp;diff=20335"/>
		<updated>2013-03-14T21:49:13Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Why is this unofficial? ===&lt;br /&gt;
The code is more complex and some of the project members do not like this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the above really necessary? Seems like drama and honestly doesn&#039;t belong in the wiki &lt;br /&gt;
[[User:Smoth|Smoth]] ([[User talk:Smoth|talk]]) 22:42, 14 March 2013 (CET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
removed the above [[User:Smoth|Smoth]] ([[User talk:Smoth|talk]]) 22:48, 14 March 2013 (CET)&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Spring_MT&amp;diff=20334</id>
		<title>Talk:Spring MT</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Spring_MT&amp;diff=20334"/>
		<updated>2013-03-14T21:48:19Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* Why is this unofficial? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Why is this unofficial? ===&lt;br /&gt;
The code is more complex and some of the project members do not like this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the above really necessary? Seems like drama and honestly doesn&#039;t belong in the wiki &lt;br /&gt;
[[User:Smoth|Smoth]] ([[User talk:Smoth|talk]]) 22:42, 14 March 2013 (CET)&lt;br /&gt;
removed the above [[User:Smoth|Smoth]] ([[User talk:Smoth|talk]]) 22:48, 14 March 2013 (CET)&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Spring_MT&amp;diff=17206</id>
		<title>Spring MT</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Spring_MT&amp;diff=17206"/>
		<updated>2013-03-14T21:47:29Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Spring MT ==&lt;br /&gt;
Unofficial 93.11 release&lt;br /&gt;
&lt;br /&gt;
=== What is Spring MT? ===&lt;br /&gt;
Spring MT is an independent engine that uses asynchronous multithreaded simulation (MT ASIM) to a much higher degree than the official Spring release. It also uses asynchronous pathfinding (APATH). This typically translates into significantly higher performance, depending on your hardware.&lt;br /&gt;
&lt;br /&gt;
=== What hardware do I need? ===&lt;br /&gt;
You need &#039;&#039;&#039;three physical cores&#039;&#039;&#039; to get any real benefit. A quad core or better is recommended.&lt;br /&gt;
&lt;br /&gt;
=== How much faster is it? ===&lt;br /&gt;
Typically &#039;&#039;&#039;more than 100% faster&#039;&#039;&#039; with a quad core. Benchmarked using Core I7 2600K, BA7.72, DeltaSiegeDry, Default pathfinder, 4x &amp;quot;give all&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== How can it be faster? ===&lt;br /&gt;
The simulation will run on several CPU cores, and the pathfinder may also run on a separate core.&lt;br /&gt;
&lt;br /&gt;
=== How does Spring / Spring MT play together? ===&lt;br /&gt;
Spring MT includes Spring, and uses automatic engine type detection to make it sync-compatible.&lt;br /&gt;
&lt;br /&gt;
=== On which servers can I play Spring MT? ===&lt;br /&gt;
Look for servers that have &amp;quot;Spring MT&amp;quot; or &amp;quot;MT&amp;quot; in the description. These servers may have protected access and will send you a chat message with instructions how to join.&lt;br /&gt;
&lt;br /&gt;
=== What is the downside? ===&lt;br /&gt;
The simulation may work slightly differently, producing some negative effects. This is also experimental stuff and may have crashbugs or desyncs. The Default pathfinder is recommended because the QTPFS pathfinder tends to kill the performance of Spring MT.&lt;br /&gt;
&lt;br /&gt;
=== Should I use MT even if I don&#039;t want to play on MT servers? ===&lt;br /&gt;
You can give it a try, the included Spring (non-MT) version also has automatic CPU affinity setup that may give you some more performance.&lt;br /&gt;
&lt;br /&gt;
=== How do I install it? ===&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Note: After installation, join lobby chat room &#039;&#039;&#039;#SpringMT9311&#039;&#039;&#039; to get access to MT autohosts.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://springrts.com/dl/buildbot/default/MTsim2/93.1-25-gc5bb28d/win32/spring_93.1-25-gc5bb28d.exe Windows installer]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://springrts.com/dl/buildbot/default/MTsim2/93.1-25-gc5bb28d/win32/spring_93.1-25-gc5bb28d_portable.7z Windows portable]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Linux TBA&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How do I install it on my autohost? ===&lt;br /&gt;
[http://springrts.com/dl/buildbot/default/MTsim2/93.1-25-gc5bb28d/win32/%7bMTsim2%7d93.1-25-gc5bb28d_spring-dedicated.7z Windows dedicated server]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Linux TBA&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;spads.conf&#039;&#039;&#039; set masterChannel:SpringMT9311&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;spads.pl&#039;&#039;&#039;, search for &amp;quot;sub cbJoinBattleRequest&amp;quot; and insert these lines of code immediately after the second line (the one that starts with &amp;quot;my&amp;quot;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  if (!exists $lobby-&amp;gt;{channels}-&amp;gt;{$masterChannel} || &lt;br /&gt;
      !exists $lobby-&amp;gt;{channels}-&amp;gt;{$masterChannel}-&amp;gt;{$user}) {&lt;br /&gt;
    my $mtmsg = &amp;quot;This server requires Spring MT 93.11. &amp;quot;.&lt;br /&gt;
      &amp;quot;Install http://springrts.com/wiki/Spring_MT&amp;quot;;&lt;br /&gt;
    sayPrivate($user,$mtmsg);&lt;br /&gt;
    queueLobbyCommand([&#039;JOINBATTLEDENY&#039;,$user,$mtmsg]);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Consider disabling spads auto update to avoid the changes being overwritten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Spring_MT&amp;diff=20333</id>
		<title>Talk:Spring MT</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Spring_MT&amp;diff=20333"/>
		<updated>2013-03-14T21:42:06Z</updated>

		<summary type="html">&lt;p&gt;Smoth: Created page with &amp;quot;=== Why is this unofficial? === The code is more complex and some of the project members do not like this.   Is the above really necessary? Seems like drama and honestly doesn...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Why is this unofficial? ===&lt;br /&gt;
The code is more complex and some of the project members do not like this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the above really necessary? Seems like drama and honestly doesn&#039;t belong in the wiki &lt;br /&gt;
[[User:Smoth|Smoth]] ([[User talk:Smoth|talk]]) 22:42, 14 March 2013 (CET)&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2166</id>
		<title>Assimp</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2166"/>
		<updated>2013-03-13T02:25:45Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* Blender Workflow Tutorial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Game_and_Unit_development|Game Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Assimp=&lt;br /&gt;
Open Asset Import Library (short name: Assimp) is used in Spring for loading a number of model formats including Collada &amp;amp; 3ds (currently obj is parsed by a different codepaths).&lt;br /&gt;
&lt;br /&gt;
What Spring supports in its Assimp renderer:&lt;br /&gt;
* extended metafile (&amp;lt;code&amp;gt;%modelfilename%.lua&amp;lt;/code&amp;gt; next to the modefile)&lt;br /&gt;
* still uses tex1 &amp;amp; tex2 texture system of S3O (same shader as S3O)&lt;br /&gt;
* 2nd texcoord&lt;br /&gt;
* loading of the texture filepaths from the model (don&#039;t have to be in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;)&lt;br /&gt;
* when texture filepaths aren&#039;t included in the model, it searches for &amp;lt;code&amp;gt;%modelfilename%.*&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;%modelfilename%2.*&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;&lt;br /&gt;
* special modelpieces `SpringHeight` &amp;amp; `SpringRadius`&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Blender Workflow Tutorial=&lt;br /&gt;
This is a stub containing a simple outline of a Blender workflow. Disclaimer: I&#039;m no modeling expert, there may be a better way to do this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;1)&#039;&#039;&#039; Open an existing Blender model or import a different format through the File menu (File &amp;gt; Import).&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;2)&#039;&#039;&#039; In the 3D view, at the top right, there will be a &#039;+&#039; icon. click this &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; [[File:3-12-2013 5-02-21 PM.pngâ€Žâ€Ž|secret panel]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;3)&#039;&#039;&#039; In that panel, select Display &amp;gt; Shading &amp;gt; GLSL &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:3-12-2013 5-02-04 PM.pngâ€Žâ€Ž|display settings]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;4)&#039;&#039;&#039; Make sure you have a lamp in your scene while in this mode or your model will be dark.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; [[File:3-12-2013_5-11-14_PM.pngâ€Žâ€Ž|blend light source]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;5)&#039;&#039;&#039; Applying texture: &lt;br /&gt;
## In the UV/Image editor, click the image icon (Tooltip: Browse Image to be linked) to select your texture. If it&#039;s not there, click on Image &amp;gt; Open Image to browse for it.&lt;br /&gt;
## In the 3D View, select (right-click) your object and hit Tab to enter Mesh Mode.&lt;br /&gt;
## Hit A to select all your faces.&lt;br /&gt;
## In the 3D View, hit A to select all the faces there and select your image with the image icon. Assuming there&#039;s a UVMap, you should see your texture.&lt;br /&gt;
## If you don&#039;t see any faces you&#039;ll need to add the UVMap to a new texture:&lt;br /&gt;
### In the Properties view click on Textures (checkerboard icon).&lt;br /&gt;
### Click on Add New Texture (plus icon).&lt;br /&gt;
### Select Type = Image or Movie.&lt;br /&gt;
### Under Image, click on the image icon and choose your image file.&lt;br /&gt;
### Under Mapping, select Coordinates = UV.&lt;br /&gt;
### Under Influence &amp;gt; Diffuse, check Color and make sure it&#039;s 1.00.&lt;br /&gt;
## To add a normalmap:&lt;br /&gt;
### Repeat steps 5.1 to 5.5.&lt;br /&gt;
### Under Image Sampling, check Normal Map.&lt;br /&gt;
### Under Influence &amp;gt; Geometry, check Normal. Make sure it.s 1.00.&lt;br /&gt;
## You&#039;ll need to do this for each piece.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;7)&#039;&#039;&#039; Piece hierarchy:&lt;br /&gt;
## Select piece A, hold shift and select piece B. Hit Ctrl+P and it will make piece A a child of piece B.&lt;br /&gt;
## Make sure all the pieces are descending from one single piece.&lt;br /&gt;
# Setting piece origins:&lt;br /&gt;
## Select a piece.&lt;br /&gt;
## Place the 3D cursor where you want the origin to be (left-click).&lt;br /&gt;
## Click on Object &amp;gt; Transform &amp;gt; Origin to 3D Cursor.&lt;br /&gt;
## You can now rotate your pieces:&lt;br /&gt;
### Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select Individual Origins.&lt;br /&gt;
### Rotate.&lt;br /&gt;
## Repeat this for all your pieces.&lt;br /&gt;
# Save your model.&lt;br /&gt;
# Select all the pieces of your model, ignore the lamp.&lt;br /&gt;
# Click on File &amp;gt; Export &amp;gt; Collada.&lt;br /&gt;
# Check &amp;quot;Export Only Selected&amp;quot; and export.&lt;br /&gt;
# The dae file will be used as your object.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Game development]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2165</id>
		<title>Assimp</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2165"/>
		<updated>2013-03-13T02:23:52Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* Blender Workflow Tutorial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Game_and_Unit_development|Game Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Assimp=&lt;br /&gt;
Open Asset Import Library (short name: Assimp) is used in Spring for loading a number of model formats including Collada &amp;amp; 3ds (currently obj is parsed by a different codepaths).&lt;br /&gt;
&lt;br /&gt;
What Spring supports in its Assimp renderer:&lt;br /&gt;
* extended metafile (&amp;lt;code&amp;gt;%modelfilename%.lua&amp;lt;/code&amp;gt; next to the modefile)&lt;br /&gt;
* still uses tex1 &amp;amp; tex2 texture system of S3O (same shader as S3O)&lt;br /&gt;
* 2nd texcoord&lt;br /&gt;
* loading of the texture filepaths from the model (don&#039;t have to be in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;)&lt;br /&gt;
* when texture filepaths aren&#039;t included in the model, it searches for &amp;lt;code&amp;gt;%modelfilename%.*&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;%modelfilename%2.*&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;&lt;br /&gt;
* special modelpieces `SpringHeight` &amp;amp; `SpringRadius`&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Blender Workflow Tutorial=&lt;br /&gt;
This is a stub containing a simple outline of a Blender workflow. Disclaimer: I&#039;m no modeling expert, there may be a better way to do this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;1)&#039;&#039;&#039; Open an existing Blender model or import a different format through the File menu (File &amp;gt; Import).&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;2)&#039;&#039;&#039; In the 3D view, at the top right, there will be a &#039;+&#039; icon. click this &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; [[File:3-12-2013 5-02-21 PM.pngâ€Žâ€Ž|secret panel]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;3)&#039;&#039;&#039; In that panel, select Display &amp;gt; Shading &amp;gt; GLSL &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:3-12-2013 5-02-04 PM.pngâ€Žâ€Ž|display settings]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;4)&#039;&#039;&#039; Make sure you have a lamp in your scene while in this mode or your model will be dark.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; [[File:3-12-2013_5-11-14_PM.pngâ€Žâ€Ž|blend light source]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;5)&#039;&#039;&#039; Applying texture: &lt;br /&gt;
## In the UV/Image editor, click the image icon (Tooltip: Browse Image to be linked) to select your texture. If it&#039;s not there, click on Image &amp;gt; Open Image to browse for it.&lt;br /&gt;
## In the 3D View, select (right-click) your object and hit Tab to enter Mesh Mode.&lt;br /&gt;
## Hit A to select all your faces.&lt;br /&gt;
## In the 3D View, hit A to select all the faces there and select your image with the image icon. Assuming there&#039;s a UVMap, you should see your texture.&lt;br /&gt;
## If you don&#039;t see any faces you&#039;ll need to add the UVMap to a new texture:&lt;br /&gt;
### In the Properties view click on Textures (checkerboard icon).&lt;br /&gt;
### Click on Add New Texture (plus icon).&lt;br /&gt;
### Select Type = Image or Movie.&lt;br /&gt;
### Under Image, click on the image icon and choose your image file.&lt;br /&gt;
### Under Mapping, select Coordinates = UV.&lt;br /&gt;
### Under Influence &amp;gt; Diffuse, check Color and make sure it&#039;s 1.00.&lt;br /&gt;
## To add a normalmap:&lt;br /&gt;
### Repeat steps 5.1 to 5.5.&lt;br /&gt;
### Under Image Sampling, check Normal Map.&lt;br /&gt;
### Under Influence &amp;gt; Geometry, check Normal. Make sure it.s 1.00.&lt;br /&gt;
## You&#039;ll need to do this for each piece.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;7)&#039;&#039;&#039; Piece hierarchy:&lt;br /&gt;
## Select piece A, hold shift and select piece B. Hit Ctrl+P and it will make piece A a child of piece B.&lt;br /&gt;
## Make sure all the pieces are descending from one single piece.&lt;br /&gt;
# Setting piece origins:&lt;br /&gt;
## Select a piece.&lt;br /&gt;
## Place the 3D cursor where you want the origin to be (left-click).&lt;br /&gt;
## Click on Object &amp;gt; Transform &amp;gt; Origin to 3D Cursor.&lt;br /&gt;
## You can now rotate your pieces:&lt;br /&gt;
### Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select Individual Origins.&lt;br /&gt;
### Rotate.&lt;br /&gt;
## Repeat this for all your pieces.&lt;br /&gt;
# Save your model.&lt;br /&gt;
# Select all the pieces of your model, ignore the lamp.&lt;br /&gt;
# Click on File &amp;gt; Export &amp;gt; Collada.&lt;br /&gt;
# Check &amp;quot;Export Only Selected&amp;quot; and export.&lt;br /&gt;
# The dae file will be used as your object.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Game development]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2164</id>
		<title>Assimp</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2164"/>
		<updated>2013-03-13T02:23:31Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* Blender Workflow Tutorial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Game_and_Unit_development|Game Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Assimp=&lt;br /&gt;
Open Asset Import Library (short name: Assimp) is used in Spring for loading a number of model formats including Collada &amp;amp; 3ds (currently obj is parsed by a different codepaths).&lt;br /&gt;
&lt;br /&gt;
What Spring supports in its Assimp renderer:&lt;br /&gt;
* extended metafile (&amp;lt;code&amp;gt;%modelfilename%.lua&amp;lt;/code&amp;gt; next to the modefile)&lt;br /&gt;
* still uses tex1 &amp;amp; tex2 texture system of S3O (same shader as S3O)&lt;br /&gt;
* 2nd texcoord&lt;br /&gt;
* loading of the texture filepaths from the model (don&#039;t have to be in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;)&lt;br /&gt;
* when texture filepaths aren&#039;t included in the model, it searches for &amp;lt;code&amp;gt;%modelfilename%.*&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;%modelfilename%2.*&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;&lt;br /&gt;
* special modelpieces `SpringHeight` &amp;amp; `SpringRadius`&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Blender Workflow Tutorial=&lt;br /&gt;
This is a stub containing a simple outline of a Blender workflow. Disclaimer: I&#039;m no modeling expert, there may be a better way to do this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;1)&#039;&#039;&#039; Open an existing Blender model or import a different format through the File menu (File &amp;gt; Import).&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;2)&#039;&#039;&#039; In the 3D view, at the top right, there will be a &#039;+&#039; icon. click this &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; [[File:3-12-2013 5-02-21 PM.pngâ€Žâ€Ž|secret panel]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;3)&#039;&#039;&#039; In that panel, select Display &amp;gt; Shading &amp;gt; GLSL &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:3-12-2013 5-02-04 PM.pngâ€Žâ€Ž|display settings]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;4)&#039;&#039;&#039; Make sure you have a lamp in your scene while in this mode or your model will be dark.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; [[File:3-12-2013_5-11-14_PM.pngâ€Žâ€Ž|blend light source]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;5)&#039;&#039;&#039; # Applying texture: &lt;br /&gt;
## In the UV/Image editor, click the image icon (Tooltip: Browse Image to be linked) to select your texture. If it&#039;s not there, click on Image &amp;gt; Open Image to browse for it.&lt;br /&gt;
## In the 3D View, select (right-click) your object and hit Tab to enter Mesh Mode.&lt;br /&gt;
## Hit A to select all your faces.&lt;br /&gt;
## In the 3D View, hit A to select all the faces there and select your image with the image icon. Assuming there&#039;s a UVMap, you should see your texture.&lt;br /&gt;
## If you don&#039;t see any faces you&#039;ll need to add the UVMap to a new texture:&lt;br /&gt;
### In the Properties view click on Textures (checkerboard icon).&lt;br /&gt;
### Click on Add New Texture (plus icon).&lt;br /&gt;
### Select Type = Image or Movie.&lt;br /&gt;
### Under Image, click on the image icon and choose your image file.&lt;br /&gt;
### Under Mapping, select Coordinates = UV.&lt;br /&gt;
### Under Influence &amp;gt; Diffuse, check Color and make sure it&#039;s 1.00.&lt;br /&gt;
## To add a normalmap:&lt;br /&gt;
### Repeat steps 5.1 to 5.5.&lt;br /&gt;
### Under Image Sampling, check Normal Map.&lt;br /&gt;
### Under Influence &amp;gt; Geometry, check Normal. Make sure it.s 1.00.&lt;br /&gt;
## You&#039;ll need to do this for each piece.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;7)&#039;&#039;&#039; # Piece hierarchy:&lt;br /&gt;
## Select piece A, hold shift and select piece B. Hit Ctrl+P and it will make piece A a child of piece B.&lt;br /&gt;
## Make sure all the pieces are descending from one single piece.&lt;br /&gt;
# Setting piece origins:&lt;br /&gt;
## Select a piece.&lt;br /&gt;
## Place the 3D cursor where you want the origin to be (left-click).&lt;br /&gt;
## Click on Object &amp;gt; Transform &amp;gt; Origin to 3D Cursor.&lt;br /&gt;
## You can now rotate your pieces:&lt;br /&gt;
### Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select Individual Origins.&lt;br /&gt;
### Rotate.&lt;br /&gt;
## Repeat this for all your pieces.&lt;br /&gt;
# Save your model.&lt;br /&gt;
# Select all the pieces of your model, ignore the lamp.&lt;br /&gt;
# Click on File &amp;gt; Export &amp;gt; Collada.&lt;br /&gt;
# Check &amp;quot;Export Only Selected&amp;quot; and export.&lt;br /&gt;
# The dae file will be used as your object.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Game development]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2163</id>
		<title>Assimp</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2163"/>
		<updated>2013-03-13T02:20:30Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* Blender Workflow Tutorial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Game_and_Unit_development|Game Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Assimp=&lt;br /&gt;
Open Asset Import Library (short name: Assimp) is used in Spring for loading a number of model formats including Collada &amp;amp; 3ds (currently obj is parsed by a different codepaths).&lt;br /&gt;
&lt;br /&gt;
What Spring supports in its Assimp renderer:&lt;br /&gt;
* extended metafile (&amp;lt;code&amp;gt;%modelfilename%.lua&amp;lt;/code&amp;gt; next to the modefile)&lt;br /&gt;
* still uses tex1 &amp;amp; tex2 texture system of S3O (same shader as S3O)&lt;br /&gt;
* 2nd texcoord&lt;br /&gt;
* loading of the texture filepaths from the model (don&#039;t have to be in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;)&lt;br /&gt;
* when texture filepaths aren&#039;t included in the model, it searches for &amp;lt;code&amp;gt;%modelfilename%.*&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;%modelfilename%2.*&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;&lt;br /&gt;
* special modelpieces `SpringHeight` &amp;amp; `SpringRadius`&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Blender Workflow Tutorial=&lt;br /&gt;
This is a stub containing a simple outline of a Blender workflow. Disclaimer: I&#039;m no modeling expert, there may be a better way to do this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;1)&#039;&#039;&#039; Open an existing Blender model or import a different format through the File menu (File &amp;gt; Import).&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;2)&#039;&#039;&#039; In the 3D view, at the top right, there will be a &#039;+&#039; icon. click this &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; [[File:3-12-2013 5-02-21 PM.pngâ€Žâ€Ž|secret panel]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;3)&#039;&#039;&#039; In that panel, select Display &amp;gt; Shading &amp;gt; GLSL &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:3-12-2013 5-02-04 PM.pngâ€Žâ€Ž|display settings]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&#039;&#039;&#039;4)&#039;&#039;&#039; Make sure you have a lamp in your scene while in this mode or your model will be dark.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;by default they blender&#039;s starting file will have this&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; [[File:3-12-2013_5-11-14_PM.pngâ€Žâ€Ž|blend light source]]&amp;lt;/td&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Applying texture: &lt;br /&gt;
## In the UV/Image editor, click the image icon (Tooltip: Browse Image to be linked) to select your texture. If it&#039;s not there, click on Image &amp;gt; Open Image to browse for it.&lt;br /&gt;
## In the 3D View, select (right-click) your object and hit Tab to enter Mesh Mode.&lt;br /&gt;
## Hit A to select all your faces.&lt;br /&gt;
## In the 3D View, hit A to select all the faces there and select your image with the image icon. Assuming there&#039;s a UVMap, you should see your texture.&lt;br /&gt;
## If you don&#039;t see any faces you&#039;ll need to add the UVMap to a new texture:&lt;br /&gt;
### In the Properties view click on Textures (checkerboard icon).&lt;br /&gt;
### Click on Add New Texture (plus icon).&lt;br /&gt;
### Select Type = Image or Movie.&lt;br /&gt;
### Under Image, click on the image icon and choose your image file.&lt;br /&gt;
### Under Mapping, select Coordinates = UV.&lt;br /&gt;
### Under Influence &amp;gt; Diffuse, check Color and make sure it&#039;s 1.00.&lt;br /&gt;
## To add a normalmap:&lt;br /&gt;
### Repeat steps 5.1 to 5.5.&lt;br /&gt;
### Under Image Sampling, check Normal Map.&lt;br /&gt;
### Under Influence &amp;gt; Geometry, check Normal. Make sure it.s 1.00.&lt;br /&gt;
## You&#039;ll need to do this for each piece.&lt;br /&gt;
# Piece hierarchy:&lt;br /&gt;
## Select piece A, hold shift and select piece B. Hit Ctrl+P and it will make piece A a child of piece B.&lt;br /&gt;
## Make sure all the pieces are descending from one single piece.&lt;br /&gt;
# Setting piece origins:&lt;br /&gt;
## Select a piece.&lt;br /&gt;
## Place the 3D cursor where you want the origin to be (left-click).&lt;br /&gt;
## Click on Object &amp;gt; Transform &amp;gt; Origin to 3D Cursor.&lt;br /&gt;
## You can now rotate your pieces:&lt;br /&gt;
### Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select Individual Origins.&lt;br /&gt;
### Rotate.&lt;br /&gt;
## Repeat this for all your pieces.&lt;br /&gt;
# Save your model.&lt;br /&gt;
# Select all the pieces of your model, ignore the lamp.&lt;br /&gt;
# Click on File &amp;gt; Export &amp;gt; Collada.&lt;br /&gt;
# Check &amp;quot;Export Only Selected&amp;quot; and export.&lt;br /&gt;
# The dae file will be used as your object.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game development]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Assimp&amp;diff=20182</id>
		<title>Talk:Assimp</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Assimp&amp;diff=20182"/>
		<updated>2013-03-12T22:21:56Z</updated>

		<summary type="html">&lt;p&gt;Smoth: Created page with &amp;quot;I am walking through this and adding images to it as I go. this page will be under construction for a bit. Please forgive the cobwebs&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am walking through this and adding images to it as I go. this page will be under construction for a bit. Please forgive the cobwebs&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2162</id>
		<title>Assimp</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2162"/>
		<updated>2013-03-12T22:18:22Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Game_and_Unit_development|Game Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Assimp=&lt;br /&gt;
Open Asset Import Library (short name: Assimp) is used in Spring for loading a number of model formats including Collada &amp;amp; 3ds (currently obj is parsed by a different codepaths).&lt;br /&gt;
&lt;br /&gt;
What Spring supports in its Assimp renderer:&lt;br /&gt;
* extended metafile (&amp;lt;code&amp;gt;%modelfilename%.lua&amp;lt;/code&amp;gt; next to the modefile)&lt;br /&gt;
* still uses tex1 &amp;amp; tex2 texture system of S3O (same shader as S3O)&lt;br /&gt;
* 2nd texcoord&lt;br /&gt;
* loading of the texture filepaths from the model (don&#039;t have to be in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;)&lt;br /&gt;
* when texture filepaths aren&#039;t included in the model, it searches for &amp;lt;code&amp;gt;%modelfilename%.*&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;%modelfilename%2.*&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;&lt;br /&gt;
* special modelpieces `SpringHeight` &amp;amp; `SpringRadius`&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Blender Workflow Tutorial=&lt;br /&gt;
This is a stub containing a simple outline of a Blender workflow. Disclaimer: I&#039;m no modeling expert, there may be a better way to do this.&lt;br /&gt;
&lt;br /&gt;
# Open an existing Blender model or import a different format through the File menu (File &amp;gt; Import).&lt;br /&gt;
#&amp;lt;table&amp;gt;&amp;lt;td&amp;gt;In the 3D view, at the top right, there will be a &#039;+&#039; icon. click this &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; [[File:3-12-2013 5-02-21 PM.pngâ€Žâ€Ž|secret panel]]&amp;lt;/td&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
#&amp;lt;table&amp;gt;&amp;lt;td&amp;gt;In that panel, select Display &amp;gt; Shading &amp;gt; GLSL &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:3-12-2013 5-02-04 PM.pngâ€Žâ€Ž|display settings]]&amp;lt;/td&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
#&amp;lt;table&amp;gt;&amp;lt;td&amp;gt;Make sure you have a lamp in your scene while in this mode or your model will be dark.&amp;lt;small&amp;gt;by default they blender&#039;s starting file will have this&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; [[File:3-12-2013_5-11-14_PM.pngâ€Žâ€Ž|blend light source]]&amp;lt;/td&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
# Applying texture: &lt;br /&gt;
## In the UV/Image editor, click the image icon (Tooltip: Browse Image to be linked) to select your texture. If it&#039;s not there, click on Image &amp;gt; Open Image to browse for it.&lt;br /&gt;
## In the 3D View, select (right-click) your object and hit Tab to enter Mesh Mode.&lt;br /&gt;
## Hit A to select all your faces.&lt;br /&gt;
## In the 3D View, hit A to select all the faces there and select your image with the image icon. Assuming there&#039;s a UVMap, you should see your texture.&lt;br /&gt;
## If you don&#039;t see any faces you&#039;ll need to add the UVMap to a new texture:&lt;br /&gt;
### In the Properties view click on Textures (checkerboard icon).&lt;br /&gt;
### Click on Add New Texture (plus icon).&lt;br /&gt;
### Select Type = Image or Movie.&lt;br /&gt;
### Under Image, click on the image icon and choose your image file.&lt;br /&gt;
### Under Mapping, select Coordinates = UV.&lt;br /&gt;
### Under Influence &amp;gt; Diffuse, check Color and make sure it&#039;s 1.00.&lt;br /&gt;
## To add a normalmap:&lt;br /&gt;
### Repeat steps 5.1 to 5.5.&lt;br /&gt;
### Under Image Sampling, check Normal Map.&lt;br /&gt;
### Under Influence &amp;gt; Geometry, check Normal. Make sure it.s 1.00.&lt;br /&gt;
## You&#039;ll need to do this for each piece.&lt;br /&gt;
# Piece hierarchy:&lt;br /&gt;
## Select piece A, hold shift and select piece B. Hit Ctrl+P and it will make piece A a child of piece B.&lt;br /&gt;
## Make sure all the pieces are descending from one single piece.&lt;br /&gt;
# Setting piece origins:&lt;br /&gt;
## Select a piece.&lt;br /&gt;
## Place the 3D cursor where you want the origin to be (left-click).&lt;br /&gt;
## Click on Object &amp;gt; Transform &amp;gt; Origin to 3D Cursor.&lt;br /&gt;
## You can now rotate your pieces:&lt;br /&gt;
### Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select Individual Origins.&lt;br /&gt;
### Rotate.&lt;br /&gt;
## Repeat this for all your pieces.&lt;br /&gt;
# Save your model.&lt;br /&gt;
# Select all the pieces of your model, ignore the lamp.&lt;br /&gt;
# Click on File &amp;gt; Export &amp;gt; Collada.&lt;br /&gt;
# Check &amp;quot;Export Only Selected&amp;quot; and export.&lt;br /&gt;
# The dae file will be used as your object.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game development]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:3-12-2013_5-11-14_PM.png&amp;diff=21434</id>
		<title>File:3-12-2013 5-11-14 PM.png</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:3-12-2013_5-11-14_PM.png&amp;diff=21434"/>
		<updated>2013-03-12T22:12:11Z</updated>

		<summary type="html">&lt;p&gt;Smoth: blender lamp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;blender lamp&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2161</id>
		<title>Assimp</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2161"/>
		<updated>2013-03-12T22:10:08Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* Blender Workflow Tutorial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Game_and_Unit_development|Game Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Assimp=&lt;br /&gt;
Open Asset Import Library (short name: Assimp) is used in Spring for loading a number of model formats including Collada &amp;amp; 3ds (currently obj is parsed by a different codepaths).&lt;br /&gt;
&lt;br /&gt;
What Spring supports in its Assimp renderer:&lt;br /&gt;
* extended metafile (&amp;lt;code&amp;gt;%modelfilename%.lua&amp;lt;/code&amp;gt; next to the modefile)&lt;br /&gt;
* still uses tex1 &amp;amp; tex2 texture system of S3O (same shader as S3O)&lt;br /&gt;
* 2nd texcoord&lt;br /&gt;
* loading of the texture filepaths from the model (don&#039;t have to be in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;)&lt;br /&gt;
* when texture filepaths aren&#039;t included in the model, it searches for &amp;lt;code&amp;gt;%modelfilename%.*&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;%modelfilename%2.*&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;&lt;br /&gt;
* special modelpieces `SpringHeight` &amp;amp; `SpringRadius`&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Blender Workflow Tutorial=&lt;br /&gt;
This is a stub containing a simple outline of a Blender workflow. Disclaimer: I&#039;m no modeling expert, there may be a better way to do this.&lt;br /&gt;
&lt;br /&gt;
# Open an existing Blender model or import a different format through the File menu (File &amp;gt; Import).&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;table&amp;gt;&amp;lt;td&amp;gt;In the 3D view, at the top right, there will be a &#039;+&#039; icon. click this &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; [[File:3-12-2013_5-02-21_PM.pngâ€Žâ€Ž|secret panel]]&amp;lt;/td&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;table&amp;gt;&amp;lt;td&amp;gt;In that panel, select Display &amp;gt; Shading &amp;gt; GLSL &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; [[File:3-12-2013_5-02-04_PM.pngâ€Ž|display settings]]&amp;lt;/td&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Make sure you have a lamp in your scene while in this mode or your model will be dark.&lt;br /&gt;
# Applying texture: &lt;br /&gt;
## In the UV/Image editor, click the image icon (Tooltip: Browse Image to be linked) to select your texture. If it&#039;s not there, click on Image &amp;gt; Open Image to browse for it.&lt;br /&gt;
## In the 3D View, select (right-click) your object and hit Tab to enter Mesh Mode.&lt;br /&gt;
## Hit A to select all your faces.&lt;br /&gt;
## In the 3D View, hit A to select all the faces there and select your image with the image icon. Assuming there&#039;s a UVMap, you should see your texture.&lt;br /&gt;
## If you don&#039;t see any faces you&#039;ll need to add the UVMap to a new texture:&lt;br /&gt;
### In the Properties view click on Textures (checkerboard icon).&lt;br /&gt;
### Click on Add New Texture (plus icon).&lt;br /&gt;
### Select Type = Image or Movie.&lt;br /&gt;
### Under Image, click on the image icon and choose your image file.&lt;br /&gt;
### Under Mapping, select Coordinates = UV.&lt;br /&gt;
### Under Influence &amp;gt; Diffuse, check Color and make sure it&#039;s 1.00.&lt;br /&gt;
## To add a normalmap:&lt;br /&gt;
### Repeat steps 5.1 to 5.5.&lt;br /&gt;
### Under Image Sampling, check Normal Map.&lt;br /&gt;
### Under Influence &amp;gt; Geometry, check Normal. Make sure it.s 1.00.&lt;br /&gt;
## You&#039;ll need to do this for each piece.&lt;br /&gt;
# Piece hierarchy:&lt;br /&gt;
## Select piece A, hold shift and select piece B. Hit Ctrl+P and it will make piece A a child of piece B.&lt;br /&gt;
## Make sure all the pieces are descending from one single piece.&lt;br /&gt;
# Setting piece origins:&lt;br /&gt;
## Select a piece.&lt;br /&gt;
## Place the 3D cursor where you want the origin to be (left-click).&lt;br /&gt;
## Click on Object &amp;gt; Transform &amp;gt; Origin to 3D Cursor.&lt;br /&gt;
## You can now rotate your pieces:&lt;br /&gt;
### Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select Individual Origins.&lt;br /&gt;
### Rotate.&lt;br /&gt;
## Repeat this for all your pieces.&lt;br /&gt;
# Save your model.&lt;br /&gt;
# Select all the pieces of your model, ignore the lamp.&lt;br /&gt;
# Click on File &amp;gt; Export &amp;gt; Collada.&lt;br /&gt;
# Check &amp;quot;Export Only Selected&amp;quot; and export.&lt;br /&gt;
# The dae file will be used as your object.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game development]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:3-12-2013_5-02-04_PM.png&amp;diff=21432</id>
		<title>File:3-12-2013 5-02-04 PM.png</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:3-12-2013_5-02-04_PM.png&amp;diff=21432"/>
		<updated>2013-03-12T22:04:37Z</updated>

		<summary type="html">&lt;p&gt;Smoth: display&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;display&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:3-12-2013_5-02-21_PM.png&amp;diff=21433</id>
		<title>File:3-12-2013 5-02-21 PM.png</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:3-12-2013_5-02-21_PM.png&amp;diff=21433"/>
		<updated>2013-03-12T22:03:59Z</updated>

		<summary type="html">&lt;p&gt;Smoth: blender &amp;quot;secret panel&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;blender &amp;quot;secret panel&amp;quot;&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2160</id>
		<title>Assimp</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2160"/>
		<updated>2013-03-12T22:01:56Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* Blender Workflow Tutorial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Game_and_Unit_development|Game Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Assimp=&lt;br /&gt;
Open Asset Import Library (short name: Assimp) is used in Spring for loading a number of model formats including Collada &amp;amp; 3ds (currently obj is parsed by a different codepaths).&lt;br /&gt;
&lt;br /&gt;
What Spring supports in its Assimp renderer:&lt;br /&gt;
* extended metafile (&amp;lt;code&amp;gt;%modelfilename%.lua&amp;lt;/code&amp;gt; next to the modefile)&lt;br /&gt;
* still uses tex1 &amp;amp; tex2 texture system of S3O (same shader as S3O)&lt;br /&gt;
* 2nd texcoord&lt;br /&gt;
* loading of the texture filepaths from the model (don&#039;t have to be in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;)&lt;br /&gt;
* when texture filepaths aren&#039;t included in the model, it searches for &amp;lt;code&amp;gt;%modelfilename%.*&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;%modelfilename%2.*&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;&lt;br /&gt;
* special modelpieces `SpringHeight` &amp;amp; `SpringRadius`&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Blender Workflow Tutorial=&lt;br /&gt;
This is a stub containing a simple outline of a Blender workflow. Disclaimer: I&#039;m no modeling expert, there may be a better way to do this.&lt;br /&gt;
&lt;br /&gt;
# Open an existing Blender model or import a different format through the File menu (File &amp;gt; Import).&lt;br /&gt;
# In the 3D view, at the top right, there will be a &#039;+&#039; icon. click this&lt;br /&gt;
# In that panel, select Display &amp;gt; Shading &amp;gt; GLSL.&lt;br /&gt;
# Make sure you have a lamp in your scene while in this mode or your model will be dark.&lt;br /&gt;
# Applying texture: &lt;br /&gt;
## In the UV/Image editor, click the image icon (Tooltip: Browse Image to be linked) to select your texture. If it&#039;s not there, click on Image &amp;gt; Open Image to browse for it.&lt;br /&gt;
## In the 3D View, select (right-click) your object and hit Tab to enter Mesh Mode.&lt;br /&gt;
## Hit A to select all your faces.&lt;br /&gt;
## In the 3D View, hit A to select all the faces there and select your image with the image icon. Assuming there&#039;s a UVMap, you should see your texture.&lt;br /&gt;
## If you don&#039;t see any faces you&#039;ll need to add the UVMap to a new texture:&lt;br /&gt;
### In the Properties view click on Textures (checkerboard icon).&lt;br /&gt;
### Click on Add New Texture (plus icon).&lt;br /&gt;
### Select Type = Image or Movie.&lt;br /&gt;
### Under Image, click on the image icon and choose your image file.&lt;br /&gt;
### Under Mapping, select Coordinates = UV.&lt;br /&gt;
### Under Influence &amp;gt; Diffuse, check Color and make sure it&#039;s 1.00.&lt;br /&gt;
## To add a normalmap:&lt;br /&gt;
### Repeat steps 5.1 to 5.5.&lt;br /&gt;
### Under Image Sampling, check Normal Map.&lt;br /&gt;
### Under Influence &amp;gt; Geometry, check Normal. Make sure it.s 1.00.&lt;br /&gt;
## You&#039;ll need to do this for each piece.&lt;br /&gt;
# Piece hierarchy:&lt;br /&gt;
## Select piece A, hold shift and select piece B. Hit Ctrl+P and it will make piece A a child of piece B.&lt;br /&gt;
## Make sure all the pieces are descending from one single piece.&lt;br /&gt;
# Setting piece origins:&lt;br /&gt;
## Select a piece.&lt;br /&gt;
## Place the 3D cursor where you want the origin to be (left-click).&lt;br /&gt;
## Click on Object &amp;gt; Transform &amp;gt; Origin to 3D Cursor.&lt;br /&gt;
## You can now rotate your pieces:&lt;br /&gt;
### Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select Individual Origins.&lt;br /&gt;
### Rotate.&lt;br /&gt;
## Repeat this for all your pieces.&lt;br /&gt;
# Save your model.&lt;br /&gt;
# Select all the pieces of your model, ignore the lamp.&lt;br /&gt;
# Click on File &amp;gt; Export &amp;gt; Collada.&lt;br /&gt;
# Check &amp;quot;Export Only Selected&amp;quot; and export.&lt;br /&gt;
# The dae file will be used as your object.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game development]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=SSMF:_Grass_Shading_Map&amp;diff=16288</id>
		<title>SSMF: Grass Shading Map</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=SSMF:_Grass_Shading_Map&amp;diff=16288"/>
		<updated>2013-03-09T07:34:40Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* Grass Shading Map */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Grass Shading Map =&lt;br /&gt;
By default spring&#039;s grass pulls the minimap to use for coloration of the grass patches. You can override this with &#039;&#039;grassShadingTex&#039;&#039;. Below is an example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot;&amp;gt;Grass map&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Grass map in game&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[File:Grassmap_Map_example.jpegâ€Ž|120px|alt=grassmap example |grassmap]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;This is a section of grassmap image. This image applied to the entire map which determines the color of grass.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[File:Grassmap_Map_ingame.jpgâ€Ž|300px|alt=grassmapp applied in game|in game]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot;&amp;gt;Click image for larger picture&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Click image for larger picture&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Map making|Map_making]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Grassmap_Map_ingame.jpg&amp;diff=21773</id>
		<title>File:Grassmap Map ingame.jpg</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Grassmap_Map_ingame.jpg&amp;diff=21773"/>
		<updated>2013-03-09T06:52:53Z</updated>

		<summary type="html">&lt;p&gt;Smoth: Ingame example of grass map&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ingame example of grass map&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Grassmap_Map_example.jpeg&amp;diff=21772</id>
		<title>File:Grassmap Map example.jpeg</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Grassmap_Map_example.jpeg&amp;diff=21772"/>
		<updated>2013-03-09T06:51:47Z</updated>

		<summary type="html">&lt;p&gt;Smoth: example grass map for map making wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;example grass map for map making wiki&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Development:Getting_Started&amp;diff=5504</id>
		<title>Development:Getting Started</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Development:Getting_Started&amp;diff=5504"/>
		<updated>2013-03-08T22:54:11Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; Getting Started&lt;br /&gt;
&lt;br /&gt;
=Starting Spring Development=&lt;br /&gt;
&#039;&#039;&#039;NOTE: Outlined below is information on assisting with the development of the Spring source itself. For information about developing a mod (units, widgets, maps, etc.) see the [[Mod_and_Unit_development]] page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[EngineSource_for_GameDevs|Even if you are developing a mod, it is highly recommended that you get the engine source. Engine source + full text search: DO IT.]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
To start development, you will need:&lt;br /&gt;
#To read the [[Coding_Standards]]&lt;br /&gt;
#The latest version of the source &lt;br /&gt;
#A good code manipulation program: [[Development_IDEs]]&lt;br /&gt;
#Compiling your modified source (see instructions above)&lt;br /&gt;
&lt;br /&gt;
==Learning C++==&lt;br /&gt;
You will need to know C++ to modify or understand Spring&#039;s source code. If you are interested in learning C++, see [[Learning_CPP]]&lt;br /&gt;
&lt;br /&gt;
However please note that badly designed code (code created by a C++ novice for example), even if working will likely not be included in the spring code. Spring is a large project, and therefore it is necessary to stay away from hack jobs and create general solutions to problems.&lt;br /&gt;
&lt;br /&gt;
=Source Code Documentation=&lt;br /&gt;
The [http://springrts.com/doxygen/ doxygen documentation] can provide an overview about the source, directory structure and its dependencies. Unfortunately, there is no server running it, so you need to make them on your own, to do this, install doxygen and run &amp;quot;doxygen&amp;quot; in spring source directory (will take some time).&lt;br /&gt;
&lt;br /&gt;
An explanation on how the code is executed in game can be found in the [[Spring Engine Code]]&lt;br /&gt;
page.&lt;br /&gt;
&lt;br /&gt;
==Development Guidelines==&lt;br /&gt;
Before starting to make modifications to the source, take a look at the [[development guidelines]] which outlines some important things to think about. To find something interesting to work on, look for todos in the [http://springrts.com/phpbb/viewforum.php?f=60 forum]. You can also check in the forums to see what others are doing. If you do edit the code, please add [[Doxygen style comments]] to the code, which will then enhance the source code documentation.&lt;br /&gt;
&lt;br /&gt;
==Keep track what others do==&lt;br /&gt;
If you develop with others, you need to know what they do. You can browse the source [http://github.com/spring/spring/tree/develop at our github-page], and there is a [http://github.com/feeds/spring/commits/spring/develop commit newsfeed].&lt;br /&gt;
&lt;br /&gt;
==Buildbot and Stacktrace translator==&lt;br /&gt;
A buildbot server is [http://buildbot.springrts.com/waterfall?reload=60 here] available to automatically compile Spring, the default AIs and make the installer. It can also translate stacktraces directly from uploaded [[infolog.txt]] files.&lt;br /&gt;
&lt;br /&gt;
=Important Developer Tasks=&lt;br /&gt;
==[[Engine_Profiling|Profiling]]==&lt;br /&gt;
==[[Debugging_sync_errors|How to debug SyncErrors]]==&lt;br /&gt;
==[[Debug GFX problems]]==&lt;br /&gt;
&lt;br /&gt;
=How to get your code included=&lt;br /&gt;
If you create something that you think should be included in the official source tree: make a fork on github.com of spring (master branch) and ask in the  [http://springrts.com/phpbb/viewforum.php?f=12 development forum] to get it included / feedback.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When developing, use the master branch!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Spring Engine TODO list=&lt;br /&gt;
If you want to code something, look into the [http://springrts.com/phpbb/viewforum.php?f=60 New Developers Forum] for TODOs.&lt;br /&gt;
There is also a [http://spring.clan-sy.com/phpbb/viewforum.php?f=21 feature request forum], which may give you some ideas. Don&#039;t be overwhelmed by the sheer number of (silly) requests though!&lt;br /&gt;
&lt;br /&gt;
Alternatively, you may just search the code for the [http://en.wikipedia.org/wiki/Comment_%28computer_programming%29#Tags famous comment tags],&lt;br /&gt;
for example on linux: {{code|grep -r &amp;quot;TODO&amp;quot; rts}}&lt;br /&gt;
&lt;br /&gt;
=Development links=&lt;br /&gt;
* [http://github.com/spring/spring/ View the latest source in a web browser]&lt;br /&gt;
* [http://springrts.com/doxygen/ Doxygen documentation]&lt;br /&gt;
* [http://springrts.com/mantis/ Bug Tracking System]&lt;br /&gt;
* [http://buildbot.springrts.com/waterfall?reload=60 buildbot]&lt;br /&gt;
* [http://springrts.com/dl/buildbot/ buildbot builds]&lt;br /&gt;
* [http://springrts.com/doxygen/d9/d28/group__unitsync__api.html Unitsync API docs]&lt;br /&gt;
* [[Development:Minutes|Developer Meetings]]&lt;br /&gt;
* [http://stacktranslate.springrts.com Stacktrace Translator] (translates stacktraces from official win32 builds)&lt;br /&gt;
* [http://springrts.com/wiki/Project_proposals project proposals for new developers]&lt;br /&gt;
* [http://springrts.com/dl/spring-vc8libs.exe Development libraries for Visual Studio 2005]&lt;br /&gt;
* [http://sourceforge.net/projects/springrts SourceForge project page]&lt;br /&gt;
* [http://springrts.com/svn/spring/ TASServer, TASClient and Web site Subversion repository]&lt;br /&gt;
&lt;br /&gt;
=Legal=&lt;br /&gt;
The Spring engine and content in the main installer is Free Software, distributed under the GPL license.  You may distribute the Spring Engine freely, modify its contents, or redistribute the source.  For details, please read the license, which is included in the installer and source code. &lt;br /&gt;
&lt;br /&gt;
If you wish to use a game or mod in a game CD, promote it in a magazine, or promote it on another website, please contact the game&#039;s maintainers.  The Spring Project is not responsible for the legal status of any games built with or using this engine, and does not support redistribution of illegal content.&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User_talk:Rcdraco&amp;diff=21215</id>
		<title>User talk:Rcdraco</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User_talk:Rcdraco&amp;diff=21215"/>
		<updated>2013-03-08T22:20:43Z</updated>

		<summary type="html">&lt;p&gt;Smoth: Created page with &amp;quot;I made a few mods          =The Blue Tanks=  SO HELP ME IF I SEE MY PAGES ADVERT-EDITED AGAIN I WILL PERSONALLY MAKE SURE THAT YOU NEVER SEE THE LIGHT OF DAY AGAIN.  Yes the o...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I made a few mods&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=The Blue Tanks=&lt;br /&gt;
&lt;br /&gt;
SO HELP ME IF I SEE MY PAGES ADVERT-EDITED AGAIN I WILL PERSONALLY MAKE SURE THAT YOU NEVER SEE THE LIGHT OF DAY AGAIN.&lt;br /&gt;
&lt;br /&gt;
Yes the one and only The Blue Tanks, this is a relatively new mod that was made on Black Friday.  This mod is a very simple first person shooter.  In this mod you need to keep moving, ALWAYS, or else you will get killed.  Hey, but have fun and enjoy the mod.  The mod current mod version is .09 which can be downloaded [http://spring.unknown-files.net/file/2043/The_Blue_Tanks_v.09fixed/ here].&lt;br /&gt;
&lt;br /&gt;
By the way there is a King of the Blue Tanks, the King Page can be viewed here along with the current King: [[King of TBT]]&lt;br /&gt;
&lt;br /&gt;
There are currently 6 tanks in the mod: the Obliterator, the Sprinter, the Missle Tank, the Flame Tank, the Laser Tank, and the Radar/Artillery Tank.&lt;br /&gt;
&lt;br /&gt;
==The Tanks==&lt;br /&gt;
&lt;br /&gt;
===Obliterator===&lt;br /&gt;
&lt;br /&gt;
The most powerful tank, but also the slowest of the 5 and was the original tank from the earlier versions of the mod.  It has the longest range of the 5, but is easily destroyed by faster tanks or by a correctly operated missle or artilllery tank.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;img src=&amp;quot;http://img69.imageshack.us/img69/3723/screen011kp5.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sprinter===&lt;br /&gt;
&lt;br /&gt;
The fastest tank, but also the hardest to control, it is one of the best tanks but has drawbacks, for instance if you don&#039;t move in this tank you could get picked off by an Obliterator, an advantage is that it is the only tank that can dodge a blast from an Obliterator.  Also a laser tank has more range than it so be careful of that.  The Sprinter also has lower armor than the rest of the tanks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;img src=&amp;quot;http://img395.imageshack.us/img395/8105/screen015xd3.jpg&amp;quot; alt=&amp;quot;Image Hosted by ImageShack.us&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Missile Tank===&lt;br /&gt;
&lt;br /&gt;
The Missile Tank is a high damage tank with good range, although it has less range then the Artillery tank it is more powerful and fires faster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;img src=&amp;quot;http://img356.imageshack.us/img356/850/screen016zl1.jpg&amp;quot; alt=&amp;quot;Image Hosted by ImageShack.us&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Flame Tank===&lt;br /&gt;
&lt;br /&gt;
This tank is the best tank for beginners and has many practical applications in the game and is quicker then most of the other tanks, the only downside is that it has very low range and can be hit by every other tank from out of its range.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;img src=&amp;quot;http://img488.imageshack.us/img488/4369/flametanksd7.jpg&amp;quot; alt=&amp;quot;Image Hosted by ImageShack.us&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Laser Tank===&lt;br /&gt;
&lt;br /&gt;
The second shortest range tank, but is relitively powerful.  This tank is also good for beginners, but is not as fast as the Sprinter.  This unit is good at taking out enemy Missile Tanks, and a pest to Obliterators.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;img src=&amp;quot;http://img356.imageshack.us/img356/7204/screen017ze8.jpg&amp;quot; alt=&amp;quot;Image Hosted by ImageShack.us&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Radar/Artillery Tank===&lt;br /&gt;
&lt;br /&gt;
A long-range tank that is slower than most of the other tanks, but is compensated by its long-range radar.  It also has low armor, equivilent to a Sprinter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;img src=&amp;quot;http://img211.imageshack.us/img211/5007/screen012ey5.jpg&amp;quot; alt=&amp;quot;Image Hosted by ImageShack.us&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
*&#039;&#039;&#039;Download:&#039;&#039;&#039; http://spring.unknown-files.net/file/2043/The_Blue_Tanks_v.09fixed/&lt;br /&gt;
(dead link)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=The Plot of War=&lt;br /&gt;
&lt;br /&gt;
http://i170.photobucket.com/albums/u246/rcdraco/EuropianCommander.png&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Plot of War is a mod that Rcdraco, Overkill, Ianmac and Otherside are working on.  Currently rcdraco is working on the Europian side and Overkill is doing work on the Human side. Ianmac and Otherside are doing work on the Guardian side.&lt;br /&gt;
&lt;br /&gt;
Current Team:&lt;br /&gt;
*Rcdraco - Mod Design, Europian Side, and basic mod building.&lt;br /&gt;
*Overkill - Human Side, Effects, and LUA&lt;br /&gt;
*Ianmac - Guardian Models&lt;br /&gt;
*Otherside - Guardian Models, Guardian Texturing&lt;br /&gt;
&lt;br /&gt;
The Plot of War is a mod that attempts to be based on a concept rcdraco has had for a long time.  It incorporates 3 sides, the Europians, the Humans, and the Guardians.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Europians===&lt;br /&gt;
&lt;br /&gt;
The Europian was a project to send a robotic colonizer to Mars, upon landing, the craft was severely damaged, and lost connection to its host computer and began building new robots to carry on its mission.  Europians, the robots built by Europian, are a team that rely on speed and unique units.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Humans===&lt;br /&gt;
&lt;br /&gt;
Humans are a nomadic race of beings that wander the cosmos to conquer territory and destroy all alien life, even their own planet&#039;s projects to get their ends.  Humans rely on large, high armor tanks and strong defenses to win their battles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Guardians===&lt;br /&gt;
&lt;br /&gt;
The Guardians are the peace keepers of the Universe. They do whatever it takes to keep the universe safe, and keep their presence as ambiguous as possible.  They rely on aircrafts, mobile bases, and cloaking technologies to protect the Universe even if it risks their detection.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Other Info===&lt;br /&gt;
&lt;br /&gt;
Go to the old forum page on this site: &lt;br /&gt;
http://spring.clan-sy.com/phpbb/viewtopic.php?t=8357&amp;amp;postdays=0&amp;amp;postorder=asc&amp;amp;start=0&lt;br /&gt;
&lt;br /&gt;
Go to the new forum thread:&lt;br /&gt;
http://spring.clan-sy.com/phpbb/viewtopic.php?t=12651&lt;br /&gt;
&lt;br /&gt;
Go to here to get new mod. &lt;br /&gt;
The new version isn&#039;t released yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Tactical Front=&lt;br /&gt;
&lt;br /&gt;
This is a mod focused on Micro-Management you will have limited units to work with 1 race and only 8 units to choose from.  And I will incorporate unit limits in this the highest amount of a few units in 10.  So expect smaller, more tactical battles.&lt;br /&gt;
&lt;br /&gt;
Here is the link to the forum where you can discuss the mod:&lt;br /&gt;
&lt;br /&gt;
http://taspring.clan-sy.com/phpbb/viewtopic.php?p=156556#156556&lt;br /&gt;
&lt;br /&gt;
There is also a new mod surfacing called Tactical Smash, a mod that seeks to bring a similar style of gameplay of OTA mods, while still holding a good tactical aspect, it is called Tactical Smash.&lt;br /&gt;
&lt;br /&gt;
=Tactical Smash=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; This is a new mod, that I am secretly working on, It uses a unique style of units, while retaining a semi-OTA style of gameplay and offering tactical combat as well as being free of all OTA content.  I&#039;m also going to incorporate a few unique features in the game as well.[Maybe a packable turret, or a siege tank, or something else.]  I&#039;m planning on also using some of the lesser used weapons, and regular ones in unique ways.  This mod is based mostly around the concept of  me seeing how crazy I can make a playable mod, and at the same time, have it look nothing like any other mod out there[As with all my mods. ^_^].&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== So far these are the units that I have finished. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Commander, comes standard with a build-ray, and high armor, but no weapons:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://i170.photobucket.com/albums/u246/rcdraco/Tactical%20Smash/commander.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lite Tank, a small tank with a plasma cannon and makes an excellent scout unit:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://i170.photobucket.com/albums/u246/rcdraco/Tactical%20Smash/litetank.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Factory, builds lite units and has decent armor:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://i170.photobucket.com/albums/u246/rcdraco/Tactical%20Smash/factory.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Radar, detects units out of your sight radius:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://i170.photobucket.com/albums/u246/rcdraco/Tactical%20Smash/radar.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plane, a fast air unit that does good damage to air units and ground units, but has low health:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://i170.photobucket.com/albums/u246/rcdraco/Tactical%20Smash/plane.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Generator, uses metal to create energy, produces more power than the solar generator:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://i170.photobucket.com/albums/u246/rcdraco/Tactical%20Smash/generator.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lite Plasma Cannon, a lite ground defense turret that can also attack air units:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://i170.photobucket.com/albums/u246/rcdraco/Tactical%20Smash/liteplasmacannon.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Medium Tank, a medium tank with high health and a powerful plasma cannon, offset by it&#039;s slow speed:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://i170.photobucket.com/albums/u246/rcdraco/Tactical%20Smash/mediumtank.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Metal Extractor, a building that mines metal out of the ground:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://i170.photobucket.com/albums/u246/rcdraco/Tactical%20Smash/metalextractor.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Builder, a small unit that builds and repairs units, very expensive, and low armor:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://i170.photobucket.com/albums/u246/rcdraco/Tactical%20Smash/builder.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Metal Maker, produces metal by using massive amounts of energy:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://i170.photobucket.com/albums/u246/rcdraco/Tactical%20Smash/metalmaker.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Generator, a lite generator powered by solar energy, a reliable power supply: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://i170.photobucket.com/albums/u246/rcdraco/Tactical%20Smash/solargenerator.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
There was a release on Unknown Files, but I think it got removed.  Still look for the next release to be posted here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m currently working on Tactical Smash read all about it by clicking the link above.&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Modrules.lua&amp;diff=20318</id>
		<title>Talk:Modrules.lua</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Modrules.lua&amp;diff=20318"/>
		<updated>2013-02-25T21:18:40Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Page review&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Page was an unsorted mess making it hard to read(wall of text) and hard to find things(arbitrary tag order).&lt;br /&gt;
&lt;br /&gt;
tag missing, maybe dated and no longer exists in engine but I have this guy:&lt;br /&gt;
&lt;br /&gt;
	distance = {&lt;br /&gt;
&lt;br /&gt;
	    builderUse2D = 0,  -- defaults to 0&lt;br /&gt;
&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
will investigate about missing tag and possible other missing tags. -Smoth&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It was in source-order, but I&#039;ve no objections to alphabetizing here (NB: Defs pages are also mostly in source-order, but it makes more sense there as tags tend to be grouped together by meaning in the source and the pages are so long ctrl+f is the best way to find tags anyway).&lt;br /&gt;
&lt;br /&gt;
Increased spacing looks good. &lt;br /&gt;
&lt;br /&gt;
No mention of builderUse2D in the engine source that reads ModRules.lua (or anywhere else - only hit in my whole Spring drive was Gundam). Reasonably sure nothing is missing but I&#039;m not infallible ;) (this is one reason why engine source is always linked at the top of my pages) &lt;br /&gt;
&lt;br /&gt;
- [[User:Flozi|Flozi]] ([[User talk:Flozi|talk]]) 19:59, 25 February 2013 (CET)&lt;br /&gt;
&lt;br /&gt;
P.S. Use &amp;lt;nowiki&amp;gt;- ~~~~&amp;lt;/nowiki&amp;gt; to get a timestamped user link like mine here (c.f. http://www.mediawiki.org/wiki/Help:Signatures )&lt;br /&gt;
&lt;br /&gt;
Should we consider putting the pages in alphabetical rather than source? People coming to the wiki don&#039;t really care about source order and people with source order are already reading the source. [[User:Smoth|Smoth]] ([[User talk:Smoth|talk]]) 22:17, 25 February 2013 (CET)&lt;br /&gt;
&lt;br /&gt;
Also with regards to builderuse2d, should we notify the devs about removing it from the changelog? [[User:Smoth|Smoth]] ([[User talk:Smoth|talk]]) 22:18, 25 February 2013 (CET)&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Modrules.lua&amp;diff=20317</id>
		<title>Talk:Modrules.lua</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Modrules.lua&amp;diff=20317"/>
		<updated>2013-02-25T21:17:47Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Page review&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Page was an unsorted mess making it hard to read(wall of text) and hard to find things(arbitrary tag order).&lt;br /&gt;
&lt;br /&gt;
tag missing, maybe dated and no longer exists in engine but I have this guy:&lt;br /&gt;
&lt;br /&gt;
	distance = {&lt;br /&gt;
&lt;br /&gt;
	    builderUse2D = 0,  -- defaults to 0&lt;br /&gt;
&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
will investigate about missing tag and possible other missing tags. -Smoth&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It was in source-order, but I&#039;ve no objections to alphabetizing here (NB: Defs pages are also mostly in source-order, but it makes more sense there as tags tend to be grouped together by meaning in the source and the pages are so long ctrl+f is the best way to find tags anyway).&lt;br /&gt;
&lt;br /&gt;
Increased spacing looks good. &lt;br /&gt;
&lt;br /&gt;
No mention of builderUse2D in the engine source that reads ModRules.lua (or anywhere else - only hit in my whole Spring drive was Gundam). Reasonably sure nothing is missing but I&#039;m not infallible ;) (this is one reason why engine source is always linked at the top of my pages) &lt;br /&gt;
&lt;br /&gt;
- [[User:Flozi|Flozi]] ([[User talk:Flozi|talk]]) 19:59, 25 February 2013 (CET)&lt;br /&gt;
&lt;br /&gt;
P.S. Use &amp;lt;nowiki&amp;gt;- ~~~~&amp;lt;/nowiki&amp;gt; to get a timestamped user link like mine here (c.f. http://www.mediawiki.org/wiki/Help:Signatures )&lt;br /&gt;
&lt;br /&gt;
Should we consider putting the pages in alphabetical rather than source? People coming to the wiki don&#039;t really care about source order and people with source order are already reading the source. [[User:Smoth|Smoth]] ([[User talk:Smoth|talk]]) 22:17, 25 February 2013 (CET)&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Modrules.lua&amp;diff=20314</id>
		<title>Talk:Modrules.lua</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Modrules.lua&amp;diff=20314"/>
		<updated>2013-02-25T18:16:08Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Page review&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Page was an unsorted mess making it hard to read(wall of text) and hard to find things(arbitrary tag order).&lt;br /&gt;
&lt;br /&gt;
tag missing, maybe dated and no longer exists in engine but I have this guy:&lt;br /&gt;
&lt;br /&gt;
	distance = {&lt;br /&gt;
&lt;br /&gt;
	    builderUse2D = 0,  -- defaults to 0&lt;br /&gt;
&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
will investigate about missing tag and possible other missing tags. -Smoth&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Modrules.lua&amp;diff=20313</id>
		<title>Talk:Modrules.lua</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Modrules.lua&amp;diff=20313"/>
		<updated>2013-02-25T18:15:56Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Page review&#039;&#039;&#039;&lt;br /&gt;
Page was an unsorted mess making it hard to read(wall of text) and hard to find things(arbitrary tag order).&lt;br /&gt;
&lt;br /&gt;
tag missing, maybe dated and no longer exists in engine but I have this guy:&lt;br /&gt;
&lt;br /&gt;
	distance = {&lt;br /&gt;
&lt;br /&gt;
	    builderUse2D = 0,  -- defaults to 0&lt;br /&gt;
&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
will investigate about missing tag and possible other missing tags. -Smoth&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Modrules.lua&amp;diff=20312</id>
		<title>Talk:Modrules.lua</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Modrules.lua&amp;diff=20312"/>
		<updated>2013-02-25T18:15:36Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Page review&#039;&#039;&#039;&lt;br /&gt;
Page was an unsorted mess making it hard to read(wall of text) and hard to find things(arbitrary tag order).&lt;br /&gt;
&lt;br /&gt;
tag missing, maybe dated and no longer exists in engine but I have this guy:&lt;br /&gt;
&lt;br /&gt;
	distance = {&lt;br /&gt;
&lt;br /&gt;
	    builderUse2D = 0,  -- defaults to 0&lt;br /&gt;
&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
will investigate about missing tag and possible other missing tags. -Smoth&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Modrules.lua&amp;diff=20311</id>
		<title>Talk:Modrules.lua</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Modrules.lua&amp;diff=20311"/>
		<updated>2013-02-25T18:13:54Z</updated>

		<summary type="html">&lt;p&gt;Smoth: Created page with &amp;quot;Page was an unsorted mess making it hard to read(wall of text) and hard to find things(arbitrary tag order).  tag missing, maybe dated and no longer exists in engine but I hav...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Page was an unsorted mess making it hard to read(wall of text) and hard to find things(arbitrary tag order).&lt;br /&gt;
&lt;br /&gt;
tag missing, maybe dated and no longer exists in engine but I have this guy:&lt;br /&gt;
&lt;br /&gt;
	distance = {&lt;br /&gt;
	    builderUse2D = 0,  -- defaults to 0&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
will investigate about missing tag and possible other missing tags.&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Modrules.lua&amp;diff=14445</id>
		<title>Modrules.lua</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Modrules.lua&amp;diff=14445"/>
		<updated>2013-02-25T18:10:19Z</updated>

		<summary type="html">&lt;p&gt;Smoth: Alphabetized and spaced out a bit. Sorry this page was unwieldy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Location==&lt;br /&gt;
&amp;lt;code&amp;gt;modrules.lua&amp;lt;/code&amp;gt; is a file in the &amp;lt;code&amp;gt;Gamedata/&amp;lt;/code&amp;gt; directory of a Spring game. &lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
This file controls various global parameters of the game, for example how fast units gain experience, what unit types can be transported, how fine grained the LOS system is, etc.&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
The engine source code which parses the data from this file is viewable here:{{sourcelink|file=rts/Sim/Misc/ModInfo.cpp}}&lt;br /&gt;
&lt;br /&gt;
==Details==&lt;br /&gt;
&amp;lt;code&amp;gt;Modrules.lua&amp;lt;/code&amp;gt; is divided into several sub-tables containing tags specific to each section, as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===capture===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = energyCostFactor&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = How much of the original energy cost it requires to capture something.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===construction===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = constructionDecay&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Do uncompleted building frames begin to decay if no builder is working on them?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = constructionDecayTime&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 6.66&lt;br /&gt;
|description = The time in seconds before abandoned building frames begin to decay.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = constructionDecaySpeed&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.03&lt;br /&gt;
|description = How fast build progress decays for abandoned building frames. Note that the rate is inversely proportional to the {{xtaglink|Units-UnitDefs|buildtime}} i.e. a building with a larger {{xtaglink|Units-UnitDefs|buildtime}} will decay more slowly for a given value of this tag than a building with a shorter {{xtaglink|Units-UnitDefs|buildtime}}.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===experience===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = experienceMult&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 1.0&lt;br /&gt;
|description = Controls the amount of experience gained by units engaging in combat. The formulae used are: &lt;br /&gt;
::&amp;lt;code&amp;gt;xp for damage = 0.1 * experienceMult * damage / target_HP * target_power / attacker_power&amp;lt;/code&amp;gt; &lt;br /&gt;
::&amp;lt;code&amp;gt;xp for kill = 0.1 * experienceMult * target_power / attacker_power&amp;lt;/code&amp;gt;. &lt;br /&gt;
: Where {{xtaglink|Units-UnitDefs|power}} can be set by the UnitDef tag.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = powerScale&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 1.0&lt;br /&gt;
|description = Controls how gaining experience changes the relative {{xtaglink|Units-UnitDefs|power}} of the unit. The formula used is &amp;lt;code&amp;gt;Power multiplier = powerScale * (1 + xp / (xp + 1))&amp;lt;/code&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = healthScale&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.7&lt;br /&gt;
|description = Controls how gaining experience increases the {{xtaglink|Units-UnitDefs|maxDamage}} (total hitpoints) of the unit. The formula used is &amp;lt;code&amp;gt;Health multiplier = healthScale * (1 + xp / (xp + 1))&amp;lt;/code&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = reloadScale&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.4&lt;br /&gt;
|description = Controls how gaining experience decreases the {{xtaglink|Units-UnitDefs|reloadTime}} of the unit&#039;s weapons. The formula used is &amp;lt;code&amp;gt;Rate of fire multiplier = reloadScale * (1 + xp / (xp + 1))&amp;lt;/code&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===featureLOS===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = featureVisibility&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 3&lt;br /&gt;
|description = Controls the visibility of features. Can be &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - no default LOS for features, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Gaia features always visible, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - allyteam &amp;amp; Gaia features always visible, or &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; - all features always visible.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===fireAtDead===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = fireAtKilled&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Will units continue to target and fire on enemies which are running their &amp;lt;code&amp;gt;Killed()&amp;lt;/code&amp;gt; animation? (See [[Animation-LuaCallins#Generic]])&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = fireAtCrashing&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Will units continue to target and fire on enemy aircraft which are in the &#039;crashing&#039; state? (See [[Lua_SyncedCtrl#Unit_Control]])&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===flankingBonus===&lt;br /&gt;
For a deeper explanation of the flanking system, see [[Units:FlankingBonus]].&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = defaultMode&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 1&lt;br /&gt;
|description = The default {{xtaglink|Units-UnitDefs|flankingBonusMode}} for units. Can be &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - No flanking bonus. Mode &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; builds up the ability to move over time, and swings to face attacks, but does not respect the way the unit is facing. Mode &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; also can swing, but moves with the unit as it turns. Mode &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; stays with the unit as it turns and otherwise doesn&#039;t move, the ideal mode to simulate something such as tank armour. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====los====&lt;br /&gt;
{{tag&lt;br /&gt;
|name = losMipLevel&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 1&lt;br /&gt;
|description = Controls the resolution of the LOS calculations. A higher value means lower resolution but increased performance. An increase by one level means half the resolution of the LOS map in both x and y direction. Must be between &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; inclusive.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = losMul&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 1.0&lt;br /&gt;
|description = Multiplies all unit&#039;s {{xtaglink|Units-UnitDefs|sightDistance}} by this value. Generally speaking you should always use the default.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = airMipLevel&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 2&lt;br /&gt;
|description = Controls the resolution of the LOS vs. aircraft calculations. A higher value means lower resolution but increased performance. An increase by one level means half the resolution of the air-LOS map in both x and y direction. Must be between &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt; inclusive.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = airLosMul&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 1.0&lt;br /&gt;
|description = Multiplies all unit&#039;s {{xtaglink|Units-UnitDefs|airSightDistance}} by this value. Generally speaking you should always use the default.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===movement===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = allowAirPlanesToLeaveMap&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Are (gunship) aircraft allowed to fly outside the bounds of the map?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = allowAircraftToHitGround&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|special = {{new|90.0}}&lt;br /&gt;
|description = Are aircraft allowed to hit the ground whilst manoeuvring?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = allowPushingEnemyUnits&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|special = {{new|83.0}}&lt;br /&gt;
|description = Can enemy ground units push each other during collisions?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = allowCrushingAlliedUnits&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|special = {{new|85.0}}&lt;br /&gt;
|description = Can allied ground units crush each other during collisions? Units still have to be explicitly set as crushable using the &amp;lt;code&amp;gt;crushable&amp;lt;/code&amp;gt; parameter of [[Lua_SyncedCtrl#Unit_Control|Spring.SetUnitBlocking]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = allowUnitCollisionDamage&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|special = {{new|85.0}}&lt;br /&gt;
|description = Do unit-unit (skidding) collisions cause damage?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = allowUnitCollisionOverlap&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|special = {{new|89.0}}&lt;br /&gt;
|description = Can mobile units collision volumes overlap one another? Allows unit movement like [http://www.youtube.com/watch?v=mRtePUdVk2o this (video)] at the cost of more &#039;clumping&#039;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = allowGroundUnitGravity&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|special = {{new|92.0}}&lt;br /&gt;
|description = Allows fast moving mobile units to &#039;catch air&#039; as they move over terrain.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = allowHoverUnitStrafing&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true if using QTPFS pathfinder&lt;br /&gt;
|special = {{new|92.0}}&lt;br /&gt;
|description = Allows hovercraft units to slide in turns.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = useClassicGroundMoveType&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|special = {{new|89.0}}&lt;br /&gt;
|description = A ticket back to unit movement circa 2009: no reversing, no {{xtaglink|Units-UnitDefs|turninplace|false}}, no smooth collision handling, no nothing. For comparison of pathfinding code.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===nanospray===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = allow_team_colors&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Are players allowed to use teamcolour nanospray? Set by the &amp;lt;code&amp;gt;TeamNanoSpray&amp;lt;/code&amp;gt; key in the [[Springrc|config file]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===paralyze===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = paralyzeOnMaxHealth&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Are units paralyzed when the level of emp is greater than their current health or their maximum health?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===reclaim===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = multiReclaim&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 0&lt;br /&gt;
|description = Can multiple units reclaim a feature or only one? &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; implies the latter, all other values the former.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = reclaimMethod&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 1&lt;br /&gt;
|description = Controls how features are reclaimed. Can be &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - gradual reclaim, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - all reclaimed at end, any other positive value &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; - reclaim in &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chunks.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = unitMethod&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 1&lt;br /&gt;
|description = Controls how units are reclaimed. Can be &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - gradual reclaim, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - all reclaimed at end, any other positive value &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; - reclaim in &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chunks.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = featureEnergyCostFactor&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = How much energy should reclaiming a feature cost? Multiplier against the fraction of the features&#039; {{xtaglink|Units-FeatureDefs|metal}} content reclaimed.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = unitEnergyCostFactor&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = How much energy should reclaiming a unit cost? Multiplier against the fraction of the unit&#039;s {{xtaglink|Units-UnitDefs|buildCostEnergy}} reclaimed. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = unitEfficiency&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 1.0&lt;br /&gt;
|description = How much metal should reclaiming a unit return? Multiplier against the unit&#039;s {{xtaglink|Units-UnitDefs|buildCostMetal}}.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = allowEnemies&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Can enemy units be reclaimed?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = allowAllies&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Can allied units be reclaimed?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===repair===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = energyCostFactor&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = How much of the original energy cost it requires to repair something.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===resurrect===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = energyCostFactor&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.5&lt;br /&gt;
|description = How much of the original energy cost it requires to resurrect something.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===sensors===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = requireSonarUnderWater&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; then when underwater, units only get LOS if they also have sonar.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===system===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = luaThreadingModel&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 2&lt;br /&gt;
|description = Controls which Lua MT optimizations the mod will use by default, for a more detailed explanation see [[Spring_Multithreaded_Lua#Lua_Threading_Models|here]]. Can be: &lt;br /&gt;
::&amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - No MT, single threaded; &lt;br /&gt;
::&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Single state; &lt;br /&gt;
::&amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - Single state, batching of unsynced events; &lt;br /&gt;
::&amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; - Dual states for synced, batching of unsynced events, synced/unsynced communication via EXPORT table and SendToUnsynced; &lt;br /&gt;
::&amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; - Dual states for synced, batching of unsynced events, synced/unsynced communication via SendToUnsynced only; &lt;br /&gt;
::&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; - Dual states for all, all synced/unsynced communication (widgets included) via SendToUnsynced only; &lt;br /&gt;
::&amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; - Dual states for all, all synced/unsynced communication (widgets included) is unmanaged and via SendToUnsynced only.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = pathFinderSystem&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 0&lt;br /&gt;
|special={{new|85.0}}&lt;br /&gt;
|description = Which pathfinder does the game use? Can be &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - The legacy default pathfinder or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Quad-Tree Pathfinder System ([[QTPFS]]).}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===transportability===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = transportAir&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Can aircraft be transported?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = transportShip&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Can ships be transported?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = transportHover&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Can hovercraft be transported?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = transportGround&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Can ground units be transported?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = targetableTransportedUnits&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|special = {{new|89.0}}&lt;br /&gt;
|description = Can transported units be targeted by weapons? &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; allows both manual and automatic targeting.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
===Empty===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;modrules.lua&amp;lt;/code&amp;gt; can simply return an empty table like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
return {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
If you do this, Spring will use the default values.&lt;br /&gt;
&lt;br /&gt;
===Configurable by modoptions===&lt;br /&gt;
Interestingly &amp;lt;code&amp;gt;modrules.lua&amp;lt;/code&amp;gt; can read [[Modoptions.lua|modoptions]], so these parameters can be scripted to be configurable from the lobby.&lt;br /&gt;
For example to allow selecting either legacy default pathfinder or [[QTPFS]] via a modoption:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  system = {&lt;br /&gt;
    pathFinderSystem = (Spring.GetModOptions() and (Spring.GetModOptions().qtpfs == &amp;quot;1&amp;quot;) and 1) or 0,&lt;br /&gt;
  },&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===External Examples===&lt;br /&gt;
[http://imolarpg.dyndns.org/trac/balatest/browser/trunk/gamedata/modrules.lua &#039;Balanced Annihilation&#039; Modrules.lua]&lt;br /&gt;
&lt;br /&gt;
[http://trac.caspring.org/browser/trunk/mods/ca/gamedata/modrules.lua &#039;Complete Annihilation&#039; Modrules.lua]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/conflictterra/source/browse/games/CT/gamedata/modrules.lua &#039;Conflict Terra&#039; Modrules.lua]&lt;br /&gt;
&lt;br /&gt;
[https://code.google.com/p/evolutionrts/source/browse/trunk/evolutiondev.sdd/Gamedata/modrules.lua &#039;Evolution RTS&#039; Modrules.lua]&lt;br /&gt;
&lt;br /&gt;
[http://spring1944.svn.sourceforge.net/viewvc/spring1944/trunk/S44Main.sdd/gamedata/modrules.lua?&amp;amp;view=markup &#039;Spring: 1944&#039; Modrules.lua]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/zero-k/source/browse/trunk/mods/zk/gamedata/modrules.lua &#039;ZeroK&#039; Modrules.lua]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Game development]]&lt;br /&gt;
[[Category:gamedata]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Mapdev:skybox&amp;diff=20310</id>
		<title>Talk:Mapdev:skybox</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Talk:Mapdev:skybox&amp;diff=20310"/>
		<updated>2012-12-21T06:09:43Z</updated>

		<summary type="html">&lt;p&gt;Smoth: Created page with &amp;quot;not 100% sure that was the skybox tiles for THAT skybox but it is pretty damn close.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;not 100% sure that was the skybox tiles for THAT skybox but it is pretty damn close.&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Mapdev:skybox&amp;diff=13972</id>
		<title>Mapdev:skybox</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Mapdev:skybox&amp;diff=13972"/>
		<updated>2012-12-21T05:58:40Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* Sky Box */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Sky Box =&lt;br /&gt;
Is a [http://en.wikipedia.org/wiki/Cube_mapping cubemap] projection of a skyline used to enhance the background of the map.&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Example&lt;br /&gt;
| [[File:Skyboxsimple.gif|256px]] || [[File:Cloudysunset.jpg|256px]]&lt;br /&gt;
|-&lt;br /&gt;
! Example cube cross before assembling to dds cubemap format !! Ingame Result&lt;br /&gt;
|}&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Location of File =&lt;br /&gt;
Relative to the root directory of the map:&lt;br /&gt;
: ./maps/skybox.dds&lt;br /&gt;
&lt;br /&gt;
= Specification =&lt;br /&gt;
== mapinfo.lua ==&lt;br /&gt;
The relevant sections of the mapinfo.lua file that effect the colour of the ground are in the [[Map_Making:mapinfo.lua#Atmosphere|atmosphere subtable]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
local mapinfo = {&lt;br /&gt;
   ...&lt;br /&gt;
   atmosphere = {&lt;br /&gt;
      ...&lt;br /&gt;
      skyBox = &amp;quot;&amp;quot;,&lt;br /&gt;
      ...&lt;br /&gt;
   },&lt;br /&gt;
   ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Additional Information =&lt;br /&gt;
== Howto&#039;s ==&lt;br /&gt;
* [[Mapdev:Howto_skybox]]&lt;br /&gt;
* [http://judegodin.wordpress.com/2011/12/06/how-the-hell-do-i-make-a-cubemap/ howto with 3dsmax]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mapdev]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Cloudysunset.jpg&amp;diff=21615</id>
		<title>File:Cloudysunset.jpg</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Cloudysunset.jpg&amp;diff=21615"/>
		<updated>2012-12-21T05:57:58Z</updated>

		<summary type="html">&lt;p&gt;Smoth: Skybox example image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Skybox example image&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-LuaCallouts&amp;diff=2033</id>
		<title>Animation-LuaCallouts</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-LuaCallouts&amp;diff=2033"/>
		<updated>2012-10-29T06:32:56Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* Effects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The new callouts are defined in the Spring.UnitScript table.&lt;br /&gt;
&lt;br /&gt;
Types for arguments are only shown where they&#039;re ambiguous. For a number of (common) arguments, the types are:&lt;br /&gt;
&lt;br /&gt;
* unitID: number&lt;br /&gt;
* piece: number&lt;br /&gt;
* axis: number (1 = x axis, 2 = y axis, 3 = z axis)&lt;br /&gt;
* destination: number (elmos, or radians)&lt;br /&gt;
* speed: number (elmos, or radians per second)&lt;br /&gt;
* accel/decel: number (radians per second per frame)&lt;br /&gt;
&lt;br /&gt;
== Animation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.SetPieceVisibility&#039;&#039;&#039; ( piece, boolean visible ) -&amp;gt; nil&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.Show&#039;&#039;&#039; ( piece ) -&amp;gt; nil&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.Hide&#039;&#039;&#039; ( piece ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
These may be used to show/hide pieces of the unit&#039;s model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.Move&#039;&#039;&#039; ( piece, axis, destination[, speed] ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Move piece along axis to the destination position. If speed is given, the piece isn&#039;t moved immediately, but will move there at the desired speed. The X axis is mirrored compared to BOS/COB scripts, to match the direction of the X axis in Spring world space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.Turn&#039;&#039;&#039; ( piece, axis, destination[, speed] ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Turn piece around axis to the destination angle. If speed is given, the piece isn&#039;t rotated immediately, but will turn at the desired angular velocity. Angles are in radians.&lt;br /&gt;
Always uses the shortest angular towards destinationdegree, and if at exactly 180 degrees opposide, will go counterclockwise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.Spin&#039;&#039;&#039; ( piece, axis, speed[, accel] ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Makes piece spin around axis at the desired angular velocity. If accel is given, the piece does not start at this velocity at once, but will accelerate to it. Both negative and positive angular velocities are supported. Accel should always be positive, even if speed is negative.&lt;br /&gt;
&lt;br /&gt;
Beware gimbal lock: http://en.wikipedia.org/wiki/Gimbal_lock&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.StopSpin&#039;&#039;&#039; ( piece, axis[, decel] ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Stops a piece from spinning around the given axis. If decel is given, the piece does not stop at once, but will decelerate to it. Decel should always be positive. This function is similar to Spin(piece, axis, 0, decel), however, StopSpin also frees up the animation record.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.IsInTurn&#039;&#039;&#039; (number piece, number axis) -&amp;gt; boolean&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.IsInMove&#039;&#039;&#039; (number piece, number axis) -&amp;gt; boolean&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.IsInSpin&#039;&#039;&#039; (number piece, number axis) -&amp;gt; boolean&lt;br /&gt;
&lt;br /&gt;
Returns true if such an animation exists, false otherwise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.GetPieceTranslation&#039;&#039;&#039; ( piece ) -&amp;gt; number x, y, z&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.GetPieceRotation&#039;&#039;&#039; ( piece ) -&amp;gt; number x, y, z&lt;br /&gt;
&lt;br /&gt;
Get the current translation/rotation of a piece. The returned numbers match the values passed into Move and Turn.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.GetPiecePosDir&#039;&#039;&#039; ( piece ) -&amp;gt; number px, py, pz, dx, dy, dz&lt;br /&gt;
&lt;br /&gt;
Get the piece&#039;s position (px, py, pz) and direction (dx, dy, dz) in &#039;&#039;&#039;unit space&#039;&#039;&#039;. This is quite similar to &#039;&#039;Spring.GetUnitPiecePosDir&#039;&#039;, however that function returns in &#039;&#039;&#039;world space&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Threads ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.StartThread&#039;&#039;&#039; ( function fun, ... ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Starts a new (animation) thread, which will execute the function &#039;fun&#039;. All arguments except the function to run are passed as-is as arguments to &#039;fun&#039;. [[Animation-CobThreads|COB-Threads]] has a decent description on COB threads, which are mimicked here in Lua using coroutines.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.SetSignalMask&#039;&#039;&#039; ( number mask ) -&amp;gt; nil&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.Signal&#039;&#039;&#039; ( number signal ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
These two support functions offer a powerful way to kill running threads. SetSignalMask assigns a mask to the currently running thread (any new threads started by this one will inherit the signal mask). Signal immediately stops all threads of this unit for which the bitwise and of mask and signal is not zero.&lt;br /&gt;
&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?f=14&amp;amp;t=26274&amp;amp;start=2| What signal will stop which threads?]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.WaitForMove&#039;&#039;&#039; ( piece, axis ) -&amp;gt; nil&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.WaitForTurn&#039;&#039;&#039; ( piece, axis ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Waits until the piece has stopped moving along / turning around the axis. If the piece is not animating, this functions return at once. You can not wait for a spin, because a spin does never finish.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.Sleep&#039;&#039;&#039; ( number milliseconds ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Waits a number of milliseconds before returning.&lt;br /&gt;
&lt;br /&gt;
== Effects ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.EmitSfx&#039;&#039;&#039; ( piece, number id ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Emits a [[CEG]] effect or weapon from the given piece. The id is based on one of the effect or weapon ids defined in the units unitdef.&amp;lt;br&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--get the id of the CEG effects:&lt;br /&gt;
local smokecloud = SFX.CEG   --the first effect from the list in the unitdef&lt;br /&gt;
local smokecloud2 = SFX.CEG +1   --the second effect from the list in the unitdef&lt;br /&gt;
local fire = SFX.CEG +2   --the third effect from the list in the unitdef&lt;br /&gt;
--get the id of the emiter piece:&lt;br /&gt;
local turret = piece &amp;quot;turret&amp;quot;&lt;br /&gt;
EmitSfx(turret, smokecloud)   --emit the first effect&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.ShowFlare&#039;&#039;&#039; ( number piece ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Same as COB&#039;s show _inside_ FireWeaponX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.Explode&#039;&#039;&#039; ( piece, number flags ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Explodes a piece, optionally creating a particle which flies off. Typically used inside Killed. Explode does not hide the piece by itself; if using it outside Killed you may want to Hide the piece immediately after. The flags may be any combination of:&lt;br /&gt;
* &#039;&#039;&#039;SFX.NONE&#039;&#039;&#039;: do nothing after creating a heatcloud. Other flags have no effect, except NO_HEATCLOUD. If that is given too, the call is a no-op.&lt;br /&gt;
* &#039;&#039;&#039;SFX.SHATTER&#039;&#039;&#039;: shatter the piece in many fragments. Only the NO_HEATCLOUD flag has any effect if this is present.&lt;br /&gt;
* &#039;&#039;&#039;SFX.EXPLODE&#039;&#039;&#039; | &#039;&#039;&#039;SFX.EXPLODE_ON_HIT&#039;&#039;&#039;: the piece that flies of should explode when it hits something.&lt;br /&gt;
* &#039;&#039;&#039;SFX.FALL&#039;&#039;&#039;: the piece should be affected by gravity (this is currently always forced on by Spring, to prevent pieces that float in air indefinitely).&lt;br /&gt;
* &#039;&#039;&#039;SFX.SMOKE&#039;&#039;&#039;: leave smoke trail.&lt;br /&gt;
* &#039;&#039;&#039;SFX.FIRE&#039;&#039;&#039;: the piece is on fire when it flies off.&lt;br /&gt;
* &#039;&#039;&#039;SFX.NO_CEG_TRAIL&#039;&#039;&#039;: disable a CEG trail, if present.&lt;br /&gt;
* &#039;&#039;&#039;SFX.NO_HEATCLOUD&#039;&#039;&#039;: suppress the heat cloud that&#039;s shown by default.&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.AttachUnit&#039;&#039;&#039; ( piece, passengerID ) -&amp;gt; nil&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.DropUnit&#039;&#039;&#039; ( passengerID ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Attaches or detaches another unit (a passenger, as this is designed for transports) to this unit. For AttachUnit, piece specifies the attachment point.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.GetUnitValue&#039;&#039;&#039; ( ... ) -&amp;gt; number | number, number&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.SetUnitValue&#039;&#039;&#039; ( ... ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
This may be used instead of COB&#039;s get and set codes. It is recommended however, to use dedicated Lua functions (e.g. Spring.GetUnitHealth(unitID) instead of GetUnitValue(4)): these functions should be considered a relic of the past.&lt;br /&gt;
&lt;br /&gt;
Note that these are identical to Spring.GetUnitCOBValue and Spring.SetUnitCOBValue (see also [[Lua_SyncedCtrl#Lua_to_COB]] for the signature of those functions), except that an unitID argument shouldn&#039;t be passed to the versions in the Spring.UnitScript table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.GetLongestReloadTime&#039;&#039;&#039; ( unitID ) -&amp;gt; number reloadTime&lt;br /&gt;
&lt;br /&gt;
Returns max(reload time) of all the unit&#039;s weapons in milliseconds. This utility function exists to aid in porting BOS scripts, which have a SetMaxReloadTime call-in that is called immediately after Create.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Internal ==&lt;br /&gt;
&lt;br /&gt;
You generally shouldn&#039;t need any of the following call-outs, they are provided by the engine to allow the Lua framework to do it&#039;s work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.CreateScript&#039;&#039;&#039; ( unitID, table callIns ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
This deletes the unit&#039;s current script (whether it&#039;s a COB or Lua script doesn&#039;t matter), and sets it up with a brand new Lua unit script, initially registering the call-ins given in the table as (string, function) pairs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.UpdateCallIn&#039;&#039;&#039; ( unitID, string name[, function callIn] ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
This updates a single call-in for the unit&#039;s current &#039;&#039;&#039;Lua&#039;&#039;&#039; unit script. If the unit does not currently have a Lua unit script, an error is raised. If the callIn argument is not given (or nil), the call-in with the given name is removed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.CallAsUnit&#039;&#039;&#039; ( unitID, function fun, ... ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
As none of the call-outs takes a unitID, the engine needs to know the &#039;&#039;active unit&#039;&#039; when one of those is called. Using this function another function can be called with the active unit set arbitrarily.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.UnitScript.SetDeathScriptFinished&#039;&#039;&#039; ( [number wreckLevel] )&lt;br /&gt;
&lt;br /&gt;
Tells Spring the Killed script finished, and which wreckLevel to use. If wreckLevel is not given no wreck is created. May only be called after Killed has been called. DO NOT USE, the framework handles this transparently (it passes the return value of Killed into this function.)&lt;br /&gt;
[[Category:Unit_development]]&lt;br /&gt;
[[Category:Animation]]&lt;br /&gt;
[[Category:Lua]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Gamedev:UnitDefs&amp;diff=8504</id>
		<title>Gamedev:UnitDefs</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Gamedev:UnitDefs&amp;diff=8504"/>
		<updated>2012-07-08T21:34:15Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* General */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Location==&lt;br /&gt;
UnitDef files are .lua files stored in the &amp;lt;code&amp;gt;Units/&amp;lt;/code&amp;gt; directory of a Spring Game.&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
UnitDef files have one purpose; to define the properties of units. They are the main description file for what attributes your unit should have and how it should behave.&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
The engine source code which loads the tags from these files is viewable here:{{sourcelink|file=rts/Sim/Units/UnitDef.cpp}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The engine source which reads the [[#sounds]] subtable can be found here:{{sourcelink|file=rts/Sim/Units/UnitDefHandler.cpp}}&lt;br /&gt;
&lt;br /&gt;
==Data Types==&lt;br /&gt;
Tags may be one of the following data types:&lt;br /&gt;
* &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; - An integer number&lt;br /&gt;
* &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; - A number with decimals.&lt;br /&gt;
* &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt; - A value which can be &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; - Text, or more precisely a string of alphanumeric characters.&lt;br /&gt;
* &amp;lt;code&amp;gt;float[3]&amp;lt;/code&amp;gt; - A vector, with three &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; components, representing x, y and z axes (y is &#039;up&#039;).&lt;br /&gt;
&lt;br /&gt;
==Details==&lt;br /&gt;
There follows a comprehensive (certain deprecated tags are not present) list of the tags available, their data type, default value and a brief description of what they do. Bear in mind that the source code linked above is the ultimate reference when dealing with these tags. &lt;br /&gt;
&lt;br /&gt;
In lua tables keys (i.e. the tags) should be lower case, here they are represented in camelCase for readability. In your files you may use the &amp;lt;code&amp;gt;lowerkeys&amp;lt;/code&amp;gt; function on your final table to ensure the keys are properly cased.&lt;br /&gt;
&lt;br /&gt;
It is usual to name the returned UnitDef table the internal &amp;lt;code&amp;gt;unitName&amp;lt;/code&amp;gt; desired for the unit.&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = name&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;&amp;quot;&lt;br /&gt;
|description = This is simply the name of the unit as it appears to the player.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = description&lt;br /&gt;
|type = string&lt;br /&gt;
|default = name&lt;br /&gt;
|description = This is the tooltip description of the unit seen by the player. It defaults to the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; of the unit.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = buildPic&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;&amp;quot;&lt;br /&gt;
|description = The filename of the image(stored in /unitpics/) to be used as the build picture.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = objectName&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;&amp;quot;&lt;br /&gt;
|description = The filename of the 3D model file for this unit, assumes &amp;lt;code&amp;gt;Objects3D/&amp;lt;/code&amp;gt; directory.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = script&lt;br /&gt;
|type = string&lt;br /&gt;
|default = unitName + &amp;quot;.cob&amp;quot;&lt;br /&gt;
|description = The filename of the animation script file for this unit, assumes &amp;lt;code&amp;gt;Scripts/&amp;lt;/code&amp;gt; directory. Default assumes .cob file but [[Animation-LuaScripting | LUS]] should be preferred.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = maxDamage&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The base &#039;hitpoints&#039; the unit will have.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = autoHeal&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = How much health the unit will regain every second.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = idleAutoHeal&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 10.0&lt;br /&gt;
|description = How much health the unit will regain every second whilst it is idle.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = idleTime&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 600&lt;br /&gt;
|description = The time in [[frames]] taken until a unit is considered to be idle.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = buildCostMetal&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 1.0&lt;br /&gt;
|description = The amount of metal resource the unit costs to build. Cannot be below &amp;lt;code&amp;gt;1.0&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = buildCostEnergy&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The amount of energy resource the unit costs to build.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = buildTime&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The time taken to build the unit, in conjunction with the &amp;lt;code&amp;gt;workerTime&amp;lt;/code&amp;gt; of the constructor. Effectively, &#039;&#039;Time to build = unit &amp;lt;code&amp;gt;buildTime&amp;lt;/code&amp;gt; / constructor &amp;lt;code&amp;gt;workerTime&amp;lt;/code&amp;gt;&#039;&#039;. Defaults to &amp;lt;code&amp;gt;0.0&amp;lt;/code&amp;gt; but cannot actually be below &amp;lt;code&amp;gt;1.0&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = mass&lt;br /&gt;
|type = float&lt;br /&gt;
|default = buildCostMetal&lt;br /&gt;
|description = The mass of the unit, used in weapon impulse calculations. Cannot be less than &amp;lt;code&amp;gt;1.0&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = reclaimable&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Can the unit be reclaimed by a builder?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = capturable&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Can a unit be stolen by a builder using the capture command?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = repairable&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Can the unit be repaired by a builder?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = maxRepairSpeed&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 1e20&lt;br /&gt;
|description = The maximum cumulative speed at which this unit can be repaired.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = iconType&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;default&amp;quot;&lt;br /&gt;
|description = The name of the radar icon type this unit should use. See [[Icontypes.lua]].}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = corpse&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;&amp;quot;&lt;br /&gt;
|description = The name of the feature this unit should leave behind as a wreck when it dies (See [[Units-FeatureDefs]]).}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = explodeAs&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;&amp;quot;&lt;br /&gt;
|description = The name of the weapon this unit should explode as when it is killed (See [[Units-WeaponDefs]]).}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = selfDestructAs&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;&amp;quot;&lt;br /&gt;
|description = The name of the weapon this unit should explode as when it self destructs (See [[Units-WeaponDefs]]). Also used as the &amp;lt;code&amp;gt;kamikaze&amp;lt;/code&amp;gt; weapon.}}&lt;br /&gt;
&lt;br /&gt;
===Resources===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = metalStorage&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The amount of the metal resource storage the unit contributes.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = energyStorage&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The amount of the energy resource storage the unit contributes.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = extractsMetal&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The amount of the metal resource the unit extracts from the ground. The amount extracted depends on the metal map defined in the map itself. Works only for structures.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = extractSquare&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Is the metal extractors extraction area circular or square?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = windGenerator&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The amount of the energy resource the unit generates which is dependant on the map wind. Works only for structures.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = tidalGenerator&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The amount of the energy resource the unit generates which is dependant on the maps tidal power. Clearly, this only works on water structures.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = metalUse&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The amount of the metal resource the unit consumes per game &#039;tick&#039;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = energyUse&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The amount of the energy resource the unit consumes per game &#039;tick&#039;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = metalMake&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The amount of the metal resource the unit generates unconditionally per game &#039;tick&#039;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = energyMake&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The amount of the energy resource the unit generates unconditionally per game &#039;tick&#039;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = makesMetal&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The amount of the energy resource the unit turns into the metal resource per game &#039;tick&#039;.}}&lt;br /&gt;
&lt;br /&gt;
===Sensors===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = onoffable&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Does the unit have an on/off button? Currently the activation status tied to this button also turns sensors (other than LOS) on and off.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = activateWhenBuilt&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Should the unit&#039;s activation status be on or off when it is created?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = sightDistance&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The radius of the units sight (LOS is circular in Spring)}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = airSightDistance&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 1.5 * sightDistance&lt;br /&gt;
|description = How far away the unit can see aircraft (and some FX).}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = losEmitHeight&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 20.0&lt;br /&gt;
|special={{new|83.0}}&lt;br /&gt;
|description = How high up the unit is the point used to calculate it&#039;s LOS vs. the terrain?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = radarEmitHeight&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 20.0&lt;br /&gt;
|special={{new|83.0}}&lt;br /&gt;
|description = How high up the unit is the point used to calculate it&#039;s radar vs. the terrain?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = radarDistance&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 0&lt;br /&gt;
|description = The radius of the units radar.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = sonarDistance&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 0&lt;br /&gt;
|description = The radius of the units sonar.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = radarDistanceJam&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 0&lt;br /&gt;
|description = The radius of the units radar jamming.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = sonarDistance&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 0&lt;br /&gt;
|description = The radius of the units sonar jamming.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = stealth&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Is the unit undetectable by radar?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = sonarStealth&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Is the unit undetectable by sonar?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = seismicDistance&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 0&lt;br /&gt;
|description = The radius of the unit&#039;s seismic (movement) sensor.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = seismicSignature&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0 for units with &amp;lt;code&amp;gt;floater&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;canHover&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;canFly&amp;lt;/code&amp;gt;, otherwise sqrt(mass / 100.0)&lt;br /&gt;
|description = How fast the seismic ring expands in [[Units-UnitsOfMeasurement | elmos per frame]]. Each ping always lasts 15 [[frames]], so this also determines the maximum radius of the seismic ring.}}&lt;br /&gt;
&lt;br /&gt;
====Cloaking====&lt;br /&gt;
For units with [[Units-UnitDefs#Commands|canCloak]] set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;:&lt;br /&gt;
{{tag&lt;br /&gt;
|name = cloakCost&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The energy cost per tick to cloak the unit while it is stationary.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = cloakCostMoving&lt;br /&gt;
|type = float&lt;br /&gt;
|default = cloakCost&lt;br /&gt;
|description = The energy cost per tick to cloak the unit while it is moving.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = initCloaked&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Is the unit cloaked as soon as it is created?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = minCloakDistance&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The minimum distance (radius) which the unit must be from any enemy units to remain cloaked.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = decloakSpherical&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Does &amp;lt;code&amp;gt;minCloakDistance&amp;lt;/code&amp;gt; apply in 3D or only 2D? i.e. can aircraft flying above the unit decloak it?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = decloakOnFire&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Does the unit deloak when it fires a weapon?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = cloakTimeout&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 128&lt;br /&gt;
|description = The minimum time, in [[frames]], between a decloak and subsequent re-cloak.}}&lt;br /&gt;
&lt;br /&gt;
===Commands===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canMove&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Can the unit be issued Move orders?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canAttack&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Can the unit be issued Attack orders?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canFight&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Can the unit be issued Fight orders?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canPatrol&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Can the unit be issued Patrol orders?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canGuard&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Can the unit be issued Guard orders?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
| name = canCloak&lt;br /&gt;
| type = bool&lt;br /&gt;
| default = false&lt;br /&gt;
| description =&lt;br /&gt;
Can the unit be issued Cloak orders?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canRepeat&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Can the unit be issued Repeat orders?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canSelfDestruct&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Can the unit be issued a self destruct order?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = moveState&lt;br /&gt;
|type = int&lt;br /&gt;
|default = -1 for mobile units, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; for structures&lt;br /&gt;
|description = The initial movement state for the unit. Can be &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; - Inherits from factory, &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - Hold Position, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Manoeuvre or &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - Roam.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = fireState&lt;br /&gt;
|type = int&lt;br /&gt;
|default = -1 for units without &amp;lt;code&amp;gt;noAutoFire&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; otherwise&lt;br /&gt;
|description = The initial firing state for the unit. Can be &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; - Inherits from factory, &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - Hold Fire, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Return Fire or &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - Fire At Will.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = noAutoFire&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Controls whether or not the unit has a fire state button.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canManualFire&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Can the unit be issued ManualFire commands? A ManualFire command will fire any weapons with the &amp;lt;code&amp;gt;commandfire&amp;lt;/code&amp;gt; tag (See [[Units-WeaponDefs]]).}}&lt;br /&gt;
&lt;br /&gt;
====Builder Commands====&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canRestore&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = builder&lt;br /&gt;
|description = Can the unit be issued restore terrain commands? For builders only.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canRepair&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = builder&lt;br /&gt;
|description = Can the unit be issued repair commands? For builders only.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canReclaim&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = builder&lt;br /&gt;
|description = Can the unit be issued reclaim commands? For builders only.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canResurrect&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Can the unit be issued resurrection commands? For builders only.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canCapture&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Can the unit be issued capture commands? For builders only.}}&lt;br /&gt;
&lt;br /&gt;
===Builder===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = builder&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Is the unit a builder?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = buildDistance&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 128.0&lt;br /&gt;
|description = How far away from itself the unit can build, measured to the centre of the unit being built. The minimum value is &amp;lt;code&amp;gt;38.0&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = buildRange3D&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Does the builders &amp;lt;code&amp;gt;buildDistance&amp;lt;/code&amp;gt; apply in all 3 dimensions or only 2?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = workerTime&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = How fast the builder builds, used in conjunction with the &amp;lt;code&amp;gt;buildTime&amp;lt;/code&amp;gt; of the unit being built. Effectively, &#039;&#039;Time to build = unit &amp;lt;code&amp;gt;buildTime&amp;lt;/code&amp;gt; / constructor &amp;lt;code&amp;gt;workerTime&amp;lt;/code&amp;gt;&#039;&#039;. If this value is &amp;lt;= &amp;lt;code&amp;gt;0.0&amp;lt;/code&amp;gt; then &amp;lt;code&amp;gt;builder&amp;lt;/code&amp;gt; is set to false.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = repairSpeed&lt;br /&gt;
|type = float&lt;br /&gt;
|default = workerTime&lt;br /&gt;
|description = How fast the builder can repair other units.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = reclaimSpeed&lt;br /&gt;
|type = float&lt;br /&gt;
|default = workerTime&lt;br /&gt;
|description = How fast the builder can reclaim other units and features.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = resurrectSpeed&lt;br /&gt;
|type = float&lt;br /&gt;
|default = workerTime&lt;br /&gt;
|description = How fast the builder can resurrect corpse features back into living units.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = captureSpeed&lt;br /&gt;
|type = float&lt;br /&gt;
|default = workerTime&lt;br /&gt;
|description = How fast the builder can capture other units.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = terraformSpeed&lt;br /&gt;
|type = float&lt;br /&gt;
|default = workerTime&lt;br /&gt;
|description = How fast the builder levels and restores terrain.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canAssist&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = builder&lt;br /&gt;
|description = Can the builder assist other constructions?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canBeAssisted&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Can the builder be assisted by other builders?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canSelfRepair&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Can the builder repair itself?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = showNanoSpray&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Does the builder emit OTA-style nanospray whilst constructing?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = nanoColor&lt;br /&gt;
|type = float[3]&lt;br /&gt;
|default = {0.2, 0.7, 0.2} aka green&lt;br /&gt;
|description = The RGB colour of a builders&#039; emitted nano particles if &amp;lt;code&amp;gt;showNanoSpray&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;. Also controls the RBG colour of a unit&#039;s own nanoframe if &amp;lt;code&amp;gt;showNanoFrame&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = fullHealthFactory&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, units are repaired before they are allowed to leave the factory i.e. units from this factory will be healed back to 100% health if they are damaged during construction.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = isAirbase&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Is this unit an airbase? Aircraft may land and repair on units which are airbases.}}&lt;br /&gt;
&lt;br /&gt;
===Movement &amp;amp; Placement===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = footprintX&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 1&lt;br /&gt;
|description = &lt;br /&gt;
How wide the unit is in footprint units, left to right. 1 footprint unit = 16 [[elmos]]. Cannot be below &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. For mobile units this should be the same as the &amp;lt;code&amp;gt;footprintX&amp;lt;/code&amp;gt; of its &amp;lt;code&amp;gt;movementClass&amp;lt;/code&amp;gt;. Also used for obstacle avoidance.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = footprintZ&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 1&lt;br /&gt;
|description = &lt;br /&gt;
How wide the unit is in footprint units, top to bottom. 1 footprint unit = 16 [[elmos]]. Cannot be below &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. For mobile units this should be the same as the &amp;lt;code&amp;gt;footprintZ&amp;lt;/code&amp;gt; of its &amp;lt;code&amp;gt;movementClass&amp;lt;/code&amp;gt;. Also used for obstacle avoidance.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = yardmap&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;&amp;quot;&lt;br /&gt;
|description = &lt;br /&gt;
Used to determine a structure from a mobile unit. A string of characters which defines in detail each &#039;footprint square&#039; of the structure. Each footprint square may be: &lt;br /&gt;
:: &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; - &#039;Yard&#039; - Always open, unblocking, &lt;br /&gt;
:: &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; - &#039;Construction&#039; - Open and unblocking only while constructing (for factories, controlled via &amp;lt;code&amp;gt;COB.YARD_OPEN&amp;lt;/code&amp;gt; see [[Animation-LuaCallouts#Other]]), &lt;br /&gt;
:: &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; - &#039;Inversed Construction&#039; - Closed and blocking only while constructing (for factories, controlled via &amp;lt;code&amp;gt;COB.YARD_OPEN&amp;lt;/code&amp;gt; see [[Animation-LuaCallouts#Other]]) ({{new|89.0}}), &lt;br /&gt;
:: &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt; - &#039;Geothermal&#039; - Flags that the unit must be placed over a &amp;lt;code&amp;gt;geoThermal&amp;lt;/code&amp;gt; feature, does not actually count as a square (See [[Units-FeatureDefs]]), &lt;br /&gt;
::&amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; - &#039;Obstacle&#039; - Always closed, blocking, all other chars are treated the same way.&lt;br /&gt;
: Tip: &#039;Draw&#039; out the yardmap over multiple lines. Prior to &amp;lt;span class=warning&amp;gt;89.0&amp;lt;/span&amp;gt; newlines should be replaced with spaces as newlines are treated as &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = levelGround&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = For structures. Does the constructor have to level the ground underneath the build area before beginning to build the structure?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = movementClass&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;&amp;quot;&lt;br /&gt;
|description = The name of the movement type a mobile, non aircraft, unit should use. See [[Movedefs.lua]]. Other tag usage should be consistent with this i.e. &amp;lt;code&amp;gt;canHover = true&amp;lt;/code&amp;gt; IFF using a &amp;lt;code&amp;gt;HOVER&amp;lt;/code&amp;gt; based movetype.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canHover&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Is the unit a hovercraft? Hovercraft can cross water of any depth without a speed penalty. Hover&#039;s must also have &amp;lt;code&amp;gt;HOVER&amp;lt;/code&amp;gt; within the name of their &amp;lt;code&amp;gt;movementClass&amp;lt;/code&amp;gt; (see [[Movedefs.lua]]).}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = floater&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true if the unit has the &amp;lt;code&amp;gt;waterline&amp;lt;/code&amp;gt; tag, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; otherwise&lt;br /&gt;
|description = When a mobile unit is crossing water, or a structure is placed on water, does it float on top of the water or crawl / lay on the sea bed?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = upright&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Does the unit follow the terrain or always remain upright? Generally used for walkers.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = maxSlope&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The maximum slope a building can be placed on. Mobile unit&#039;s use the &amp;lt;code&amp;gt;maxSlope&amp;lt;/code&amp;gt; set in their &amp;lt;code&amp;gt;movementClass&amp;lt;/code&amp;gt; (see [[Movedefs.lua]]). The value is in degrees and is clamped between &amp;lt;code&amp;gt;0.0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;89.0&amp;lt;/code&amp;gt;. This value is converted to a &amp;quot;maximum allowed height difference&amp;quot; (call it M), which involves a hard-coded constant. When a building gets placed, the height of each of its footprint squares is compared to a reference height (calculated for the build position). If the difference exceeds M for any square, that build position is rejected.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = minWaterDepth&lt;br /&gt;
|type = float&lt;br /&gt;
|default = -10e6&lt;br /&gt;
|description = The minimum depth of water a building can be placed on. Mobile unit&#039;s use the &amp;lt;code&amp;gt;minWaterDepth&amp;lt;/code&amp;gt; set in their &amp;lt;code&amp;gt;movementClass&amp;lt;/code&amp;gt; (see [[Movedefs.lua]]).}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = maxWaterDepth&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 10e6&lt;br /&gt;
|description = The maximum depth of water a building can be placed on. Mobile unit&#039;s use the &amp;lt;code&amp;gt;maxWaterDepth&amp;lt;/code&amp;gt; set in their &amp;lt;code&amp;gt;movementClass&amp;lt;/code&amp;gt; (see [[Movedefs.lua]]).}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = waterline&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = How low in the water does a ship sit? Higher values means the ship is lower in the water.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = minCollisionSpeed&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 1.0&lt;br /&gt;
|description = The minimum net impact speed that will cause a unit to be damaged by collisions with another unit.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = pushResistant&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Can the unit be pushed around by other units? Turning it on doesn&#039;t remove all pushing but is a marked improvement.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = maxVelocity&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The maximum speed attainable by the unit in [[Units-UnitsOfMeasurement | elmos per frame]]. If the value is -ve, the absolute value is used.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = maxReverseVelocity&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The maximum speed attainable by the unit in reverse in [[Units-UnitsOfMeasurement | elmos per frame]]. If the value is -ve, the absolute value is used.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = acceleration&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.5&lt;br /&gt;
|description = The acceleration of the unit, in [[Units-UnitsOfMeasurement | elmos per frame&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]. If the value is -ve, the absolute value is used.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = brakeRate&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 3.0 * acceleration&lt;br /&gt;
|description = The deceleration of the unit, in [[Units-UnitsOfMeasurement | elmos per frame&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]. If the value is -ve, the absolute value is used. For units with &amp;lt;code&amp;gt;canFly&amp;lt;/code&amp;gt; this is multiplied by &amp;lt;code&amp;gt;0.1&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = turnRate&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = How fast the unit can turn. &#039;&#039;degrees per seconds = 0.16 * &amp;lt;code&amp;gt;turnRate&amp;lt;/code&amp;gt;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = turnInPlace&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Does the unit turn on the spot (like a person or tank) or must it be moving forwards to turn (like a car).}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = turnInPlaceSpeedLimit&lt;br /&gt;
|type = float&lt;br /&gt;
|default = A complex formula based on &amp;lt;code&amp;gt;turnRate&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;maxVelocity&amp;lt;/code&amp;gt;&lt;br /&gt;
|description = For units with &amp;lt;code&amp;gt;turnInPlace = false&amp;lt;/code&amp;gt;, this defines the minimum speed it will slow down to (the speed at which the turn is actually performed can be higher depending on the angular difference and &amp;lt;code&amp;gt;turnRate&amp;lt;/code&amp;gt;).}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
| name = turnInPlaceAngleLimit&lt;br /&gt;
| type = float&lt;br /&gt;
| default = 0.0&lt;br /&gt;
| special = {{new|86.0}}&lt;br /&gt;
| description = For units with &amp;lt;code&amp;gt;turnInPlace = true&amp;lt;/code&amp;gt;, defines the maximum angle (in degrees) of a turn above which it starts to brake.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = blocking&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description =Does the unit block the movement of other units? (Mines, i.e. non-mobile units with the &amp;lt;code&amp;gt;kamikaze&amp;lt;/code&amp;gt; tag default to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;)}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = crushResistance&lt;br /&gt;
|type = float&lt;br /&gt;
|default = mass&lt;br /&gt;
|special = {{new|85.0}}&lt;br /&gt;
|description = How resistant is the unit to being crushed? Any [[Movedefs.lua|&#039;&#039;&#039;MoveClass&#039;&#039;&#039;]] with a &amp;lt;code&amp;gt;crushStrength&amp;lt;/code&amp;gt; greater than this will crush the unit - if and only if this has been enabled via [[Lua_SyncedCtrl#Unit_Control|Spring.SetUnitBlocking]].}}&lt;br /&gt;
&lt;br /&gt;
===Flanking===&lt;br /&gt;
For a deeper explanation of these tags, see [[Units:FlankingBonus]].&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = flankingBonusMode&lt;br /&gt;
|type = int&lt;br /&gt;
|default = flankingBonus.defaultMode set in [[Modrules.lua]]&lt;br /&gt;
|description = The mode of operation of Spring&#039;s inbuilt flanking system. Can be &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - No flanking bonus. Mode &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; builds up the ability to move over time, and swings to face attacks, but does not respect the way the unit is facing. Mode &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; also can swing, but moves with the unit as it turns. Mode &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; stays with the unit as it turns and otherwise doesn&#039;t move, the ideal mode to simulate something such as tank armour.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = flankingBonusDir&lt;br /&gt;
|type = float[3]&lt;br /&gt;
|default = {0.0, 0.0, 1.0}&lt;br /&gt;
|description = This is the direction vector where the armour is facing; i.e. where the least damage is applied. The default is straight forwards.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = flankingBonusMax&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 1.9&lt;br /&gt;
|description = The maximum multiplier to the damage dealt, when a unit is hit from the opposite direction to &amp;lt;code&amp;gt;flankingBonusDir&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = flankingBonusMin&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.9&lt;br /&gt;
|description = The minimum multiplier to the damage dealt, when a unit is hit from the opposite direction to &amp;lt;code&amp;gt;flankingBonusDir&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = flankingBonusMobilityAdd&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.01&lt;br /&gt;
|description = This defines the ability of &amp;lt;code&amp;gt;flankingBonusDir&amp;lt;/code&amp;gt; to move over time. Its value is added to the mobility every [[SlowUpdate]]. When the unit is attacked, the build up mobility value is multiplied by a vector facing the attack, which is added to &amp;lt;code&amp;gt;flankingBonusDir&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
===Aircraft===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canFly&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Can the unit fly, i.e. is it an aircraft?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canSubmerge&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Can the aircraft land underwater?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = factoryHeadingTakeoff&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Controls the take-off behaviour of aircraft with &amp;lt;code&amp;gt;hoverAttack&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; means planes start matching their factory&#039;s heading right after taking off from the pad, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; means they maintain the heading of the pad until reaching &amp;lt;code&amp;gt;cruiseAlt&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = collide&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Does the unit collide with other aircraft, or can it occupy the same space?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = hoverAttack&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Controls whether the aircraft flys and attacks like a fighter/bomber or a helicopter/gunship.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = airStrafe&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = For aircraft with &amp;lt;code&amp;gt;hoverAttack = true&amp;lt;/code&amp;gt;, controls if the unit strafes side to side while attacking or remains stationary.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = cruiseAlt&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The altitude in [[elmos]] which the unit attempts to fly at while cruising.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = airHoverFactor&lt;br /&gt;
|type = float&lt;br /&gt;
|default = -1.0&lt;br /&gt;
|description = For aircraft with &amp;lt;code&amp;gt;hoverAttack = true&amp;lt;/code&amp;gt;, less then &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; means it can land and &amp;gt;= &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; indicates how much the unit will move during hovering on the spot.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = bankingAllowed&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = For aircraft with &amp;lt;code&amp;gt;hoverAttack = true&amp;lt;/code&amp;gt;, controls whether or not the unit banks when moving turning.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = useSmoothMesh&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Does the aircraft follow the real map terrain or the special smoothed out navigation mesh generated by Spring specifically for aircraft?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = maxFuel&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The maximum flight time in seconds before aircraft must return to an airbase to refuel.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = refuelTime&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 5.0&lt;br /&gt;
|description = The time in seconds required to refuel the aircraft at an airbase.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = minAirbasePower&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The minimum &amp;lt;code&amp;gt;workerTime&amp;lt;/code&amp;gt; an airbase must have to repair / refuel this aircraft.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canLoopbackAttack&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Can the aircraft perform an [http://en.wikipedia.org/wiki/Immelmann_turn Immelmann turn]?}}&lt;br /&gt;
&lt;br /&gt;
====Advanced Air Tags====&lt;br /&gt;
The following set of tags are not well understood and using non-default values can lead to undesired flight behaviours.&lt;br /&gt;
{{tag&lt;br /&gt;
|name = wingDrag&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.07&lt;br /&gt;
|description = The drag caused by the aircraft&#039;s wing. Clamped between &amp;lt;code&amp;gt;0.0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1.0&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = wingAngle&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.08&lt;br /&gt;
|description = The angle between the front and the wing plane.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = frontToSpeed&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.1&lt;br /&gt;
|description = Fudge factor for lining up speed and front of plane.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = speedToFront&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.07&lt;br /&gt;
|description = Fudge factor for lining up speed and front of plane.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = myGravity&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.4&lt;br /&gt;
|description = As Spring aircraft are slower than real aircraft this tag allows to lower gravity to compensate. Multiplies against map gravity.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = crashDrag&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.005&lt;br /&gt;
|description = The drag used when crashing. Clamped between &amp;lt;code&amp;gt;0.0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1.0&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = maxBank&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.8&lt;br /&gt;
|description = The maximum roll (z-axis rotation) the aircraft can achieve.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = maxPitch&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.45&lt;br /&gt;
|description = The maximum pitch (x-axis rotation) the aircraft tries to keep.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = turnRadius&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 500.0&lt;br /&gt;
|description = Hint to Spring unit AI about the required turning radius.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = verticalSpeed&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 3.0&lt;br /&gt;
|description = The speed of takeoff and landing, at least for gunships (&amp;lt;code&amp;gt;hoverAttack = true&amp;lt;/code&amp;gt;)}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = maxAileron&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.015&lt;br /&gt;
|description =  The maximum turn speed around the roll (z) axis.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = maxElevator&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.01&lt;br /&gt;
|description = The maximum turn speed around the pitch (x) axis.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = maxRudder&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.004&lt;br /&gt;
|description = The maximum turn speed around the yaw (y) axis.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = maxAcc&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.065&lt;br /&gt;
|description = The maximum acceleration or &#039;engine power&#039; of the aircraft.}}&lt;br /&gt;
&lt;br /&gt;
====Flares====&lt;br /&gt;
The following set of tags are rarely used and are hardcoded to only work vs. missile weapons. The texture is hardcoded to be &amp;lt;code&amp;gt;flareprojectiletexture&amp;lt;/code&amp;gt; defined in [[Resources.lua]].&lt;br /&gt;
{{tag&lt;br /&gt;
|name = canDropFlare&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Can this aircraft drop flares to distract missile weapons?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = flareReload&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 5.0&lt;br /&gt;
|description = The time in seconds between successive flare drops.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = flareDelay&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.3&lt;br /&gt;
|description = The delay between detecting an incoming missile and launching flares. Multiplied by a random number between 1 and 16.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = flareEfficiency&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.5&lt;br /&gt;
|description = The probability that an incoming missile will target the flare instead of the aircraft.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = flareDropVector&lt;br /&gt;
|type = float[3]&lt;br /&gt;
|default = {0.0, 0.0, 0.0}&lt;br /&gt;
|description = The direction vector which flares are emitted in.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = flareTime&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 3&lt;br /&gt;
|description = The lifetime of a dropped flare in [[frames]].}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = flareSalvoSize&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 4&lt;br /&gt;
|description = How many flares are dropped at once?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = flareSalvoDelay&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 0&lt;br /&gt;
|description = The delay in [[frames]] between the release of each individual flare in a burst.}}&lt;br /&gt;
&lt;br /&gt;
===Transports===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = transportSize&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 0&lt;br /&gt;
|description = The size of units that the transport can pick up, in terms of the passengers &amp;lt;code&amp;gt;footprintX&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = minTransportSize&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 0&lt;br /&gt;
|description = The smallest size of unit that the transport can pick up, in terms of the passengers &amp;lt;code&amp;gt;footprintX&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = transportCapacity&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 0&lt;br /&gt;
|description = The total number of units that the transport can pick up, with each unit multiplied by it&#039;s &amp;lt;code&amp;gt;footprintX&amp;lt;/code&amp;gt; size. If this tag is not present, then any AttachUnit and DropUnit call in the animation script will be ignored (See [[Animation-LuaCallouts#Other]])}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = transportMass&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 100000.0&lt;br /&gt;
|description = The total cumulative &amp;lt;code&amp;gt;mass&amp;lt;/code&amp;gt; of passengers the transport can carry.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = minTransportMass&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = The total minimum &amp;lt;code&amp;gt;mass&amp;lt;/code&amp;gt; passenger the transport can carry.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = loadingRadius&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 220.0&lt;br /&gt;
|description = How far away in [[elmos]] can the transporter pick up and drop units?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = unloadSpread&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 1.0&lt;br /&gt;
|description = How spread out the passengers are when unloaded. Is multiplied by the passengers radius.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = isFirePlatform&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Can transported units still aim and shoot while loaded by this transport?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = holdSteady&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; - passengers are slaved to orientation of transporter attachment piece, if &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; - passengers are slaved to orientation of transporter body.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = releaseHeld&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Does the transporter unload it&#039;s passengers when it dies?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = cantBeTransported&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&amp;lt;/code&amp;gt; for mobile units &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for structures&lt;br /&gt;
|description = Controls if a unit is transportable at all or not. If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; it is overridden by [[Modrules.lua]] &amp;lt;code&amp;gt;transportability&amp;lt;/code&amp;gt; subtable tags.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = transportByEnemy&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Controls if a unit can be transported by an enemy transport. i.e. can it be kidnapped.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = transportUnloadMethod&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 0&lt;br /&gt;
|description = For air transports. Can be &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - Land to unload individually, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Flyover drop (i.e. Parachute), or &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - Land and flood unload all passengers. Can be used on ground transports with mixed results.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = fallSpeed&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.2&lt;br /&gt;
|description = For air transports with &amp;lt;code&amp;gt;transportUnloadMethod = 1&amp;lt;/code&amp;gt;. The speed in [[elmos]] per second which units will fall at when released from the transport.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = unitFallSpeed&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = Allows you to override &amp;lt;code&amp;gt;fallSpeed&amp;lt;/code&amp;gt; for an individual passenger.}}&lt;br /&gt;
&lt;br /&gt;
===Categories===&lt;br /&gt;
For a deeper explanation of these tags, see [[Unit_Categories]].&lt;br /&gt;
{{tag&lt;br /&gt;
|name = category&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;&amp;quot;&lt;br /&gt;
|description = The category tag is a string of separate words, each representing a category of units. There are a maximum of 32 categories. The primary purpose of categories is weapon targeting (See [[#weapons]]).}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = noChaseCategory&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;&amp;quot;&lt;br /&gt;
|description = The unit will still target enemies with a matching &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt;, but will not chase after it if it moves out of weapon range.}}&lt;br /&gt;
&lt;br /&gt;
===Decals===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = leaveTracks&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Does the unit leave a track mark decal behind it when it moves? For mobile units.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = trackType&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;stdTank&amp;quot;&lt;br /&gt;
|description = The filename of the image, without extension, assumed to be in &amp;lt;code&amp;gt;Bitmaps/Tracks/&amp;lt;/code&amp;gt;, to be used as the track decal. The red channel of the image controls the brightness and the green channel the alpha (how visible it is) of the track. Blue channel is unused.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = trackWidth&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 32.0&lt;br /&gt;
|description = The width of the track decal left on the ground, in [[elmos]].}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = trackOffset&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = How far back in [[elmos]] the track should be drawn from the centre of the unit.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = trackStrength&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 32.0&lt;br /&gt;
|description = How visible or &#039;deep&#039; the track mark should be. Also used to determine how long the decal should last.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = trackStretch&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 1.0&lt;br /&gt;
|description = How much the track is stretched in the forward direction compared to the sides (i.e. used to change aspect ratio).}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = useBuildingGroundDecal&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = For structures, do they display a ground decal on the terrain under their model?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = buildingGroundDecalType&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;&amp;quot;&lt;br /&gt;
|description = The filename of the image to be used as ground decal. Assumed to be in &amp;lt;code&amp;gt;Unittextures/&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = buildingGroundDecalSizeX&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 4&lt;br /&gt;
|description = How wide the decal is left to right, in footprint units.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = buildingGroundDecalSizeY&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 4&lt;br /&gt;
|description = How wide the decal is top to bottom, in footprint units.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = buildingGroundDecalDecaySpeed&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.1&lt;br /&gt;
|description = A measure of how quickly the decal should fade out if the structure dies. Essentially this value is multiplied by the time since death and subtracted from the original alpha until the decal is fully transparent.}}&lt;br /&gt;
&lt;br /&gt;
===Collision Volumes===&lt;br /&gt;
For a deeper explanation of these tags, see [[Unit_collision_volumes | Unit Collision Volumes]].&lt;br /&gt;
{{tag&lt;br /&gt;
|name = modelCenterOffset&lt;br /&gt;
|type = float[3]&lt;br /&gt;
|default = {0.0, 0.0, 0.0}&lt;br /&gt;
|description = How far from the model&#039;s defined centre should the centre of the unit be?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = usePieceCollisionVolumes&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = When turned on the model and unitDef collision volumes are ignored and Spring generates a bounding box volume for each piece of the unit model. These volumes can be manipulated or replaced by [[Lua_SyncedCtrl#Unit_Control | Spring.SetUnitPieceCollisionVolumeData]]. Increases the performance cost of collision calculations.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = collisionVolumeType&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;&amp;quot;&lt;br /&gt;
|description = What shape should the unit&#039;s collision volume be? Can be &amp;lt;code&amp;gt;box&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ellipsoid&amp;lt;/code&amp;gt; or a cylinder aligned to an axis; &amp;lt;code&amp;gt;cylX&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cylY&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cylZ&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = collisionVolumeScales&lt;br /&gt;
|type = float[3]&lt;br /&gt;
|default = {0.0, 0.0, 0.0}&lt;br /&gt;
|description = The length of the collision volume in each of the three axes.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = collisionVolumeOffsets&lt;br /&gt;
|type = float[3]&lt;br /&gt;
|default = {0.0, 0.0, 0.0}&lt;br /&gt;
|description = The offset from the unit centre to the hit volume centre in each axis.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = collisionVolumeTest&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 0&lt;br /&gt;
|description = The type of test used to detect collisions. Can be &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; (discrete) or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (continuous). Use the latter for catching high speed projectiles which may otherwise &#039;skip through&#039; small collision volumes, but beware of the increased performance cost.}}&lt;br /&gt;
&lt;br /&gt;
===Attack Behaviours===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = highTrajectory&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 0&lt;br /&gt;
|description = Can the unit fire it&#039;s (ballistic) weapons in a high trajectory arc? Can be &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - Low trajectory only, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - High trajectory only, or &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - Toggle button.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = kamikaze&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Does the unit attack its target by blowing itself up?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = kamikazeDistance&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = How close to the target, in [[elmos]], the unit must get before detonating. Measured in 3D, not 2D.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = kamikazeUseLOS&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Does the target unit have to be in LOS when detonating or only within &amp;lt;code&amp;gt;kamikazeDistance&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = strafeToAttack&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Should the unit move sideways when it can&#039;t shoot?}}&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
{{tag&lt;br /&gt;
|name = decoyFor&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;&amp;quot;&lt;br /&gt;
|description = The unitdef name (not human &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;) which this unit is a decoy for.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = selfDestructCountdown&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 5&lt;br /&gt;
|description = The length in seconds taken between issuing self destruct order and the unit exploding.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = damageModifier&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 1.0&lt;br /&gt;
|description = The multiplier applied to weapon damage when the units ARMORED status (See [[Lua_ConstCOB]]) is turned on.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = isTargetingUpgrade&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Does the unit upgrade the targeting so that units shoot accurately at enemy units which are in radar but not in LOS.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = isFeature&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Does the unit immediately die into it&#039;s &amp;lt;code&amp;gt;corpse&amp;lt;/code&amp;gt; feature when built? Used mainly for making walls.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = hideDamage&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Should the units current health be invisible to enemy players?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = showPlayerName&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = false&lt;br /&gt;
|description = Should the unit display it&#039;s controlling player as its name instead of &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;. Generally used for commander or hero units.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = showNanoFrame&lt;br /&gt;
|type = bool&lt;br /&gt;
|default = true&lt;br /&gt;
|description = Does the unit show an OTA-style nanoframe whilst being constructed?}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = unitRestricted&lt;br /&gt;
|type = int&lt;br /&gt;
|default = MAX_UNITS&lt;br /&gt;
|description = How many of this unit type may a player control at once? Defaults to being the maximum amount of units controllable. Is overridden by lobby unit restrictions.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = power&lt;br /&gt;
|type = float&lt;br /&gt;
|default = buildCostMetal + (buildCostEnergy / 60.0)&lt;br /&gt;
|description = The relative power of the unit. Used in weapon targeting priority and experience gain calculations.}}&lt;br /&gt;
&lt;br /&gt;
==Sub Tables==&lt;br /&gt;
&lt;br /&gt;
===weapons===&lt;br /&gt;
The &amp;lt;code&amp;gt;weapons&amp;lt;/code&amp;gt; subtable of a UnitDef tells Spring which weapons the unit has. It is a simple array (number indexed table) of &amp;lt;code&amp;gt;weaponName&amp;lt;/code&amp;gt;s (not the human readable &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;!).&lt;br /&gt;
&lt;br /&gt;
The following additional tags are associated with this subtable:&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = name&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;&amp;quot;&lt;br /&gt;
|description = The &amp;lt;code&amp;gt;weaponName&amp;lt;/code&amp;gt; of the weapon (See [[Units-WeaponDefs]]). If using the [[weapondefs_post.lua]] provided by [[springcontent.sdz]], you may include the WeaponDef tables within the UnitDef as the &amp;lt;code&amp;gt;weaponDefs&amp;lt;/code&amp;gt; subtable, and refer to them with &amp;lt;code&amp;gt;def&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;. This can be a useful way to organise definitions if units do not generally share weapons.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = badTargetCategory&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;&amp;quot;&lt;br /&gt;
|description = A string of unit &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt; entries which this weapon prefers to avoid targeting. i.e. given two units which &#039;&#039;can&#039;&#039; be targeted, any unit whose &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt; matches any entry in this tag, will be targeted last. (See [[#Categories]])}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = onlyTargetCategory&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;&amp;quot;&lt;br /&gt;
|description = A string of unit &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt; entries which this weapon can target. i.e. any unit whose &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt; does not match any entry in this tag, cannot be targeted by this weapon. (See [[#Categories]])}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = slaveTo&lt;br /&gt;
|type = int&lt;br /&gt;
|default = 0&lt;br /&gt;
|description = The number of the weapon which this weapon is slaved to. A slaved weapon can only target what it&#039;s master is targeting. Weapon numbers start at &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; and correspond to the index of the weapon within the subtable.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = mainDir&lt;br /&gt;
|type = float[3]&lt;br /&gt;
|default = {1.0, 0.0, 0.0} i.e. forwards&lt;br /&gt;
|description = A vector representing the firing direction of this weapon if it has a limited firing arc. Used in conjunction with &amp;lt;code&amp;gt;maxAngleDif&amp;lt;/code&amp;gt; (See [[Units:WeaponMainDir]]).}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = maxAngleDif&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 180.0&lt;br /&gt;
|description = How wide this weapons limited firing arc is in degrees. Symmetrical about &amp;lt;code&amp;gt;mainDir&amp;lt;/code&amp;gt; i.e. &amp;lt;code&amp;gt;180.0&amp;lt;/code&amp;gt; is 90 degree freedom either way (See [[Units:WeaponMainDir]]).}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = fuelUsage&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 0.0&lt;br /&gt;
|description = How much fuel in seconds is deducted from the units initial &amp;lt;code&amp;gt;maxFuel&amp;lt;/code&amp;gt; when this weapon fires.}}&lt;br /&gt;
&lt;br /&gt;
===buildOptions===&lt;br /&gt;
The &amp;lt;code&amp;gt;buildOptions&amp;lt;/code&amp;gt; subtable of a UnitDef tells Spring which other units the unit can build (in the case of a builder) or produce (in the case of a factory).&lt;br /&gt;
It is a simple array (number indexed table) of &amp;lt;code&amp;gt;unitName&amp;lt;/code&amp;gt;s (not the human readable &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;!).&lt;br /&gt;
&lt;br /&gt;
There are no additional tags specific to this subtable.&lt;br /&gt;
&lt;br /&gt;
===SFXTypes===&lt;br /&gt;
The &amp;lt;code&amp;gt;SFXTypes&amp;lt;/code&amp;gt; subtable of a UnitDef tells Spring which [[CEG]] effects are associated with the unit. It consists of two further subtables, with no additional tags specific to them.&lt;br /&gt;
&lt;br /&gt;
====explosionGenerators====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;explosionGenerators&amp;lt;/code&amp;gt; subtable of &amp;lt;code&amp;gt;SFXTypes&amp;lt;/code&amp;gt; tells Spring which [[CEG]]s the unit&#039;s script can call, via the &amp;lt;code&amp;gt;EmitSFX()&amp;lt;/code&amp;gt; callout (See [[Animation-LuaCallouts#Effects]]). It is a simple array (number indexed table) of CEG names, prefaced by the string &amp;lt;code&amp;gt;&amp;quot;custom:&amp;quot;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
====pieceExplosionGenerators====&lt;br /&gt;
{{new|83.0}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;pieceExplosionGenerators&amp;lt;/code&amp;gt; subtable of &amp;lt;code&amp;gt;SFXTypes&amp;lt;/code&amp;gt; tells Spring which [[CEG]]s the unit&#039;s script can pick at random to attach to a flying unit piece, created from the &amp;lt;code&amp;gt;Explode()&amp;lt;/code&amp;gt; callout (See [[Animation-LuaCallouts#Effects]]). It is a simple array (number indexed table) of CEG names, with no prefix.&lt;br /&gt;
&lt;br /&gt;
Forum thread (with examples): {{forumlink|topic=27554|title=pieceExplosionGenerators}}&lt;br /&gt;
&lt;br /&gt;
===sounds===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;sounds&amp;lt;/code&amp;gt; subtable of a UnitDef tells Spring which sound files to play when the unit triggers various events.&lt;br /&gt;
&lt;br /&gt;
Files are assumed to be in the &amp;lt;code&amp;gt;Sounds/&amp;lt;/code&amp;gt; directory; accepted formats are .wav and .ogg, the former being assumed if no extension is given.&lt;br /&gt;
&lt;br /&gt;
Sounds can be defined in one of three ways:&lt;br /&gt;
&lt;br /&gt;
# Each event can be used as though it were a &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; tag referring to the filename.&lt;br /&gt;
# Each event can be the name of a subtable, which is a simple array containing the filenames. One sound is picked at random from the list each time the event occurs.&lt;br /&gt;
# Each event can be the name of a subtable, which is a simple array containing further tables, which contain the following tags:&lt;br /&gt;
{{tag&lt;br /&gt;
|name = file&lt;br /&gt;
|type = string&lt;br /&gt;
|default = &amp;quot;&amp;quot;&lt;br /&gt;
|description = The filename of the sound to play.}}&lt;br /&gt;
&lt;br /&gt;
{{tag&lt;br /&gt;
|name = volume&lt;br /&gt;
|type = float&lt;br /&gt;
|default = 1.0&lt;br /&gt;
|description = The default volume of the sound.}}&lt;br /&gt;
&lt;br /&gt;
Spring checks any referenced sound filename to see if a SoundItem has been created, which allows greater control over how it is played (See [[Sounds.lua]]).&lt;br /&gt;
&lt;br /&gt;
====sounds Example====&lt;br /&gt;
&lt;br /&gt;
For clarification, here is an example of all three methods:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;sounds = {&lt;br /&gt;
  -- Method 1&lt;br /&gt;
  ok = &#039;oksound&#039;, -- .wav appended&lt;br /&gt;
  -- Method 2&lt;br /&gt;
  arrived = {&lt;br /&gt;
    &#039;arrived1.wav&#039;,&lt;br /&gt;
    &#039;arrived2.wav&#039;,&lt;br /&gt;
  },&lt;br /&gt;
  -- Method 3&lt;br /&gt;
  select = {&lt;br /&gt;
    { file = &#039;selsound1.ogg&#039;, volume = 2.0 },&lt;br /&gt;
    { file = &#039;selsound2.ogg&#039;, volume = 2.5 },&lt;br /&gt;
  },&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====sounds Events====&lt;br /&gt;
&lt;br /&gt;
The events called by the engine are as follows:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;ok&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
: Unit is issued a command.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;select&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
: Unit is selected by the player.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;arrived&amp;lt;/code&amp;gt;&lt;br /&gt;
: Unit has arrived at its destination. Mobile ground units only.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;build&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
: Unit begins building. Called for both factories and mobile construction units.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;activate&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
: Unit is activated, i.e. Is turned on. Also called when a mobile ground unit starts moving.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;deactivate&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
: Unit deactivates, i.e. Is turned off.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;cant&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
: Unit cannot carry out this order. Loaded but not currently called by the engine.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;underattack&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
: Unit gets attacked. Loaded but not currently called by the engine.&lt;br /&gt;
&lt;br /&gt;
===customParams===&lt;br /&gt;
The &amp;lt;code&amp;gt;customParams&amp;lt;/code&amp;gt; subtable of a UnitDef allows the game designer to give their units custom attributes, which can then be accessed via lua gadgets and widgets. It is a map (key-value pair indexed table) of strings. When accessing these attributes in lua the strings can be turned back into numbers, bools or even tables. This gives great control to game designers to essentially implement their own behaviour tags.&lt;br /&gt;
&lt;br /&gt;
There are no additional tags specific to this subtable&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
[http://imolarpg.dyndns.org/trac/balatest/browser/trunk/units &#039;Balanced Annihilation&#039; UnitDefs]&lt;br /&gt;
&lt;br /&gt;
[http://trac.caspring.org/browser/trunk/mods/ca/units &#039;Complete Annihilation&#039; UnitDefs]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/conflictterra/source/browse/#svn%2Fgames%2FCT%2Funits &#039;Conflict Terra&#039; UnitDefs]&lt;br /&gt;
&lt;br /&gt;
[https://code.google.com/p/evolutionrts/source/browse/#svn%2Ftrunk%2Fevolutiondev.sdd%2FUnits &#039;Evolution RTS&#039; UnitDefs]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/springtutorialgame/source/browse/#svn%2Ftrunk%2FSpringTutorialGame.sdd%2FUnits &#039;Spring Tutorial Game&#039; UnitDefs]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/zero-k/source/browse/trunk#trunk%2Fmods%2Fzk%2Funits &#039;ZeroK&#039; UnitDefs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Unit_development]]&lt;br /&gt;
[[Category: Game development]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Air_Domination&amp;diff=1849</id>
		<title>Air Domination</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Air_Domination&amp;diff=1849"/>
		<updated>2012-05-14T02:31:04Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Air Domination is an tactic best employed on maps with little land or large areas on which land units cannot act. It&#039;s simple - build an attack group of aircraft suitable for taking out your targets, and support with units that minimize the weakness of air.&lt;br /&gt;
&lt;br /&gt;
Alternatively, build up a tremendous force of the cheapest effective air units for a task and mass your targets, using shock and awe to augment your activities.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Connections&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This tactic is viable in most games with advanced air units and independent air technology, such as AA or XTA. The relative weakness of air units in E&amp;amp;E and may make this a poor tactical choice despite the access to a variety of aircraft.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Do not put hundreds of flying units in patrol mode, you&#039;ll cause the game to run very slow for everyone&lt;br /&gt;
&lt;br /&gt;
Some mods have aircraft units that can overlap.  Try to spread out your aircraft so they do not &amp;quot;chain explode&amp;quot;, as they are very delicate machines.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; [[Strategy_and_Tactics|&amp;lt;- Back to Strategy and Tactics page]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[category:Strategy]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Games&amp;diff=9031</id>
		<title>Games</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Games&amp;diff=9031"/>
		<updated>2012-05-14T02:26:25Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* Proprietary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__There are a number of games made for the Spring Engine. Some of the more popular ones are listed below, sorted by their terms of use. &amp;lt;!--(/license schemes?)--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Freeware/Open Source=&lt;br /&gt;
&#039;&#039;These games are all free to download and play and may be open to modifications, however, be sure to read the licenses before doing so.&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[http://zero-k.info/ Zero-K]&amp;lt;/h2&amp;gt;&lt;br /&gt;
([http://code.google.com/p/zero-k/source/browse/trunk/mods/zk/legal.txt GPL, PD])&lt;br /&gt;
| width=40 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;&#039;&#039;&#039;[http://www.spring1944.org/ Spring: 1944]&#039;&#039;&#039;&amp;lt;/h2&amp;gt;([http://spring1944.svn.sourceforge.net/viewvc/spring1944/trunk/S44Main.sdd/docs/License.txt CC-BY-NC])&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimgx|xsize=300|ysize=225|image=Zero-k_image.jpg|link=http://zero-k.info/}}&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |{{navimgx|xsize=300|ysize=225|image=S44_tigers.jpg|link=http://www.spring1944.org}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | Zero-K is a fast, competitive game with a focus on a streamlined economy and advanced interface that takes the focus off tedious tasks and back on the action. A huge roster of interesting, unique units and a variety of unit abilities provides tremendous tactical and strategic depth to the game. [http://zero-k.info Download link]&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | Spring:1944 is a WWII themed game with four fully functional sides (US, Germany, USSR, Britain), period-accurate units and strengths. Realism comes second only to creating a game that is fun and accessible to play.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[http://www.evolutionrts.info Evolution RTS]&amp;lt;/h2&amp;gt;([http://creativecommons.org/licenses/by-nc-nd/3.0/us/ CC-BY-NC-ND])&lt;br /&gt;
| width=40 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[[Kernel Panic]]&amp;lt;/h2&amp;gt;([[Kernel_Panic#License:|FOSS, with only 2 FOSS maps]])&amp;lt;!-- Since you should be able to remove those, I wonâ€™t mark it as non-free. Other maps have non-free license or no license at all.) --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimgx|xsize=300|ysize=188|image=Evoimg.jpg|link=http://www.evolutionrts.info}}&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimg|xsize=300|ysize=225|image=Kernel_Panic_3.4.jpg|link=Kernel Panic}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | A new war is brewing. A violent conflict, between the Six Colonies, each one convinced that it was in the right, each one sure of its own ability to defeat its enemies. But they need Generals. They need soldiers. They need you.&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | A game based around combat &#039;&#039;&#039;inside&#039;&#039;&#039; a computer, with 3 unique sides: the System, the Hacker and the Network waging war in a matrix of DOOM! No resource economy exists in KP, with the only constraints being time and space.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;&#039;&#039;&#039;[http://www.moddb.com/games/conflict-terra Conflict Terra]&#039;&#039;&#039;&amp;lt;/h2&amp;gt;([http://code.google.com/p/conflictterra/source/browse/games/CT/License.txt FOSS])&amp;lt;!-- The sounds from EvoRTS were removed, so we&#039;re clean now. --&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[[Spring Tanks]]&amp;lt;/h2&amp;gt;([http://pastebin.com/Wpub9wWw undecided, some obscure free license])&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |{{navimgx|xsize=300|ysize=225|image=CT_Hojos.png|link=http://www.moddb.com/games/conflict-terra}}&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimg|xsize=300|ysize=221|image=Springtanks_wikipreview.jpg|link=Spring Tanks}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | A unique game with heavy emphasis on mobility and featuring Spring&#039;s first major &amp;quot;collect and drop-off&amp;quot; economy, Conflict Terra boasts a distinctive art style.  Play as one of two factions in an ever-changing battlefield as you struggle to come out on top.&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | Some guys decided to attack each other with tanks and you can be one of them. &lt;br /&gt;
Build-in Single Player!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Proprietary=&lt;br /&gt;
&#039;&#039;These games may or may not be free to play. Modifying their content (i.e. the art assets) is not allowed without the game authors explicit permission, although the code is GPL and some games (P.U.R.E.) include large GPL-friendly content collections.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[http://www.imperialwinter.com Star Wars: Imperial Winter]&amp;lt;/h2&amp;gt;&lt;br /&gt;
| width=40 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[http://www.indiedb.com/games/the-cursed The Cursed]&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimgx|xsize=300|ysize=225|image=Imperial Winter assault.jpg|link=http://www.imperialwinter.com}}&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |{{navimgx|xsize=300|ysize=225|image=cursed_logo.jpg|link=http://www.indiedb.com/games/the-cursed}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | A Star Wars themed game set in the troubled post-Return of the Jedi era. SW:IW is currently [http://springrts.com/phpbb/viewtopic.php?f=46&amp;amp;t=25108|in closed development and not playable for the public.]&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; |  The game is about bones, undead, demons, space marines and magic settled in a futuristic environment. It is a fresh   mixture of gameplay elements from many popular RTS games like Starcraft and C&amp;amp;C.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=TA-derived=&lt;br /&gt;
&#039;&#039;At least parts of these games are derived from data of the  Total Annihilation game (copyright Atari). As such, their distribution is potentially in breach of copyright laws and therefore not officially endorsed by the Spring RTS team.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[http://balancedannihilation.org Balanced Annihilation]&amp;lt;/h2&amp;gt;&lt;br /&gt;
| width=40 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |  &amp;lt;h2&amp;gt; [http://springfiles.com/spring/games/tech-annihilation-8 Tech Annihilation] &amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimgx|xsize=300|ysize=225|image=BAScreenShot.jpg|link=http://balancedannihilation.org}} &lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |{{navimgx|xsize=300|ysize=200|image=Tech_Annihilation.png|link=http://springfiles.com/spring/games/tech-annihilation-8}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
Balanced Annihilation (BA) is a mature game and new versions feature only minor balance tweaks.&lt;br /&gt;
&lt;br /&gt;
BA gameplay develops in stages of progressively heavier units with a growing economy. Many strategies are viable in BA, including focusing on map control, aggression, defense, air power, sea power, or mobility.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | This Game is bigger, greater and more epic! Tech your Commander from a tiny Commander to a Galactic Commander! (by &#039;&#039;[BoS]Senna&#039;&#039;, currently no homepage)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[http://nota.machys.net/ NOTA]&amp;lt;/h2&amp;gt;&lt;br /&gt;
| width=40 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[[XTA]]&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |{{navimgx|xsize=300|ysize=225|image=Nota2nukes.jpg|link=http://nota.machys.net/}}&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimg|xsize=300|ysize=225|image=Screen508_s.jpg|link=XTA}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | Not Original Total Annihilation is a rethink of the Total Annihilation universe with a focus on strategic, base oriented gameplay. With its revised unit scale, huge battles erupt engaging hundreds of units and scores of unit types. NOTA&#039;s completely rethought air and sea gameplay forces participation in all elements and places the tide of conflict in your hands.&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | Originally developed as a Total Annihilation game by the Swedish Yankspankers, XTA is the Original Public Game released with first versions of Spring. Development of this game by the SYs has stopped a while ago, but it is still played and actively developed by the community.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Installing Games in Spring=&lt;br /&gt;
Quite a few of the games listed above come with standalone installers, which makes things easy. Check their website to find out! &lt;br /&gt;
&lt;br /&gt;
In some cases however, the game will only distribute a game-file, for example &#039;&#039;BA750&#039;&#039;&#039;&#039;&#039;.sd7&#039;&#039;&#039; or &#039;&#039;XTA&#039;&#039;&#039;&#039;&#039;.sdz&#039;&#039;&#039;. For these games, you have to [[Download|install the stand-alone Spring-Engine]] first, and then place the game-file in the &#039;&#039;...\My Documents\My Games\Spring\Games\&#039;&#039; or &#039;&#039;...\Spring\games\&#039;&#039; folder (&#039;&#039;~/.spring/games/&#039;&#039; on Linux/Unix/Mac).&lt;br /&gt;
You may install multiple games in the same engine installation.&lt;br /&gt;
&lt;br /&gt;
To play a game, you also need a [[Maps|map]].&lt;br /&gt;
&lt;br /&gt;
Still not enough Games? There are [[Getting_Spring_Content_and_Links|some more]], not listed here or make your [[Game_and_Unit_development|own Game]]!&lt;br /&gt;
&lt;br /&gt;
[[Category: Games]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GamesDownloads&amp;diff=9193</id>
		<title>GamesDownloads</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GamesDownloads&amp;diff=9193"/>
		<updated>2012-05-14T02:25:38Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* Game installers (for players) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#css:&lt;br /&gt;
  table.glossy {&lt;br /&gt;
    width: 200px;&lt;br /&gt;
    margin: 9px; padding:3px;&lt;br /&gt;
    border: 1px solid rgba(0,0,0,0.5);&lt;br /&gt;
    border-radius: 10px 10px 10px 10px;&lt;br /&gt;
    box-shadow: 0 2px 6px rgba(0,0,0,0.5), inset 0 1px rgba(255,255,255,0.3), inset 0 10px rgba(255,255,255,0.2), inset 0 10px 20px rgba(255,255,255,0.25), inset 0 -15px 30px rgba(0,0,0,0.3);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /*#installers img {&lt;br /&gt;
    border: 1px solid rgba(0,0,0,0.5);&lt;br /&gt;
    box-shadow: 0px -1px 3px rgba(0,0,0,0.8), 0px 1px 3px rgba(255,255,255,0.5);&lt;br /&gt;
  }*/&lt;br /&gt;
&lt;br /&gt;
  /*table.glossy:hover {&lt;br /&gt;
    background: rgba(160,160,220,0.4);&lt;br /&gt;
  }*/&lt;br /&gt;
}}&lt;br /&gt;
[[Download]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
= Game installers (for players) =&lt;br /&gt;
Below are three Spring games that comes with complete installer (containing all the files you need to play those games):&lt;br /&gt;
&amp;lt;div id=&amp;quot;installers&amp;quot; style=&amp;quot;padding-left:7px&amp;quot;&amp;gt;&lt;br /&gt;
{{Template:GamesDownload|name=Zero K + Lobby (windows only)|image=eclipse.jpg|url=http://zero-k.info/Wiki/Download}}&lt;br /&gt;
{{Template:GamesDownload|name=Kernel Panic|image=Kernel_Panic_3.4.jpg|url=http://springfiles.com/spring/game-installers/kernel-panic-installer}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;warning&amp;quot;&amp;gt;(!)&amp;lt;/span&amp;gt;  Old engine version included. Experience of online play might be hampered.&lt;br /&gt;
&lt;br /&gt;
For more Spring games, check out the [[Games]] page. Please note that some of them will require you to have the engine installed in order to work, as well as some maps, as they don&#039;t come with their own installer.&lt;br /&gt;
&lt;br /&gt;
= Universal Downloaders =&lt;br /&gt;
As Spring itself is just an engine and does not contain game content.&amp;lt;br/&amp;gt;&lt;br /&gt;
There are several options for getting games/maps though, one is using the internal downloaders of the lobbies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding-left:7px&amp;quot;&amp;gt;&lt;br /&gt;
{{Template:GamesDownload|name=SpringLobby|image=Springlobby_64.png|url=http://www.springlobby.info/windows/latest.zip}}&lt;br /&gt;
 (Multiplatform, no rapid support yet)&lt;br /&gt;
&lt;br /&gt;
{{Template:GamesDownload|name=Zero-K lobby|image=eclipse.jpg|url=http://zero-k.info/Wiki/Download}}&lt;br /&gt;
 (Windows only, rapid included, multi-engine support - uncheck &#039;official games&#039; to see all)&lt;br /&gt;
&lt;br /&gt;
{{Template:GamesDownload|name=rapid (command-line)|url=http://github.com/tvo/rapid}}&lt;br /&gt;
 (currently only downloads games)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=note&amp;gt;Notes: All above mentioned tools are included in the [[Download#Spring_Engine_Updates|Spring installer]].&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21105</id>
		<title>User:Smoth</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21105"/>
		<updated>2012-05-05T14:11:12Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[09:09:47] &amp;lt;[LCC]jK&amp;gt; truth is there are only 2 facts: synced can never READ unsynced data, and unsynced can never WRITE synced data&lt;br /&gt;
[09:10:02] &amp;lt;[LCC]jK&amp;gt; everything else is allowed&lt;br /&gt;
&lt;br /&gt;
Plans for game developer restructure:&amp;lt;br/&amp;gt;3 sections, beginer, intermediate and advanced.&lt;br /&gt;
&lt;br /&gt;
Game creation:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Beginner:(1 star)&lt;br /&gt;
&lt;br /&gt;
#focus on how does I get my game in spring&lt;br /&gt;
#how can I alter what is already there&lt;br /&gt;
#stay within knorkes beginner game, we want to have the user in a sort of sandbox.&lt;br /&gt;
#think mutator&lt;br /&gt;
&lt;br /&gt;
Intermediate:(2 stars)&lt;br /&gt;
&lt;br /&gt;
#focus on creating your own content and using it in game&lt;br /&gt;
#introduce them into existing resources lua/models/art&lt;br /&gt;
#most tutorials will be located here.&lt;br /&gt;
#think mod&lt;br /&gt;
&lt;br /&gt;
Advanced:(3 stars)&lt;br /&gt;
&lt;br /&gt;
#person is experience programmer or familiar with spring already.&lt;br /&gt;
#no tutorials, just informational links, this person wants information not how tos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Map creation:&lt;br /&gt;
&lt;br /&gt;
#pretty much just a big dump of all the map related resources for now.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes for SimpleParticleSystem:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Testpageforforb|a label]]&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;float3 pos&#039;&#039;&#039;&amp;lt;br/&amp;gt;Origon point for your particle system.&lt;br /&gt;
*&#039;&#039;&#039;[[AtlasedTexture]] texture&#039;&#039;&#039;&amp;lt;br/&amp;gt;Texture for the particles, defined in resources.tdf.&lt;br /&gt;
*&#039;&#039;&#039;float3 emitVector&#039;&#039;&#039;&amp;lt;br/&amp;gt;Use DIR to have it acquire a direction, this will utilize a poly on your object that you choose as an emitter.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;See my notes on vectors to understand how to use the vectors of this:&amp;lt;br/&amp;gt;&#039;&#039;i.e. 0,1,0 is straight up&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[CColorMap]] colorMap&#039;&#039;&#039;&amp;lt;br/&amp;gt;This will give your system a range of colors spread over time.&amp;lt;br/&amp;gt;it has 4 parts:&amp;lt;br/&amp;gt;RED, GREEN, BLUE, ALPHA&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;note:&amp;lt;br/&amp;gt;For additive blend use values that are low like: 0.1 or 0.05&amp;lt;br/&amp;gt;For overlay use 1.0&amp;lt;br/&amp;gt;see notes on overlay versus additive blend.&lt;br /&gt;
*&#039;&#039;&#039;float3 gravity&#039;&#039;&#039;&amp;lt;br/&amp;gt;Gravity applied along a vector.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;For example, if you want your particles to fall after being emmited.&amp;lt;br/&amp;gt;Emitvector would be: 0,1,0&amp;lt;br/&amp;gt;and gravity would need to be 0,-1,0&amp;lt;br/&amp;gt;This would result in particles falling straight down.&lt;br /&gt;
*&#039;&#039;&#039;float airdrag&#039;&#039;&#039;&amp;lt;br/&amp;gt;Constant multiplier on the particle each frame, a value of 1.0 means the particles will keep their current momentum, a value bellow 1 and they will slow down each frame.&lt;br /&gt;
*&#039;&#039;&#039;float particleLife&#039;&#039;&#039;&amp;lt;br/&amp;gt;Life of the particles in frames.&lt;br /&gt;
*&#039;&#039;&#039;float particleLifeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleLifeSpread added to particleLife.&lt;br /&gt;
*&#039;&#039;&#039;int numParticles&#039;&#039;&#039;&amp;lt;br/&amp;gt;Number of particles that will be spawned.&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeed&#039;&#039;&#039;&amp;lt;br/&amp;gt;Initial speed of the particles.&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeedSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSpeedSpread added to particleSpeed.&lt;br /&gt;
*&#039;&#039;&#039;float particleSize&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size of the particles.&lt;br /&gt;
*&#039;&#039;&#039;float particleSizeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSizeSpread added to particleSize.&lt;br /&gt;
*&#039;&#039;&#039;float sizeGrowth&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size added to particles each frame.&lt;br /&gt;
*&#039;&#039;&#039;float sizeMod&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size frame multiplier.&lt;br /&gt;
*&#039;&#039;&#039;float emitRot&#039;&#039;&#039;&amp;lt;br/&amp;gt;Rotation in degree from emitVector that particles will be spawned from, a value of 90 will emmit particles in a plane perpendicular to the emitVector.&lt;br /&gt;
*&#039;&#039;&#039;float emitRotSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and emitRotSpread added to emitRot, a value of 180 will make the particles spawn in a full sphere.&lt;br /&gt;
*&#039;&#039;&#039;bool directional&#039;&#039;&#039;&amp;lt;br/&amp;gt;If the particles should be oriented to point at the direction of their velocity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes vectors:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Vectors are directional systems represented by a 3d graph here: [[File:Untitled-1.png]]&amp;lt;br/&amp;gt;See how each vector points along it&#039;s own line?&amp;lt;br/&amp;gt;We have 6 possible directions:&amp;lt;br/&amp;gt;&amp;lt;center&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
X = right&amp;lt;br/&amp;gt;-X = left&amp;lt;br/&amp;gt;Z = Front&amp;lt;br/&amp;gt;-Z = Rear&amp;lt;br/&amp;gt;Y = Up&amp;lt;br/&amp;gt;-Y = Down&lt;br /&gt;
&lt;br /&gt;
WORK IN PROGRESS!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&#039;&#039;&#039;Notes Additive blend versus overlay blend:&#039;&#039;&#039; WORK IN PROGRESS!&lt;br /&gt;
&lt;br /&gt;
*ADDTITIVE&lt;br /&gt;
*OVERLAY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;IsShield=1; // if 1 mean the weapon is a shield and not a weapon shieldrepulser=1; // 0=destroy projectile,1=repulse (bounce) projectile smartshield=1; // 1=shield doesnt affect allies weapons exteriorshield=1; // 1=shield doesnt affect weapons fired from within shield visibleshield=1; // 1=see a visible shell representing the shield visibleshieldrepulse=1; // 1=see a beam showing when shield repulses something shieldenergyuse=10; // how much energy the shield use when repulsing/destroying something shieldforce=1000; // how hard shield can accelerate some sort of projectiles away shieldradius=30; // size of shield effect shieldmaxspeed=1100; // maximum speed the shield can push some sort of projectiles away shieldpower=300; // how much power the shield can store, power is drained by the affected weapons damage, 0=infinite shieldpowerregen=5; // how fast the shield regenerates power shieldpowerregenenergy=10; // how much energy the shield uses when regenerating power shieldintercepttype=2; // which types of weapon the shield can affect (bitfield) //interceptedbyshieldtype=; // which types of shields can affect this weapon, if (shieldInterceptType &amp;amp; interceptedByShieldType) is not zero the shield can affect the weapon, default 1 for plasma, 2 for laser, 4 for missiles, 0 for other shieldgoodcolor=0.0 0.05 0.75; // color of shield when power is full shieldbadcolor=0.6 0.05 0.75; // color of shield when power is empty shieldalpha=1; // how visible the shield shell is with visibleshield=1&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21104</id>
		<title>User:Smoth</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21104"/>
		<updated>2012-04-10T15:38:16Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Plans for game developer restructure:&amp;lt;br/&amp;gt;3 sections, beginer, intermediate and advanced.&lt;br /&gt;
&lt;br /&gt;
Game creation:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Beginner:(1 star)&lt;br /&gt;
&lt;br /&gt;
#focus on how does I get my game in spring&lt;br /&gt;
#how can I alter what is already there&lt;br /&gt;
#stay within knorkes beginner game, we want to have the user in a sort of sandbox.&lt;br /&gt;
#think mutator&lt;br /&gt;
&lt;br /&gt;
Intermediate:(2 stars)&lt;br /&gt;
&lt;br /&gt;
#focus on creating your own content and using it in game&lt;br /&gt;
#introduce them into existing resources lua/models/art&lt;br /&gt;
#most tutorials will be located here.&lt;br /&gt;
#think mod&lt;br /&gt;
&lt;br /&gt;
Advanced:(3 stars)&lt;br /&gt;
&lt;br /&gt;
#person is experience programmer or familiar with spring already.&lt;br /&gt;
#no tutorials, just informational links, this person wants information not how tos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Map creation:&lt;br /&gt;
&lt;br /&gt;
#pretty much just a big dump of all the map related resources for now.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes for SimpleParticleSystem:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Testpageforforb|a label]]&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;float3 pos&#039;&#039;&#039;&amp;lt;br/&amp;gt;Origon point for your particle system.&lt;br /&gt;
*&#039;&#039;&#039;[[AtlasedTexture]] texture&#039;&#039;&#039;&amp;lt;br/&amp;gt;Texture for the particles, defined in resources.tdf.&lt;br /&gt;
*&#039;&#039;&#039;float3 emitVector&#039;&#039;&#039;&amp;lt;br/&amp;gt;Use DIR to have it acquire a direction, this will utilize a poly on your object that you choose as an emitter.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;See my notes on vectors to understand how to use the vectors of this:&amp;lt;br/&amp;gt;&#039;&#039;i.e. 0,1,0 is straight up&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[CColorMap]] colorMap&#039;&#039;&#039;&amp;lt;br/&amp;gt;This will give your system a range of colors spread over time.&amp;lt;br/&amp;gt;it has 4 parts:&amp;lt;br/&amp;gt;RED, GREEN, BLUE, ALPHA&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;note:&amp;lt;br/&amp;gt;For additive blend use values that are low like: 0.1 or 0.05&amp;lt;br/&amp;gt;For overlay use 1.0&amp;lt;br/&amp;gt;see notes on overlay versus additive blend.&lt;br /&gt;
*&#039;&#039;&#039;float3 gravity&#039;&#039;&#039;&amp;lt;br/&amp;gt;Gravity applied along a vector.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;For example, if you want your particles to fall after being emmited.&amp;lt;br/&amp;gt;Emitvector would be: 0,1,0&amp;lt;br/&amp;gt;and gravity would need to be 0,-1,0&amp;lt;br/&amp;gt;This would result in particles falling straight down.&lt;br /&gt;
*&#039;&#039;&#039;float airdrag&#039;&#039;&#039;&amp;lt;br/&amp;gt;Constant multiplier on the particle each frame, a value of 1.0 means the particles will keep their current momentum, a value bellow 1 and they will slow down each frame.&lt;br /&gt;
*&#039;&#039;&#039;float particleLife&#039;&#039;&#039;&amp;lt;br/&amp;gt;Life of the particles in frames.&lt;br /&gt;
*&#039;&#039;&#039;float particleLifeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleLifeSpread added to particleLife.&lt;br /&gt;
*&#039;&#039;&#039;int numParticles&#039;&#039;&#039;&amp;lt;br/&amp;gt;Number of particles that will be spawned.&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeed&#039;&#039;&#039;&amp;lt;br/&amp;gt;Initial speed of the particles.&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeedSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSpeedSpread added to particleSpeed.&lt;br /&gt;
*&#039;&#039;&#039;float particleSize&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size of the particles.&lt;br /&gt;
*&#039;&#039;&#039;float particleSizeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSizeSpread added to particleSize.&lt;br /&gt;
*&#039;&#039;&#039;float sizeGrowth&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size added to particles each frame.&lt;br /&gt;
*&#039;&#039;&#039;float sizeMod&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size frame multiplier.&lt;br /&gt;
*&#039;&#039;&#039;float emitRot&#039;&#039;&#039;&amp;lt;br/&amp;gt;Rotation in degree from emitVector that particles will be spawned from, a value of 90 will emmit particles in a plane perpendicular to the emitVector.&lt;br /&gt;
*&#039;&#039;&#039;float emitRotSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and emitRotSpread added to emitRot, a value of 180 will make the particles spawn in a full sphere.&lt;br /&gt;
*&#039;&#039;&#039;bool directional&#039;&#039;&#039;&amp;lt;br/&amp;gt;If the particles should be oriented to point at the direction of their velocity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes vectors:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Vectors are directional systems represented by a 3d graph here: [[File:Untitled-1.png]]&amp;lt;br/&amp;gt;See how each vector points along it&#039;s own line?&amp;lt;br/&amp;gt;We have 6 possible directions:&amp;lt;br/&amp;gt;&amp;lt;center&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
X = right&amp;lt;br/&amp;gt;-X = left&amp;lt;br/&amp;gt;Z = Front&amp;lt;br/&amp;gt;-Z = Rear&amp;lt;br/&amp;gt;Y = Up&amp;lt;br/&amp;gt;-Y = Down&lt;br /&gt;
&lt;br /&gt;
WORK IN PROGRESS!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&#039;&#039;&#039;Notes Additive blend versus overlay blend:&#039;&#039;&#039; WORK IN PROGRESS!&lt;br /&gt;
&lt;br /&gt;
*ADDTITIVE&lt;br /&gt;
*OVERLAY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;IsShield=1; // if 1 mean the weapon is a shield and not a weapon shieldrepulser=1; // 0=destroy projectile,1=repulse (bounce) projectile smartshield=1; // 1=shield doesnt affect allies weapons exteriorshield=1; // 1=shield doesnt affect weapons fired from within shield visibleshield=1; // 1=see a visible shell representing the shield visibleshieldrepulse=1; // 1=see a beam showing when shield repulses something shieldenergyuse=10; // how much energy the shield use when repulsing/destroying something shieldforce=1000; // how hard shield can accelerate some sort of projectiles away shieldradius=30; // size of shield effect shieldmaxspeed=1100; // maximum speed the shield can push some sort of projectiles away shieldpower=300; // how much power the shield can store, power is drained by the affected weapons damage, 0=infinite shieldpowerregen=5; // how fast the shield regenerates power shieldpowerregenenergy=10; // how much energy the shield uses when regenerating power shieldintercepttype=2; // which types of weapon the shield can affect (bitfield) //interceptedbyshieldtype=; // which types of shields can affect this weapon, if (shieldInterceptType &amp;amp; interceptedByShieldType) is not zero the shield can affect the weapon, default 1 for plasma, 2 for laser, 4 for missiles, 0 for other shieldgoodcolor=0.0 0.05 0.75; // color of shield when power is full shieldbadcolor=0.6 0.05 0.75; // color of shield when power is empty shieldalpha=1; // how visible the shield shell is with visibleshield=1&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21103</id>
		<title>User:Smoth</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=User:Smoth&amp;diff=21103"/>
		<updated>2012-04-10T15:21:08Z</updated>

		<summary type="html">&lt;p&gt;Smoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Plans for game developer restructure:&amp;lt;br/&amp;gt;3 sections, beginer, intermediate and advanced.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Beginner:(1 star)&lt;br /&gt;
&lt;br /&gt;
#focus on how does I get my game in spring&lt;br /&gt;
#how can I alter what is already there&lt;br /&gt;
#stay within knorkes beginner game, we want to have the user in a sort of sandbox.&lt;br /&gt;
#think mutator&lt;br /&gt;
&lt;br /&gt;
Intermediate:(2 stars)&lt;br /&gt;
&lt;br /&gt;
#focus on creating your own content and using it in game&lt;br /&gt;
#introduce them into existing resources lua/models/art&lt;br /&gt;
#most tutorials will be located here.&lt;br /&gt;
#think mod&lt;br /&gt;
&lt;br /&gt;
Advanced:(3 stars)&lt;br /&gt;
&lt;br /&gt;
#person is experience programmer or familiar with spring already.&lt;br /&gt;
#no tutorials, just informational links, this person wants information not how tos.&lt;br /&gt;
&lt;br /&gt;
SmothSmoth is Smmmmmmmmmmoooootttthhhhh!!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes for SimpleParticleSystem:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Testpageforforb|a label]]&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;float3 pos&#039;&#039;&#039;&amp;lt;br/&amp;gt;Origon point for your particle system.&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;[[AtlasedTexture]] texture&#039;&#039;&#039;&amp;lt;br/&amp;gt;Texture for the particles, defined in resources.tdf.&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;float3 emitVector&#039;&#039;&#039;&amp;lt;br/&amp;gt;Use DIR to have it acquire a direction, this will utilize a poly on your object that you choose as an emitter.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;See my notes on vectors to understand how to use the vectors of this:&amp;lt;br/&amp;gt;&#039;&#039;i.e. 0,1,0 is straight up&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;[[CColorMap]] colorMap&#039;&#039;&#039;&amp;lt;br/&amp;gt;This will give your system a range of colors spread over time.&amp;lt;br/&amp;gt;it has 4 parts:&amp;lt;br/&amp;gt;RED, GREEN, BLUE, ALPHA&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;note:&amp;lt;br/&amp;gt;For additive blend use values that are low like: 0.1 or 0.05&amp;lt;br/&amp;gt;For overlay use 1.0&amp;lt;br/&amp;gt;see notes on overlay versus additive blend.&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;float3 gravity&#039;&#039;&#039;&amp;lt;br/&amp;gt;Gravity applied along a vector.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;For example, if you want your particles to fall after being emmited.&amp;lt;br/&amp;gt;Emitvector would be: 0,1,0&amp;lt;br/&amp;gt;and gravity would need to be 0,-1,0&amp;lt;br/&amp;gt;This would result in particles falling straight down.&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;float airdrag&#039;&#039;&#039;&amp;lt;br/&amp;gt;Constant multiplier on the particle each frame, a value of 1.0 means the particles will keep their current momentum, a value bellow 1 and they will slow down each frame.&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;float particleLife&#039;&#039;&#039;&amp;lt;br/&amp;gt;Life of the particles in frames.&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;float particleLifeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleLifeSpread added to particleLife.&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;int numParticles&#039;&#039;&#039;&amp;lt;br/&amp;gt;Number of particles that will be spawned.&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeed&#039;&#039;&#039;&amp;lt;br/&amp;gt;Initial speed of the particles.&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;float particleSpeedSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSpeedSpread added to particleSpeed.&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;float particleSize&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size of the particles.&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;float particleSizeSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and particleSizeSpread added to particleSize.&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;float sizeGrowth&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size added to particles each frame.&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;float sizeMod&#039;&#039;&#039;&amp;lt;br/&amp;gt;Size frame multiplier.&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;float emitRot&#039;&#039;&#039;&amp;lt;br/&amp;gt;Rotation in degree from emitVector that particles will be spawned from, a value of 90 will emmit particles in a plane perpendicular to the emitVector.&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;float emitRotSpread&#039;&#039;&#039;&amp;lt;br/&amp;gt;Random number between 0 and emitRotSpread added to emitRot, a value of 180 will make the particles spawn in a full sphere.&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;bool directional&#039;&#039;&#039;&amp;lt;br/&amp;gt;If the particles should be oriented to point at the direction of their velocity.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes vectors:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Vectors are directional systems represented by a 3d graph here: [[File:Untitled-1.png]]&amp;lt;br/&amp;gt;See how each vector points along it&#039;s own line?&amp;lt;br/&amp;gt;We have 6 possible directions:&amp;lt;br/&amp;gt;&amp;lt;center&amp;gt;&lt;br /&gt;
X = right&amp;lt;br/&amp;gt;-X = left&amp;lt;br/&amp;gt;Z = Front&amp;lt;br/&amp;gt;-Z = Rear&amp;lt;br/&amp;gt;Y = Up&amp;lt;br/&amp;gt;-Y = Down&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
WORK IN PROGRESS!&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&#039;&#039;&#039;Notes Additive blend versus overlay blend:&#039;&#039;&#039;&lt;br /&gt;
WORK IN PROGRESS!&amp;lt;br/&amp;gt;&lt;br /&gt;
*ADDTITIVE&amp;lt;br/&amp;gt;&lt;br /&gt;
*OVERLAY&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;IsShield=1; // if 1 mean the weapon is a shield and not a weapon shieldrepulser=1; // 0=destroy projectile,1=repulse (bounce) projectile smartshield=1; // 1=shield doesnt affect allies weapons exteriorshield=1; // 1=shield doesnt affect weapons fired from within shield visibleshield=1; // 1=see a visible shell representing the shield visibleshieldrepulse=1; // 1=see a beam showing when shield repulses something shieldenergyuse=10; // how much energy the shield use when repulsing/destroying something shieldforce=1000; // how hard shield can accelerate some sort of projectiles away shieldradius=30; // size of shield effect shieldmaxspeed=1100; // maximum speed the shield can push some sort of projectiles away shieldpower=300; // how much power the shield can store, power is drained by the affected weapons damage, 0=infinite shieldpowerregen=5; // how fast the shield regenerates power shieldpowerregenenergy=10; // how much energy the shield uses when regenerating power shieldintercepttype=2; // which types of weapon the shield can affect (bitfield) //interceptedbyshieldtype=; // which types of shields can affect this weapon, if (shieldInterceptType &amp;amp; interceptedByShieldType) is not zero the shield can affect the weapon, default 1 for plasma, 2 for laser, 4 for missiles, 0 for other shieldgoodcolor=0.0 0.05 0.75; // color of shield when power is full shieldbadcolor=0.6 0.05 0.75; // color of shield when power is empty shieldalpha=1; // how visible the shield shell is with visibleshield=1&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Movedefs.lua&amp;diff=14785</id>
		<title>Movedefs.lua</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Movedefs.lua&amp;diff=14785"/>
		<updated>2012-02-12T17:15:33Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* MoveClass Tags */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Location==&lt;br /&gt;
&amp;lt;code&amp;gt;movedefs.lua&amp;lt;/code&amp;gt; is a file in the &amp;lt;code&amp;gt;Gamedata/&amp;lt;/code&amp;gt; directory of a Spring Game.&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
This file defines &#039;&#039;&#039;MoveClasses&#039;&#039;&#039; which are used to determine pathing for units.&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
The engine source code which parses the data from this file is viewable here: {{sourcelink|file=rts/Sim/MoveTypes/MoveInfo.cpp}}&lt;br /&gt;
&lt;br /&gt;
==Details==&lt;br /&gt;
A mobile unit is assigned a &#039;&#039;&#039;MoveClass&#039;&#039;&#039; using the &amp;lt;code&amp;gt;movementClass&amp;lt;/code&amp;gt; [[Units-UnitDefs#Movement_.26_Placement|UnitDef]] tag. The engine determines the unit&#039;s pathfinding based on the properties of the &#039;&#039;&#039;MoveClass&#039;&#039;&#039;, so analogous properties (e.g. &amp;lt;code&amp;gt;FootprintX&amp;lt;/code&amp;gt;) in the [[Units-UnitDefs|UnitDef]] should be the same for optimal behaviour.&lt;br /&gt;
&lt;br /&gt;
All &#039;&#039;&#039;MoveClasses&#039;&#039;&#039; must belong to one of four possible types. A &#039;&#039;&#039;MoveClass&#039;&#039;&#039; is assigned a type simply by including it within the name string e.g. &amp;lt;code&amp;gt;Tank_MyMoveClassName&amp;lt;/code&amp;gt;. Types are used in &#039;&#039;&#039;TypeMaps&#039;&#039;&#039; of Spring maps, which allow mappers to set per-type speed multipliers. &lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
* &amp;lt;code&amp;gt;Bot&amp;lt;/code&amp;gt; - A ground based &#039;&#039;&#039;MoveClass&#039;&#039;&#039;. The default type if no matching type string is found.&lt;br /&gt;
* &amp;lt;code&amp;gt;Tank&amp;lt;/code&amp;gt; - A ground based &#039;&#039;&#039;MoveClass&#039;&#039;&#039;. Identical to &amp;lt;code&amp;gt;Bot&amp;lt;/code&amp;gt; other than interaction with &#039;&#039;&#039;TypeMaps&#039;&#039;&#039;.&lt;br /&gt;
* &amp;lt;code&amp;gt;Ship&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Boat&amp;lt;/code&amp;gt; - Are synonyms. All ships / boat &#039;&#039;&#039;MoveClasses&#039;&#039;&#039; must belong to this type to behave as ships.&lt;br /&gt;
* &amp;lt;code&amp;gt;Hover&amp;lt;/code&amp;gt; - All hovercraft &#039;&#039;&#039;MoveClasses&#039;&#039;&#039; (traverse any depth of water without speed reduction) must belong to this class, as well as having &amp;lt;code&amp;gt;canHover&amp;lt;/code&amp;gt; in their [[Units-UnitDefs#Movement_.26_Placement|UnitDef]] to behave as hovers.&lt;br /&gt;
&lt;br /&gt;
==MoveClass Tags==&lt;br /&gt;
{{tag|name=name|type=string|default=&amp;quot;&amp;quot;}} The name of the &#039;&#039;&#039;MoveClass&#039;&#039;&#039;. Usually passed by the sub-table variable name rather than using the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; tag (See [[#Example]]). Must contain &amp;quot;tank&amp;quot;, &amp;quot;hover&amp;quot;, &amp;quot;ship&amp;quot; or &amp;quot;boat&amp;quot; respectively for non-Bot types.&lt;br /&gt;
&lt;br /&gt;
{{tag|name=footprintX|type=int|default=1}} How wide the &#039;&#039;&#039;MoveClass&#039;&#039;&#039; is in footprint units, left to right. 1 footprint unit = 16 [[elmos]]. Cannot be below &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. For mobile units this should be the same as the &amp;lt;code&amp;gt;footprintX&amp;lt;/code&amp;gt; of its [[Units-UnitDefs#Movement_.26_Placement|UnitDef]].&lt;br /&gt;
&lt;br /&gt;
{{tag|name=footprintZ|type=int|default=footprintX}} How wide the &#039;&#039;&#039;MoveClass&#039;&#039;&#039; is in footprint units, top to bottom. 1 footprint unit = 16 [[elmos]]. Cannot be below &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. For mobile units this should be the same as the &amp;lt;code&amp;gt;footprintZ&amp;lt;/code&amp;gt; of its [[Units-UnitDefs#Movement_.26_Placement|UnitDef]].&lt;br /&gt;
&lt;br /&gt;
{{tag|name=crushStrength|type=float|default=10.0}} Power of a unit with this &#039;&#039;&#039;MoveClass&#039;&#039;&#039; to crush features and units. Any features (and units with crushing enabled via [[Lua_SyncedCtrl#Unit_Control|Spring.SetUnitBlocking]]) with a &amp;lt;code&amp;gt;crushResistance&amp;lt;/code&amp;gt; less than this value will be crushed on contact (See [[Units-FeatureDefs#General]] and [[Units-UnitDefs#General]]).&lt;br /&gt;
&lt;br /&gt;
{{tag|name=maxSlope|type=float|default=60.0&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;15.0&amp;lt;/code&amp;gt; for hover types)&amp;lt;code&amp;gt;}} The maximum steepness of slope a unit with this &#039;&#039;&#039;MoveClass&#039;&#039;&#039; can climb. Spring doesn&#039;t calculate this in degrees, see [[#How_slope_is_determined]].&lt;br /&gt;
&lt;br /&gt;
{{tag|name=slopeMod|type=float|default=4.0 / (maxSlope + 0.001)}} How much a slope will slow a unit, &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; means no slowdown.&lt;br /&gt;
&lt;br /&gt;
=== Heat Tags ===&lt;br /&gt;
These tags are used in unit avoidance.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;heatMapping&amp;lt;/code&amp;gt;&#039;&#039;&#039; - type: &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt; - default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
: This enables/disables generation and usage of path heats.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;heatMod&amp;lt;/code&amp;gt;&#039;&#039;&#039; - type: &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; - default: &amp;lt;code&amp;gt;0.05&amp;lt;/code&amp;gt;&lt;br /&gt;
: The pathfinder cost modifier that is multiplied by the heat of the current square.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;heatProduced&amp;lt;/code&amp;gt;&#039;&#039;&#039; - type: &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; - default: &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt;&lt;br /&gt;
: How much heat to place on a square if a path goes through it. &#039;&#039;heat set = max(currentSquareHeat, &amp;lt;code&amp;gt;heatProduced&amp;lt;/code&amp;gt;)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Tank &amp;amp; Bot-Only Tags ===&lt;br /&gt;
*DepthMod&lt;br /&gt;
**how much to slow down amphibian speed when they&#039;re underwater&lt;br /&gt;
*MaxWaterDepth&lt;br /&gt;
&lt;br /&gt;
=== Ship-Only Tags ===&lt;br /&gt;
*MinWaterDepth&lt;br /&gt;
*SubMarine&lt;br /&gt;
&lt;br /&gt;
==Special notes==&lt;br /&gt;
* depth is measured in elmos&lt;br /&gt;
* Slope is not measured in degrees.&lt;br /&gt;
* CrushStrength uses mass to determine if a feature can be crushed by a unit.&lt;br /&gt;
** default feature: mass = metal * 0.4 + maxHealth * 0.1&lt;br /&gt;
** default unit: mass = metalCost&lt;br /&gt;
* Slope/Depth mod&lt;br /&gt;
** This value applies directly based on the slope/depth, meaning the deeper or higher the slope, the MORE it slows a unit down.&lt;br /&gt;
&lt;br /&gt;
==How slope is determined==&lt;br /&gt;
Spring doesn&#039;t represent terrain slopes in degrees, internally it uses&lt;br /&gt;
&amp;lt;code&amp;gt;(1.0 - the terrain normal&#039;s y-component)&amp;lt;/code&amp;gt; so the slope of vertical faces is &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; and that of horizontal ones &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. A unit&#039;s &amp;lt;code&amp;gt;maxSlope&amp;lt;/code&amp;gt; value (which is in&lt;br /&gt;
degrees in its movedef) is converted so that the &amp;quot;can we go here?&amp;quot; (ie&lt;br /&gt;
&amp;quot;&amp;lt;code&amp;gt;maxSlope &amp;gt; terrainSlope&amp;lt;/code&amp;gt;?&amp;quot;) comparisons are meaningful, the formula&lt;br /&gt;
is &amp;lt;code&amp;gt;1.0 - cos(DEG2RAD(maxSlope * 1.5))&amp;lt;/code&amp;gt;. If you want to know the terrain angle in degrees, compute &amp;lt;code&amp;gt;RAD2DEG(arccos(1.0 - terrainSlope))&amp;lt;/code&amp;gt;. For a bot with a &amp;lt;code&amp;gt;maxSlope&amp;lt;/code&amp;gt; of 36 degrees (~0.41221 in &amp;quot;Spring format&amp;quot;), the maximum tolerable terrain angle is approximately&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;RAD2DEG(arccos(1.0 - 0.41221))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or 54 degrees. If &amp;lt;code&amp;gt;maxSlope&amp;lt;/code&amp;gt; was &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt;, the MTTA would be 45, and if it was &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; (the highest sensible value due to that 1.5 scalar and the absence of overhanging cliffs) the bot could mount any terrain. In other words you do not need the long mathematical derivation, just remember that&lt;br /&gt;
&amp;lt;code&amp;gt;maxTerrainAngle = maxSlope * 1.5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--kloot, Thu Jul 31, 2008&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
===External Examples===&lt;br /&gt;
[http://imolarpg.dyndns.org/trac/balatest/browser/trunk/gamedata/movedefs.lua &#039;Balanced Annihilation&#039; movedefs.lua]&lt;br /&gt;
&lt;br /&gt;
[http://trac.caspring.org/browser/trunk/mods/ca/gamedata/movedefs.lua &#039;Complete Annihilation&#039; movedefs.lua]&lt;br /&gt;
&lt;br /&gt;
[http://spring1944.svn.sourceforge.net/viewvc/spring1944/trunk/S44Main.sdd/gamedata/movedefs.lua?&amp;amp;view=markup &#039;Spring: 1944&#039; movedefs.lua]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/springtutorialgame/source/browse/trunk/SpringTutorialGame.sdd/Gamedata/movedefs.lua &#039;Spring Tutorial Game&#039; movedefs.lua]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/zero-k/source/browse/trunk/mods/zk/gamedata/movedefs.lua &#039;ZeroK&#039; movedefs.lua]&lt;br /&gt;
[[Category: Unit_development]]&lt;br /&gt;
[[Category:Gamedata]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Movedefs.lua&amp;diff=14784</id>
		<title>Movedefs.lua</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Movedefs.lua&amp;diff=14784"/>
		<updated>2012-02-12T17:14:50Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* MoveClass Tags */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Location==&lt;br /&gt;
&amp;lt;code&amp;gt;movedefs.lua&amp;lt;/code&amp;gt; is a file in the &amp;lt;code&amp;gt;Gamedata/&amp;lt;/code&amp;gt; directory of a Spring Game.&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
This file defines &#039;&#039;&#039;MoveClasses&#039;&#039;&#039; which are used to determine pathing for units.&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
The engine source code which parses the data from this file is viewable here: {{sourcelink|file=rts/Sim/MoveTypes/MoveInfo.cpp}}&lt;br /&gt;
&lt;br /&gt;
==Details==&lt;br /&gt;
A mobile unit is assigned a &#039;&#039;&#039;MoveClass&#039;&#039;&#039; using the &amp;lt;code&amp;gt;movementClass&amp;lt;/code&amp;gt; [[Units-UnitDefs#Movement_.26_Placement|UnitDef]] tag. The engine determines the unit&#039;s pathfinding based on the properties of the &#039;&#039;&#039;MoveClass&#039;&#039;&#039;, so analogous properties (e.g. &amp;lt;code&amp;gt;FootprintX&amp;lt;/code&amp;gt;) in the [[Units-UnitDefs|UnitDef]] should be the same for optimal behaviour.&lt;br /&gt;
&lt;br /&gt;
All &#039;&#039;&#039;MoveClasses&#039;&#039;&#039; must belong to one of four possible types. A &#039;&#039;&#039;MoveClass&#039;&#039;&#039; is assigned a type simply by including it within the name string e.g. &amp;lt;code&amp;gt;Tank_MyMoveClassName&amp;lt;/code&amp;gt;. Types are used in &#039;&#039;&#039;TypeMaps&#039;&#039;&#039; of Spring maps, which allow mappers to set per-type speed multipliers. &lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
* &amp;lt;code&amp;gt;Bot&amp;lt;/code&amp;gt; - A ground based &#039;&#039;&#039;MoveClass&#039;&#039;&#039;. The default type if no matching type string is found.&lt;br /&gt;
* &amp;lt;code&amp;gt;Tank&amp;lt;/code&amp;gt; - A ground based &#039;&#039;&#039;MoveClass&#039;&#039;&#039;. Identical to &amp;lt;code&amp;gt;Bot&amp;lt;/code&amp;gt; other than interaction with &#039;&#039;&#039;TypeMaps&#039;&#039;&#039;.&lt;br /&gt;
* &amp;lt;code&amp;gt;Ship&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Boat&amp;lt;/code&amp;gt; - Are synonyms. All ships / boat &#039;&#039;&#039;MoveClasses&#039;&#039;&#039; must belong to this type to behave as ships.&lt;br /&gt;
* &amp;lt;code&amp;gt;Hover&amp;lt;/code&amp;gt; - All hovercraft &#039;&#039;&#039;MoveClasses&#039;&#039;&#039; (traverse any depth of water without speed reduction) must belong to this class, as well as having &amp;lt;code&amp;gt;canHover&amp;lt;/code&amp;gt; in their [[Units-UnitDefs#Movement_.26_Placement|UnitDef]] to behave as hovers.&lt;br /&gt;
&lt;br /&gt;
==MoveClass Tags==&lt;br /&gt;
{{tag|name=name|type=string|default=&amp;quot;&amp;quot;}} The name of the &#039;&#039;&#039;MoveClass&#039;&#039;&#039;. Usually passed by the sub-table variable name rather than using the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; tag (See [[#Example]]). Must contain &amp;quot;tank&amp;quot;, &amp;quot;hover&amp;quot;, &amp;quot;ship&amp;quot; or &amp;quot;boat&amp;quot; respectively for non-Bot types.&lt;br /&gt;
&lt;br /&gt;
{{tag|name=footprintX|type=int|default=1}} &lt;br /&gt;
**How wide the &#039;&#039;&#039;MoveClass&#039;&#039;&#039; is in footprint units, left to right. 1 footprint unit = 16 [[elmos]]. Cannot be below &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. For mobile units this should be the same as the &amp;lt;code&amp;gt;footprintX&amp;lt;/code&amp;gt; of its [[Units-UnitDefs#Movement_.26_Placement|UnitDef]].&lt;br /&gt;
&lt;br /&gt;
{{tag|name=footprintZ|type=int|default=footprintX}} How wide the &#039;&#039;&#039;MoveClass&#039;&#039;&#039; is in footprint units, top to bottom. 1 footprint unit = 16 [[elmos]]. Cannot be below &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. For mobile units this should be the same as the &amp;lt;code&amp;gt;footprintZ&amp;lt;/code&amp;gt; of its [[Units-UnitDefs#Movement_.26_Placement|UnitDef]].&lt;br /&gt;
&lt;br /&gt;
{{tag|name=crushStrength|type=float|default=10.0}} Power of a unit with this &#039;&#039;&#039;MoveClass&#039;&#039;&#039; to crush features and units. Any features (and units with crushing enabled via [[Lua_SyncedCtrl#Unit_Control|Spring.SetUnitBlocking]]) with a &amp;lt;code&amp;gt;crushResistance&amp;lt;/code&amp;gt; less than this value will be crushed on contact (See [[Units-FeatureDefs#General]] and [[Units-UnitDefs#General]]).&lt;br /&gt;
&lt;br /&gt;
{{tag|name=maxSlope|type=float|default=60.0&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;15.0&amp;lt;/code&amp;gt; for hover types)&amp;lt;code&amp;gt;}} The maximum steepness of slope a unit with this &#039;&#039;&#039;MoveClass&#039;&#039;&#039; can climb. Spring doesn&#039;t calculate this in degrees, see [[#How_slope_is_determined]].&lt;br /&gt;
&lt;br /&gt;
{{tag|name=slopeMod|type=float|default=4.0 / (maxSlope + 0.001)}} How much a slope will slow a unit, &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; means no slowdown.&lt;br /&gt;
&lt;br /&gt;
=== Heat Tags ===&lt;br /&gt;
These tags are used in unit avoidance.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;heatMapping&amp;lt;/code&amp;gt;&#039;&#039;&#039; - type: &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt; - default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
: This enables/disables generation and usage of path heats.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;heatMod&amp;lt;/code&amp;gt;&#039;&#039;&#039; - type: &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; - default: &amp;lt;code&amp;gt;0.05&amp;lt;/code&amp;gt;&lt;br /&gt;
: The pathfinder cost modifier that is multiplied by the heat of the current square.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;heatProduced&amp;lt;/code&amp;gt;&#039;&#039;&#039; - type: &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; - default: &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt;&lt;br /&gt;
: How much heat to place on a square if a path goes through it. &#039;&#039;heat set = max(currentSquareHeat, &amp;lt;code&amp;gt;heatProduced&amp;lt;/code&amp;gt;)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Tank &amp;amp; Bot-Only Tags ===&lt;br /&gt;
*DepthMod&lt;br /&gt;
**how much to slow down amphibian speed when they&#039;re underwater&lt;br /&gt;
*MaxWaterDepth&lt;br /&gt;
&lt;br /&gt;
=== Ship-Only Tags ===&lt;br /&gt;
*MinWaterDepth&lt;br /&gt;
*SubMarine&lt;br /&gt;
&lt;br /&gt;
==Special notes==&lt;br /&gt;
* depth is measured in elmos&lt;br /&gt;
* Slope is not measured in degrees.&lt;br /&gt;
* CrushStrength uses mass to determine if a feature can be crushed by a unit.&lt;br /&gt;
** default feature: mass = metal * 0.4 + maxHealth * 0.1&lt;br /&gt;
** default unit: mass = metalCost&lt;br /&gt;
* Slope/Depth mod&lt;br /&gt;
** This value applies directly based on the slope/depth, meaning the deeper or higher the slope, the MORE it slows a unit down.&lt;br /&gt;
&lt;br /&gt;
==How slope is determined==&lt;br /&gt;
Spring doesn&#039;t represent terrain slopes in degrees, internally it uses&lt;br /&gt;
&amp;lt;code&amp;gt;(1.0 - the terrain normal&#039;s y-component)&amp;lt;/code&amp;gt; so the slope of vertical faces is &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; and that of horizontal ones &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. A unit&#039;s &amp;lt;code&amp;gt;maxSlope&amp;lt;/code&amp;gt; value (which is in&lt;br /&gt;
degrees in its movedef) is converted so that the &amp;quot;can we go here?&amp;quot; (ie&lt;br /&gt;
&amp;quot;&amp;lt;code&amp;gt;maxSlope &amp;gt; terrainSlope&amp;lt;/code&amp;gt;?&amp;quot;) comparisons are meaningful, the formula&lt;br /&gt;
is &amp;lt;code&amp;gt;1.0 - cos(DEG2RAD(maxSlope * 1.5))&amp;lt;/code&amp;gt;. If you want to know the terrain angle in degrees, compute &amp;lt;code&amp;gt;RAD2DEG(arccos(1.0 - terrainSlope))&amp;lt;/code&amp;gt;. For a bot with a &amp;lt;code&amp;gt;maxSlope&amp;lt;/code&amp;gt; of 36 degrees (~0.41221 in &amp;quot;Spring format&amp;quot;), the maximum tolerable terrain angle is approximately&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;RAD2DEG(arccos(1.0 - 0.41221))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or 54 degrees. If &amp;lt;code&amp;gt;maxSlope&amp;lt;/code&amp;gt; was &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt;, the MTTA would be 45, and if it was &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; (the highest sensible value due to that 1.5 scalar and the absence of overhanging cliffs) the bot could mount any terrain. In other words you do not need the long mathematical derivation, just remember that&lt;br /&gt;
&amp;lt;code&amp;gt;maxTerrainAngle = maxSlope * 1.5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--kloot, Thu Jul 31, 2008&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
===External Examples===&lt;br /&gt;
[http://imolarpg.dyndns.org/trac/balatest/browser/trunk/gamedata/movedefs.lua &#039;Balanced Annihilation&#039; movedefs.lua]&lt;br /&gt;
&lt;br /&gt;
[http://trac.caspring.org/browser/trunk/mods/ca/gamedata/movedefs.lua &#039;Complete Annihilation&#039; movedefs.lua]&lt;br /&gt;
&lt;br /&gt;
[http://spring1944.svn.sourceforge.net/viewvc/spring1944/trunk/S44Main.sdd/gamedata/movedefs.lua?&amp;amp;view=markup &#039;Spring: 1944&#039; movedefs.lua]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/springtutorialgame/source/browse/trunk/SpringTutorialGame.sdd/Gamedata/movedefs.lua &#039;Spring Tutorial Game&#039; movedefs.lua]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/zero-k/source/browse/trunk/mods/zk/gamedata/movedefs.lua &#039;ZeroK&#039; movedefs.lua]&lt;br /&gt;
[[Category: Unit_development]]&lt;br /&gt;
[[Category:Gamedata]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Movedefs.lua&amp;diff=14783</id>
		<title>Movedefs.lua</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Movedefs.lua&amp;diff=14783"/>
		<updated>2012-02-12T17:14:35Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* MoveClass Tags */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Location==&lt;br /&gt;
&amp;lt;code&amp;gt;movedefs.lua&amp;lt;/code&amp;gt; is a file in the &amp;lt;code&amp;gt;Gamedata/&amp;lt;/code&amp;gt; directory of a Spring Game.&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
This file defines &#039;&#039;&#039;MoveClasses&#039;&#039;&#039; which are used to determine pathing for units.&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
The engine source code which parses the data from this file is viewable here: {{sourcelink|file=rts/Sim/MoveTypes/MoveInfo.cpp}}&lt;br /&gt;
&lt;br /&gt;
==Details==&lt;br /&gt;
A mobile unit is assigned a &#039;&#039;&#039;MoveClass&#039;&#039;&#039; using the &amp;lt;code&amp;gt;movementClass&amp;lt;/code&amp;gt; [[Units-UnitDefs#Movement_.26_Placement|UnitDef]] tag. The engine determines the unit&#039;s pathfinding based on the properties of the &#039;&#039;&#039;MoveClass&#039;&#039;&#039;, so analogous properties (e.g. &amp;lt;code&amp;gt;FootprintX&amp;lt;/code&amp;gt;) in the [[Units-UnitDefs|UnitDef]] should be the same for optimal behaviour.&lt;br /&gt;
&lt;br /&gt;
All &#039;&#039;&#039;MoveClasses&#039;&#039;&#039; must belong to one of four possible types. A &#039;&#039;&#039;MoveClass&#039;&#039;&#039; is assigned a type simply by including it within the name string e.g. &amp;lt;code&amp;gt;Tank_MyMoveClassName&amp;lt;/code&amp;gt;. Types are used in &#039;&#039;&#039;TypeMaps&#039;&#039;&#039; of Spring maps, which allow mappers to set per-type speed multipliers. &lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
* &amp;lt;code&amp;gt;Bot&amp;lt;/code&amp;gt; - A ground based &#039;&#039;&#039;MoveClass&#039;&#039;&#039;. The default type if no matching type string is found.&lt;br /&gt;
* &amp;lt;code&amp;gt;Tank&amp;lt;/code&amp;gt; - A ground based &#039;&#039;&#039;MoveClass&#039;&#039;&#039;. Identical to &amp;lt;code&amp;gt;Bot&amp;lt;/code&amp;gt; other than interaction with &#039;&#039;&#039;TypeMaps&#039;&#039;&#039;.&lt;br /&gt;
* &amp;lt;code&amp;gt;Ship&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Boat&amp;lt;/code&amp;gt; - Are synonyms. All ships / boat &#039;&#039;&#039;MoveClasses&#039;&#039;&#039; must belong to this type to behave as ships.&lt;br /&gt;
* &amp;lt;code&amp;gt;Hover&amp;lt;/code&amp;gt; - All hovercraft &#039;&#039;&#039;MoveClasses&#039;&#039;&#039; (traverse any depth of water without speed reduction) must belong to this class, as well as having &amp;lt;code&amp;gt;canHover&amp;lt;/code&amp;gt; in their [[Units-UnitDefs#Movement_.26_Placement|UnitDef]] to behave as hovers.&lt;br /&gt;
&lt;br /&gt;
==MoveClass Tags==&lt;br /&gt;
{{tag|name=name|type=string|default=&amp;quot;&amp;quot;}} The name of the &#039;&#039;&#039;MoveClass&#039;&#039;&#039;. Usually passed by the sub-table variable name rather than using the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; tag (See [[#Example]]). Must contain &amp;quot;tank&amp;quot;, &amp;quot;hover&amp;quot;, &amp;quot;ship&amp;quot; or &amp;quot;boat&amp;quot; respectively for non-Bot types.&lt;br /&gt;
&lt;br /&gt;
{{tag|name=footprintX|type=int|default=1}} **How wide the &#039;&#039;&#039;MoveClass&#039;&#039;&#039; is in footprint units, left to right. 1 footprint unit = 16 [[elmos]]. Cannot be below &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. For mobile units this should be the same as the &amp;lt;code&amp;gt;footprintX&amp;lt;/code&amp;gt; of its [[Units-UnitDefs#Movement_.26_Placement|UnitDef]].&lt;br /&gt;
&lt;br /&gt;
{{tag|name=footprintZ|type=int|default=footprintX}} How wide the &#039;&#039;&#039;MoveClass&#039;&#039;&#039; is in footprint units, top to bottom. 1 footprint unit = 16 [[elmos]]. Cannot be below &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. For mobile units this should be the same as the &amp;lt;code&amp;gt;footprintZ&amp;lt;/code&amp;gt; of its [[Units-UnitDefs#Movement_.26_Placement|UnitDef]].&lt;br /&gt;
&lt;br /&gt;
{{tag|name=crushStrength|type=float|default=10.0}} Power of a unit with this &#039;&#039;&#039;MoveClass&#039;&#039;&#039; to crush features and units. Any features (and units with crushing enabled via [[Lua_SyncedCtrl#Unit_Control|Spring.SetUnitBlocking]]) with a &amp;lt;code&amp;gt;crushResistance&amp;lt;/code&amp;gt; less than this value will be crushed on contact (See [[Units-FeatureDefs#General]] and [[Units-UnitDefs#General]]).&lt;br /&gt;
&lt;br /&gt;
{{tag|name=maxSlope|type=float|default=60.0&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;15.0&amp;lt;/code&amp;gt; for hover types)&amp;lt;code&amp;gt;}} The maximum steepness of slope a unit with this &#039;&#039;&#039;MoveClass&#039;&#039;&#039; can climb. Spring doesn&#039;t calculate this in degrees, see [[#How_slope_is_determined]].&lt;br /&gt;
&lt;br /&gt;
{{tag|name=slopeMod|type=float|default=4.0 / (maxSlope + 0.001)}} How much a slope will slow a unit, &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; means no slowdown.&lt;br /&gt;
&lt;br /&gt;
=== Heat Tags ===&lt;br /&gt;
These tags are used in unit avoidance.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;heatMapping&amp;lt;/code&amp;gt;&#039;&#039;&#039; - type: &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt; - default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
: This enables/disables generation and usage of path heats.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;heatMod&amp;lt;/code&amp;gt;&#039;&#039;&#039; - type: &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; - default: &amp;lt;code&amp;gt;0.05&amp;lt;/code&amp;gt;&lt;br /&gt;
: The pathfinder cost modifier that is multiplied by the heat of the current square.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;heatProduced&amp;lt;/code&amp;gt;&#039;&#039;&#039; - type: &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; - default: &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt;&lt;br /&gt;
: How much heat to place on a square if a path goes through it. &#039;&#039;heat set = max(currentSquareHeat, &amp;lt;code&amp;gt;heatProduced&amp;lt;/code&amp;gt;)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Tank &amp;amp; Bot-Only Tags ===&lt;br /&gt;
*DepthMod&lt;br /&gt;
**how much to slow down amphibian speed when they&#039;re underwater&lt;br /&gt;
*MaxWaterDepth&lt;br /&gt;
&lt;br /&gt;
=== Ship-Only Tags ===&lt;br /&gt;
*MinWaterDepth&lt;br /&gt;
*SubMarine&lt;br /&gt;
&lt;br /&gt;
==Special notes==&lt;br /&gt;
* depth is measured in elmos&lt;br /&gt;
* Slope is not measured in degrees.&lt;br /&gt;
* CrushStrength uses mass to determine if a feature can be crushed by a unit.&lt;br /&gt;
** default feature: mass = metal * 0.4 + maxHealth * 0.1&lt;br /&gt;
** default unit: mass = metalCost&lt;br /&gt;
* Slope/Depth mod&lt;br /&gt;
** This value applies directly based on the slope/depth, meaning the deeper or higher the slope, the MORE it slows a unit down.&lt;br /&gt;
&lt;br /&gt;
==How slope is determined==&lt;br /&gt;
Spring doesn&#039;t represent terrain slopes in degrees, internally it uses&lt;br /&gt;
&amp;lt;code&amp;gt;(1.0 - the terrain normal&#039;s y-component)&amp;lt;/code&amp;gt; so the slope of vertical faces is &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; and that of horizontal ones &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. A unit&#039;s &amp;lt;code&amp;gt;maxSlope&amp;lt;/code&amp;gt; value (which is in&lt;br /&gt;
degrees in its movedef) is converted so that the &amp;quot;can we go here?&amp;quot; (ie&lt;br /&gt;
&amp;quot;&amp;lt;code&amp;gt;maxSlope &amp;gt; terrainSlope&amp;lt;/code&amp;gt;?&amp;quot;) comparisons are meaningful, the formula&lt;br /&gt;
is &amp;lt;code&amp;gt;1.0 - cos(DEG2RAD(maxSlope * 1.5))&amp;lt;/code&amp;gt;. If you want to know the terrain angle in degrees, compute &amp;lt;code&amp;gt;RAD2DEG(arccos(1.0 - terrainSlope))&amp;lt;/code&amp;gt;. For a bot with a &amp;lt;code&amp;gt;maxSlope&amp;lt;/code&amp;gt; of 36 degrees (~0.41221 in &amp;quot;Spring format&amp;quot;), the maximum tolerable terrain angle is approximately&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;RAD2DEG(arccos(1.0 - 0.41221))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or 54 degrees. If &amp;lt;code&amp;gt;maxSlope&amp;lt;/code&amp;gt; was &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt;, the MTTA would be 45, and if it was &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; (the highest sensible value due to that 1.5 scalar and the absence of overhanging cliffs) the bot could mount any terrain. In other words you do not need the long mathematical derivation, just remember that&lt;br /&gt;
&amp;lt;code&amp;gt;maxTerrainAngle = maxSlope * 1.5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--kloot, Thu Jul 31, 2008&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
===External Examples===&lt;br /&gt;
[http://imolarpg.dyndns.org/trac/balatest/browser/trunk/gamedata/movedefs.lua &#039;Balanced Annihilation&#039; movedefs.lua]&lt;br /&gt;
&lt;br /&gt;
[http://trac.caspring.org/browser/trunk/mods/ca/gamedata/movedefs.lua &#039;Complete Annihilation&#039; movedefs.lua]&lt;br /&gt;
&lt;br /&gt;
[http://spring1944.svn.sourceforge.net/viewvc/spring1944/trunk/S44Main.sdd/gamedata/movedefs.lua?&amp;amp;view=markup &#039;Spring: 1944&#039; movedefs.lua]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/springtutorialgame/source/browse/trunk/SpringTutorialGame.sdd/Gamedata/movedefs.lua &#039;Spring Tutorial Game&#039; movedefs.lua]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/zero-k/source/browse/trunk/mods/zk/gamedata/movedefs.lua &#039;ZeroK&#039; movedefs.lua]&lt;br /&gt;
[[Category: Unit_development]]&lt;br /&gt;
[[Category:Gamedata]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=8074</id>
		<title>Game and Unit development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=8074"/>
		<updated>2012-02-12T04:54:50Z</updated>

		<summary type="html">&lt;p&gt;Smoth: /* Lua Animations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Game development=&lt;br /&gt;
This information is meant to help newcomers learn how to develop their own games for the Spring Engine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
* [[Map,_Mod,_And_Unit_Development_Programs|Development Tools]]&lt;br /&gt;
*[[Game structure]]&amp;lt;br /&amp;gt;&lt;br /&gt;
*[[Game specification|Game specification]]&amp;lt;br /&amp;gt;&lt;br /&gt;
*[http://answers.springlobby.info/ Q&amp;amp;A Site for the Spring Engine]&lt;br /&gt;
*[http://springrts.com/phpbb/viewtopic.php?f=14&amp;amp;t=26409| Porting TA content to Spring]&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
*[[General_Resources|Free Assets]]&lt;br /&gt;
*[[SpringTutorialGame|Spring Tutorial Game]] - (attempt to create) a &amp;quot;template game&amp;quot; for new projects.&lt;br /&gt;
*[[LUPS]]&lt;br /&gt;
*[[Chili]]&lt;br /&gt;
*[[IceUI]]&lt;br /&gt;
*[[RedUI]]&lt;br /&gt;
*[[LOLUI]]&lt;br /&gt;
*[[FeaturePlacer]]&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
*UnitDefs (.fbi, .lua)&lt;br /&gt;
**[[Units-UnitDefs|UnitDefs]] - define the attributes of units&lt;br /&gt;
**[[Unit_Categories]] - define which weapon type aim at which targets&lt;br /&gt;
**[[Unit_collision_volumes | Unit Collision Volumes]] - collision detection&lt;br /&gt;
*WeaponDefs (.tdf, .lua)&lt;br /&gt;
**[[Weapon Variables]] : This is the most up to date&lt;br /&gt;
**[[Units:WeaponMainDir]]&lt;br /&gt;
**[[Weapons:Antinukes]]: All about antinukes.&lt;br /&gt;
*MoveDefs*&lt;br /&gt;
**[[Units:MoveTypes]]&lt;br /&gt;
*FeatureDefs (objects on the map, wrecks of destroyed units)&lt;br /&gt;
**[[Units-FeatureDefs]]&lt;br /&gt;
*Global game variables (modrules.lua)&lt;br /&gt;
**[[Modrules.lua]]&lt;br /&gt;
*[[CEG]] Explosions (.tdf, .lua)*&lt;br /&gt;
**[[CEG-Calls]] &lt;br /&gt;
**[[CEG-Format]] &lt;br /&gt;
**[[CEG-Classes]] &lt;br /&gt;
**[[CEG-Operators]] &lt;br /&gt;
**[[CEG-Miscellaneous]] &lt;br /&gt;
**[[CEG-OldInfo]]&lt;br /&gt;
*Misc&lt;br /&gt;
**[[VirtualFileSystem]]&lt;br /&gt;
**[[MouseCursors]]&lt;br /&gt;
**[[Units:Textures]]&lt;br /&gt;
**[[Units:Buildpics]]&lt;br /&gt;
**[[Sidedata.lua]]&lt;br /&gt;
**[[Units:FlankingBonus]]&lt;br /&gt;
**[[Mod Development:Armor|Game Development:Armor]]&lt;br /&gt;
**[[Mod Development:Archives|Game Development:Archives]]&lt;br /&gt;
**[[Mod Development:Sidepics|Game Development:Sidepics]]&lt;br /&gt;
**[[CustomUnitIcons|Game Development:Custom unit icons]]&lt;br /&gt;
&lt;br /&gt;
=Unit Scripting/Animations (.cob, .bos, .lua)=&lt;br /&gt;
* [[Animation-CobLuaDifferences | Differences of .lua and .cob unit scripts]]&lt;br /&gt;
&lt;br /&gt;
==Lua Animations==&lt;br /&gt;
While called Lua animations, that is a misnomer, these are not just animation, these are high level behavior scripts which control not only animation but firing of weapons and various other unit functions.&lt;br /&gt;
*[[Animation-LuaScripting]]&lt;br /&gt;
**[[Animation-LuaCallins]]&lt;br /&gt;
**[[Animation-LuaCallouts]]&lt;br /&gt;
**[[Animation-CobLuaDifferences]]&lt;br /&gt;
&lt;br /&gt;
==COB Animations==&lt;br /&gt;
The binary &#039;.cob&#039; file format is a compiled &#039;.bos&#039; script. To convert a &#039;.bos&#039; script file to &#039;.cob&#039; file you will need [[Scriptor]]&lt;br /&gt;
&lt;br /&gt;
*[[Animation-CobOverview]]&lt;br /&gt;
**[[Animation-CobExamples]]&lt;br /&gt;
**[[Animation-CobAnimation]]&lt;br /&gt;
**[[Animation-CobCallins]]&lt;br /&gt;
**[[Animation-CobConstants]]&lt;br /&gt;
**[[Animation-CobThreads]]&lt;br /&gt;
**[[Animation-CobHitByWeaponID]]&lt;br /&gt;
*[[Units:LuaCOB]] - how to interface COB with LUA&lt;br /&gt;
*[[CEG_For_Units|Game Development:Calling basic CEGs from COB]]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?p=132943#132943 GPL-compliant sourcecode, scripting code examples, and other things.]&lt;br /&gt;
&lt;br /&gt;
=Modeling =&lt;br /&gt;
Spring supports different 3d representations: &#039;[[About_s3o|.s3o]]&#039; and &#039;[[About_3do|.3do]]&#039;. The biggest difference between both formats is the workflow to create a new unit. There are exporter plugins for &#039;blender&#039; and &#039;3ds-max&#039; so that texturing and modeling can be done using these.&lt;br /&gt;
In contrast: when you model an &#039;.3do&#039; you have to use [[upspring]] currently.&lt;br /&gt;
&lt;br /&gt;
The animation with can either be done using &#039;lua&#039; or &#039;COB/BOS&#039; is does not depend on either, see rigging/animation. For new units use &#039;lua&#039; scripting.&lt;br /&gt;
&lt;br /&gt;
=Engine Related=&lt;br /&gt;
* [[Download_Testing]] - Test the compatibility of your game on upcoming versions of the Spring engine.&lt;br /&gt;
&lt;br /&gt;
=Tutorials=&lt;br /&gt;
===Game Development Tutorials===&lt;br /&gt;
*[[Simple Mod Tutorial|Simple Game Tutorial]]&lt;br /&gt;
*[[The Complete Guide To Making A Spring Game]] - A fairly comprehensive getting started tutorial.&lt;br /&gt;
*[http://springrts.com/phpbb/viewtopic.php?f=14&amp;amp;t=26409| Porting TA content to Spring]&lt;br /&gt;
===Modeling Tutorials===&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?t=10612 Wings UV Mapping Tutorial]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=9&amp;amp;t=12354 Saving polygons in Wings3d Tutorial]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?t=10503 Runecrafter&#039;s 3DS Max UV Mapping Tutorial]&lt;br /&gt;
&lt;br /&gt;
===Texture Tutorials===&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=57&amp;amp;t=22392 DDS Textures:  How To]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?t=10947 Greeble Tutorial 1]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=9&amp;amp;t=12356 Greeble Tutorial 2]&lt;br /&gt;
&lt;br /&gt;
[[Category: Unit_development]]&lt;br /&gt;
[[Category:Game development]]&lt;/div&gt;</summary>
		<author><name>Smoth</name></author>
	</entry>
</feed>