<?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=Sinbadev</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=Sinbadev"/>
	<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/wiki/Special:Contributions/Sinbadev"/>
	<updated>2026-11-08T21:34:43Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Simple_Game_Tutorial&amp;diff=16880</id>
		<title>Simple Game Tutorial</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Simple_Game_Tutorial&amp;diff=16880"/>
		<updated>2012-06-01T12:51:38Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{deprecated|This page is out of date and has been marked for review.}}&lt;br /&gt;
[[Category:Deprecated]]&lt;br /&gt;
&lt;br /&gt;
Until I Finish [[Mod Development]] is the place to go.&lt;br /&gt;
&lt;br /&gt;
This Tutorial Aims to get a person from knowing nothing about Spring to the point where they can create and edit mods.&lt;br /&gt;
&lt;br /&gt;
Right now I am working from memory so you may want to correct me when I&#039;m wrong, I will try to cross link from my summaries to the appropriate articles available in other places.&lt;br /&gt;
&lt;br /&gt;
I will not go too deep into making 3do&#039;s because they are old and dumb... but I&#039;ll try to make note of the differences here.&lt;br /&gt;
&lt;br /&gt;
I don&#039;t know anything about scripting right now, so that section is likely to be sparse when I write it, I hope that someone will expand on it.&lt;br /&gt;
&lt;br /&gt;
=Book 1: The First Unit=&lt;br /&gt;
&lt;br /&gt;
==Step 1:Planning==&lt;br /&gt;
Who cares about planning, you know what you&#039;re doing... just come up with an idea for a mod... I made a chess set... if you don&#039;t have a real idea and just want to make a model show up in the game... then yeah... this is the place to start... I&#039;d do that if I were you.&lt;br /&gt;
&lt;br /&gt;
Another good thing to do at this point is to creat a &amp;quot;working directory&amp;quot;, and inside it create a directory with the name that your mod will have... after many headaches I decided it&#039;s best to put this in the root directory of your system so it&#039;s really easy to find when you are switching around back and forth between folders and keep having to find your files over and over again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Step 2:Getting The Tools==&lt;br /&gt;
You will need a bunch of stuff... here&#039;s the list (I assume you are using windows)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Want:&#039;&#039;&lt;br /&gt;
*[http://springrts.com/wiki/Download Spring] - The main program, you will likely need this to test if you&#039;ve screwed up&lt;br /&gt;
*A Tiny Map (2x2) - to test your mod fast &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Need:&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Program listings can be found here:&#039;&#039;&#039; &#039;&#039;&#039;[http://springrts.com/wiki/Map,_Mod,_And_Unit_Development_Programs Map, Mod, And Unit Development Programs]&#039;&#039;&#039;&lt;br /&gt;
*3D Modeling Program - &#039;&#039;&#039;See above link&#039;&#039;&#039;&lt;br /&gt;
*Notepad - to edit all the myriad of text files&lt;br /&gt;
*A Graphical Editing Program - needs to handle RGBA TGAs (aka TGA&#039;s with alpha channels), I suggest Photoshop if you have it, or The GIMP... needed for all of the texture making for UVmapping stuff... &#039;&#039;&#039;See above link&#039;&#039;&#039;&lt;br /&gt;
*Upspring 1.3 - To convert your models to the appropriate s3o format (if you want to fight with 3do builder, then go ahead... a good trick is to get your model into Upspring first and adjust all the hierarchy, then save it as an 3do... but why bother?). &#039;&#039;&#039;See above link&#039;&#039;&#039;&lt;br /&gt;
*Scriptor - to make and compile your units &amp;quot;animation script&amp;quot;... or steal someone else&#039;s and make it work for your unit. &#039;&#039;&#039;See above link&#039;&#039;&#039;&lt;br /&gt;
*Compression Utility - (I suggest [http://www.7-zip.org/ 7zip] - even if you are using zip compression and not 7zip, it&#039;s still good to have)&lt;br /&gt;
&lt;br /&gt;
==Step 3:Making a 3D Model==&lt;br /&gt;
&lt;br /&gt;
Go into your 3D modeling program and make a 3D model, [http://taspring.clan-sy.com/w/images/b/b4/WingsCombine.PNG combine] all the objects and UV map the model, then separate it out into any parts that need to move independently of each other.  Then Export the UV map as an Image File and Export the whole thing as a 3ds file.  Put the original wings file, the UVMap image and the 3ds file into your working directory so you can find them later.&lt;br /&gt;
&lt;br /&gt;
Wings 3D UV Mapping tutorial has been started here - [[Units:CreateModel]]&lt;br /&gt;
&lt;br /&gt;
==Step 4:Fixing Your Images==&lt;br /&gt;
&lt;br /&gt;
[[Basic s3o unit making guide|This Article includes a UVMapping Guide]]&lt;br /&gt;
&lt;br /&gt;
Open up your UVMap in Photoshop (or whatever) go to the layer/chooser dialog box and go to the Channels Tab, add a new layer (it should default to alpha) and fill it with 99% black so you can see your texture in upspring.  If you want to can paint the UVmap and put white (1% black) on the alpha channel where you want your team colors to show up (you can use something between 1% and 99% to get a blend of your team color along with the texture... for example 50% will give you your texture with 50% of the team color mixed in...)&lt;br /&gt;
&lt;br /&gt;
I don&#039;t know how to do glow maps... XXreminder for someone to create a Glowmapping tutorial... you don&#039;t actually need one for the model to show up.&lt;br /&gt;
&lt;br /&gt;
Save these images both in the working directory.&lt;br /&gt;
&lt;br /&gt;
Save a copy of these images in tga format into &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/unittextures&lt;br /&gt;
&lt;br /&gt;
==Step 5:Upspring==&lt;br /&gt;
&lt;br /&gt;
===Importing Your 3ds===&lt;br /&gt;
Open [[upspring]], go to file&amp;gt;load model and navigate to and open your 3DS model you exported, you should see the model in upspring as a 3d mesh.  Go to the model tab and set the radius and height values to something other then zero... this defines where the health bar will show up, and more importantly, how big the collision sphere will be.&lt;br /&gt;
&lt;br /&gt;
You will also need to use all of the other tools on those tabs to resize and rotate and move your model to the right place... wings makes models that are 90 degrees off and about 30 times smaller than most spring models... make sure you click the &amp;quot;apply transform&amp;quot; button after any changes that you actually want to show up in the game.&lt;br /&gt;
&lt;br /&gt;
Also, you will want to make the hierarchy work using the cut, paste, and add empty buttons.  You will need an object called &amp;quot;base&amp;quot; that all the other objects are connected to... the &amp;quot;origin object&amp;quot;... sometimes you get lucky and wings exports it properly... usually not.&lt;br /&gt;
&lt;br /&gt;
===Importing Your UV and Glowmaps===&lt;br /&gt;
&lt;br /&gt;
Go to the textures tab and make your UV/texture/team-color map as &amp;quot;texture1&amp;quot; and your UV/glow/reflectivity map as &amp;quot;texture2&amp;quot;... it should show up correctly in the preview pane.&lt;br /&gt;
&lt;br /&gt;
===Exporting Your s3o===&lt;br /&gt;
Choose File&amp;gt;Save Model As then in the drop down select &amp;quot;s3o&amp;quot; and type an appropriate name. This model should be saved to your working directory, and a copy of it made to &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/objects3d/&lt;br /&gt;
&lt;br /&gt;
==Step 6: Lua files==&lt;br /&gt;
&lt;br /&gt;
===UnitName.lua===&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
For Reference visit [[Units:FBI]], but again, the easiest way to do this is to extract an existing mod and find the fbi for a unit that behaves similarly to the one you are trying to make and rename and modify it.&lt;br /&gt;
&lt;br /&gt;
Some More Specific Information Not Clear in the &amp;quot;Units:FBI&amp;quot; article:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Name+&amp;quot; &amp;quot;+Description=Spring Display Name&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
So if you have the following settings:&lt;br /&gt;
&lt;br /&gt;
 Name=Tiger;&lt;br /&gt;
 Description=Fast Attack C.A.T.;&lt;br /&gt;
&lt;br /&gt;
The Tooltip will show &amp;quot;Tiger Fast Attack C.A.T.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BuildPic Defaults to UnitName.bmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
So if you leave out &amp;quot;BuildPic=filename.bmp;&amp;quot; Spring will look in /unitpics/ for a file called &amp;quot;UnitName.bmp&amp;quot; to use as your buildpic.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ObjectName&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you want to use an s3o object, you will need to specify with &amp;quot;ObjectName=UnitName&#039;&#039;&#039;.S3O;&#039;&#039;&#039;&amp;quot; otherwise it will look for &amp;quot;UnitName.3do&amp;quot;.  Also, you don&#039;t have to use &amp;quot;UnitName&amp;quot; as the filename and, in fact, multiple Unit&#039;s fbi files can reference the same 3D models. It is easier, however, for people to figure out what you are doing in your mod if you follow the standards.&lt;br /&gt;
&lt;br /&gt;
Save this file as plain text in &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/units/&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unitDef = {&lt;br /&gt;
  unitname           = [[arm_spider]],&lt;br /&gt;
  name               = [[Weaver]],&lt;br /&gt;
  description        = [[Cloaking Construction Spider, Builds at 9 m/s]],&lt;br /&gt;
  acceleration       = 0.15,&lt;br /&gt;
  bmcode             = [[1]],&lt;br /&gt;
  brakeRate          = 0.15,&lt;br /&gt;
  buildCostEnergy    = 230,&lt;br /&gt;
  buildCostMetal     = 230,&lt;br /&gt;
  buildDistance      = 80,&lt;br /&gt;
  builder            = true,&lt;br /&gt;
&lt;br /&gt;
  buildoptions       = {&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  buildPic           = [[arm_spider.png]],&lt;br /&gt;
  buildTime          = 230,&lt;br /&gt;
  canAttack          = false,&lt;br /&gt;
  canGuard           = true,&lt;br /&gt;
  canMove            = true,&lt;br /&gt;
  canPatrol          = true,&lt;br /&gt;
  canreclamate       = [[1]],&lt;br /&gt;
  canstop            = [[1]],&lt;br /&gt;
  category           = [[LAND UNARMED]],&lt;br /&gt;
  cloakCost          = 1,&lt;br /&gt;
  cloakCostMoving    = 2,&lt;br /&gt;
  corpse             = [[DEAD]],&lt;br /&gt;
&lt;br /&gt;
  customParams       = {&lt;br /&gt;
    description_bp = [[Aranha e de construÃƒÂ§?o, ConstrÃƒÂ³i a 6 m/s]],&lt;br /&gt;
    description_es = [[Ara?a de construcciÃƒÂ³n, construye a 6 m/s]],&lt;br /&gt;
    description_fi = [[Rakentaja/kaikuluotainkiipeilij?, rakentaa 6m/s nopeudella]],&lt;br /&gt;
    description_fr = [[Araign?e de Construction, Construit ? 6 m/s]],&lt;br /&gt;
    description_it = [[Ragno do costruzione occultante, costruisce a 6 m/s]],&lt;br /&gt;
    description_pl = [[Paj?k konstruktor, buduje z pr?dko?ci? 6m/s]],&lt;br /&gt;
    helptext       = [[The Weaver is a constructor that can climb over any obstacle and build defenses on high ground.]],&lt;br /&gt;
    helptext_bp    = [[Weaver ÃƒÂ© o construtor escalador camuflÃƒÂ¡vel de NOVA. Pode subir qualquer obstÃƒÂ¡culo, mas constrÃƒÂ³i mais devagar que construtores normais.]],&lt;br /&gt;
    helptext_es    = [[El Weaver es el constructor que puede treparse sobre qualquier obstÃƒÂ¡culo y construir defensas en terreno alto]],&lt;br /&gt;
    helptext_fi    = [[Weaver pystyy liikkumaan vaikeakulkuisimmassakin maastossa ja rakentamaan vaivatta my?s useimmille muille rakentajille saavuttamattomiin paikkoihin.]],&lt;br /&gt;
    helptext_fr    = [[Le weaver est un robot de construction tout terrain qui peut batir des d?fenses en terrain ?lev?.]],&lt;br /&gt;
    helptext_it    = [[Il Weaver ÃƒÂ© un costruttore che puo arrampicarsi su qualunque ostacolo e costruire difese nel terreno alto]],&lt;br /&gt;
    helptext_pl    = [[Weaver jest konstruktorem mog?cym wspina? si? po ka?dej powierzchni oraz posiadaj?cym mo?liwo?? maskowania si?]],&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  defaultmissiontype = [[Standby]],&lt;br /&gt;
  designation        = [[ARM-MLSPD]],&lt;br /&gt;
  energyMake         = 0.15,&lt;br /&gt;
  energyUse          = 0,&lt;br /&gt;
  explodeAs          = [[BIG_UNITEX]],&lt;br /&gt;
  footprintX         = 3,&lt;br /&gt;
  footprintZ         = 3,&lt;br /&gt;
  iconType           = [[builder]],&lt;br /&gt;
  mass               = 115,&lt;br /&gt;
  maxDamage          = 750,&lt;br /&gt;
  maxslope           = 16,&lt;br /&gt;
  maxSlope           = 72,&lt;br /&gt;
  maxVelocity        = 1.7,&lt;br /&gt;
  maxWaterDepth      = 22,&lt;br /&gt;
  metalMake          = 0.15,&lt;br /&gt;
  movementClass      = [[TKBOT3]],&lt;br /&gt;
  noAutoFire         = false,&lt;br /&gt;
  noChaseCategory    = [[TERRAFORM SATELLITE FIXEDWING GUNSHIP HOVER SHIP SWIM SUB LAND FLOAT SINK]],&lt;br /&gt;
  objectName         = [[ARMMLSPD]],&lt;br /&gt;
  radarDistanceJam   = 256,&lt;br /&gt;
  seismicSignature   = 16,&lt;br /&gt;
  selfDestructAs     = [[BIG_UNITEX]],&lt;br /&gt;
  showNanoSpray      = false,&lt;br /&gt;
  side               = [[ARM]],&lt;br /&gt;
  sightDistance      = 295,&lt;br /&gt;
  smoothAnim         = true,&lt;br /&gt;
  steeringmode       = [[1]],&lt;br /&gt;
  TEDClass           = [[CNSTR]],&lt;br /&gt;
  terraformSpeed     = 450,&lt;br /&gt;
  threed             = [[1]],&lt;br /&gt;
  turninplace        = 0,&lt;br /&gt;
  turnRate           = 1020,&lt;br /&gt;
  workerTime         = 9,&lt;br /&gt;
  zbuffer            = [[1]],&lt;br /&gt;
&lt;br /&gt;
  featureDefs        = {&lt;br /&gt;
&lt;br /&gt;
    DEAD  = {&lt;br /&gt;
      description      = [[Wreckage - Weaver]],&lt;br /&gt;
      blocking         = true,&lt;br /&gt;
      category         = [[arm_corpses]],&lt;br /&gt;
      damage           = 850,&lt;br /&gt;
      featureDead      = [[DEAD2]],&lt;br /&gt;
      featurereclamate = [[smudge01]],&lt;br /&gt;
      footprintX       = 3,&lt;br /&gt;
      footprintZ       = 3,&lt;br /&gt;
      height           = [[40]],&lt;br /&gt;
      hitdensity       = [[100]],&lt;br /&gt;
      metal            = 92,&lt;br /&gt;
      object           = [[ARMMLSPD_dead]],&lt;br /&gt;
      reclaimable      = true,&lt;br /&gt;
      reclaimTime      = 92,&lt;br /&gt;
      seqnamereclamate = [[tree1reclamate]],&lt;br /&gt;
      world            = [[All Worlds]],&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    DEAD2 = {&lt;br /&gt;
      description      = [[Debris - Weaver]],&lt;br /&gt;
      blocking         = false,&lt;br /&gt;
      category         = [[heaps]],&lt;br /&gt;
      damage           = 850,&lt;br /&gt;
      featureDead      = [[HEAP]],&lt;br /&gt;
      featurereclamate = [[smudge01]],&lt;br /&gt;
      footprintX       = 3,&lt;br /&gt;
      footprintZ       = 3,&lt;br /&gt;
      height           = [[4]],&lt;br /&gt;
      hitdensity       = [[100]],&lt;br /&gt;
      metal            = 92,&lt;br /&gt;
      object           = [[debris3x3b.s3o]],&lt;br /&gt;
      reclaimable      = true,&lt;br /&gt;
      reclaimTime      = 92,&lt;br /&gt;
      seqnamereclamate = [[tree1reclamate]],&lt;br /&gt;
      world            = [[All Worlds]],&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    HEAP  = {&lt;br /&gt;
      description      = [[Debris - Weaver]],&lt;br /&gt;
      blocking         = false,&lt;br /&gt;
      category         = [[heaps]],&lt;br /&gt;
      damage           = 850,&lt;br /&gt;
      featurereclamate = [[smudge01]],&lt;br /&gt;
      footprintX       = 3,&lt;br /&gt;
      footprintZ       = 3,&lt;br /&gt;
      height           = [[4]],&lt;br /&gt;
      hitdensity       = [[100]],&lt;br /&gt;
      metal            = 46,&lt;br /&gt;
      object           = [[debris3x3b.s3o]],&lt;br /&gt;
      reclaimable      = true,&lt;br /&gt;
      reclaimTime      = 46,&lt;br /&gt;
      seqnamereclamate = [[tree1reclamate]],&lt;br /&gt;
      world            = [[All Worlds]],&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return lowerkeys({ arm_spider = unitDef })&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save this file as a lua file in &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/units/&lt;br /&gt;
&lt;br /&gt;
===modinfo.lua===&lt;br /&gt;
&lt;br /&gt;
modinfo.lua is a lua file that defines a number of things that are used when loading a mod, most of the information is self explanatory but basically what you are doing is defining what is going to show up in whatever mod-selection interface you use as well as what other files need to be loaded into memory in order for your mod to work.&lt;br /&gt;
&lt;br /&gt;
====Making a New Mod with your unit/units====&lt;br /&gt;
The following is an example of what will be in your [[modinfo.lua]] file if you are starting from scratch and making your own mod. This is also good when you are just testing one unit to see if it works.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
return {&lt;br /&gt;
		-- The name is shown in the selection interface&lt;br /&gt;
		game = &amp;quot;MyMod&amp;quot;,&lt;br /&gt;
		shortGame = &amp;quot;MM&amp;quot;,&lt;br /&gt;
		name = &amp;quot;My Mod&amp;quot;,&lt;br /&gt;
		shortName = &amp;quot;MM&amp;quot;,&lt;br /&gt;
		version = &amp;quot;4.0&amp;quot;,&lt;br /&gt;
		mutator = &amp;quot;Heroes&amp;quot;,&lt;br /&gt;
		-- These can be shown by the selection interface&lt;br /&gt;
		description = &amp;quot;My Mod That I Made&amp;quot;,&lt;br /&gt;
		url = &amp;quot;http://www.theplacepeoplecangetthelatestversionofyourmod.com&amp;quot;,&lt;br /&gt;
		-- What kind of mod this is &lt;br /&gt;
		--  0 - Hidden (support mod that can&#039;t be selected, such as OTA_textures) &lt;br /&gt;
		--  1 - Normal, only one can be selected at a time &lt;br /&gt;
		--  2 - Addon, any number of these can be selected. Could be used &lt;br /&gt;
		--      for single units for example. &lt;br /&gt;
		--  others - perhaps mutators and addon races that can be &lt;br /&gt;
		--           enabled in addition to XTA for example? &lt;br /&gt;
		modtype = &amp;quot;1&amp;quot;,&lt;br /&gt;
		-- Number of other archives this one depends on &lt;br /&gt;
		depend= {&lt;br /&gt;
			&amp;quot;Spring content v1&amp;quot;,&lt;br /&gt;
			&amp;quot;Spring Cursors&amp;quot;,&lt;br /&gt;
			&amp;quot;Spring Bitmaps&amp;quot;,&lt;br /&gt;
			-- Number of other content names this one replaces&lt;br /&gt;
                        added comment about filename vs unitsync name for dependency&lt;br /&gt;
		},&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adding Your Unit to an Existing Mod====&lt;br /&gt;
The following is an example of what will be in your modinfo.lua file if you are adding new units to an existing mod (in this case XTA SE v066), this is good for adding units to the build tree of an existing mod or adding a whole new team.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Description of the mod control file recognized by spring:&lt;br /&gt;
return {&lt;br /&gt;
		-- The name is shown in the selection interface&lt;br /&gt;
		game = &amp;quot;XTASE_MyUnits&amp;quot;,&lt;br /&gt;
		shortGame = &amp;quot;XTASEMU&amp;quot;,&lt;br /&gt;
		name = &amp;quot;XTASEv0.66 with+My Units&amp;quot;,&lt;br /&gt;
		shortName = &amp;quot;XTASEMU&amp;quot;,&lt;br /&gt;
		version = &amp;quot;4.0&amp;quot;,&lt;br /&gt;
		mutator = &amp;quot;Heroes&amp;quot;,&lt;br /&gt;
		-- These can be shown by the selection interface&lt;br /&gt;
		description = &amp;quot;xta_se_v066 with the cool tank I made&amp;quot;,&lt;br /&gt;
		url = &amp;quot;http://www.fileuniverse.com/exactlocationblahblahblah&amp;quot;,&lt;br /&gt;
		-- What kind of mod this is &lt;br /&gt;
		--  0 - Hidden (support mod that can&#039;t be selected, such as OTA_textures) &lt;br /&gt;
		--  1 - Normal, only one can be selected at a time &lt;br /&gt;
		--  2 - Addon, any number of these can be selected. Could be used &lt;br /&gt;
		--      for single units for example. &lt;br /&gt;
		--  others - perhaps mutators and addon races that can be &lt;br /&gt;
		--           enabled in addition to xta for example? &lt;br /&gt;
		modtype = &amp;quot;1&amp;quot;,&lt;br /&gt;
		-- Number of other archives this one depends on &lt;br /&gt;
		depend= {&lt;br /&gt;
			&amp;quot;XTAsev066&amp;quot;,&lt;br /&gt;
                        &amp;quot;Spring Cursors&amp;quot;,&lt;br /&gt;
                        &amp;quot;Spring content v1&amp;quot;,&lt;br /&gt;
			-- Number of other archives this one replaces&lt;br /&gt;
                                        --do not used filenames, use the internal name, or downloader programs will fail to download the dependencies automatically&lt;br /&gt;
		},&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are not depending on OTA files, you will have to supply your own cursors.&lt;br /&gt;
&lt;br /&gt;
There are some extra bits in these examples, but I work on the &amp;quot;better safe than sorry&amp;quot; principle... which is to wait for someone who knows what they are doing to fix my articles. &lt;br /&gt;
&lt;br /&gt;
You will want to save this file as plain text in &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/&lt;br /&gt;
&lt;br /&gt;
===armorDefs.lua===&lt;br /&gt;
&lt;br /&gt;
I&#039;m not exactly sure how this works, but the file needs to exist, so either steal one from another mod and modify it... or just make a file that looks like this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
local armorDefs = {&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will want to save this file as a lua file in &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/gamedata&lt;br /&gt;
&lt;br /&gt;
===sidedata.lua===&lt;br /&gt;
&lt;br /&gt;
Start by stealing the sidedata.lua file from your dependency mod if you have one, then edit it to include your units/side.&lt;br /&gt;
&lt;br /&gt;
Basically this file is in the form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
local sideData = {&lt;br /&gt;
	[1] = {&lt;br /&gt;
		name      = &#039;Good Guys&#039;,&lt;br /&gt;
		startunit = &#039;GG_comm&#039;,&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are also additional &amp;quot;[X]&amp;quot; entries for each side/team/commander-choice available in the mod-selector you choose.&lt;br /&gt;
&lt;br /&gt;
You will save this file as lua file in &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/gamedata/&lt;br /&gt;
&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Coolfile:&lt;br /&gt;
&lt;br /&gt;
The engine will stop spawning start units and resources anymore. &lt;br /&gt;
Please read this[http://springrts.com/phpbb/viewtopic.php?f=14&amp;amp;t=21883] for more information.&lt;br /&gt;
&lt;br /&gt;
(annotated on 2010-10-23)&lt;br /&gt;
&lt;br /&gt;
Moved the buildOptions definitions into the unitDef definitions, LuaParser &lt;br /&gt;
Please read the change log line 77 [http://springrts.com/wiki/The_Talking_Changelog] for more information.&lt;br /&gt;
&lt;br /&gt;
(annotated on 2010-10-24)&lt;br /&gt;
&lt;br /&gt;
===moveDefs.lua===&lt;br /&gt;
This file determines the footprint of your units, the angle of slopes they can climb and in how deep water they can drive. It contains several entries, all in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
local moveDefs = {&lt;br /&gt;
	KBOT1 = { -- This is the name. Unit files refer to this name.&lt;br /&gt;
		footprintx = 1, -- This is how big the X dimension is of the footprint in Spring units probably?&lt;br /&gt;
		footprintz = 1, -- This is how big the Y dimension is of the footprint in Spring units probably?&lt;br /&gt;
		maxwaterdepth = 15, -- This is how big the Y dimension is of the footprint in Spring units probably?&lt;br /&gt;
		maxslope = 36, -- The maximum angle of slopes this unit can climb.&lt;br /&gt;
		crushstrength = 5, -- This determines if the unit/unit class can crush certain features&lt;br /&gt;
	},&lt;br /&gt;
	-- etc..&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sounds.lua===&lt;br /&gt;
This file refers to all the sounds your units make, so Spring knows which sound file is linked to what action. It contains entries in the following format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
local Sounds = {&lt;br /&gt;
   SoundItems = {&lt;br /&gt;
      IncomingChat = {&lt;br /&gt;
         file = &amp;quot;sounds/nexuiz/talk.wav&amp;quot;,&lt;br /&gt;
         priority = 15,&lt;br /&gt;
         preload = true,&lt;br /&gt;
      },&lt;br /&gt;
      MultiSelect = {&lt;br /&gt;
         file = &amp;quot;sounds/ota/button9.wav&amp;quot;,&lt;br /&gt;
         priority = 15,&lt;br /&gt;
         preload = true,&lt;br /&gt;
         rolloff = 0.1,&lt;br /&gt;
      },&lt;br /&gt;
      MapPoint = {&lt;br /&gt;
         file = &amp;quot;sounds/bzflag/teamgrab.wav&amp;quot;,&lt;br /&gt;
         priority = 15,&lt;br /&gt;
         preload = true,&lt;br /&gt;
         rolloff = 0.1,&lt;br /&gt;
      },&lt;br /&gt;
      FailedCommand = {&lt;br /&gt;
         file = &amp;quot;sounds/openQuarz/pkup.wav&amp;quot;,&lt;br /&gt;
         gain = 0.75,&lt;br /&gt;
         priority = 15,&lt;br /&gt;
         preload = true,&lt;br /&gt;
         in3d = false,&lt;br /&gt;
      },&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Step 7:Adding a Build Pic==&lt;br /&gt;
&lt;br /&gt;
Add a 96x96 BMP to your &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/unitpics/ folder named either &amp;quot;UnitName.bmp&amp;quot; or whatever you specified in the &amp;quot;BuildPic=&amp;quot; line of your fbi.&lt;br /&gt;
&lt;br /&gt;
==Step 8:Adding a Side Pic==&lt;br /&gt;
&lt;br /&gt;
Add a 16x16 BMP to your &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/sidepics/ folder named &amp;quot;teamname.bmp&amp;quot; or whatever you specified in the &amp;quot;name=&amp;quot; line of your SIDEDATA.TDF for each side/team you have added.&lt;br /&gt;
&lt;br /&gt;
==Step 9:Scriptor==&lt;br /&gt;
&lt;br /&gt;
===Stealing a Script===&lt;br /&gt;
Open someone else&#039;s script in scriptor that works the way you want your script to work, look at the top where it&#039;s talking about &amp;quot;piece names&amp;quot;... then change those piece names to be the piece names of your unit and do a find/replace to make all the places where those pieces show up to be your pieces too.  Compile it so its name is the same as the &amp;quot;UnitName=&amp;quot; value in your &amp;quot;UnitName.fbi&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
XXreminder to someone to link to a proper scripting tutorial&lt;br /&gt;
&lt;br /&gt;
Put the bos and cob files for your unit script in &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/scripts&lt;br /&gt;
&lt;br /&gt;
==Step 10:Compiling Your Mod==&lt;br /&gt;
&lt;br /&gt;
You may want to check your mod directory and make sure it follows the structure defined [[Mod_Development:Archives|here]].&lt;br /&gt;
&lt;br /&gt;
navigate to your &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt; and select everything and choose &amp;quot;add to archive &amp;lt;mod name&amp;gt;.7z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
make a copy of this file called &amp;lt;mod name&amp;gt;v0.7z in your working directory so you don&#039;t screw anything up later, then make a copy of it called &amp;lt;mod name&amp;gt;.sd7 in the mods directory of spring.&lt;br /&gt;
&lt;br /&gt;
An alternative, added in more recent versions is the &amp;quot;.SDD&amp;quot; folder, to use this, copy the entire &amp;lt;mod name&amp;gt; folder in the mods directory of spring and rename it as &amp;quot;&amp;lt;mod name&amp;gt;.SDD&amp;quot;.  The advantage to the &amp;quot;.SDD&amp;quot; method is that you can tweak settings and add files without recompressing your mod all the time.  When it comes time to distribute your mod use &amp;quot;.sd7&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
EXAMPLES:&lt;br /&gt;
If your mod is called JoesMod you will have a file called &amp;quot;JoesMod.sd7&amp;quot; or a folder called &amp;quot;JoesMod.SDD&amp;quot; in your spring mods directory.&lt;br /&gt;
&lt;br /&gt;
==Step 11:Testing Your Mod==&lt;br /&gt;
Open Up your lobby client, pick your mod from the drop-down list of the games in host battle or singleplayer mode if your lobby supports it(if it doesn&#039;t show up you screwed up your modinfo.txt), choose your tiny map from the map list and press start.  If it doesn&#039;t break and your unit shows up, you have created all the neccessary files... yay!&lt;br /&gt;
&lt;br /&gt;
Gotchas:&lt;br /&gt;
*If it doesn&#039;t work, check you didn&#039;t zip the folder itself, but the contents, ie if you open mymod.sd7 with 7zip, you should see folders such as &amp;quot;unittextures&amp;quot; rather than a folder &amp;quot;mymod&amp;quot; containing unittextures.&lt;br /&gt;
&lt;br /&gt;
Old Category:Game development&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Simple_Game_Tutorial&amp;diff=16879</id>
		<title>Simple Game Tutorial</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Simple_Game_Tutorial&amp;diff=16879"/>
		<updated>2012-06-01T12:49:23Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[template:Deprecated]]&lt;br /&gt;
&lt;br /&gt;
Until I Finish [[Mod Development]] is the place to go.&lt;br /&gt;
&lt;br /&gt;
This Tutorial Aims to get a person from knowing nothing about Spring to the point where they can create and edit mods.&lt;br /&gt;
&lt;br /&gt;
Right now I am working from memory so you may want to correct me when I&#039;m wrong, I will try to cross link from my summaries to the appropriate articles available in other places.&lt;br /&gt;
&lt;br /&gt;
I will not go too deep into making 3do&#039;s because they are old and dumb... but I&#039;ll try to make note of the differences here.&lt;br /&gt;
&lt;br /&gt;
I don&#039;t know anything about scripting right now, so that section is likely to be sparse when I write it, I hope that someone will expand on it.&lt;br /&gt;
&lt;br /&gt;
=Book 1: The First Unit=&lt;br /&gt;
&lt;br /&gt;
==Step 1:Planning==&lt;br /&gt;
Who cares about planning, you know what you&#039;re doing... just come up with an idea for a mod... I made a chess set... if you don&#039;t have a real idea and just want to make a model show up in the game... then yeah... this is the place to start... I&#039;d do that if I were you.&lt;br /&gt;
&lt;br /&gt;
Another good thing to do at this point is to creat a &amp;quot;working directory&amp;quot;, and inside it create a directory with the name that your mod will have... after many headaches I decided it&#039;s best to put this in the root directory of your system so it&#039;s really easy to find when you are switching around back and forth between folders and keep having to find your files over and over again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Step 2:Getting The Tools==&lt;br /&gt;
You will need a bunch of stuff... here&#039;s the list (I assume you are using windows)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Want:&#039;&#039;&lt;br /&gt;
*[http://springrts.com/wiki/Download Spring] - The main program, you will likely need this to test if you&#039;ve screwed up&lt;br /&gt;
*A Tiny Map (2x2) - to test your mod fast &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Need:&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Program listings can be found here:&#039;&#039;&#039; &#039;&#039;&#039;[http://springrts.com/wiki/Map,_Mod,_And_Unit_Development_Programs Map, Mod, And Unit Development Programs]&#039;&#039;&#039;&lt;br /&gt;
*3D Modeling Program - &#039;&#039;&#039;See above link&#039;&#039;&#039;&lt;br /&gt;
*Notepad - to edit all the myriad of text files&lt;br /&gt;
*A Graphical Editing Program - needs to handle RGBA TGAs (aka TGA&#039;s with alpha channels), I suggest Photoshop if you have it, or The GIMP... needed for all of the texture making for UVmapping stuff... &#039;&#039;&#039;See above link&#039;&#039;&#039;&lt;br /&gt;
*Upspring 1.3 - To convert your models to the appropriate s3o format (if you want to fight with 3do builder, then go ahead... a good trick is to get your model into Upspring first and adjust all the hierarchy, then save it as an 3do... but why bother?). &#039;&#039;&#039;See above link&#039;&#039;&#039;&lt;br /&gt;
*Scriptor - to make and compile your units &amp;quot;animation script&amp;quot;... or steal someone else&#039;s and make it work for your unit. &#039;&#039;&#039;See above link&#039;&#039;&#039;&lt;br /&gt;
*Compression Utility - (I suggest [http://www.7-zip.org/ 7zip] - even if you are using zip compression and not 7zip, it&#039;s still good to have)&lt;br /&gt;
&lt;br /&gt;
==Step 3:Making a 3D Model==&lt;br /&gt;
&lt;br /&gt;
Go into your 3D modeling program and make a 3D model, [http://taspring.clan-sy.com/w/images/b/b4/WingsCombine.PNG combine] all the objects and UV map the model, then separate it out into any parts that need to move independently of each other.  Then Export the UV map as an Image File and Export the whole thing as a 3ds file.  Put the original wings file, the UVMap image and the 3ds file into your working directory so you can find them later.&lt;br /&gt;
&lt;br /&gt;
Wings 3D UV Mapping tutorial has been started here - [[Units:CreateModel]]&lt;br /&gt;
&lt;br /&gt;
==Step 4:Fixing Your Images==&lt;br /&gt;
&lt;br /&gt;
[[Basic s3o unit making guide|This Article includes a UVMapping Guide]]&lt;br /&gt;
&lt;br /&gt;
Open up your UVMap in Photoshop (or whatever) go to the layer/chooser dialog box and go to the Channels Tab, add a new layer (it should default to alpha) and fill it with 99% black so you can see your texture in upspring.  If you want to can paint the UVmap and put white (1% black) on the alpha channel where you want your team colors to show up (you can use something between 1% and 99% to get a blend of your team color along with the texture... for example 50% will give you your texture with 50% of the team color mixed in...)&lt;br /&gt;
&lt;br /&gt;
I don&#039;t know how to do glow maps... XXreminder for someone to create a Glowmapping tutorial... you don&#039;t actually need one for the model to show up.&lt;br /&gt;
&lt;br /&gt;
Save these images both in the working directory.&lt;br /&gt;
&lt;br /&gt;
Save a copy of these images in tga format into &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/unittextures&lt;br /&gt;
&lt;br /&gt;
==Step 5:Upspring==&lt;br /&gt;
&lt;br /&gt;
===Importing Your 3ds===&lt;br /&gt;
Open [[upspring]], go to file&amp;gt;load model and navigate to and open your 3DS model you exported, you should see the model in upspring as a 3d mesh.  Go to the model tab and set the radius and height values to something other then zero... this defines where the health bar will show up, and more importantly, how big the collision sphere will be.&lt;br /&gt;
&lt;br /&gt;
You will also need to use all of the other tools on those tabs to resize and rotate and move your model to the right place... wings makes models that are 90 degrees off and about 30 times smaller than most spring models... make sure you click the &amp;quot;apply transform&amp;quot; button after any changes that you actually want to show up in the game.&lt;br /&gt;
&lt;br /&gt;
Also, you will want to make the hierarchy work using the cut, paste, and add empty buttons.  You will need an object called &amp;quot;base&amp;quot; that all the other objects are connected to... the &amp;quot;origin object&amp;quot;... sometimes you get lucky and wings exports it properly... usually not.&lt;br /&gt;
&lt;br /&gt;
===Importing Your UV and Glowmaps===&lt;br /&gt;
&lt;br /&gt;
Go to the textures tab and make your UV/texture/team-color map as &amp;quot;texture1&amp;quot; and your UV/glow/reflectivity map as &amp;quot;texture2&amp;quot;... it should show up correctly in the preview pane.&lt;br /&gt;
&lt;br /&gt;
===Exporting Your s3o===&lt;br /&gt;
Choose File&amp;gt;Save Model As then in the drop down select &amp;quot;s3o&amp;quot; and type an appropriate name. This model should be saved to your working directory, and a copy of it made to &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/objects3d/&lt;br /&gt;
&lt;br /&gt;
==Step 6: Lua files==&lt;br /&gt;
&lt;br /&gt;
===UnitName.lua===&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
For Reference visit [[Units:FBI]], but again, the easiest way to do this is to extract an existing mod and find the fbi for a unit that behaves similarly to the one you are trying to make and rename and modify it.&lt;br /&gt;
&lt;br /&gt;
Some More Specific Information Not Clear in the &amp;quot;Units:FBI&amp;quot; article:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Name+&amp;quot; &amp;quot;+Description=Spring Display Name&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
So if you have the following settings:&lt;br /&gt;
&lt;br /&gt;
 Name=Tiger;&lt;br /&gt;
 Description=Fast Attack C.A.T.;&lt;br /&gt;
&lt;br /&gt;
The Tooltip will show &amp;quot;Tiger Fast Attack C.A.T.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BuildPic Defaults to UnitName.bmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
So if you leave out &amp;quot;BuildPic=filename.bmp;&amp;quot; Spring will look in /unitpics/ for a file called &amp;quot;UnitName.bmp&amp;quot; to use as your buildpic.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ObjectName&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you want to use an s3o object, you will need to specify with &amp;quot;ObjectName=UnitName&#039;&#039;&#039;.S3O;&#039;&#039;&#039;&amp;quot; otherwise it will look for &amp;quot;UnitName.3do&amp;quot;.  Also, you don&#039;t have to use &amp;quot;UnitName&amp;quot; as the filename and, in fact, multiple Unit&#039;s fbi files can reference the same 3D models. It is easier, however, for people to figure out what you are doing in your mod if you follow the standards.&lt;br /&gt;
&lt;br /&gt;
Save this file as plain text in &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/units/&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unitDef = {&lt;br /&gt;
  unitname           = [[arm_spider]],&lt;br /&gt;
  name               = [[Weaver]],&lt;br /&gt;
  description        = [[Cloaking Construction Spider, Builds at 9 m/s]],&lt;br /&gt;
  acceleration       = 0.15,&lt;br /&gt;
  bmcode             = [[1]],&lt;br /&gt;
  brakeRate          = 0.15,&lt;br /&gt;
  buildCostEnergy    = 230,&lt;br /&gt;
  buildCostMetal     = 230,&lt;br /&gt;
  buildDistance      = 80,&lt;br /&gt;
  builder            = true,&lt;br /&gt;
&lt;br /&gt;
  buildoptions       = {&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  buildPic           = [[arm_spider.png]],&lt;br /&gt;
  buildTime          = 230,&lt;br /&gt;
  canAttack          = false,&lt;br /&gt;
  canGuard           = true,&lt;br /&gt;
  canMove            = true,&lt;br /&gt;
  canPatrol          = true,&lt;br /&gt;
  canreclamate       = [[1]],&lt;br /&gt;
  canstop            = [[1]],&lt;br /&gt;
  category           = [[LAND UNARMED]],&lt;br /&gt;
  cloakCost          = 1,&lt;br /&gt;
  cloakCostMoving    = 2,&lt;br /&gt;
  corpse             = [[DEAD]],&lt;br /&gt;
&lt;br /&gt;
  customParams       = {&lt;br /&gt;
    description_bp = [[Aranha e de construÃƒÂ§?o, ConstrÃƒÂ³i a 6 m/s]],&lt;br /&gt;
    description_es = [[Ara?a de construcciÃƒÂ³n, construye a 6 m/s]],&lt;br /&gt;
    description_fi = [[Rakentaja/kaikuluotainkiipeilij?, rakentaa 6m/s nopeudella]],&lt;br /&gt;
    description_fr = [[Araign?e de Construction, Construit ? 6 m/s]],&lt;br /&gt;
    description_it = [[Ragno do costruzione occultante, costruisce a 6 m/s]],&lt;br /&gt;
    description_pl = [[Paj?k konstruktor, buduje z pr?dko?ci? 6m/s]],&lt;br /&gt;
    helptext       = [[The Weaver is a constructor that can climb over any obstacle and build defenses on high ground.]],&lt;br /&gt;
    helptext_bp    = [[Weaver ÃƒÂ© o construtor escalador camuflÃƒÂ¡vel de NOVA. Pode subir qualquer obstÃƒÂ¡culo, mas constrÃƒÂ³i mais devagar que construtores normais.]],&lt;br /&gt;
    helptext_es    = [[El Weaver es el constructor que puede treparse sobre qualquier obstÃƒÂ¡culo y construir defensas en terreno alto]],&lt;br /&gt;
    helptext_fi    = [[Weaver pystyy liikkumaan vaikeakulkuisimmassakin maastossa ja rakentamaan vaivatta my?s useimmille muille rakentajille saavuttamattomiin paikkoihin.]],&lt;br /&gt;
    helptext_fr    = [[Le weaver est un robot de construction tout terrain qui peut batir des d?fenses en terrain ?lev?.]],&lt;br /&gt;
    helptext_it    = [[Il Weaver ÃƒÂ© un costruttore che puo arrampicarsi su qualunque ostacolo e costruire difese nel terreno alto]],&lt;br /&gt;
    helptext_pl    = [[Weaver jest konstruktorem mog?cym wspina? si? po ka?dej powierzchni oraz posiadaj?cym mo?liwo?? maskowania si?]],&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  defaultmissiontype = [[Standby]],&lt;br /&gt;
  designation        = [[ARM-MLSPD]],&lt;br /&gt;
  energyMake         = 0.15,&lt;br /&gt;
  energyUse          = 0,&lt;br /&gt;
  explodeAs          = [[BIG_UNITEX]],&lt;br /&gt;
  footprintX         = 3,&lt;br /&gt;
  footprintZ         = 3,&lt;br /&gt;
  iconType           = [[builder]],&lt;br /&gt;
  mass               = 115,&lt;br /&gt;
  maxDamage          = 750,&lt;br /&gt;
  maxslope           = 16,&lt;br /&gt;
  maxSlope           = 72,&lt;br /&gt;
  maxVelocity        = 1.7,&lt;br /&gt;
  maxWaterDepth      = 22,&lt;br /&gt;
  metalMake          = 0.15,&lt;br /&gt;
  movementClass      = [[TKBOT3]],&lt;br /&gt;
  noAutoFire         = false,&lt;br /&gt;
  noChaseCategory    = [[TERRAFORM SATELLITE FIXEDWING GUNSHIP HOVER SHIP SWIM SUB LAND FLOAT SINK]],&lt;br /&gt;
  objectName         = [[ARMMLSPD]],&lt;br /&gt;
  radarDistanceJam   = 256,&lt;br /&gt;
  seismicSignature   = 16,&lt;br /&gt;
  selfDestructAs     = [[BIG_UNITEX]],&lt;br /&gt;
  showNanoSpray      = false,&lt;br /&gt;
  side               = [[ARM]],&lt;br /&gt;
  sightDistance      = 295,&lt;br /&gt;
  smoothAnim         = true,&lt;br /&gt;
  steeringmode       = [[1]],&lt;br /&gt;
  TEDClass           = [[CNSTR]],&lt;br /&gt;
  terraformSpeed     = 450,&lt;br /&gt;
  threed             = [[1]],&lt;br /&gt;
  turninplace        = 0,&lt;br /&gt;
  turnRate           = 1020,&lt;br /&gt;
  workerTime         = 9,&lt;br /&gt;
  zbuffer            = [[1]],&lt;br /&gt;
&lt;br /&gt;
  featureDefs        = {&lt;br /&gt;
&lt;br /&gt;
    DEAD  = {&lt;br /&gt;
      description      = [[Wreckage - Weaver]],&lt;br /&gt;
      blocking         = true,&lt;br /&gt;
      category         = [[arm_corpses]],&lt;br /&gt;
      damage           = 850,&lt;br /&gt;
      featureDead      = [[DEAD2]],&lt;br /&gt;
      featurereclamate = [[smudge01]],&lt;br /&gt;
      footprintX       = 3,&lt;br /&gt;
      footprintZ       = 3,&lt;br /&gt;
      height           = [[40]],&lt;br /&gt;
      hitdensity       = [[100]],&lt;br /&gt;
      metal            = 92,&lt;br /&gt;
      object           = [[ARMMLSPD_dead]],&lt;br /&gt;
      reclaimable      = true,&lt;br /&gt;
      reclaimTime      = 92,&lt;br /&gt;
      seqnamereclamate = [[tree1reclamate]],&lt;br /&gt;
      world            = [[All Worlds]],&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    DEAD2 = {&lt;br /&gt;
      description      = [[Debris - Weaver]],&lt;br /&gt;
      blocking         = false,&lt;br /&gt;
      category         = [[heaps]],&lt;br /&gt;
      damage           = 850,&lt;br /&gt;
      featureDead      = [[HEAP]],&lt;br /&gt;
      featurereclamate = [[smudge01]],&lt;br /&gt;
      footprintX       = 3,&lt;br /&gt;
      footprintZ       = 3,&lt;br /&gt;
      height           = [[4]],&lt;br /&gt;
      hitdensity       = [[100]],&lt;br /&gt;
      metal            = 92,&lt;br /&gt;
      object           = [[debris3x3b.s3o]],&lt;br /&gt;
      reclaimable      = true,&lt;br /&gt;
      reclaimTime      = 92,&lt;br /&gt;
      seqnamereclamate = [[tree1reclamate]],&lt;br /&gt;
      world            = [[All Worlds]],&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    HEAP  = {&lt;br /&gt;
      description      = [[Debris - Weaver]],&lt;br /&gt;
      blocking         = false,&lt;br /&gt;
      category         = [[heaps]],&lt;br /&gt;
      damage           = 850,&lt;br /&gt;
      featurereclamate = [[smudge01]],&lt;br /&gt;
      footprintX       = 3,&lt;br /&gt;
      footprintZ       = 3,&lt;br /&gt;
      height           = [[4]],&lt;br /&gt;
      hitdensity       = [[100]],&lt;br /&gt;
      metal            = 46,&lt;br /&gt;
      object           = [[debris3x3b.s3o]],&lt;br /&gt;
      reclaimable      = true,&lt;br /&gt;
      reclaimTime      = 46,&lt;br /&gt;
      seqnamereclamate = [[tree1reclamate]],&lt;br /&gt;
      world            = [[All Worlds]],&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return lowerkeys({ arm_spider = unitDef })&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save this file as a lua file in &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/units/&lt;br /&gt;
&lt;br /&gt;
===modinfo.lua===&lt;br /&gt;
&lt;br /&gt;
modinfo.lua is a lua file that defines a number of things that are used when loading a mod, most of the information is self explanatory but basically what you are doing is defining what is going to show up in whatever mod-selection interface you use as well as what other files need to be loaded into memory in order for your mod to work.&lt;br /&gt;
&lt;br /&gt;
====Making a New Mod with your unit/units====&lt;br /&gt;
The following is an example of what will be in your [[modinfo.lua]] file if you are starting from scratch and making your own mod. This is also good when you are just testing one unit to see if it works.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
return {&lt;br /&gt;
		-- The name is shown in the selection interface&lt;br /&gt;
		game = &amp;quot;MyMod&amp;quot;,&lt;br /&gt;
		shortGame = &amp;quot;MM&amp;quot;,&lt;br /&gt;
		name = &amp;quot;My Mod&amp;quot;,&lt;br /&gt;
		shortName = &amp;quot;MM&amp;quot;,&lt;br /&gt;
		version = &amp;quot;4.0&amp;quot;,&lt;br /&gt;
		mutator = &amp;quot;Heroes&amp;quot;,&lt;br /&gt;
		-- These can be shown by the selection interface&lt;br /&gt;
		description = &amp;quot;My Mod That I Made&amp;quot;,&lt;br /&gt;
		url = &amp;quot;http://www.theplacepeoplecangetthelatestversionofyourmod.com&amp;quot;,&lt;br /&gt;
		-- What kind of mod this is &lt;br /&gt;
		--  0 - Hidden (support mod that can&#039;t be selected, such as OTA_textures) &lt;br /&gt;
		--  1 - Normal, only one can be selected at a time &lt;br /&gt;
		--  2 - Addon, any number of these can be selected. Could be used &lt;br /&gt;
		--      for single units for example. &lt;br /&gt;
		--  others - perhaps mutators and addon races that can be &lt;br /&gt;
		--           enabled in addition to XTA for example? &lt;br /&gt;
		modtype = &amp;quot;1&amp;quot;,&lt;br /&gt;
		-- Number of other archives this one depends on &lt;br /&gt;
		depend= {&lt;br /&gt;
			&amp;quot;Spring content v1&amp;quot;,&lt;br /&gt;
			&amp;quot;Spring Cursors&amp;quot;,&lt;br /&gt;
			&amp;quot;Spring Bitmaps&amp;quot;,&lt;br /&gt;
			-- Number of other content names this one replaces&lt;br /&gt;
                        added comment about filename vs unitsync name for dependency&lt;br /&gt;
		},&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adding Your Unit to an Existing Mod====&lt;br /&gt;
The following is an example of what will be in your modinfo.lua file if you are adding new units to an existing mod (in this case XTA SE v066), this is good for adding units to the build tree of an existing mod or adding a whole new team.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Description of the mod control file recognized by spring:&lt;br /&gt;
return {&lt;br /&gt;
		-- The name is shown in the selection interface&lt;br /&gt;
		game = &amp;quot;XTASE_MyUnits&amp;quot;,&lt;br /&gt;
		shortGame = &amp;quot;XTASEMU&amp;quot;,&lt;br /&gt;
		name = &amp;quot;XTASEv0.66 with+My Units&amp;quot;,&lt;br /&gt;
		shortName = &amp;quot;XTASEMU&amp;quot;,&lt;br /&gt;
		version = &amp;quot;4.0&amp;quot;,&lt;br /&gt;
		mutator = &amp;quot;Heroes&amp;quot;,&lt;br /&gt;
		-- These can be shown by the selection interface&lt;br /&gt;
		description = &amp;quot;xta_se_v066 with the cool tank I made&amp;quot;,&lt;br /&gt;
		url = &amp;quot;http://www.fileuniverse.com/exactlocationblahblahblah&amp;quot;,&lt;br /&gt;
		-- What kind of mod this is &lt;br /&gt;
		--  0 - Hidden (support mod that can&#039;t be selected, such as OTA_textures) &lt;br /&gt;
		--  1 - Normal, only one can be selected at a time &lt;br /&gt;
		--  2 - Addon, any number of these can be selected. Could be used &lt;br /&gt;
		--      for single units for example. &lt;br /&gt;
		--  others - perhaps mutators and addon races that can be &lt;br /&gt;
		--           enabled in addition to xta for example? &lt;br /&gt;
		modtype = &amp;quot;1&amp;quot;,&lt;br /&gt;
		-- Number of other archives this one depends on &lt;br /&gt;
		depend= {&lt;br /&gt;
			&amp;quot;XTAsev066&amp;quot;,&lt;br /&gt;
                        &amp;quot;Spring Cursors&amp;quot;,&lt;br /&gt;
                        &amp;quot;Spring content v1&amp;quot;,&lt;br /&gt;
			-- Number of other archives this one replaces&lt;br /&gt;
                                        --do not used filenames, use the internal name, or downloader programs will fail to download the dependencies automatically&lt;br /&gt;
		},&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are not depending on OTA files, you will have to supply your own cursors.&lt;br /&gt;
&lt;br /&gt;
There are some extra bits in these examples, but I work on the &amp;quot;better safe than sorry&amp;quot; principle... which is to wait for someone who knows what they are doing to fix my articles. &lt;br /&gt;
&lt;br /&gt;
You will want to save this file as plain text in &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/&lt;br /&gt;
&lt;br /&gt;
===armorDefs.lua===&lt;br /&gt;
&lt;br /&gt;
I&#039;m not exactly sure how this works, but the file needs to exist, so either steal one from another mod and modify it... or just make a file that looks like this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
local armorDefs = {&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will want to save this file as a lua file in &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/gamedata&lt;br /&gt;
&lt;br /&gt;
===sidedata.lua===&lt;br /&gt;
&lt;br /&gt;
Start by stealing the sidedata.lua file from your dependency mod if you have one, then edit it to include your units/side.&lt;br /&gt;
&lt;br /&gt;
Basically this file is in the form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
local sideData = {&lt;br /&gt;
	[1] = {&lt;br /&gt;
		name      = &#039;Good Guys&#039;,&lt;br /&gt;
		startunit = &#039;GG_comm&#039;,&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are also additional &amp;quot;[X]&amp;quot; entries for each side/team/commander-choice available in the mod-selector you choose.&lt;br /&gt;
&lt;br /&gt;
You will save this file as lua file in &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/gamedata/&lt;br /&gt;
&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Coolfile:&lt;br /&gt;
&lt;br /&gt;
The engine will stop spawning start units and resources anymore. &lt;br /&gt;
Please read this[http://springrts.com/phpbb/viewtopic.php?f=14&amp;amp;t=21883] for more information.&lt;br /&gt;
&lt;br /&gt;
(annotated on 2010-10-23)&lt;br /&gt;
&lt;br /&gt;
Moved the buildOptions definitions into the unitDef definitions, LuaParser &lt;br /&gt;
Please read the change log line 77 [http://springrts.com/wiki/The_Talking_Changelog] for more information.&lt;br /&gt;
&lt;br /&gt;
(annotated on 2010-10-24)&lt;br /&gt;
&lt;br /&gt;
===moveDefs.lua===&lt;br /&gt;
This file determines the footprint of your units, the angle of slopes they can climb and in how deep water they can drive. It contains several entries, all in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
local moveDefs = {&lt;br /&gt;
	KBOT1 = { -- This is the name. Unit files refer to this name.&lt;br /&gt;
		footprintx = 1, -- This is how big the X dimension is of the footprint in Spring units probably?&lt;br /&gt;
		footprintz = 1, -- This is how big the Y dimension is of the footprint in Spring units probably?&lt;br /&gt;
		maxwaterdepth = 15, -- This is how big the Y dimension is of the footprint in Spring units probably?&lt;br /&gt;
		maxslope = 36, -- The maximum angle of slopes this unit can climb.&lt;br /&gt;
		crushstrength = 5, -- This determines if the unit/unit class can crush certain features&lt;br /&gt;
	},&lt;br /&gt;
	-- etc..&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sounds.lua===&lt;br /&gt;
This file refers to all the sounds your units make, so Spring knows which sound file is linked to what action. It contains entries in the following format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
local Sounds = {&lt;br /&gt;
   SoundItems = {&lt;br /&gt;
      IncomingChat = {&lt;br /&gt;
         file = &amp;quot;sounds/nexuiz/talk.wav&amp;quot;,&lt;br /&gt;
         priority = 15,&lt;br /&gt;
         preload = true,&lt;br /&gt;
      },&lt;br /&gt;
      MultiSelect = {&lt;br /&gt;
         file = &amp;quot;sounds/ota/button9.wav&amp;quot;,&lt;br /&gt;
         priority = 15,&lt;br /&gt;
         preload = true,&lt;br /&gt;
         rolloff = 0.1,&lt;br /&gt;
      },&lt;br /&gt;
      MapPoint = {&lt;br /&gt;
         file = &amp;quot;sounds/bzflag/teamgrab.wav&amp;quot;,&lt;br /&gt;
         priority = 15,&lt;br /&gt;
         preload = true,&lt;br /&gt;
         rolloff = 0.1,&lt;br /&gt;
      },&lt;br /&gt;
      FailedCommand = {&lt;br /&gt;
         file = &amp;quot;sounds/openQuarz/pkup.wav&amp;quot;,&lt;br /&gt;
         gain = 0.75,&lt;br /&gt;
         priority = 15,&lt;br /&gt;
         preload = true,&lt;br /&gt;
         in3d = false,&lt;br /&gt;
      },&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Step 7:Adding a Build Pic==&lt;br /&gt;
&lt;br /&gt;
Add a 96x96 BMP to your &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/unitpics/ folder named either &amp;quot;UnitName.bmp&amp;quot; or whatever you specified in the &amp;quot;BuildPic=&amp;quot; line of your fbi.&lt;br /&gt;
&lt;br /&gt;
==Step 8:Adding a Side Pic==&lt;br /&gt;
&lt;br /&gt;
Add a 16x16 BMP to your &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/sidepics/ folder named &amp;quot;teamname.bmp&amp;quot; or whatever you specified in the &amp;quot;name=&amp;quot; line of your SIDEDATA.TDF for each side/team you have added.&lt;br /&gt;
&lt;br /&gt;
==Step 9:Scriptor==&lt;br /&gt;
&lt;br /&gt;
===Stealing a Script===&lt;br /&gt;
Open someone else&#039;s script in scriptor that works the way you want your script to work, look at the top where it&#039;s talking about &amp;quot;piece names&amp;quot;... then change those piece names to be the piece names of your unit and do a find/replace to make all the places where those pieces show up to be your pieces too.  Compile it so its name is the same as the &amp;quot;UnitName=&amp;quot; value in your &amp;quot;UnitName.fbi&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
XXreminder to someone to link to a proper scripting tutorial&lt;br /&gt;
&lt;br /&gt;
Put the bos and cob files for your unit script in &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt;/scripts&lt;br /&gt;
&lt;br /&gt;
==Step 10:Compiling Your Mod==&lt;br /&gt;
&lt;br /&gt;
You may want to check your mod directory and make sure it follows the structure defined [[Mod_Development:Archives|here]].&lt;br /&gt;
&lt;br /&gt;
navigate to your &amp;lt;working directory&amp;gt;/&amp;lt;mod name&amp;gt; and select everything and choose &amp;quot;add to archive &amp;lt;mod name&amp;gt;.7z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
make a copy of this file called &amp;lt;mod name&amp;gt;v0.7z in your working directory so you don&#039;t screw anything up later, then make a copy of it called &amp;lt;mod name&amp;gt;.sd7 in the mods directory of spring.&lt;br /&gt;
&lt;br /&gt;
An alternative, added in more recent versions is the &amp;quot;.SDD&amp;quot; folder, to use this, copy the entire &amp;lt;mod name&amp;gt; folder in the mods directory of spring and rename it as &amp;quot;&amp;lt;mod name&amp;gt;.SDD&amp;quot;.  The advantage to the &amp;quot;.SDD&amp;quot; method is that you can tweak settings and add files without recompressing your mod all the time.  When it comes time to distribute your mod use &amp;quot;.sd7&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
EXAMPLES:&lt;br /&gt;
If your mod is called JoesMod you will have a file called &amp;quot;JoesMod.sd7&amp;quot; or a folder called &amp;quot;JoesMod.SDD&amp;quot; in your spring mods directory.&lt;br /&gt;
&lt;br /&gt;
==Step 11:Testing Your Mod==&lt;br /&gt;
Open Up your lobby client, pick your mod from the drop-down list of the games in host battle or singleplayer mode if your lobby supports it(if it doesn&#039;t show up you screwed up your modinfo.txt), choose your tiny map from the map list and press start.  If it doesn&#039;t break and your unit shows up, you have created all the neccessary files... yay!&lt;br /&gt;
&lt;br /&gt;
Gotchas:&lt;br /&gt;
*If it doesn&#039;t work, check you didn&#039;t zip the folder itself, but the contents, ie if you open mymod.sd7 with 7zip, you should see folders such as &amp;quot;unittextures&amp;quot; rather than a folder &amp;quot;mymod&amp;quot; containing unittextures.&lt;br /&gt;
&lt;br /&gt;
Old Category:Game development&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=8079</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=8079"/>
		<updated>2012-06-01T12:48:15Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Game Development Tutorials */&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;
*[[Map Making: Feature Placer|Feature Placer]]&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]] Particle effects (explosions etc)&lt;br /&gt;
&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;
**[[Armordefs.lua|Units: Armor classes]]&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;
Unit scripts animate units and are needed for various function such as firing weapons.&lt;br /&gt;
* [[Animation-CobLuaDifferences | Differences of .lua and .cob unit scripts]]&lt;br /&gt;
&lt;br /&gt;
==Lua Animations==&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;
*[[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;
*&amp;lt;strike&amp;gt;[[Simple Mod Tutorial|Simple Game Tutorial]]&amp;lt;/strike&amp;gt; - needs to be updated&lt;br /&gt;
&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>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:trouble&amp;diff=7321</id>
		<title>FAQ:trouble</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:trouble&amp;diff=7321"/>
		<updated>2011-01-27T20:58:17Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* I am having sound problems under Linux! What can i do? */  Removed Extra code tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:FAQ]]&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Network==&lt;br /&gt;
&lt;br /&gt;
===My buddy can not connect to a game I&#039;ve opened. What can we do?===&lt;br /&gt;
The engine uses UDP port 8452 by default, which can be changed in the lobby. If you are behind a router, and are having problems hosting, try forwarding the correct port and also make sure the firewall is not blocking it. If you do not know what a port or a firewall is, use a relay host instead: when hosting a game, tick the check-box labeled &amp;quot;Use relayhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note that Spring engine will not connect to already running game, even if lobby client allows it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
&lt;br /&gt;
===I am having really bad framerates (fps) on my dual core! What am I doing wrong?===&lt;br /&gt;
Some of this helped other users:&lt;br /&gt;
&lt;br /&gt;
* This error is sometimes reported by people having multicore-CPUs. To solve this, you could try to restrict it to run on one core. Download the file from http://www.robpol86.com/pages/imagecfg.php follow the instructions, and force the spring exe file (spring.exe) to run on one core.&lt;br /&gt;
&lt;br /&gt;
* Installing the latest processor drivers and Windows hotfixes for your system may also help.&lt;br /&gt;
&lt;br /&gt;
* Also you may try multithreaded version of Spring, which can be downloaded from [[OtherDownloads|here]].&lt;br /&gt;
&lt;br /&gt;
* Also try to disabling the &amp;quot;Exhaust&amp;quot; effect on planes could help: Press f11 while ingame, disable LUPS and Lups manager (by clicking on them to make them turn red)&lt;br /&gt;
&lt;br /&gt;
===How to Alt-Tab out of full-screen on Linux?===&lt;br /&gt;
Play windowed with &#039;&#039;/grabinput&#039;&#039;, or [http://springrts.com/phpbb/viewtopic.php?p=449972#p449972 use devilspie].&lt;br /&gt;
&lt;br /&gt;
===I use an ATI or Intel graphic card on Linux with Open-Source drivers, and the map is all white! Is there a solution?===&lt;br /&gt;
Due to patents S3TC texture support is disabled by default. To enable it you need the tool driconf (note, you no longer require libdxtn):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ sudo apt-get install libgl1-mesa-dev driconf&amp;lt;br&amp;gt;&lt;br /&gt;
$ driconf&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the &amp;quot;Image Quality&amp;quot; tab activate &amp;quot;Enable S3TC texture compression even if software support is not available&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Related forum threads:&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=20&amp;amp;t=20809 Spring on Intel or ATI &#039;open-source&#039; drivers]&lt;br /&gt;
&lt;br /&gt;
===It crashes, hangs, ...===&lt;br /&gt;
Possible fixes are: &lt;br /&gt;
* updating your graphics driver&lt;br /&gt;
* lowering the graphic-settings at SpringSettings&lt;br /&gt;
* disabling graphics effects at SpringSettings&lt;br /&gt;
&lt;br /&gt;
===Nvidia===&lt;br /&gt;
&lt;br /&gt;
====I am having really bad framerates (FPS) on my brand new nVidia graphics card! What am I doing wrong?====&lt;br /&gt;
Turn off &#039;threaded optimizations&#039; for Spring in the nVidia control panel.&lt;br /&gt;
&lt;br /&gt;
====It crashes====&lt;br /&gt;
&lt;br /&gt;
try disabling shadows (SpringSettings)&lt;br /&gt;
&lt;br /&gt;
===Intel===&lt;br /&gt;
&lt;br /&gt;
====Why does spring hang for a few seconds?====&lt;br /&gt;
This bug occurs on maps like FolsomDamDeluxeV2, Tangerline. FPS suddenly drops to 1 and game runs very slowly. This seems to be an Intel driver bug. For Windows Vista/7 try updating driver up to 8.15.10.2246 or newer. For Windows XP there is no solution yet.&lt;br /&gt;
&lt;br /&gt;
Related forum threads:&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=11&amp;amp;t=23541 Intel HD Graphics Driver issue?]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=11&amp;amp;t=23081 Performance issues on Intel X4500]&lt;br /&gt;
&lt;br /&gt;
====Fonts are unreadable====&lt;br /&gt;
[[File:IntelBorkedFonts.png|200px]]&lt;br /&gt;
&lt;br /&gt;
This is a driver bug, try to update your driver.&lt;br /&gt;
&lt;br /&gt;
====It crashes, hangs etc...====&lt;br /&gt;
Possible fixes are:&lt;br /&gt;
* disabling texture-compression at SpringSettings&lt;br /&gt;
* disabling reflective units at SpringSettings&lt;br /&gt;
* [http://downloadcenter.intel.com/ updating your driver]&lt;br /&gt;
* use linux! (yes, this hint sucks, but the open-source-drivers seems to work better...)&lt;br /&gt;
&lt;br /&gt;
===ATI===&lt;br /&gt;
&lt;br /&gt;
==== I&#039;ve got the most recent drivers and the game crashes in atioglxx.dll====&lt;br /&gt;
As of Spring 0.80.5, use only basic or dynamic water. Bump water with disabled shore waves should also work. Reflective or refractive water will make the game crash after 15-20 minutes due to a memory leak.&lt;br /&gt;
&lt;br /&gt;
Spring 0.81.2 and/or Catalyst 10.2 drivers should fix this problem.&lt;br /&gt;
&lt;br /&gt;
====I&#039;ve got a notebook and official AMD ATI drivers refuse to install, what to do?====&lt;br /&gt;
Use [http://www.driverheaven.net/modtool.php ATI Mobility Modder] or unofficial drivers - DNA or Omega. Use [http://google.com Google] or get them from [http://downloads.guru3d.com/Videocards----ATI-Catalyst-(Modified)_c24.html guru3d].&lt;br /&gt;
&lt;br /&gt;
====UI disapears after 5-10 mins of play on old ATI videocards====&lt;br /&gt;
In cmdcolors.txt, simply comment out or remove the following lines:&lt;br /&gt;
 stipplePattern 0xffcc&lt;br /&gt;
 stippleFactor 1&lt;br /&gt;
 stippleSpeed 1.0&lt;br /&gt;
The problem detected on:&lt;br /&gt;
* ATI Radeon X3200 with latest drivers ([http://springrts.com/phpbb/viewtopic.php?f=11&amp;amp;t=20817 ref])&lt;br /&gt;
* ATI Radeon 9500 with Omega drivers 3.8.442 ([http://springrts.com/phpbb/viewtopic.php?f=11&amp;amp;t=23526 ref])&lt;br /&gt;
&lt;br /&gt;
====I see the complete screen full of red/green/yellow or giant dots on minimap====&lt;br /&gt;
&lt;br /&gt;
[[File:Redui-minimap-bug.pngâ€Ž|200px]]&lt;br /&gt;
&lt;br /&gt;
This is a bug somewhere in LUA drawing with ATI. Disable widgets that draw via F11 menu to find the one. There is no real fix. A Widget causing this is &amp;quot;Red UI Minimap&amp;quot;. Setting &amp;quot;Max nano simultaneous particles&amp;quot; (SpringSettings) seems to help, too.&lt;br /&gt;
&lt;br /&gt;
====The textures looks scary====&lt;br /&gt;
[[File:Ati-drawing-issues.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
Try using different driver. This is a known ATI-bug.&lt;br /&gt;
&lt;br /&gt;
====It crashes always at start, hangs etc...====&lt;br /&gt;
Possible fixes are:&lt;br /&gt;
* using basic water (SpringSettings)&lt;br /&gt;
* disabling vsync (SpringSettings)&lt;br /&gt;
* disabling Pixelbuffer objects (SpringSettings)&lt;br /&gt;
* disabling Anti-Aliasing (SpringSettings)&lt;br /&gt;
* updating or even downgrading [http://support.amd.com/ ATI driver]: ATI OpenGL drivers are very buggy, blame ATI for that!&lt;br /&gt;
&lt;br /&gt;
==Sound==&lt;br /&gt;
&lt;br /&gt;
===The Sound is crackling/pausing in Windows, what can i do?===&lt;br /&gt;
Try:&lt;br /&gt;
* Update the sounds driver&lt;br /&gt;
* Enable SystemSoundsService in Vista/Seven&lt;br /&gt;
&lt;br /&gt;
===I am having sound problems under Linux! What can i do?===&lt;br /&gt;
In more then 90% of the cases, this is caused by PulseAudio. If this is the problem, there are two known solutions to solve it. Use one of them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;disable non-ALSA (preferred)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure you have the OpenAL-Soft configuration utility. You might want to run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# install&lt;br /&gt;
sudo apt-get install alsoft-conf&lt;br /&gt;
# run&lt;br /&gt;
alsoft-conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the &amp;quot;backend&amp;quot; tab, keep only &amp;quot;ALSA&amp;quot; on the left column, then save. Done!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Side Note:&#039;&#039; ALSA is redirected to the PulseAudio layer when installed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;remove PulseAudio (alternative)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can safely remove PulseAudio from your system. To do this, open your favorite package manager (eg. Synaptic under Ubuntu), and search for packages with &amp;quot;pulse&amp;quot; in their name. From these, keep only the ones with names that start with &amp;quot;lib&amp;quot;, and remove all others.&lt;br /&gt;
&lt;br /&gt;
==Misc==&lt;br /&gt;
&lt;br /&gt;
===I have a problem that is not described here! What can i do?===&lt;br /&gt;
There is a number of things you can do, among these are:&lt;br /&gt;
* Search in the [http://springrts.com/phpbb/viewforum.php?f=11 Help &amp;amp; Bugs Forum], and ask if you can not find a suiting topic.&lt;br /&gt;
* Look at the [[Gentoo_install#Linux_specific_Troubleshooting|Linux only FAQ]].&lt;br /&gt;
* Ask for help in the lobby in a suiting channel, eg: #springlobby, #de, #fr, #ai, #main&lt;br /&gt;
* Ask the FAQ-Bot in the lobby in channel #springlobby. To get a list of topics, write &#039;&#039;!faqlist&#039;&#039; and then use &#039;&#039;!faq &amp;lt;topic-name&amp;gt;&#039;&#039; to get the help text. For example, try &#039;&#039;!faq rename&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7098</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7098"/>
		<updated>2010-02-18T00:31:29Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Where do I put all these files? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S3O), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders, (Mod-)Devs, Game Developers&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term &amp;quot;Units&amp;quot; is used both to describe these definitions and the resulting instances in games.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, texture, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), Contains the heightmap, metal map, typemap and and the feature and grass layout information&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is referred to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could for example use Lua, in conjunction with the Spring Engine, to build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave. &#039;&#039;&#039;BOS&#039;&#039;&#039; files are the source-code form of a COB file, they are sometimes included along with the COB files by kind Game Developers to be used as reference.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
* Data Files (Plain Text files with the extension .TDF (for &amp;quot;Total Annihilation Data File&amp;quot;) or .FBI)&lt;br /&gt;
* Textures (in the form of Image files)&lt;br /&gt;
* Models (in 3DO or S3O format)&lt;br /&gt;
* Scripts (in Lua or compiled COB format)&lt;br /&gt;
* Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
* Map Data (Plain Text SMD Files)&lt;br /&gt;
* Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMF files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type or Map:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;PackageName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to PackageName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to PackageName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:File.gif]]modinfo.lua - basic information about a Game Type and it&#039;s dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images related to Cursors&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF - Old Style way to decide which units can be built by what units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Lua&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Image textures for S3O models&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images for 3DO models&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7097</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7097"/>
		<updated>2010-02-18T00:25:45Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Where do I put all these files? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S3O), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders, (Mod-)Devs, Game Developers&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term &amp;quot;Units&amp;quot; is used both to describe these definitions and the resulting instances in games.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, texture, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), Contains the heightmap, metal map, typemap and and the feature and grass layout information&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is referred to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could for example use Lua, in conjunction with the Spring Engine, to build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave. &#039;&#039;&#039;BOS&#039;&#039;&#039; files are the source-code form of a COB file, they are sometimes included along with the COB files by kind Game Developers to be used as reference.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
* Data Files (Plain Text files with the extension .TDF (for &amp;quot;Total Annihilation Data File&amp;quot;) or .FBI)&lt;br /&gt;
* Textures (in the form of Image files)&lt;br /&gt;
* Models (in 3DO or S3O format)&lt;br /&gt;
* Scripts (in Lua or compiled COB format)&lt;br /&gt;
* Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
* Map Data (Plain Text SMD Files)&lt;br /&gt;
* Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMF files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type or Map:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;PackageName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to PackageName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to PackageName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:File.gif]]modinfo.lua - basic information about a Game Type and it&#039;s dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images related to Cursors&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF - Old Style way to decide which units can be built by what units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Lua&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Image textures for S3O models&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7096</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7096"/>
		<updated>2010-02-18T00:18:02Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Where do I put all these files? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S3O), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders, (Mod-)Devs, Game Developers&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term &amp;quot;Units&amp;quot; is used both to describe these definitions and the resulting instances in games.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, texture, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), Contains the heightmap, metal map, typemap and and the feature and grass layout information&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is referred to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could for example use Lua, in conjunction with the Spring Engine, to build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave. &#039;&#039;&#039;BOS&#039;&#039;&#039; files are the source-code form of a COB file, they are sometimes included along with the COB files by kind Game Developers to be used as reference.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
* Data Files (Plain Text files with the extension .TDF (for &amp;quot;Total Annihilation Data File&amp;quot;) or .FBI)&lt;br /&gt;
* Textures (in the form of Image files)&lt;br /&gt;
* Models (in 3DO or S3O format)&lt;br /&gt;
* Scripts (in Lua or compiled COB format)&lt;br /&gt;
* Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
* Map Data (Plain Text SMD Files)&lt;br /&gt;
* Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMF files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type or Map:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;PackageName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to PackageName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to PackageName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:File.gif]]modinfo.lua - basic information about a Game Type and it&#039;s dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images related to Cursors&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF - Old Style way to decide which units can be built by what units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Lua&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7095</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7095"/>
		<updated>2010-02-18T00:14:06Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Where do I put all these files? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S3O), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders, (Mod-)Devs, Game Developers&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term &amp;quot;Units&amp;quot; is used both to describe these definitions and the resulting instances in games.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, texture, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), Contains the heightmap, metal map, typemap and and the feature and grass layout information&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is referred to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could for example use Lua, in conjunction with the Spring Engine, to build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave. &#039;&#039;&#039;BOS&#039;&#039;&#039; files are the source-code form of a COB file, they are sometimes included along with the COB files by kind Game Developers to be used as reference.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
* Data Files (Plain Text files with the extension .TDF (for &amp;quot;Total Annihilation Data File&amp;quot;) or .FBI)&lt;br /&gt;
* Textures (in the form of Image files)&lt;br /&gt;
* Models (in 3DO or S3O format)&lt;br /&gt;
* Scripts (in Lua or compiled COB format)&lt;br /&gt;
* Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
* Map Data (Plain Text SMD Files)&lt;br /&gt;
* Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMF files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type or Map:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;PackageName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to PackageName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to PackageName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:File.gif]]modinfo.lua&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Lua&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7094</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7094"/>
		<updated>2010-02-18T00:12:00Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Where do I put all these files? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S3O), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders, (Mod-)Devs, Game Developers&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term &amp;quot;Units&amp;quot; is used both to describe these definitions and the resulting instances in games.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, texture, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), Contains the heightmap, metal map, typemap and and the feature and grass layout information&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is referred to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could for example use Lua, in conjunction with the Spring Engine, to build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave. &#039;&#039;&#039;BOS&#039;&#039;&#039; files are the source-code form of a COB file, they are sometimes included along with the COB files by kind Game Developers to be used as reference.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
* Data Files (Plain Text files with the extension .TDF (for &amp;quot;Total Annihilation Data File&amp;quot;) or .FBI)&lt;br /&gt;
* Textures (in the form of Image files)&lt;br /&gt;
* Models (in 3DO or S3O format)&lt;br /&gt;
* Scripts (in Lua or compiled COB format)&lt;br /&gt;
* Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
* Map Data (Plain Text SMD Files)&lt;br /&gt;
* Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMF files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type or Map:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;PackageName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to PackageName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to PackageName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Lua&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7093</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7093"/>
		<updated>2010-02-18T00:06:26Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* How I Mod?! */  forgot formatting before&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S3O), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders, (Mod-)Devs, Game Developers&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term &amp;quot;Units&amp;quot; is used both to describe these definitions and the resulting instances in games.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, texture, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), Contains the heightmap, metal map, typemap and and the feature and grass layout information&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is referred to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could for example use Lua, in conjunction with the Spring Engine, to build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave. &#039;&#039;&#039;BOS&#039;&#039;&#039; files are the source-code form of a COB file, they are sometimes included along with the COB files by kind Game Developers to be used as reference.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
* Data Files (Plain Text files with the extension .TDF (for &amp;quot;Total Annihilation Data File&amp;quot;) or .FBI)&lt;br /&gt;
* Textures (in the form of Image files)&lt;br /&gt;
* Models (in 3DO or S3O format)&lt;br /&gt;
* Scripts (in Lua or compiled COB format)&lt;br /&gt;
* Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
* Map Data (Plain Text SMD Files)&lt;br /&gt;
* Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMF files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type or Map:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Lua&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7092</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7092"/>
		<updated>2010-02-17T23:59:25Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* How I Mod?! */  missing (&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S3O), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders, (Mod-)Devs, Game Developers&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term &amp;quot;Units&amp;quot; is used both to describe these definitions and the resulting instances in games.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, texture, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), Contains the heightmap, metal map, typemap and and the feature and grass layout information&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is referred to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could for example use Lua, in conjunction with the Spring Engine, to build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave. &#039;&#039;&#039;BOS&#039;&#039;&#039; files are the source-code form of a COB file, they are sometimes included along with the COB files by kind Game Developers to be used as reference.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF (for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type or Map:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Lua&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7091</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7091"/>
		<updated>2010-02-17T23:58:01Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Scripting Terminology */  mentioned BOS files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S3O), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders, (Mod-)Devs, Game Developers&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term &amp;quot;Units&amp;quot; is used both to describe these definitions and the resulting instances in games.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, texture, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), Contains the heightmap, metal map, typemap and and the feature and grass layout information&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is referred to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could for example use Lua, in conjunction with the Spring Engine, to build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave. &#039;&#039;&#039;BOS&#039;&#039;&#039; files are the source-code form of a COB file, they are sometimes included along with the COB files by kind Game Developers to be used as reference.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type or Map:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Lua&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7090</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7090"/>
		<updated>2010-02-17T23:53:11Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Scripting Terminology */  moved commas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S3O), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders, (Mod-)Devs, Game Developers&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term &amp;quot;Units&amp;quot; is used both to describe these definitions and the resulting instances in games.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, texture, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), Contains the heightmap, metal map, typemap and and the feature and grass layout information&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is referred to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could for example use Lua, in conjunction with the Spring Engine, to build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type or Map:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Lua&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7089</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7089"/>
		<updated>2010-02-17T23:51:40Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Scripting Terminology */  I always type refereed when I mean referred for some reason.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S3O), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders, (Mod-)Devs, Game Developers&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term &amp;quot;Units&amp;quot; is used both to describe these definitions and the resulting instances in games.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, texture, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), Contains the heightmap, metal map, typemap and and the feature and grass layout information&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is referred to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type or Map:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Lua&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7088</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7088"/>
		<updated>2010-02-17T23:48:45Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* &amp;quot;Game Type&amp;quot; Terminology */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S3O), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders, (Mod-)Devs, Game Developers&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term &amp;quot;Units&amp;quot; is used both to describe these definitions and the resulting instances in games.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, texture, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), Contains the heightmap, metal map, typemap and and the feature and grass layout information&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type or Map:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Lua&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7087</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7087"/>
		<updated>2010-02-17T23:46:18Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* &amp;quot;Game Type&amp;quot; Terminology */ :P&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S3O), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders, (Mod-)Devs, Game Developers&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, texture, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), Contains the heightmap, metal map, typemap and and the feature and grass layout information&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type or Map:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Lua&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7086</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7086"/>
		<updated>2010-02-17T23:44:36Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Stuff Everyone Should Know */  typo O not 0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S3O), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and (Mod-)Devs&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Content Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, texture, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), Contains the heightmap, metal map, typemap and and the feature and grass layout information&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type or Map:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Lua&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7084</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7084"/>
		<updated>2010-02-17T02:52:53Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Okay... How do Create a new Project or Modify an existing Package For the Spring Engine? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and (Mod-)Devs&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Content Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), &#039;&#039;&#039;Unsure needs more info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type or Map:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Lua&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7083</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7083"/>
		<updated>2010-02-17T02:49:43Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Where do I put all these files? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and (Mod-)Devs&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Content Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), &#039;&#039;&#039;Unsure needs more info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type or Map:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Lua&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Blank-Piece.png&amp;diff=21554</id>
		<title>File:Blank-Piece.png</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Blank-Piece.png&amp;diff=21554"/>
		<updated>2010-02-17T02:45:05Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: uploaded a new version of &amp;quot;Image:Blank-Piece.png&amp;quot;: ~~~ made this&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Sinbadev|Sinbad_EV]] made this image&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Blank-Piece.png&amp;diff=21553</id>
		<title>File:Blank-Piece.png</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Blank-Piece.png&amp;diff=21553"/>
		<updated>2010-02-17T02:43:05Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: uploaded a new version of &amp;quot;Image:Blank-Piece.png&amp;quot;: ~~~ made this&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Sinbadev|Sinbad_EV]] made this image&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:L-Piece.png&amp;diff=21864</id>
		<title>File:L-Piece.png</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:L-Piece.png&amp;diff=21864"/>
		<updated>2010-02-17T02:42:41Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: uploaded a new version of &amp;quot;Image:L-Piece.png&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SinbadEV made this image&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:V-Piece.png&amp;diff=22190</id>
		<title>File:V-Piece.png</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:V-Piece.png&amp;diff=22190"/>
		<updated>2010-02-17T02:42:16Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: uploaded a new version of &amp;quot;Image:V-Piece.png&amp;quot;: ~~~ made this&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SinbadEV made this image [[User:Sinbadev|Sinbad_EV]]&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:T-Piece.png&amp;diff=22116</id>
		<title>File:T-Piece.png</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:T-Piece.png&amp;diff=22116"/>
		<updated>2010-02-17T02:41:54Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: uploaded a new version of &amp;quot;Image:T-Piece.png&amp;quot;: ~~~ Made this&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Sinbadev|Sinbad_EV]] made this&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7082</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7082"/>
		<updated>2010-02-17T02:35:07Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Where do I put all these files? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and (Mod-)Devs&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Content Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), &#039;&#039;&#039;Unsure needs more info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type or Map:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7081</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7081"/>
		<updated>2010-02-17T02:33:32Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Where do I put all these files? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and (Mod-)Devs&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Content Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), &#039;&#039;&#039;Unsure needs more info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type or Map:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Cursors&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7080</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7080"/>
		<updated>2010-02-17T02:29:52Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Where do I put all these files? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and (Mod-)Devs&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Content Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), &#039;&#039;&#039;Unsure needs more info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root (SDZ/SD7 Archive or .SDD Folder&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Cursors&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]S3O&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7079</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7079"/>
		<updated>2010-02-17T02:26:52Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Where do I put all these files? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and (Mod-)Devs&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Content Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), &#039;&#039;&#039;Unsure needs more info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;border:0; margin:0; padding:0; border-collapse:collapse&amp;quot;&lt;br /&gt;
|[[Image:Folder-red.gif]] ||  || || Root .SDD Folder or Archive Root&lt;br /&gt;
|-&lt;br /&gt;
|   [[Image:T-Piece.png]]    ||   [[Image:Folder-yellow.gif]]  || maps&lt;br /&gt;
|-&lt;br /&gt;
|   [[Image:V-Piece.png]] || [[Image:T-Piece.png]] ||  [[Image:File.gif]] || MapName.SMT&lt;br /&gt;
|-&lt;br /&gt;
|   [[Image:V-Piece.png]] || [[Image:T-Piece.png]] ||  [[Image:File.gif]] || MapName.SMF&lt;br /&gt;
|-&lt;br /&gt;
|   [[Image:V-Piece.png]] || [[Image:L-Piece.png]] ||  [[Image:File.gif]] || MapName.SMD&lt;br /&gt;
|-&lt;br /&gt;
|   [[Image:T-Piece.png]]    ||   [[Image:Folder-yellow.gif]]  || features&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-yellow.gif]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:H-Piece.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]&lt;br /&gt;
[[Image:Folder-yellow.gif]]&lt;br /&gt;
[[Image:L-Piece.png]]&lt;br /&gt;
[[Image:L-Piece.png]][[Image:File.gif]]&lt;br /&gt;
[[Image:V-Piece.png]]&lt;br /&gt;
[[Image:H-Piece.png]]&lt;br /&gt;
[[Image:T-Piece.png]]&lt;br /&gt;
[[Image:T-Piece.png]]&lt;br /&gt;
[[Image:blank-Piece.png]]&lt;br /&gt;
[[Image:File.gif]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]Root&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]anims&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Cursors&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]download&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]FileName.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]features&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]corpses&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:Folder-yellow.gif]]allworlds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:blank-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]gamedata&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MOVEINFO.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]SIDEDATA.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SOUND.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]guis&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]SomeFile.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]objects3d&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]3DO&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]maps&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMF&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]MapName.SMD&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]MapName.SMT&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]scripts&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]BOS&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]COB&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sidepics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]BMP&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]sounds&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]WAV&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unitpics&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]unittextures&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:T-Piece.png]][[Image:Folder-yellow.gif]]tatex&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]Images&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:T-Piece.png]][[Image:Folder-yellow.gif]]units&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:V-Piece.png]][[Image:L-Piece.png]][[Image:File.gif]]UnitNames.FBI&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:Folder-yellow.gif]]weapons&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:L-Piece.png]][[Image:blank-Piece.png]][[Image:File.gif]]Weapons.TDF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7078</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7078"/>
		<updated>2010-02-16T22:36:58Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Where do I put all these files? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Modification and Game Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open a pre-existing Package and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  The content of these Packages can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are a Derivative Work of Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects creating Original Works, independent of the aforementioned Total Annihilation data and Copyright.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new Game Types meant to be used in conjunction with an existing Package called a &amp;quot;dependency&amp;quot;. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and (Mod-)Devs&#039;&#039;&#039; are interchangeable terms for the people working on a Project.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Content Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Tiles File &lt;br /&gt;
*(SMF), &#039;&#039;&#039;Unsure needs more info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to &amp;lt;s&amp;gt;the&amp;lt;/s&amp;gt; &amp;lt;s&amp;gt;a&amp;lt;/s&amp;gt; yes &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Development FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing Package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do Create a new Project or Modify an existing Package For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Package is the same for every Game Type:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Packages&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following [[Mod_Development:Archives|folder structure]]:&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;border:0; margin:0; padding:0; border-collapse:collapse&amp;quot;&lt;br /&gt;
|[[Image:Folder-red.gif]] ||  || || Root Folder or Archive Root&lt;br /&gt;
|-&lt;br /&gt;
|   [[Image:T-Piece.png]]    ||   [[Image:Folder-yellow.gif]]  || maps&lt;br /&gt;
|-&lt;br /&gt;
|   [[Image:V-Piece.png]] || [[Image:T-Piece.png]] ||  [[Image:File.gif]] || MapName.SMT&lt;br /&gt;
|-&lt;br /&gt;
|   [[Image:V-Piece.png]] || [[Image:T-Piece.png]] ||  [[Image:File.gif]] || MapName.SMF&lt;br /&gt;
|-&lt;br /&gt;
|   [[Image:V-Piece.png]] || [[Image:T-Piece.png]] ||  [[Image:File.gif]] || MapName.SMD&lt;br /&gt;
|-&lt;br /&gt;
|   [[Image:T-Piece.png]]    ||   [[Image:Folder-yellow.gif]]  || features&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Folder-red.gif]]&lt;br /&gt;
[[Image:Folder-yellow.gif]]&lt;br /&gt;
[[Image:L-Piece.png]]&lt;br /&gt;
[[Image:L-Piece.png]][[Image:File.gif]]&lt;br /&gt;
[[Image:V-Piece.png]]&lt;br /&gt;
[[Image:H-Piece.png]]&lt;br /&gt;
[[Image:T-Piece.png]]&lt;br /&gt;
[[Image:T-Piece.png]]&lt;br /&gt;
[[Image:blank-Piece.png]]&lt;br /&gt;
[[Image:File.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:T-Piece.png&amp;diff=22115</id>
		<title>File:T-Piece.png</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:T-Piece.png&amp;diff=22115"/>
		<updated>2010-02-16T22:20:19Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: ~~~ made this&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Sinbadev|Sinbad_EV]] made this&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:File.gif&amp;diff=21735</id>
		<title>File:File.gif</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:File.gif&amp;diff=21735"/>
		<updated>2010-02-16T22:16:35Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: Licence: http://icondock.com/free/mini-pixel-icons&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Licence: http://icondock.com/free/mini-pixel-icons&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Folder-yellow.gif&amp;diff=21742</id>
		<title>File:Folder-yellow.gif</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Folder-yellow.gif&amp;diff=21742"/>
		<updated>2010-02-16T22:15:30Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: Licence: http://icondock.com/free/mini-pixel-icons&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Licence: http://icondock.com/free/mini-pixel-icons&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Blank-Piece.png&amp;diff=21552</id>
		<title>File:Blank-Piece.png</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Blank-Piece.png&amp;diff=21552"/>
		<updated>2010-02-16T22:12:30Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: ~~~ made this image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Sinbadev|Sinbad_EV]] made this image&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:V-Piece.png&amp;diff=22189</id>
		<title>File:V-Piece.png</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:V-Piece.png&amp;diff=22189"/>
		<updated>2010-02-16T22:12:06Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: SinbadEV made this image ~~~&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SinbadEV made this image [[User:Sinbadev|Sinbad_EV]]&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:L-Piece.png&amp;diff=21863</id>
		<title>File:L-Piece.png</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:L-Piece.png&amp;diff=21863"/>
		<updated>2010-02-16T22:10:00Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: SinbadEV made this image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SinbadEV made this image&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Folder-red.gif&amp;diff=21741</id>
		<title>File:Folder-red.gif</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Folder-red.gif&amp;diff=21741"/>
		<updated>2010-02-16T22:08:47Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: Licence: http://icondock.com/free/mini-pixel-icons&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Licence: http://icondock.com/free/mini-pixel-icons&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7074</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7074"/>
		<updated>2010-02-16T21:00:03Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Content Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open some content packages and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to make real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ, SD7 Files or SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  Content can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count as content in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are based on borrowed content from Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects independent of the aforementioned Total Annihilation content and produced by their own teams. These may be open or closed source.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new game types meant to be used in conjunction with the content developed for an existing package. Mutators require a project as a dependency. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and Content Developers&#039;&#039;&#039; are interchangeable terms for the people who create or modify the content necessary for a &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Content Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring consist of a heightfield, environmental lighting and sky settings, type map, metal map and features.&lt;br /&gt;
the Map Data Files:&lt;br /&gt;
*(SMD), contains parameters that set things such as lighting and startpoints&lt;br /&gt;
*(SMT), Texture File &lt;br /&gt;
*(SMF), &#039;&#039;&#039;Unsure needs more info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Maps may also include their own lua gadgets, which are to be stored in lua gaia. They may have their own feature models, units, effects and even map options which allow a host to change properties of the map.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to the a &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Content Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Content Developing FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing content package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Content Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Modify and/or Develop Content For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Content Package is the same for all content packages:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Content&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following folder structure:&lt;br /&gt;
{{Volatile_Documentation|date=Not Yet|user=No One}}&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7069</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7069"/>
		<updated>2010-02-16T19:21:35Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Where do I put all these files? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Content Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open some content packages and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to play real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ and SD7 Files and SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  Content can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count as content in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are based on borrowed content from Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects independent of the aforementioned Total Annihilation content and produced by their own teams. These may be open or closed source.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new game types meant to be used in conjunction with the content developed for an existing package. Mutators require a project as a dependency. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and Content Developers&#039;&#039;&#039; are interchangeable terms for the people who create or modify the content necessary for a &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Content Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring is composed of a number of files and is typically released as a &amp;quot;Content Package&amp;quot; containing the Map Data Files (SMD), Tiles File (SMT), Everything Else Files (SMF), any Models, Textures and Feature or Unit Definitions that are needed for the map  and sometimes Lua files defining special Map scripts or Options.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to the a &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Content Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Content Developing FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing content package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Content Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Modify and/or Develop Content For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Content Package is the same for all content packages:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Content&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot; containing your files&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following folder structure:&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7068</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7068"/>
		<updated>2010-02-16T19:21:06Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Spring Content Developement FAQ + Basics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Content Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in an intelligent manner demonstrating commitment to your project in the form of actual work or demonstrating the intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away. There are many projects all in competition for help, your project will at many times be just you and you need to be able to do all project related tasks if you expect to reach completion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on or leave.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open some content packages and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to play real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ and SD7 Files and SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  Content can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count as content in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are based on borrowed content from Total Annihilation. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Games&#039;&#039;&#039; Projects independent of the aforementioned Total Annihilation content and produced by their own teams. These may be open or closed source.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Mutators&#039;&#039;&#039; are new game types meant to be used in conjunction with the content developed for an existing package. Mutators require a project as a dependency. They are not meant to be mods as they exist to facilitate the addition of features or the altering of gameplay for the core of a project. In the more common vernacular of video gaming these would have been mods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and Content Developers&#039;&#039;&#039; are interchangeable terms for the people who create or modify the content necessary for a &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Content Developers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game Designers&#039;&#039;&#039;&lt;br /&gt;
Aka, idea men, most of us are intelligent enough to come up with the code to pull off these crazy ideas you suggest. Odds are that intellect also comes with the creativity to have our own ideas. Idea men are not needed here and will find themselves alone and without the ability to finish their project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring is composed of a number of files and is typically released as a &amp;quot;Content Package&amp;quot; containing the Map Data Files (SMD), Tiles File (SMT), Everything Else Files (SMF), any Models, Textures and Feature or Unit Definitions that are needed for the map  and sometimes Lua files defining special Map scripts or Options.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to the a &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Content Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Content Developing FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing content package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Content Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Modify and/or Develop Content For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;br /&gt;
=== Where do I put all these files? ===&lt;br /&gt;
The folder structure for a Content Package is the same for all content packages:&lt;br /&gt;
&lt;br /&gt;
First start with a &amp;quot;.SDD&amp;quot; folder or SDZ/SD7 Archive within the &amp;quot;Content&amp;quot;, &amp;quot;Maps&amp;quot; or &amp;quot;Mods&amp;quot; Folder chosen within your Spring Preferences:&lt;br /&gt;
* &#039;&#039;&#039;.SDD Folder:&#039;&#039;&#039; Create a folder called &amp;quot;ModName.SDD&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;SDZ:&#039;&#039;&#039; Create a ZIP file containing your files and rename it to ModName.SDZ&lt;br /&gt;
* &#039;&#039;&#039;SD7:&#039;&#039;&#039; Create a 7z file containing your files and rename it to ModName.SD7&lt;br /&gt;
&lt;br /&gt;
Within your mod folder or archive you need to have the following folder structure:&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7058</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7058"/>
		<updated>2010-02-16T18:51:34Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Okay... How do I Modify and/or Develop Content For the Spring Engine? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Content Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in a way that makes us expect you lack the level of commitment or intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away.&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on.&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open some content packages and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to play real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ and SD7 Files and SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  Content can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count as content in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Total Conversions, Ports, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are based on content or at least units from Total Annihilation. &#039;&#039;&#039;Total Conversions&#039;&#039;&#039; are new games created for the Spring engine but based on existing commercially held IP (like Warhammer 40K, Dune or Star Wars). &#039;&#039;&#039;Ports&#039;&#039;&#039; are conversions of games for another engine that are modified to work with the Spring Engine with little other alteration (Early Versions of Star Wars Spring or Final Frontier). &#039;&#039;&#039;Games&#039;&#039;&#039; are content packages containing primarily new content and defining at least one new Game Type.  &#039;&#039;&#039;Mutators&#039;&#039;&#039; are new game types meant to be used in conjunction with the content developed for an existing Game Type (for example adding a new set of units to an existing Game Type or special rules like Chickens variants).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and Game Designers&#039;&#039;&#039; are interchangeable terms for the people who create or modify the content necessary for a &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Designers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring is composed of a number of files and is typically released as a &amp;quot;Content Package&amp;quot; containing the Map Data Files (SMD), Tiles File (SMT), Everything Else Files (SMF), any Models, Textures and Feature or Unit Definitions that are needed for the map  and sometimes Lua files defining special Map scripts or Options.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to the a &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Content Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Content Developing FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing content package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Content Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Modify and/or Develop Content For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* [[FAQ:Content:Mapping|Make a Map]]&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7057</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7057"/>
		<updated>2010-02-16T18:45:08Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Okay... How do I Modify and/or Develop Content For the Spring Engine? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Content Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in a way that makes us expect you lack the level of commitment or intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away.&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on.&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open some content packages and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to play real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ and SD7 Files and SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  Content can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count as content in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Total Conversions, Ports, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are based on content or at least units from Total Annihilation. &#039;&#039;&#039;Total Conversions&#039;&#039;&#039; are new games created for the Spring engine but based on existing commercially held IP (like Warhammer 40K, Dune or Star Wars). &#039;&#039;&#039;Ports&#039;&#039;&#039; are conversions of games for another engine that are modified to work with the Spring Engine with little other alteration (Early Versions of Star Wars Spring or Final Frontier). &#039;&#039;&#039;Games&#039;&#039;&#039; are content packages containing primarily new content and defining at least one new Game Type.  &#039;&#039;&#039;Mutators&#039;&#039;&#039; are new game types meant to be used in conjunction with the content developed for an existing Game Type (for example adding a new set of units to an existing Game Type or special rules like Chickens variants).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and Game Designers&#039;&#039;&#039; are interchangeable terms for the people who create or modify the content necessary for a &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Designers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring is composed of a number of files and is typically released as a &amp;quot;Content Package&amp;quot; containing the Map Data Files (SMD), Tiles File (SMT), Everything Else Files (SMF), any Models, Textures and Feature or Unit Definitions that are needed for the map  and sometimes Lua files defining special Map scripts or Options.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to the a &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Content Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Content Developing FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing content package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Content Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Modify and/or Develop Content For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* Make a Map&lt;br /&gt;
* Script a Widget&lt;br /&gt;
* Make a New Game Type&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7056</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7056"/>
		<updated>2010-02-16T18:44:44Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Okay... How do I Modify and/or Develop Content For the Spring Engine? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Content Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in a way that makes us expect you lack the level of commitment or intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away.&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on.&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open some content packages and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to play real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ and SD7 Files and SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  Content can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count as content in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Total Conversions, Ports, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are based on content or at least units from Total Annihilation. &#039;&#039;&#039;Total Conversions&#039;&#039;&#039; are new games created for the Spring engine but based on existing commercially held IP (like Warhammer 40K, Dune or Star Wars). &#039;&#039;&#039;Ports&#039;&#039;&#039; are conversions of games for another engine that are modified to work with the Spring Engine with little other alteration (Early Versions of Star Wars Spring or Final Frontier). &#039;&#039;&#039;Games&#039;&#039;&#039; are content packages containing primarily new content and defining at least one new Game Type.  &#039;&#039;&#039;Mutators&#039;&#039;&#039; are new game types meant to be used in conjunction with the content developed for an existing Game Type (for example adding a new set of units to an existing Game Type or special rules like Chickens variants).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and Game Designers&#039;&#039;&#039; are interchangeable terms for the people who create or modify the content necessary for a &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Designers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring is composed of a number of files and is typically released as a &amp;quot;Content Package&amp;quot; containing the Map Data Files (SMD), Tiles File (SMT), Everything Else Files (SMF), any Models, Textures and Feature or Unit Definitions that are needed for the map  and sometimes Lua files defining special Map scripts or Options.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to the a &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Content Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Content Developing FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing content package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Content Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Modify and/or Develop Content For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
* Make a New Unit&lt;br /&gt;
* Modify an Existing Game Type&lt;br /&gt;
* Make a Map&lt;br /&gt;
* Script a Widget&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7055</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7055"/>
		<updated>2010-02-16T18:28:02Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* How To Get Help */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Content Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in a way that makes us expect you lack the level of commitment or intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away.&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on.&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open some content packages and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and ask there, check the list of available channels, there&#039;s usually one about the topic you are trying to learn... if all else fails just ask in #main.&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to play real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ and SD7 Files and SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  Content can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count as content in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Total Conversions, Ports, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are based on content or at least units from Total Annihilation. &#039;&#039;&#039;Total Conversions&#039;&#039;&#039; are new games created for the Spring engine but based on existing commercially held IP (like Warhammer 40K, Dune or Star Wars). &#039;&#039;&#039;Ports&#039;&#039;&#039; are conversions of games for another engine that are modified to work with the Spring Engine with little other alteration (Early Versions of Star Wars Spring or Final Frontier). &#039;&#039;&#039;Games&#039;&#039;&#039; are content packages containing primarily new content and defining at least one new Game Type.  &#039;&#039;&#039;Mutators&#039;&#039;&#039; are new game types meant to be used in conjunction with the content developed for an existing Game Type (for example adding a new set of units to an existing Game Type or special rules like Chickens variants).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and Game Designers&#039;&#039;&#039; are interchangeable terms for the people who create or modify the content necessary for a &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Designers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring is composed of a number of files and is typically released as a &amp;quot;Content Package&amp;quot; containing the Map Data Files (SMD), Tiles File (SMT), Everything Else Files (SMF), any Models, Textures and Feature or Unit Definitions that are needed for the map  and sometimes Lua files defining special Map scripts or Options.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to the a &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Content Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Content Developing FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing content package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Content Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Modify and/or Develop Content For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
Make a New Unit&lt;br /&gt;
Modify an Existing Game Type&lt;br /&gt;
Make a Map&lt;br /&gt;
Script a Widget&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7054</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7054"/>
		<updated>2010-02-16T18:25:20Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Spring Content Developement FAQ + Basics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Content Developement FAQ + Basics =&lt;br /&gt;
== How To Get Help ==&lt;br /&gt;
* &#039;&#039;&#039;Play Before You Ask Anything:&#039;&#039;&#039; If you found this site as part of you trying to figure out how to make your dream game that&#039;s awesome.  Regardless of why you are here, if you want to design games you&#039;ll need to familiarize yourself with the engine&#039;s capabilities and the best way to do that is to play the games that already exist.  As a basic rule, before posting a question, make sure you have at least learned how to download and install content packages and played a multi-player game... if you don&#039;t want to play a multi-player game you should at-least spectate a few of them.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Be Stupid:&#039;&#039;&#039; If You post in a forum and don&#039;t present yourself in a way that makes us expect you lack the level of commitment or intelligence needed to actually do what what you are asking for, most of the people who reply will be doing so to mock you/scare you away.&lt;br /&gt;
* &#039;&#039;&#039;Figure Out What You Are Asking For:&#039;&#039;&#039; If you are unsure where to start, posting a &amp;quot;Where do I start?&amp;quot; topic without any details is not the right approach. Figure out what you want to do (make a new Game Type or Mutator, Make New Units, Make a New Map, Make a Mission or Campaign, Make an AI) and ask for that specifically.&lt;br /&gt;
* &#039;&#039;&#039;We Help Those Who Help Themselves:&#039;&#039;&#039; Don&#039;t post something like &amp;quot;I have this awesome Idea, help me make it!&amp;quot;, without also posting what contributions you intend to provide to the project... if you are just posting an idea and intend to be &amp;quot;The Idea Guy&amp;quot; then you probably want to post it in the Off-Topic forums.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t Take It Personally:&#039;&#039;&#039; Without exception, no matter how hard you try, no matter how awesome you are at modeling, scripting or game design... someone is going to try to &amp;quot;Help&amp;quot; you by being a jerk to you... These people have usually interpreted your behavior as being cocky or n00bish and want to tear you down as a way of weeding useless people out of the community.  When this happens, just ignore them and press on.&lt;br /&gt;
* &#039;&#039;&#039;If No One Helps You Don&#039;t Get Mad:&#039;&#039;&#039; If people don&#039;t respond to your post it&#039;s likely because the people who know the answer are busy working on their own projects and haven&#039;t taken the time to check the forums.  First, be patient. Second, poke around with the documentation or crack open some content packages and try to figure out a better way to ask your question. Finally, you can also log in to the lobby software and&lt;br /&gt;
&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to play real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ and SD7 Files and SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  Content can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count as content in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Total Conversions, Ports, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are based on content or at least units from Total Annihilation. &#039;&#039;&#039;Total Conversions&#039;&#039;&#039; are new games created for the Spring engine but based on existing commercially held IP (like Warhammer 40K, Dune or Star Wars). &#039;&#039;&#039;Ports&#039;&#039;&#039; are conversions of games for another engine that are modified to work with the Spring Engine with little other alteration (Early Versions of Star Wars Spring or Final Frontier). &#039;&#039;&#039;Games&#039;&#039;&#039; are content packages containing primarily new content and defining at least one new Game Type.  &#039;&#039;&#039;Mutators&#039;&#039;&#039; are new game types meant to be used in conjunction with the content developed for an existing Game Type (for example adding a new set of units to an existing Game Type or special rules like Chickens variants).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and Game Designers&#039;&#039;&#039; are interchangeable terms for the people who create or modify the content necessary for a &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Designers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring is composed of a number of files and is typically released as a &amp;quot;Content Package&amp;quot; containing the Map Data Files (SMD), Tiles File (SMT), Everything Else Files (SMF), any Models, Textures and Feature or Unit Definitions that are needed for the map  and sometimes Lua files defining special Map scripts or Options.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to the a &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Content Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Content Developing FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing content package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Content Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Modify and/or Develop Content For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
Make a New Unit&lt;br /&gt;
Modify an Existing Game Type&lt;br /&gt;
Make a Map&lt;br /&gt;
Script a Widget&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7053</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7053"/>
		<updated>2010-02-16T17:56:52Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* &amp;quot;Game Type&amp;quot; Terminology */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Content Developement FAQ + Basics =&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to play real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ and SD7 Files and SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  Content can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count as content in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Total Conversions, Ports, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are based on content or at least units from Total Annihilation. &#039;&#039;&#039;Total Conversions&#039;&#039;&#039; are new games created for the Spring engine but based on existing commercially held IP (like Warhammer 40K, Dune or Star Wars). &#039;&#039;&#039;Ports&#039;&#039;&#039; are conversions of games for another engine that are modified to work with the Spring Engine with little other alteration (Early Versions of Star Wars Spring or Final Frontier). &#039;&#039;&#039;Games&#039;&#039;&#039; are content packages containing primarily new content and defining at least one new Game Type.  &#039;&#039;&#039;Mutators&#039;&#039;&#039; are new game types meant to be used in conjunction with the content developed for an existing Game Type (for example adding a new set of units to an existing Game Type or special rules like Chickens variants).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and Game Designers&#039;&#039;&#039; are interchangeable terms for the people who create or modify the content necessary for a &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Designers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring is composed of a number of files and is typically released as a &amp;quot;Content Package&amp;quot; containing the Map Data Files (SMD), Tiles File (SMT), Everything Else Files (SMF), any Models, Textures and Feature or Unit Definitions that are needed for the map  and sometimes Lua files defining special Map scripts or Options.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to the a &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Content Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Content Developing FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing content package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Content Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Modify and/or Develop Content For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
Make a New Unit&lt;br /&gt;
Modify an Existing Game Type&lt;br /&gt;
Make a Map&lt;br /&gt;
Script a Widget&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7052</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7052"/>
		<updated>2010-02-16T17:56:19Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* &amp;quot;Game Type&amp;quot; Terminology */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Content Developement FAQ + Basics =&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to play real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ and SD7 Files and SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  Content can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count as content in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Total Conversions, Ports, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are based on content or at least units from Total Annihilation. &#039;&#039;&#039;Total Conversions&#039;&#039;&#039; are new games created for the Spring engine but based on existing commercially held IP (like Warhammer 40K, Dune or Star Wars). &#039;&#039;&#039;Ports&#039;&#039;&#039; are conversions of games for another engine that are modified to work with the Spring Engine with little other alteration (Early Versions of Star Wars Spring or Final Frontier). &#039;&#039;&#039;Games&#039;&#039;&#039; are content packages containing primarily new content.  &#039;&#039;&#039;Mutators&#039;&#039;&#039; are new game types meant to be used in conjunction with the content developed for an existing Game Type (for example adding a new set of units to an existing Game Type or special rules like Chickens variants).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and Game Designers&#039;&#039;&#039; are interchangeable terms for the people who create or modify the content necessary for a &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Designers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring is composed of a number of files and is typically released as a &amp;quot;Content Package&amp;quot; containing the Map Data Files (SMD), Tiles File (SMT), Everything Else Files (SMF), any Models, Textures and Feature or Unit Definitions that are needed for the map  and sometimes Lua files defining special Map scripts or Options.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to the a &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Content Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Content Developing FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing content package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Content Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Modify and/or Develop Content For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
Make a New Unit&lt;br /&gt;
Modify an Existing Game Type&lt;br /&gt;
Make a Map&lt;br /&gt;
Script a Widget&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7051</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7051"/>
		<updated>2010-02-16T17:55:00Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Stuff Everyone Should Know */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Content Developement FAQ + Basics =&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to play real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ and SD7 Files and SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  Content can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts along with other Data Files may also count as content in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Total Conversions, Ports, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are based on content or at least units from Total Annihilation. &#039;&#039;&#039;Total Conversions&#039;&#039;&#039; are new games created for the Spring engine but based on existing commercially held IP (like Warhammer 40K, Dune or Star Wars). &#039;&#039;&#039;Ports&#039;&#039;&#039; are conversions of games for another engine that are modified to work with the Spring Engine with little other alteration (Early Versions of Star Wars Spring or Final Frontier). &#039;&#039;&#039;Games&#039;&#039;&#039; are games containing primarily new content.  &#039;&#039;&#039;Mutators&#039;&#039;&#039; are new game types meant to be used in conjunction with the content developed for an existing Game Type (for example adding a new set of units to an existing Game Type or special rules like Chickens variants).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and Game Designers&#039;&#039;&#039; are interchangeable terms for the people who create or modify the content necessary for a &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Designers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring is composed of a number of files and is typically released as a &amp;quot;Content Package&amp;quot; containing the Map Data Files (SMD), Tiles File (SMT), Everything Else Files (SMF), any Models, Textures and Feature or Unit Definitions that are needed for the map  and sometimes Lua files defining special Map scripts or Options.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to the a &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Content Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Content Developing FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing content package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Content Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Modify and/or Develop Content For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
Make a New Unit&lt;br /&gt;
Modify an Existing Game Type&lt;br /&gt;
Make a Map&lt;br /&gt;
Script a Widget&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7050</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7050"/>
		<updated>2010-02-16T17:45:51Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* How I Mod?! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Content Developement FAQ + Basics =&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to play real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ and SD7 Files and SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  Content can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts also may count as content in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Total Conversions, Ports, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are based on content or at least units from Total Annihilation. &#039;&#039;&#039;Total Conversions&#039;&#039;&#039; are new games created for the Spring engine but based on existing commercially held IP (like Warhammer 40K, Dune or Star Wars). &#039;&#039;&#039;Ports&#039;&#039;&#039; are conversions of games for another engine that are modified to work with the Spring Engine with little other alteration (Early Versions of Star Wars Spring or Final Frontier). &#039;&#039;&#039;Games&#039;&#039;&#039; are games containing primarily new content.  &#039;&#039;&#039;Mutators&#039;&#039;&#039; are new game types meant to be used in conjunction with the content developed for an existing Game Type (for example adding a new set of units to an existing Game Type or special rules like Chickens variants).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and Game Designers&#039;&#039;&#039; are interchangeable terms for the people who create or modify the content necessary for a &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Designers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring is composed of a number of files and is typically released as a &amp;quot;Content Package&amp;quot; containing the Map Data Files (SMD), Tiles File (SMT), Everything Else Files (SMF), any Models, Textures and Feature or Unit Definitions that are needed for the map  and sometimes Lua files defining special Map scripts or Options.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to the a &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Content Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Content Developing FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing content package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Content Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/ 7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Modify and/or Develop Content For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
Make a New Unit&lt;br /&gt;
Modify an Existing Game Type&lt;br /&gt;
Make a Map&lt;br /&gt;
Script a Widget&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7049</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7049"/>
		<updated>2010-02-16T17:45:23Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Spring Content Developement FAQ + Basics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Content Developement FAQ + Basics =&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to play real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ and SD7 Files and SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  Content can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts also may count as content in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Total Conversions, Ports, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are based on content or at least units from Total Annihilation. &#039;&#039;&#039;Total Conversions&#039;&#039;&#039; are new games created for the Spring engine but based on existing commercially held IP (like Warhammer 40K, Dune or Star Wars). &#039;&#039;&#039;Ports&#039;&#039;&#039; are conversions of games for another engine that are modified to work with the Spring Engine with little other alteration (Early Versions of Star Wars Spring or Final Frontier). &#039;&#039;&#039;Games&#039;&#039;&#039; are games containing primarily new content.  &#039;&#039;&#039;Mutators&#039;&#039;&#039; are new game types meant to be used in conjunction with the content developed for an existing Game Type (for example adding a new set of units to an existing Game Type or special rules like Chickens variants).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and Game Designers&#039;&#039;&#039; are interchangeable terms for the people who create or modify the content necessary for a &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Designers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring is composed of a number of files and is typically released as a &amp;quot;Content Package&amp;quot; containing the Map Data Files (SMD), Tiles File (SMT), Everything Else Files (SMF), any Models, Textures and Feature or Unit Definitions that are needed for the map  and sometimes Lua files defining special Map scripts or Options.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to the a &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Content Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;br /&gt;
&lt;br /&gt;
== General Content Developing FAQ ==&lt;br /&gt;
&lt;br /&gt;
This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.&lt;br /&gt;
&lt;br /&gt;
=== How I Mod?! ===&lt;br /&gt;
In general, the first thing you&#039;ll want to do is crack open an existing content package for the type of thing you want to modify.&lt;br /&gt;
&lt;br /&gt;
Content Packages Will contain some or all of the following Files:&lt;br /&gt;
Data Files (Plain Text files with the extension .TDF for &amp;quot;Total Annihilation Data File)&lt;br /&gt;
Textures&lt;br /&gt;
Models (in 3DO or S3O format)&lt;br /&gt;
Scripts (in Lua or compiled COB format)&lt;br /&gt;
Map Tiles (Compiled SMT files (not human readable))&lt;br /&gt;
Map Data (Plain Text Files)&lt;br /&gt;
Map &amp;quot;Everything Else&amp;quot; Files (Compiled SMT files (not human readable))&lt;br /&gt;
&lt;br /&gt;
These are all stored in either ZIP or 7zip Format and can both be opened with [http://www.7-zip.org/|7zip]&lt;br /&gt;
&lt;br /&gt;
=== So Really, How do I Mod the Spring Engine? ===&lt;br /&gt;
You Don&#039;t, see next section.&lt;br /&gt;
=== Okay... How do I Modify and/or Develop Content For the Spring Engine? ===&lt;br /&gt;
That depends, do you want to:&lt;br /&gt;
Make a New Unit&lt;br /&gt;
Modify an Existing Game Type&lt;br /&gt;
Make a Map&lt;br /&gt;
Script a Widget&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7048</id>
		<title>FAQ:Content</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=FAQ:Content&amp;diff=7048"/>
		<updated>2010-02-16T17:33:41Z</updated>

		<summary type="html">&lt;p&gt;Sinbadev: /* Spring Content Developement FAQ + Basics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spring Content Developement FAQ + Basics =&lt;br /&gt;
== Stuff Everyone Should Know ==&lt;br /&gt;
Spring is an Engine designed to allow people to play real-time strategy games... It is not a game in itself.  Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Content&amp;quot; can be developed for Spring and distributed in &amp;quot;Content Packages&amp;quot; (namely SDZ and SD7 Files and SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players).  Content can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts also may count as content in certain contexts...)&lt;br /&gt;
&lt;br /&gt;
This leads to a bunch of quazi-defined meta-terminology:&lt;br /&gt;
&lt;br /&gt;
=== General Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TA-ist/TA-isms&#039;&#039;&#039;: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn&#039;t Lua) that are essentially extensions of this concept.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Game Type&amp;quot; Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mods, Total Conversions, Ports, Games and Mutators&#039;&#039;&#039; are all essentially synonyms for &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;. Colloquially speaking: &#039;&#039;&#039;Mods&#039;&#039;&#039; are modifications of existing games, in almost all cases these are based on content or at least units from Total Annihilation. &#039;&#039;&#039;Total Conversions&#039;&#039;&#039; are new games created for the Spring engine but based on existing commercially held IP (like Warhammer 40K, Dune or Star Wars). &#039;&#039;&#039;Ports&#039;&#039;&#039; are conversions of games for another engine that are modified to work with the Spring Engine with little other alteration (Early Versions of Star Wars Spring or Final Frontier). &#039;&#039;&#039;Games&#039;&#039;&#039; are games containing primarily new content.  &#039;&#039;&#039;Mutators&#039;&#039;&#039; are new game types meant to be used in conjunction with the content developed for an existing Game Type (for example adding a new set of units to an existing Game Type or special rules like Chickens variants).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modders and Game Designers&#039;&#039;&#039; are interchangeable terms for the people who create or modify the content necessary for a &amp;quot;A Content Package Containing At Least One Game Type&amp;quot;.  Typically someone who is working with existing content developed by someone else falls into the &#039;&#039;&#039;&amp;quot;Modders&amp;quot;&#039;&#039;&#039; category and and those who are creating all new content are called &#039;&#039;&#039;&amp;quot;Game Designers&amp;quot;&#039;&#039;&#039;, but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Units&#039;&#039;&#039; are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred).  Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units.  The term.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features and Wreckage&#039;&#039;&#039; are special types of Units that are not owned by any player.  These include things like rocks and trees as well as the corpses of fallen units.&lt;br /&gt;
&lt;br /&gt;
=== Map Terminology ===&lt;br /&gt;
A map in Spring is composed of a number of files and is typically released as a &amp;quot;Content Package&amp;quot; containing the Tiles File (SMT), Everything Else Files (SMF), any Models, Textures and Feature or Unit Definitions that are needed for the map  and sometimes Lua files defining special Map scripts or Options.&lt;br /&gt;
&lt;br /&gt;
=== Scripting Terminology ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchronized Code&#039;&#039;&#039;&lt;br /&gt;
Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code.  They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers.  Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gadgets&#039;&#039;&#039; are Lua scripts that are inherent to a &amp;quot;Game Type&amp;quot;, they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements.  If you ask a question like &amp;quot;Is it possible for the game I&#039;m building to do X&amp;quot; the answer is most-probably, &amp;quot;Yes, with enough Lua&amp;quot;.  You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lua Unit Definitions and Scripts&#039;&#039;&#039; Lua can also be used within the traditional TA-ist framework to set the values of a Unit&#039;s tags and define the Unit&#039;s animation scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Widgets&#039;&#039; are Lua scripts that are not inherent to the a &amp;quot;Game Type&amp;quot; (though they might be included along with a Game Type in a Content Package).  They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation.  Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COB&#039;&#039;&#039; is a compiled script that is a derived form of the unit script files in Total Annihilation.  Many Game Types still use COB to define how their units behave.&lt;/div&gt;</summary>
		<author><name>Sinbadev</name></author>
	</entry>
</feed>