<?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=Carrepairer</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=Carrepairer"/>
	<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/wiki/Special:Contributions/Carrepairer"/>
	<updated>2026-11-08T23:43:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GamesDownloads&amp;diff=9216</id>
		<title>GamesDownloads</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GamesDownloads&amp;diff=9216"/>
		<updated>2015-01-20T01:21:45Z</updated>

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

		<summary type="html">&lt;p&gt;Carrepairer: Springweblobby Logo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Springweblobby Logo&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Lobby_Development&amp;diff=10631</id>
		<title>Lobby Development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Lobby_Development&amp;diff=10631"/>
		<updated>2014-06-07T03:39:42Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: Update weblobby link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Documentation=&lt;br /&gt;
&lt;br /&gt;
==Protocol==&lt;br /&gt;
* [http://springrts.com/dl/LobbyProtocol/ HTML] (is updated once a day)&lt;br /&gt;
* [https://github.com/spring/LobbyProtocol/blob/master/ProtocolDescription.xml XML] (raw, always latest)&lt;br /&gt;
&lt;br /&gt;
==Download Systems==&lt;br /&gt;
* [http://springrts.com/wiki/Dev:LobbyDownloadSystems Lobby Download Systems]&lt;br /&gt;
&lt;br /&gt;
=Lobby client development=&lt;br /&gt;
&lt;br /&gt;
==Useable lobby clients==&lt;br /&gt;
&lt;br /&gt;
===[[SpringLobby]]===&lt;br /&gt;
&lt;br /&gt;
===Zero-K Lobby===&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Windows/Linux&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;C#&amp;lt;/font&amp;gt;,&lt;br /&gt;
by &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Licho&amp;lt;/font&amp;gt; &amp;amp; &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;quantum&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[https://code.google.com/p/zero-k/ Zero-K project page]&lt;br /&gt;
&lt;br /&gt;
===TASClient===&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Windows&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;Delphi&amp;lt;/font&amp;gt;,&lt;br /&gt;
by &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Satirik&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can download the sources from the [http://springrts.com/svn/spring/Lobby/TASClient/ subversion repository] (svn://springrts.com/svn/spring/Lobby/TASClient/) and browse them on the [http://springrts.com/websvn/listing.php?repname=Spring&amp;amp;path=%2FLobby%2FTASClient%2F#_Lobby_TASClient_ websvn]. Latest binary version is always available here:&lt;br /&gt;
http://springrts.com/dl/tasclient/TASClientLatest.7z&lt;br /&gt;
&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?f=12&amp;amp;t=18999 How to compile TASClient]&lt;br /&gt;
&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?f=14&amp;amp;t=19014 How to customize TASClient]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===flobby===&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Linux&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;C++&amp;lt;/font&amp;gt;,&lt;br /&gt;
by &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;cleanrock&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/cleanrock/flobby github page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Weblobby===&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;cross-platform&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;C++&amp;lt;/font&amp;gt;,&lt;br /&gt;
by &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;CarRepairer&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/springweblobby/swl-website#spring-web-lobby project site]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Work in progress or abandoned==&lt;br /&gt;
&lt;br /&gt;
===Alphalobby===&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Windows&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;C&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;unmaintained&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alphalobby is still very much work in progress. If you still wish to use it, source available from the [http://code.google.com/p/alphalobby/source/checkout mercurial repository], binary available on the [http://springfiles.com/spring/lobby-clients/alphalobby springfiles page].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CheeseLobby===&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;cross-platform&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;Java&amp;lt;/font&amp;gt;,&lt;br /&gt;
by &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Cheesecan&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?f=64&amp;amp;t=24905 forum thread]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/jahwag/cheeselobby binaries and code]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===QtLobby===&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;cross-platform&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;C++&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;unmaintained&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/tizbac/qtlobby project page]&lt;br /&gt;
&lt;br /&gt;
===muslce (most useless spring lobby client ever)===&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;android&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;java&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;unmaintained&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://springrts.massive.ch/muslce/Muslce-20130617.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=Libraries and frameworks=&lt;br /&gt;
&lt;br /&gt;
==Spring-PythonBotFramework==&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;cross-platform&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;Python&amp;lt;/font&amp;gt;, by&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;BrainDamage&amp;lt;/font&amp;gt; &amp;amp; &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;koshi&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A bot framework written in python. [https://github.com/renemilk/tasbot/wiki GitHub wiki]&lt;br /&gt;
&lt;br /&gt;
==Go SpringLobbyClient==&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;cross-platform&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;Go&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A simple client implementation of the lobby protocol in Go.&lt;br /&gt;
[https://github.com/Agon/go-slc/ project page]&lt;br /&gt;
&lt;br /&gt;
=Lobby server development=&lt;br /&gt;
&lt;br /&gt;
==SpringLS==&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;cross-platform&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;Java&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;hoijui&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The longest-running lobby server, created by Betalord. You can fetch the sources through &#039;&#039;git&#039;&#039;. Details can be found on the [http://github.com/spring/SpringLS development site].&lt;br /&gt;
&lt;br /&gt;
==UberServer==&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;cross-platform&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;Python&amp;lt;/font&amp;gt;,&lt;br /&gt;
by &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;aegis&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The primary lobby server currently running on springrts.com. All protocol commands in the primary documentation should be fully-functional and compatible between both uberserver and SpringLS. See the dedicated [[uberserver]] for mor info.&lt;br /&gt;
&lt;br /&gt;
[[Category: Lobby]]&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6439</id>
		<title>EvoGreenLitFAQ</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6439"/>
		<updated>2014-04-11T22:39:07Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: /* Registration Failed. Reason: Invalid md5 sum. */  removed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EvolutionRTS emergency FAQ&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Before you ask a question in chat, please see if it is already answered on this list.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Playable at the moment?==&lt;br /&gt;
It might seem so!&lt;br /&gt;
&lt;br /&gt;
http://www.vemags.de/wp-content/uploads/2012/06/Status_LSA_gruen1.jpg&lt;br /&gt;
&lt;br /&gt;
In last hours I have seen several players successfully launching games and playing.&lt;br /&gt;
&lt;br /&gt;
==Downloads fail (because windows user name has special characters)==&lt;br /&gt;
http://i.imgur.com/6qZTQOZ.png&lt;br /&gt;
&lt;br /&gt;
If the lobby states it is downloading the engine but nothing happens:&lt;br /&gt;
&lt;br /&gt;
Check if your windows account name contains any &amp;quot;funny&amp;quot; characters or umlauts like Ã¶Ã¼Ã¤Ã´Ã¡ etc.&lt;br /&gt;
&lt;br /&gt;
As a workaround use a windows account name without such characters. This is will be fixed of course.&lt;br /&gt;
&lt;br /&gt;
==Singleplayer?==&lt;br /&gt;
There is a singleplayer tab but with a fresh install it will not work.&lt;br /&gt;
(Game files and engine are missing)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039; Create a multiplayer battleroom with the button at the bottom and make it private by giving it a password.&lt;br /&gt;
&lt;br /&gt;
The lobby will download the necessary files. Afterwards you can select the evolutionRTS game in singleplayer menu, or stay in this battleroom and play. See below for adding bots.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039; Join a multiplayer battleroom. The lobby will download the necessary files. Afterwards you can select the evolutionRTS game in singleplayer menu. See below for adding bots.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatic download of game files does not work==&lt;br /&gt;
NOTE: the GAME file.&lt;br /&gt;
&lt;br /&gt;
Best idea is to wait a bit, the lobby should eventually download it.&lt;br /&gt;
If it really absolutely does not work:&lt;br /&gt;
1. Go to http://packages.springrts.com/builds/&lt;br /&gt;
2. download the .sdz with the latest evolutionRTS version. (Currently that is 7.37 but check vs what is played in lobby)&lt;br /&gt;
3. Put the .sdz file into: Documents/My Games/Spring/games&lt;br /&gt;
Do not unzip it, just move it there. When you&#039;re done, close and reopen the lobby.&lt;br /&gt;
&lt;br /&gt;
As said, that is only for advanced users and should not be necessary.&lt;br /&gt;
&lt;br /&gt;
===Cannot start command: Downloading Engine 96.0: assign: The parameter is incorrect===&lt;br /&gt;
&lt;br /&gt;
Are you on windows XP? Unfortunately the lobby does not work with Windows XP. You can use the Java Weblobby version by visiting http://www.weblobby.evolutionrts.info directly or you can try a different lobby: http://steamcommunity.com/app/291150/discussions/0/540738051772337468/&lt;br /&gt;
&lt;br /&gt;
===Download stuck at 100%===&lt;br /&gt;
Close the lobby and start it again.&lt;br /&gt;
&lt;br /&gt;
If that doesn&#039;t help, you can try this:&lt;br /&gt;
Download this file... http://springrts.com/dl/buildbot/default/master/96.0/win32/spring_96.0_minimal-portable.7z&lt;br /&gt;
&lt;br /&gt;
Unzip the files into: Documents\My Games\Spring\weblobby\engine\96.0 (if this path doesn&#039;t exist, you should create it)&lt;br /&gt;
&lt;br /&gt;
Start Lobby&lt;br /&gt;
&lt;br /&gt;
==AI does not work!==&lt;br /&gt;
The evolutionRTS AI is the &amp;quot;Survial Spawner AI.&amp;quot;&lt;br /&gt;
It spawns random enemies for you to shot at.&lt;br /&gt;
&lt;br /&gt;
The NullAI bot can also be used: It does &#039;&#039;nothing&#039;&#039; which is nice to try out the game without enemies.&lt;br /&gt;
&lt;br /&gt;
==Sandbox mode? I want to try the game without being rushed!==&lt;br /&gt;
Start a singleplayer game against the NullAI bot.&lt;br /&gt;
&lt;br /&gt;
==Missions?==&lt;br /&gt;
Not there yet.&lt;br /&gt;
&lt;br /&gt;
==It crashed!==&lt;br /&gt;
There is a logfile: [[Infolog.txt]]&lt;br /&gt;
&lt;br /&gt;
The page also explains how to find and share it. You can post it in forum, on steam or in chat.&lt;br /&gt;
&lt;br /&gt;
==Which maps should I play?==&lt;br /&gt;
Eye of Horus is a good map that works for team games, free-for-all, 1v1 and with bots.&lt;br /&gt;
&lt;br /&gt;
==Why so many problems?==&lt;br /&gt;
Surprised by too many players.&lt;br /&gt;
&lt;br /&gt;
==Hooray, I am ingame! How to play?==&lt;br /&gt;
http://www.wiki.evolutionrts.info/doku.php/evolution_rts:quick_start_guide&lt;br /&gt;
&lt;br /&gt;
Or just try out things :)&lt;br /&gt;
&lt;br /&gt;
==How to chat ingame?==&lt;br /&gt;
Press the RETURN key and type your message.&lt;br /&gt;
&lt;br /&gt;
==Graphics problems! / the game runs very bad!==&lt;br /&gt;
Some problems can probally be solved by the general spring-engine FAQ: [[FAQ:trouble]]&lt;br /&gt;
&lt;br /&gt;
==Cursor is painfully slow!==&lt;br /&gt;
Click Settings (the wrench) &amp;gt; Interface &amp;gt; Mouse Cursor &amp;gt; enable Hardware Cursor&lt;br /&gt;
&lt;br /&gt;
==As a player, how can I help?==&lt;br /&gt;
&lt;br /&gt;
1. &#039;&#039;&#039;If you have bugs to report&#039;&#039;&#039;: It is okay to do so in the steam forum: http://steamcommunity.com/app/291150&lt;br /&gt;
&lt;br /&gt;
(Or if you know how to use the google.code bugtracker: https://code.google.com/p/evolutionrts/issues/list )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Give as much &#039;&#039;info&#039;&#039; as possible:&#039;&#039;&#039;&lt;br /&gt;
*Operation system&lt;br /&gt;
&lt;br /&gt;
*computer hardware (laptop or desktop, cpu, ram, graphics card,..)&lt;br /&gt;
&lt;br /&gt;
*This logfile: [[Infolog.txt]]&lt;br /&gt;
&lt;br /&gt;
*Lobby logfile: /Documents/My games/Spring/weblobby/&#039;&#039;&#039;weblobby.log&#039;&#039;&#039; , share via pastebin.com&lt;br /&gt;
&lt;br /&gt;
*Screenshots can be uploaded to imgur.com or similiar&lt;br /&gt;
&lt;br /&gt;
After a while check back on your post, devs might need more informations from you!&lt;br /&gt;
&lt;br /&gt;
Reporting bugs in chat is pretty much useless, there get overlooked there or forgotten.&lt;br /&gt;
&lt;br /&gt;
2. &#039;&#039;&#039;If you can play:&#039;&#039;&#039; help others players with their problems in chat.&lt;br /&gt;
&lt;br /&gt;
3. Be patient  :)&lt;br /&gt;
&lt;br /&gt;
==More Information About Common Bugs==&lt;br /&gt;
https://code.google.com/p/springweblobby/wiki/EvoSteamBugs&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6433</id>
		<title>EvoGreenLitFAQ</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6433"/>
		<updated>2014-04-10T04:10:01Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: SP edit again&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EvolutionRTS emergency FAQ&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Before you ask a question in chat, please see if it is already answered on this list.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Singleplayer?==&lt;br /&gt;
There is a singleplayer tab but with a fresh install it will not work.&lt;br /&gt;
(Game files and engine are missing)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039; Create a multiplayer battleroom with the button at the bottom and make it private by giving it a password.&lt;br /&gt;
&lt;br /&gt;
The lobby will download the necessary files. Afterwards you can select the evolutionRTS game in singleplayer menu, or stay in this battleroom and play. See below for adding bots.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039; Join a multiplayer battleroom. The lobby will download the necessary files. Afterwards you can select the evolutionRTS game in singleplayer menu. See below for adding bots.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatic download of game files does not work==&lt;br /&gt;
NOTE: the GAME file.&lt;br /&gt;
&lt;br /&gt;
Best idea is to wait a bit, the lobby should eventually download it.&lt;br /&gt;
If it really absolutely does not work:&lt;br /&gt;
1. Go to http://packages.springrts.com/builds/&lt;br /&gt;
2. download the .sdz with the latest evolutionRTS version. (Currently that is 7.37 but check vs what is played in lobby)&lt;br /&gt;
3. Put the .sdz file into: Documents/My Games/Spring/games&lt;br /&gt;
Do not unzip it, just move it there. When you&#039;re done, close and reopen the lobby.&lt;br /&gt;
&lt;br /&gt;
As said, that is only for advanced users and should not be necessary.&lt;br /&gt;
&lt;br /&gt;
===Cannot start command: Downloading Engine 96.0: assign: The parameter is incorrect===&lt;br /&gt;
&lt;br /&gt;
Are you on windows XP? Unfortunately the lobby does not work with Windows XP. You can use the Java Weblobby version by visiting http://www.weblobby.evolutionrts.info directly or you can try a different lobby: http://steamcommunity.com/app/291150/discussions/0/540738051772337468/&lt;br /&gt;
&lt;br /&gt;
===Download stuck at 100%===&lt;br /&gt;
Close the lobby and start it again.&lt;br /&gt;
&lt;br /&gt;
If that doesn&#039;t help, you can try this:&lt;br /&gt;
Download this file... http://springrts.com/dl/buildbot/default/master/96.0/win32/spring_96.0_minimal-portable.7z&lt;br /&gt;
&lt;br /&gt;
Unzip the files into: Documents\My Games\Spring\weblobby\engine\96.0 (if this path doesn&#039;t exist, you should create it)&lt;br /&gt;
&lt;br /&gt;
Start Lobby&lt;br /&gt;
&lt;br /&gt;
==AI does not work!==&lt;br /&gt;
The evolutionRTS AI is the &amp;quot;Survial Spawner AI.&amp;quot;&lt;br /&gt;
It spawns random enemies for you to shot at.&lt;br /&gt;
&lt;br /&gt;
The NullAI bot can also be used: It does &#039;&#039;nothing&#039;&#039; which is nice to try out the game without enemies.&lt;br /&gt;
&lt;br /&gt;
==Sandbox mode? I want to try the game without being rushed!==&lt;br /&gt;
Start a singleplayer game against the NullAI bot.&lt;br /&gt;
&lt;br /&gt;
==Missions?==&lt;br /&gt;
Not there yet.&lt;br /&gt;
&lt;br /&gt;
==It crashed!==&lt;br /&gt;
There is a logfile: [[Infolog.txt]]&lt;br /&gt;
&lt;br /&gt;
The page also explains how to find and share it. You can post it in forum, on steam or in chat.&lt;br /&gt;
&lt;br /&gt;
==Which maps should I play?==&lt;br /&gt;
Eye of Horus is a good map that works for team games, free-for-all, 1v1 and with bots.&lt;br /&gt;
&lt;br /&gt;
==Why so many problems?==&lt;br /&gt;
Surprised by too many players.&lt;br /&gt;
&lt;br /&gt;
==Hooray, I am ingame! How to play?==&lt;br /&gt;
http://www.wiki.evolutionrts.info/doku.php/evolution_rts:quick_start_guide&lt;br /&gt;
&lt;br /&gt;
Or just try out things :)&lt;br /&gt;
&lt;br /&gt;
==How to chat ingame?==&lt;br /&gt;
Press the RETURN key and type your message.&lt;br /&gt;
&lt;br /&gt;
==Graphics problems! / the game runs very bad!==&lt;br /&gt;
Some problems can probally be solved by the general spring-engine FAQ: [[FAQ:trouble]]&lt;br /&gt;
&lt;br /&gt;
==Cursor is painfully slow!==&lt;br /&gt;
Click Settings (the wrench) &amp;gt; Interface &amp;gt; Mouse Cursor &amp;gt; enable Hardware Cursor&lt;br /&gt;
&lt;br /&gt;
==As a player, how can I help?==&lt;br /&gt;
&lt;br /&gt;
1. &#039;&#039;&#039;If you have bugs to report&#039;&#039;&#039;: It is okay to do so in the steam forum: http://steamcommunity.com/app/291150&lt;br /&gt;
&lt;br /&gt;
(Or if you know how to use the google.code bugtracker: https://code.google.com/p/evolutionrts/issues/list )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Give as much &#039;&#039;info&#039;&#039; as possible:&#039;&#039;&#039;&lt;br /&gt;
*Operation system&lt;br /&gt;
*computer hardware (laptop or desktop, cpu, ram, graphics card,..)&lt;br /&gt;
*This logfile: [[Infolog.txt]]&lt;br /&gt;
*Screenshots can be uploaded to imgur.com or similiar&lt;br /&gt;
&lt;br /&gt;
After a while check back on your post, devs might need more informations from you!&lt;br /&gt;
&lt;br /&gt;
Reporting bugs in chat is pretty much useless, there get overlooked there or forgotten.&lt;br /&gt;
&lt;br /&gt;
2. &#039;&#039;&#039;If you can play:&#039;&#039;&#039; help others players with their problems in chat.&lt;br /&gt;
&lt;br /&gt;
3. Be patient  :)&lt;br /&gt;
&lt;br /&gt;
==More Information About Common Bugs==&lt;br /&gt;
https://code.google.com/p/springweblobby/wiki/EvoSteamBugs&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6432</id>
		<title>EvoGreenLitFAQ</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6432"/>
		<updated>2014-04-10T01:50:04Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: /* Singleplayer? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EvolutionRTS emergency FAQ&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Before you ask a question in chat, please see if it is already answered on this list.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==countdown, then no game starts==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span class=&amp;quot;warning&amp;quot;&amp;gt;Right now there are many reports of games not starting.&amp;lt;/span&amp;gt; &lt;br /&gt;
Instead there is loadscreen with a 30sec countdown.&lt;br /&gt;
http://abload.de/img/countdownnwsib.png&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I do not know what is the problem with that.&#039;&#039;&#039; Lobby developers will hopefully be back in a few hours. Please post any details you can find on steam forum, your feedback is apprecitated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Singleplayer?==&lt;br /&gt;
There is a singleplayer tab but with a fresh install it will not work.&lt;br /&gt;
(Game files and engine are missing)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039; Create a multiplayer battleroom with the button at the bottom and make it private by giving it a password.&lt;br /&gt;
&lt;br /&gt;
The lobby will download the necessary files. Afterwards you can select the evolutionRTS game in singleplayer menu, or stay in this battleroom and play. See below for adding bots.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039; Join a multiplayer battleroom. The lobby will download the necessary files. Afterwards you can select the evolutionRTS game in singleplayer menu. See below for adding bots.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatic download of game files does not work==&lt;br /&gt;
NOTE: the GAME file.&lt;br /&gt;
&lt;br /&gt;
Best idea is to wait a bit, the lobby should eventually download it.&lt;br /&gt;
If it really absolutely does not work:&lt;br /&gt;
1. Go to http://packages.springrts.com/builds/&lt;br /&gt;
2. download the .sdz with the latest evolutionRTS version. (Currently that is 7.37 but check vs what is played in lobby)&lt;br /&gt;
3. Put the .sdz file into: Documents/My Games/Spring/games&lt;br /&gt;
Do not unzip it, just move it there. When you&#039;re done, close and reopen the lobby.&lt;br /&gt;
&lt;br /&gt;
As said, that is only for advanced users and should not be necessary.&lt;br /&gt;
&lt;br /&gt;
===Cannot start command: Downloading Engine 96.0: assign: The parameter is incorrect===&lt;br /&gt;
&lt;br /&gt;
Are you on windows XP? Unfortunately the lobby does not work with Windows XP. You can use the Java Weblobby version by visiting http://www.weblobby.evolutionrts.info directly or you can try a different lobby: http://steamcommunity.com/app/291150/discussions/0/540738051772337468/&lt;br /&gt;
&lt;br /&gt;
===Download stuck at 100%===&lt;br /&gt;
Close the lobby and start it again.&lt;br /&gt;
&lt;br /&gt;
If that doesn&#039;t help, you can try this:&lt;br /&gt;
Download this file... http://springrts.com/dl/buildbot/default/master/96.0/win32/spring_96.0_minimal-portable.7z&lt;br /&gt;
&lt;br /&gt;
Unzip the files into: Documents\My Games\Spring\weblobby\engine\96.0 (if this path doesn&#039;t exist, you should create it)&lt;br /&gt;
&lt;br /&gt;
Start Lobby&lt;br /&gt;
&lt;br /&gt;
==AI does not work!==&lt;br /&gt;
The evolutionRTS AI is the &amp;quot;Survial Spawner AI.&amp;quot;&lt;br /&gt;
It spawns random enemies for you to shot at.&lt;br /&gt;
&lt;br /&gt;
The NullAI bot can also be used: It does &#039;&#039;nothing&#039;&#039; which is nice to try out the game without enemies.&lt;br /&gt;
&lt;br /&gt;
==Sandbox mode? I want to try the game without being rushed!==&lt;br /&gt;
Start a singleplayer game against the NullAI bot.&lt;br /&gt;
&lt;br /&gt;
==Missions?==&lt;br /&gt;
Not there yet.&lt;br /&gt;
&lt;br /&gt;
==It crashed!==&lt;br /&gt;
There is a logfile: [[Infolog.txt]]&lt;br /&gt;
&lt;br /&gt;
The page also explains how to find and share it. You can post it in forum, on steam or in chat.&lt;br /&gt;
&lt;br /&gt;
==Which maps should I play?==&lt;br /&gt;
Eye of Horus is a good map that works for team games, free-for-all, 1v1 and with bots.&lt;br /&gt;
&lt;br /&gt;
==Why so many problems?==&lt;br /&gt;
Surprised by too many players.&lt;br /&gt;
&lt;br /&gt;
==Hooray, I am ingame! How to play?==&lt;br /&gt;
http://www.wiki.evolutionrts.info/doku.php/evolution_rts:quick_start_guide&lt;br /&gt;
&lt;br /&gt;
Or just try out things :)&lt;br /&gt;
&lt;br /&gt;
==How to chat ingame?==&lt;br /&gt;
Press the RETURN key and type your message.&lt;br /&gt;
&lt;br /&gt;
==Graphics problems! / the game runs very bad!==&lt;br /&gt;
Some problems can probally be solved by the general spring-engine FAQ: [[FAQ:trouble]]&lt;br /&gt;
&lt;br /&gt;
==Cursor is painfully slow!==&lt;br /&gt;
Click Settings (the wrench) &amp;gt; Interface &amp;gt; Mouse Cursor &amp;gt; enable Hardware Cursor&lt;br /&gt;
&lt;br /&gt;
==As a player, how can I help?==&lt;br /&gt;
&lt;br /&gt;
1. &#039;&#039;&#039;If you have bugs to report&#039;&#039;&#039;: It is okay to do so in the steam forum: http://steamcommunity.com/app/291150&lt;br /&gt;
&lt;br /&gt;
(Or if you know how to use the google.code bugtracker: https://code.google.com/p/evolutionrts/issues/list )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Give as much &#039;&#039;info&#039;&#039; as possible:&#039;&#039;&#039;&lt;br /&gt;
*Operation system&lt;br /&gt;
*computer hardware (laptop or desktop, cpu, ram, graphics card,..)&lt;br /&gt;
*This logfile: [[Infolog.txt]]&lt;br /&gt;
*Screenshots can be uploaded to imgur.com or similiar&lt;br /&gt;
&lt;br /&gt;
After a while check back on your post, devs might need more informations from you!&lt;br /&gt;
&lt;br /&gt;
Reporting bugs in chat is pretty much useless, there get overlooked there or forgotten.&lt;br /&gt;
&lt;br /&gt;
2. &#039;&#039;&#039;If you can play:&#039;&#039;&#039; help others players with their problems in chat.&lt;br /&gt;
&lt;br /&gt;
3. Be patient  :)&lt;br /&gt;
&lt;br /&gt;
==More Information About Common Bugs==&lt;br /&gt;
https://code.google.com/p/springweblobby/wiki/EvoSteamBugs&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6431</id>
		<title>EvoGreenLitFAQ</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6431"/>
		<updated>2014-04-10T01:27:51Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: Singleplayer changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EvolutionRTS emergency FAQ&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Before you ask a question in chat, please see if it is already answered on this list.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==countdown, then no game starts==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span class=&amp;quot;warning&amp;quot;&amp;gt;Right now there are many reports of games not starting.&amp;lt;/span&amp;gt; &lt;br /&gt;
Instead there is loadscreen with a 30sec countdown.&lt;br /&gt;
http://abload.de/img/countdownnwsib.png&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I do not know what is the problem with that.&#039;&#039;&#039; Lobby developers will hopefully be back in a few hours. Please post any details you can find on steam forum, your feedback is apprecitated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Singleplayer?==&lt;br /&gt;
There is a singleplayer tab but with a fresh install it will not work.&lt;br /&gt;
(Game files and engine are missing)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039; Create a multiplayer battleroom with the button at the bottom and make it private by giving it a password.&lt;br /&gt;
&lt;br /&gt;
The lobby will download the necessary files. Afterwards you can select the evolutionRTS game in singleplayer menu, or stay in this battleroom and play. See below for adding bots.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039; Join a multiplayer battleroom. The lobby will download the necessary files. Afterwards you can select the evolutionRTS game in singleplayer menu. See below for adding bots.&lt;br /&gt;
&lt;br /&gt;
==Automatic download of game files does not work==&lt;br /&gt;
NOTE: the GAME file.&lt;br /&gt;
&lt;br /&gt;
Best idea is to wait a bit, the lobby should eventually download it.&lt;br /&gt;
If it really absolutely does not work:&lt;br /&gt;
1. Go to http://packages.springrts.com/builds/&lt;br /&gt;
2. download the .sdz with the latest evolutionRTS version. (Currently that is 7.37 but check vs what is played in lobby)&lt;br /&gt;
3. Put the .sdz file into: Documents/My Games/Spring/games&lt;br /&gt;
Do not unzip it, just move it there. When you&#039;re done, close and reopen the lobby.&lt;br /&gt;
&lt;br /&gt;
As said, that is only for advanced users and should not be necessary.&lt;br /&gt;
&lt;br /&gt;
===Cannot start command: Downloading Engine 96.0: assign: The parameter is incorrect===&lt;br /&gt;
&lt;br /&gt;
Are you on windows XP? Unfortunately the lobby does not work with Windows XP. You can use the Java Weblobby version by visiting http://www.weblobby.evolutionrts.info directly or you can try a different lobby: http://steamcommunity.com/app/291150/discussions/0/540738051772337468/&lt;br /&gt;
&lt;br /&gt;
===Download stuck at 100%===&lt;br /&gt;
Close the lobby and start it again.&lt;br /&gt;
&lt;br /&gt;
If that doesn&#039;t help, you can try this:&lt;br /&gt;
Download this file... http://springrts.com/dl/buildbot/default/master/96.0/win32/spring_96.0_minimal-portable.7z&lt;br /&gt;
&lt;br /&gt;
Unzip the files into: Documents\My Games\Spring\weblobby\engine\96.0 (if this path doesn&#039;t exist, you should create it)&lt;br /&gt;
&lt;br /&gt;
Start Lobby&lt;br /&gt;
&lt;br /&gt;
==AI does not work!==&lt;br /&gt;
The evolutionRTS AI is the &amp;quot;Survial Spawner AI.&amp;quot;&lt;br /&gt;
It spawns random enemies for you to shot at.&lt;br /&gt;
&lt;br /&gt;
The NullAI bot can also be used: It does &#039;&#039;nothing&#039;&#039; which is nice to try out the game without enemies.&lt;br /&gt;
&lt;br /&gt;
==Sandbox mode? I want to try the game without being rushed!==&lt;br /&gt;
Start a singleplayer game against the NullAI bot.&lt;br /&gt;
&lt;br /&gt;
==Missions?==&lt;br /&gt;
Not there yet.&lt;br /&gt;
&lt;br /&gt;
==It crashed!==&lt;br /&gt;
There is a logfile: [[Infolog.txt]]&lt;br /&gt;
&lt;br /&gt;
The page also explains how to find and share it. You can post it in forum, on steam or in chat.&lt;br /&gt;
&lt;br /&gt;
==Which maps should I play?==&lt;br /&gt;
Eye of Horus is a good map that works for team games, free-for-all, 1v1 and with bots.&lt;br /&gt;
&lt;br /&gt;
==Why so many problems?==&lt;br /&gt;
Surprised by too many players.&lt;br /&gt;
&lt;br /&gt;
==Hooray, I am ingame! How to play?==&lt;br /&gt;
http://www.wiki.evolutionrts.info/doku.php/evolution_rts:quick_start_guide&lt;br /&gt;
&lt;br /&gt;
Or just try out things :)&lt;br /&gt;
&lt;br /&gt;
==How to chat ingame?==&lt;br /&gt;
Press the RETURN key and type your message.&lt;br /&gt;
&lt;br /&gt;
==Graphics problems! / the game runs very bad!==&lt;br /&gt;
Some problems can probally be solved by the general spring-engine FAQ: [[FAQ:trouble]]&lt;br /&gt;
&lt;br /&gt;
==Cursor is painfully slow!==&lt;br /&gt;
Click Settings (the wrench) &amp;gt; Interface &amp;gt; Mouse Cursor &amp;gt; enable Hardware Cursor&lt;br /&gt;
&lt;br /&gt;
==As a player, how can I help?==&lt;br /&gt;
&lt;br /&gt;
1. &#039;&#039;&#039;If you have bugs to report&#039;&#039;&#039;: It is okay to do so in the steam forum: http://steamcommunity.com/app/291150&lt;br /&gt;
&lt;br /&gt;
(Or if you know how to use the google.code bugtracker: https://code.google.com/p/evolutionrts/issues/list )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Give as much &#039;&#039;info&#039;&#039; as possible:&#039;&#039;&#039;&lt;br /&gt;
*Operation system&lt;br /&gt;
*computer hardware (laptop or desktop, cpu, ram, graphics card,..)&lt;br /&gt;
*This logfile: [[Infolog.txt]]&lt;br /&gt;
*Screenshots can be uploaded to imgur.com or similiar&lt;br /&gt;
&lt;br /&gt;
After a while check back on your post, devs might need more informations from you!&lt;br /&gt;
&lt;br /&gt;
Reporting bugs in chat is pretty much useless, there get overlooked there or forgotten.&lt;br /&gt;
&lt;br /&gt;
2. &#039;&#039;&#039;If you can play:&#039;&#039;&#039; help others players with their problems in chat.&lt;br /&gt;
&lt;br /&gt;
3. Be patient  :)&lt;br /&gt;
&lt;br /&gt;
==More Information About Common Bugs==&lt;br /&gt;
https://code.google.com/p/springweblobby/wiki/EvoSteamBugs&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6428</id>
		<title>EvoGreenLitFAQ</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6428"/>
		<updated>2014-04-09T20:13:44Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: /* Singleplayer? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EvolutionRTS emergency FAQ&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Before you ask a question in chat, please see if it is already answered on this list.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Singleplayer?==&lt;br /&gt;
There is a singleplayer tab but with a fresh install it will not work.&lt;br /&gt;
(Game files and engine are missing)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039; Create a multiplayer battleroom with the button at the bottom and make it private by giving it a password.&lt;br /&gt;
&lt;br /&gt;
The lobby will download the necessary files. Afterwards you can select the evolutionRTS game in singleplayer menu, or stay in this battleroom and play. See below for adding bots.&lt;br /&gt;
&lt;br /&gt;
==Automatic download of game files does not work==&lt;br /&gt;
NOTE: the GAME file.&lt;br /&gt;
&lt;br /&gt;
Best idea is to wait a bit, the lobby should eventually download it.&lt;br /&gt;
If it really absolutely does not work:&lt;br /&gt;
1. Go to http://packages.springrts.com/builds/&lt;br /&gt;
2. download the .sdz with the latest evolutionRTS version. (Currently that is 7.37 but check vs what is played in lobby)&lt;br /&gt;
3. Put the .sdz file into: Documents/My Games/Spring/games&lt;br /&gt;
Do not unzip it, just move it there. When you&#039;re done, close and reopen the lobby.&lt;br /&gt;
&lt;br /&gt;
As said, that is only for advanced users and should not be necessary.&lt;br /&gt;
&lt;br /&gt;
===Cannot start command: Downloading Engine 96.0: assign: The parameter is incorrect===&lt;br /&gt;
&lt;br /&gt;
Are you on windows XP? Unfortunately the lobby does not work with Windows XP. You can use the Java Weblobby version by visiting http://www.weblobby.evolutionrts.info directly or you can try a different lobby: http://steamcommunity.com/app/291150/discussions/0/540738051772337468/&lt;br /&gt;
&lt;br /&gt;
===Download stuck at 100%===&lt;br /&gt;
Close the lobby and start it again.&lt;br /&gt;
&lt;br /&gt;
==AI does not work!==&lt;br /&gt;
The evolutionRTS AI is the &amp;quot;Survial Spawner AI.&amp;quot;&lt;br /&gt;
It spawns random enemies for you to shot at.&lt;br /&gt;
&lt;br /&gt;
The NullAI bot can also be used: It does &#039;&#039;nothing&#039;&#039; which is nice to try out the game without enemies.&lt;br /&gt;
&lt;br /&gt;
==Sandbox mode? I want to try the game without being rushed!==&lt;br /&gt;
Start a singleplayer game against the NullAI bot.&lt;br /&gt;
&lt;br /&gt;
==Missions?==&lt;br /&gt;
Not there yet.&lt;br /&gt;
&lt;br /&gt;
==It crashed!==&lt;br /&gt;
There is a logfile: [[Infolog.txt]]&lt;br /&gt;
&lt;br /&gt;
The page also explains how to find and share it. You can post it in forum, on steam or in chat.&lt;br /&gt;
&lt;br /&gt;
==Which maps should I play?==&lt;br /&gt;
Eye of Horus is a good map that works for team games, free-for-all, 1v1 and with bots.&lt;br /&gt;
&lt;br /&gt;
==Why so many problems?==&lt;br /&gt;
Surprised by too many players.&lt;br /&gt;
&lt;br /&gt;
==Hooray, I am ingame! How to play?==&lt;br /&gt;
http://www.wiki.evolutionrts.info/doku.php/evolution_rts:quick_start_guide&lt;br /&gt;
&lt;br /&gt;
Or just try out things :)&lt;br /&gt;
&lt;br /&gt;
==How to chat ingame?==&lt;br /&gt;
Press the RETURN key and type your message.&lt;br /&gt;
&lt;br /&gt;
==Graphics problems! / the game runs very bad!==&lt;br /&gt;
Some problems can probally be solved by the general spring-engine FAQ: [[FAQ:trouble]]&lt;br /&gt;
&lt;br /&gt;
==Cursor is painfully slow!==&lt;br /&gt;
Click Settings (the wrench) &amp;gt; Interface &amp;gt; Mouse Cursor &amp;gt; enable Hardware Cursor&lt;br /&gt;
&lt;br /&gt;
==As a player, how can I help?==&lt;br /&gt;
&lt;br /&gt;
1. &#039;&#039;&#039;If you have bugs to report&#039;&#039;&#039;: It is okay to do so in the steam forum: http://steamcommunity.com/app/291150&lt;br /&gt;
&lt;br /&gt;
(Or if you know how to use the google.code bugtracker: https://code.google.com/p/evolutionrts/issues/list )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Give as much &#039;&#039;info&#039;&#039; as possible:&#039;&#039;&#039;&lt;br /&gt;
*Operation system&lt;br /&gt;
*computer hardware (laptop or desktop, cpu, ram, graphics card,..)&lt;br /&gt;
*This logfile: [[Infolog.txt]]&lt;br /&gt;
*Screenshots can be uploaded to imgur.com or similiar&lt;br /&gt;
&lt;br /&gt;
After a while check back on your post, devs might need more informations from you!&lt;br /&gt;
&lt;br /&gt;
Reporting bugs in chat is pretty much useless, there get overlooked there or forgotten.&lt;br /&gt;
&lt;br /&gt;
2. &#039;&#039;&#039;If you can play:&#039;&#039;&#039; help others players with their problems in chat.&lt;br /&gt;
&lt;br /&gt;
3. Be patient  :)&lt;br /&gt;
&lt;br /&gt;
==More Information About Common Bugs==&lt;br /&gt;
https://code.google.com/p/springweblobby/wiki/EvoSteamBugs&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6427</id>
		<title>EvoGreenLitFAQ</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6427"/>
		<updated>2014-04-09T19:30:59Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: Other AIs are now hidden from weblobby.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EvolutionRTS emergency FAQ&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Before you ask a question in chat, please see if it is already answered on this list.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Singleplayer?==&lt;br /&gt;
There is a singleplayer tab but with a fresh install it will not work.&lt;br /&gt;
(Game files and engine are missing)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039; Join a multiplayer game. &lt;br /&gt;
&lt;br /&gt;
The lobby will download the nessecary files. Afterwards you can select the evolutionRTS game in singleplayer menu.&lt;br /&gt;
&lt;br /&gt;
==Automatic download of game files does not work==&lt;br /&gt;
NOTE: the GAME file.&lt;br /&gt;
&lt;br /&gt;
Best idea is to wait a bit, the lobby should eventually download it.&lt;br /&gt;
If it really absolutely does not work:&lt;br /&gt;
1. Go to http://packages.springrts.com/builds/&lt;br /&gt;
2. download the .sdz with the latest evolutionRTS version. (Currently that is 7.37 but check vs what is played in lobby)&lt;br /&gt;
3. Put the .sdz file into: Documents/My Games/Spring/games&lt;br /&gt;
Do not unzip it, just move it there. When you&#039;re done, close and reopen the lobby.&lt;br /&gt;
&lt;br /&gt;
As said, that is only for advanced users and should not be necessary.&lt;br /&gt;
&lt;br /&gt;
===Cannot start command: Downloading Engine 96.0: assign: The parameter is incorrect===&lt;br /&gt;
&lt;br /&gt;
Are you on windows XP? Unfortunately the lobby does not work with Windows XP. You can use the Java Weblobby version by visiting http://www.weblobby.evolutionrts.info directly or you can try a different lobby: http://steamcommunity.com/app/291150/discussions/0/540738051772337468/&lt;br /&gt;
&lt;br /&gt;
===Download stuck at 100%===&lt;br /&gt;
Close the lobby and start it again.&lt;br /&gt;
&lt;br /&gt;
==AI does not work!==&lt;br /&gt;
The evolutionRTS AI is the &amp;quot;Survial Spawner AI.&amp;quot;&lt;br /&gt;
It spawns random enemies for you to shot at.&lt;br /&gt;
&lt;br /&gt;
The NullAI bot can also be used: It does &#039;&#039;nothing&#039;&#039; which is nice to try out the game without enemies.&lt;br /&gt;
&lt;br /&gt;
==Sandbox mode? I want to try the game without being rushed!==&lt;br /&gt;
Start a singleplayer game against the NullAI bot.&lt;br /&gt;
&lt;br /&gt;
==Missions?==&lt;br /&gt;
Not there yet.&lt;br /&gt;
&lt;br /&gt;
==It crashed!==&lt;br /&gt;
There is a logfile: [[Infolog.txt]]&lt;br /&gt;
&lt;br /&gt;
The page also explains how to find and share it. You can post it in forum, on steam or in chat.&lt;br /&gt;
&lt;br /&gt;
==Which maps should I play?==&lt;br /&gt;
Eye of Horus is a good map that works for team games, free-for-all, 1v1 and with bots.&lt;br /&gt;
&lt;br /&gt;
==Why so many problems?==&lt;br /&gt;
Surprised by too many players.&lt;br /&gt;
&lt;br /&gt;
==Hooray, I am ingame! How to play?==&lt;br /&gt;
http://www.wiki.evolutionrts.info/doku.php/evolution_rts:quick_start_guide&lt;br /&gt;
&lt;br /&gt;
Or just try out things :)&lt;br /&gt;
&lt;br /&gt;
==How to chat ingame?==&lt;br /&gt;
Press the RETURN key and type your message.&lt;br /&gt;
&lt;br /&gt;
==Graphics problems! / the game runs very bad!==&lt;br /&gt;
Some problems can probally be solved by the general spring-engine FAQ: [[FAQ:trouble]]&lt;br /&gt;
&lt;br /&gt;
==Cursor is painfully slow!==&lt;br /&gt;
Click Settings (the wrench) &amp;gt; Interface &amp;gt; Mouse Cursor &amp;gt; enable Hardware Cursor&lt;br /&gt;
&lt;br /&gt;
==As a player, how can I help?==&lt;br /&gt;
&lt;br /&gt;
1. &#039;&#039;&#039;If you have bugs to report&#039;&#039;&#039;: It is okay to do so in the steam forum: http://steamcommunity.com/app/291150&lt;br /&gt;
&lt;br /&gt;
(Or if you know how to use the google.code bugtracker: https://code.google.com/p/evolutionrts/issues/list )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Give as much &#039;&#039;info&#039;&#039; as possible:&#039;&#039;&#039;&lt;br /&gt;
*Operation system&lt;br /&gt;
*computer hardware (laptop or desktop, cpu, ram, graphics card,..)&lt;br /&gt;
*This logfile: [[Infolog.txt]]&lt;br /&gt;
*Screenshots can be uploaded to imgur.com or similiar&lt;br /&gt;
&lt;br /&gt;
After a while check back on your post, devs might need more informations from you!&lt;br /&gt;
&lt;br /&gt;
Reporting bugs in chat is pretty much useless, there get overlooked there or forgotten.&lt;br /&gt;
&lt;br /&gt;
2. &#039;&#039;&#039;If you can play:&#039;&#039;&#039; help others players with their problems in chat.&lt;br /&gt;
&lt;br /&gt;
3. Be patient  :)&lt;br /&gt;
&lt;br /&gt;
==More Information About Common Bugs==&lt;br /&gt;
https://code.google.com/p/springweblobby/wiki/EvoSteamBugs&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6426</id>
		<title>EvoGreenLitFAQ</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6426"/>
		<updated>2014-04-09T19:28:20Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: added link to weblobby evo steam bugs.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EvolutionRTS emergency FAQ&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Before you ask a question in chat, please see if it is already answered on this list.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Singleplayer?==&lt;br /&gt;
There is a singleplayer tab but with a fresh install it will not work.&lt;br /&gt;
(Game files and engine are missing)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039; Join a multiplayer game. &lt;br /&gt;
&lt;br /&gt;
The lobby will download the nessecary files. Afterwards you can select the evolutionRTS game in singleplayer menu.&lt;br /&gt;
&lt;br /&gt;
==Automatic download of game files does not work==&lt;br /&gt;
NOTE: the GAME file.&lt;br /&gt;
&lt;br /&gt;
Best idea is to wait a bit, the lobby should eventually download it.&lt;br /&gt;
If it really absolutely does not work:&lt;br /&gt;
1. Go to http://packages.springrts.com/builds/&lt;br /&gt;
2. download the .sdz with the latest evolutionRTS version. (Currently that is 7.37 but check vs what is played in lobby)&lt;br /&gt;
3. Put the .sdz file into: Documents/My Games/Spring/games&lt;br /&gt;
Do not unzip it, just move it there. When you&#039;re done, close and reopen the lobby.&lt;br /&gt;
&lt;br /&gt;
As said, that is only for advanced users and should not be necessary.&lt;br /&gt;
&lt;br /&gt;
===Cannot start command: Downloading Engine 96.0: assign: The parameter is incorrect===&lt;br /&gt;
&lt;br /&gt;
Are you on windows XP? Unfortunately the lobby does not work with Windows XP. You can use the Java Weblobby version by visiting http://www.weblobby.evolutionrts.info directly or you can try a different lobby: http://steamcommunity.com/app/291150/discussions/0/540738051772337468/&lt;br /&gt;
&lt;br /&gt;
===Download stuck at 100%===&lt;br /&gt;
Close the lobby and start it again.&lt;br /&gt;
&lt;br /&gt;
==AI does not work!==&lt;br /&gt;
The evolutionRTS AI is the &amp;quot;Survial Spawner AI.&amp;quot;&lt;br /&gt;
It spawns random enemies for you to shot at.&lt;br /&gt;
&lt;br /&gt;
The NullAI bot can also be used: It does &#039;&#039;nothing&#039;&#039; which is nice to try out the game without enemies.&lt;br /&gt;
&lt;br /&gt;
ALL OTHER AI BOTS DO NOT WORK! (they are meant for different spring games)&lt;br /&gt;
&lt;br /&gt;
==Sandbox mode? I want to try the game without being rushed!==&lt;br /&gt;
Start a singleplayer game against the NullAI bot.&lt;br /&gt;
&lt;br /&gt;
==Missions?==&lt;br /&gt;
Not there yet.&lt;br /&gt;
&lt;br /&gt;
==It crashed!==&lt;br /&gt;
There is a logfile: [[Infolog.txt]]&lt;br /&gt;
&lt;br /&gt;
The page also explains how to find and share it. You can post it in forum, on steam or in chat.&lt;br /&gt;
&lt;br /&gt;
==Which maps should I play?==&lt;br /&gt;
Eye of Horus is a good map that works for team games, free-for-all, 1v1 and with bots.&lt;br /&gt;
&lt;br /&gt;
==Why so many problems?==&lt;br /&gt;
Surprised by too many players.&lt;br /&gt;
&lt;br /&gt;
==Hooray, I am ingame! How to play?==&lt;br /&gt;
http://www.wiki.evolutionrts.info/doku.php/evolution_rts:quick_start_guide&lt;br /&gt;
&lt;br /&gt;
Or just try out things :)&lt;br /&gt;
&lt;br /&gt;
==How to chat ingame?==&lt;br /&gt;
Press the RETURN key and type your message.&lt;br /&gt;
&lt;br /&gt;
==Graphics problems! / the game runs very bad!==&lt;br /&gt;
Some problems can probally be solved by the general spring-engine FAQ: [[FAQ:trouble]]&lt;br /&gt;
&lt;br /&gt;
==Cursor is painfully slow!==&lt;br /&gt;
Click Settings (the wrench) &amp;gt; Interface &amp;gt; Mouse Cursor &amp;gt; enable Hardware Cursor&lt;br /&gt;
&lt;br /&gt;
==As a player, how can I help?==&lt;br /&gt;
&lt;br /&gt;
1. &#039;&#039;&#039;If you have bugs to report&#039;&#039;&#039;: It is okay to do so in the steam forum: http://steamcommunity.com/app/291150&lt;br /&gt;
&lt;br /&gt;
(Or if you know how to use the google.code bugtracker: https://code.google.com/p/evolutionrts/issues/list )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Give as much &#039;&#039;info&#039;&#039; as possible:&#039;&#039;&#039;&lt;br /&gt;
*Operation system&lt;br /&gt;
*computer hardware (laptop or desktop, cpu, ram, graphics card,..)&lt;br /&gt;
*This logfile: [[Infolog.txt]]&lt;br /&gt;
*Screenshots can be uploaded to imgur.com or similiar&lt;br /&gt;
&lt;br /&gt;
After a while check back on your post, devs might need more informations from you!&lt;br /&gt;
&lt;br /&gt;
Reporting bugs in chat is pretty much useless, there get overlooked there or forgotten.&lt;br /&gt;
&lt;br /&gt;
2. &#039;&#039;&#039;If you can play:&#039;&#039;&#039; help others players with their problems in chat.&lt;br /&gt;
&lt;br /&gt;
3. Be patient  :)&lt;br /&gt;
&lt;br /&gt;
==More Information About Common Bugs==&lt;br /&gt;
https://code.google.com/p/springweblobby/wiki/EvoSteamBugs&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6424</id>
		<title>EvoGreenLitFAQ</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6424"/>
		<updated>2014-04-09T06:49:18Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: Added hardware cursor fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EvolutionRTS emergency FAQ&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Before you ask a question in chat, please see if it is already answered on this list.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Singleplayer?==&lt;br /&gt;
There is a singleplayer tab but with a fresh install it will not work.&lt;br /&gt;
(Game files and engine are missing)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039; Join a multiplayer game. &lt;br /&gt;
&lt;br /&gt;
The lobby will download the nessecary files. Afterwards you can select the evolutionRTS game in singleplayer menu.&lt;br /&gt;
&lt;br /&gt;
==Automatic download of game files does not work==&lt;br /&gt;
NOTE: the GAME file.&lt;br /&gt;
&lt;br /&gt;
Best idea is to wait a bit, the lobby should eventually download it.&lt;br /&gt;
If it really absolutely does not work:&lt;br /&gt;
1. Go to http://packages.springrts.com/builds/&lt;br /&gt;
2. download the .sdz with the latest evolutionRTS version. (Currently that is 7.37 but check vs what is played in lobby)&lt;br /&gt;
3. Put the .sdz file into: Documents/My Games/Spring/games&lt;br /&gt;
Do not unzip it, just move it there. When you&#039;re done, close and reopen the lobby.&lt;br /&gt;
&lt;br /&gt;
As said, that is only for advanced users and should not be necessary.&lt;br /&gt;
&lt;br /&gt;
===Download stuck at 100%===&lt;br /&gt;
Close the lobby and start it again.&lt;br /&gt;
&lt;br /&gt;
==AI does not work!==&lt;br /&gt;
The evolutionRTS AI is the &amp;quot;Survial Spawner AI.&amp;quot;&lt;br /&gt;
It spawns random enemies for you to shot at.&lt;br /&gt;
&lt;br /&gt;
The NullAI bot can also be used: It does &#039;&#039;nothing&#039;&#039; which is nice to try out the game without enemies.&lt;br /&gt;
&lt;br /&gt;
ALL OTHER AI BOTS DO NOT WORK! (they are meant for different spring games)&lt;br /&gt;
&lt;br /&gt;
==Sandbox mode? I want to try the game without being rushed!==&lt;br /&gt;
Start a singleplayer game against the NullAI bot.&lt;br /&gt;
&lt;br /&gt;
==Missions?==&lt;br /&gt;
Not there yet.&lt;br /&gt;
&lt;br /&gt;
==It crashed!==&lt;br /&gt;
There is a logfile: [[Infolog.txt]]&lt;br /&gt;
&lt;br /&gt;
The page also explains how to find and share it. You can post it in forum, on steam or in chat.&lt;br /&gt;
&lt;br /&gt;
==Which maps should I play?==&lt;br /&gt;
Eye of Horus is a good map that works for team games, free-for-all, 1v1 and with bots.&lt;br /&gt;
&lt;br /&gt;
==Why so many problems?==&lt;br /&gt;
Surprised by too many players.&lt;br /&gt;
&lt;br /&gt;
==Hooray, I am ingame! How to play?==&lt;br /&gt;
http://www.wiki.evolutionrts.info/doku.php/evolution_rts:quick_start_guide&lt;br /&gt;
&lt;br /&gt;
Or just try out things :)&lt;br /&gt;
&lt;br /&gt;
==How to chat ingame?==&lt;br /&gt;
Press the RETURN key and type your message.&lt;br /&gt;
&lt;br /&gt;
==Graphics problems! / the game runs very bad!==&lt;br /&gt;
Some problems can probally be solved by the general spring-engine FAQ: [[FAQ:trouble]]&lt;br /&gt;
&lt;br /&gt;
==Cursor is painfully slow!==&lt;br /&gt;
Click Settings (the wrench) &amp;gt; Interface &amp;gt; Mouse Cursor &amp;gt; enable Hardware Cursor&lt;br /&gt;
&lt;br /&gt;
==As a player, how can I help?==&lt;br /&gt;
&lt;br /&gt;
1. &#039;&#039;&#039;If you have bugs to report&#039;&#039;&#039;: It is okay to do so in the steam forum: http://steamcommunity.com/app/291150&lt;br /&gt;
&lt;br /&gt;
(Or if you know how to use the google.code bugtracker: https://code.google.com/p/evolutionrts/issues/list )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Give as much &#039;&#039;info&#039;&#039; as possible:&#039;&#039;&#039;&lt;br /&gt;
*Operation system&lt;br /&gt;
*computer hardware (laptop or desktop, cpu, ram, graphics card,..)&lt;br /&gt;
*This logfile: [[Infolog.txt]]&lt;br /&gt;
*Screenshots can be uploaded to imgur.com or similiar&lt;br /&gt;
&lt;br /&gt;
After a while check back on your post, devs might need more informations from you!&lt;br /&gt;
&lt;br /&gt;
Reporting bugs in chat is pretty much useless, there get overlooked there or forgotten.&lt;br /&gt;
&lt;br /&gt;
2. &#039;&#039;&#039;If you can play:&#039;&#039;&#039; help others players with their problems in chat.&lt;br /&gt;
&lt;br /&gt;
3. Be patient  :)&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6422</id>
		<title>EvoGreenLitFAQ</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenLitFAQ&amp;diff=6422"/>
		<updated>2014-04-09T04:59:51Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: /* Automatic download of game files does not work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EvolutionRTS emergency FAQ&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Before you ask a question in chat, please see if it is already answered on this list.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Singleplayer?==&lt;br /&gt;
There is a singleplayer tab but with a fresh install it will not work.&lt;br /&gt;
(Game files and engine are missing)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039; Join a multiplayer game. &lt;br /&gt;
&lt;br /&gt;
The lobby will download the nessecary files. Afterwards you can select the evolutionRTS game in singleplayer menu.&lt;br /&gt;
&lt;br /&gt;
==Automatic download of game files does not work==&lt;br /&gt;
NOTE: the GAME file.&lt;br /&gt;
&lt;br /&gt;
Best idea is to wait a bit, the lobby should eventually download it.&lt;br /&gt;
If it really absolutely does not work:&lt;br /&gt;
1. Go to http://packages.springrts.com/builds/&lt;br /&gt;
2. download the .sdz with the latest evolutionRTS version. (Currently that is 7.37 but check vs what is played in lobby)&lt;br /&gt;
3. Put the .sdz file into: Documents/My Games/Spring/games&lt;br /&gt;
Do not unzip it, just move it there. When you&#039;re done, close and reopen the lobby.&lt;br /&gt;
&lt;br /&gt;
As said, that is only for advanced users and should not be necessary.&lt;br /&gt;
&lt;br /&gt;
===Download stuck at 100%===&lt;br /&gt;
Close the lobby and start it again.&lt;br /&gt;
&lt;br /&gt;
==AI does not work!==&lt;br /&gt;
The evolutionRTS AI is the &amp;quot;Survial Spawner AI.&amp;quot;&lt;br /&gt;
It spawns random enemies for you to shot at.&lt;br /&gt;
&lt;br /&gt;
The NullAI bot can also be used: It does &#039;&#039;nothing&#039;&#039; which is nice to try out the game without enemies.&lt;br /&gt;
&lt;br /&gt;
ALL OTHER AI BOTS DO NOT WORK! (they are meant for different spring games)&lt;br /&gt;
&lt;br /&gt;
==Sandbox mode? I want to try the game without being rushed!==&lt;br /&gt;
Start a singleplayer game against the NullAI bot.&lt;br /&gt;
&lt;br /&gt;
==Missions?==&lt;br /&gt;
Not there yet.&lt;br /&gt;
&lt;br /&gt;
==It crashed!==&lt;br /&gt;
There is a logfile: [[Infolog.txt]]&lt;br /&gt;
&lt;br /&gt;
The page also explains how to find and share it. You can post it in forum, on steam or in chat.&lt;br /&gt;
&lt;br /&gt;
==Which maps should I play?==&lt;br /&gt;
Eye of Horus is a good map that works for team games, free-for-all, 1v1 and with bots.&lt;br /&gt;
&lt;br /&gt;
==Why so many problems?==&lt;br /&gt;
Surprised by too many players.&lt;br /&gt;
&lt;br /&gt;
==Hooray, I am ingame! How to play?==&lt;br /&gt;
http://www.wiki.evolutionrts.info/doku.php/evolution_rts:quick_start_guide&lt;br /&gt;
&lt;br /&gt;
Or just try out things :)&lt;br /&gt;
&lt;br /&gt;
==How to chat ingame?==&lt;br /&gt;
Press the RETURN key and type your message.&lt;br /&gt;
&lt;br /&gt;
==Graphics problems! / the game runs very bad!==&lt;br /&gt;
Some problems can probally be solved by the general spring-engine FAQ: [[FAQ:trouble]]&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenlitList&amp;diff=6451</id>
		<title>EvoGreenlitList</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=EvoGreenlitList&amp;diff=6451"/>
		<updated>2014-04-08T23:46:18Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: /* Bots, AIs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;List of most urgent problems currently preventing players from playing evo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Maps==&lt;br /&gt;
Too much random map changes. Too much downloading, too much unsync = no games start.&lt;br /&gt;
&lt;br /&gt;
Some commonly chosen maps are unplayable (space maps etc)&lt;br /&gt;
&lt;br /&gt;
Solve: &#039;&#039;&#039;Maplist&#039;&#039;&#039; on ALL hosts.&lt;br /&gt;
&lt;br /&gt;
Best only put ONE map so that players do not have to download much and can just play.&lt;br /&gt;
Map could be:&lt;br /&gt;
http://springfiles.com/spring/spring-maps/eye-horus-v2&lt;br /&gt;
&lt;br /&gt;
Progress:&lt;br /&gt;
unsynced players are specced and can not delay gamestart but does not seem to help so much&lt;br /&gt;
&lt;br /&gt;
==Singleplayer==&lt;br /&gt;
Does not work with fresh install because there are no files.&lt;br /&gt;
&lt;br /&gt;
One must first join a MP to download engine,map,mod.&lt;br /&gt;
&lt;br /&gt;
Solve: &#039;&#039;&#039;Download files on login&#039;&#039;&#039; or something.&lt;br /&gt;
&lt;br /&gt;
===empty room, use !lock===&lt;br /&gt;
The common solution to select an empty autohost and then lock the room does not work:&lt;br /&gt;
&lt;br /&gt;
Players need to be manually to use !lock command. The empty hosts are impossible to find because players randomly join&amp;amp;leave all the time. Even if you join an empty host, hardly does one have enough time to type !lock before another player joins.&lt;br /&gt;
&lt;br /&gt;
===Bots, AIs===&lt;br /&gt;
Needs &#039;&#039;&#039;filter&#039;&#039;&#039; for add-bot menu. Only evo-compatible bots must be listed.&lt;br /&gt;
AAI is too often choosen because top of list but it does not work.&lt;br /&gt;
&lt;br /&gt;
Solve:&lt;br /&gt;
If nessecarly hard-coded hack in lobby might be needed?&lt;br /&gt;
(real solution like implenting validAI.lua probally no time)&lt;br /&gt;
&lt;br /&gt;
CarRepairer: Actually the REAL real solution is to remove AIs from the engine, which should have been done years ago like widgets. That would solve it for future versions only so a validAI list would be needed now of course.&lt;br /&gt;
&lt;br /&gt;
The evo-AIs reportedly &amp;quot;do nothing.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==engine download==&lt;br /&gt;
For unknown reasons &#039;&#039;&#039;often does not work.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;stops at 100%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;nothing happens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
or errors like http://springrts.com/phpbb/viewtopic.php?f=64&amp;amp;p=556182#p556131&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2177</id>
		<title>Assimp</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2177"/>
		<updated>2013-11-21T20:08:23Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: Updated blender workflow tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Game_and_Unit_development|Game Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Assimp=&lt;br /&gt;
Open Asset Import Library (short name: Assimp) is used in Spring for loading a number of model formats including Collada &amp;amp; 3ds (currently obj is parsed by a different codepaths).&lt;br /&gt;
&lt;br /&gt;
What Spring supports in its Assimp renderer:&lt;br /&gt;
* extended metafile (&amp;lt;code&amp;gt;%modelfilename%.lua&amp;lt;/code&amp;gt; next to the modefile)&lt;br /&gt;
* still uses tex1 &amp;amp; tex2 texture system of S3O (same shader as S3O)&lt;br /&gt;
* 2nd texcoord&lt;br /&gt;
* loading of the texture filepaths from the model (don&#039;t have to be in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;)&lt;br /&gt;
* when texture filepaths aren&#039;t included in the model, it searches for &amp;lt;code&amp;gt;%modelfilename%.*&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;%modelfilename%2.*&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;&lt;br /&gt;
* special modelpieces `SpringHeight` &amp;amp; `SpringRadius`&lt;br /&gt;
&lt;br /&gt;
=Assimp Textures=&lt;br /&gt;
See [[3DModels:Textures#Textures_-_Assimp_Model_Formats_.28DAE.2CMDL.2CMD3_and_others_except_OBJ.29 |3DModels:Textures (Assimp Section)]]&lt;br /&gt;
&lt;br /&gt;
=Blender Workflow Tutorial=&lt;br /&gt;
This is a stub containing a simple outline of a Blender workflow.&lt;br /&gt;
&lt;br /&gt;
# Open an existing Blender model or import a different format through the File menu (File &amp;gt; Import).&lt;br /&gt;
# In the 3D view, drag out the secret panel from the right.  [[File:3-12-2013 5-02-21 PM.pngâ€Žâ€Ž|secret panel]]&lt;br /&gt;
# In that panel, select Display &amp;gt; Shading &amp;gt; GLSL. [[File:3-12-2013 5-02-04 PM.pngâ€Žâ€Ž|display settings]]&lt;br /&gt;
# Make sure you have a lamp in your scene while in this mode or your model will be dark.&lt;br /&gt;
# Applying texture: &lt;br /&gt;
## In the UV/Image editor, click the image icon (Tooltip: Browse Image to be linked) to select your texture. If it&#039;s not there, click on Image &amp;gt; Open Image to browse for it.&lt;br /&gt;
## In the 3D View, select (right-click) your object and hit Tab to enter Mesh Mode.&lt;br /&gt;
## Hit A to select all your faces.&lt;br /&gt;
## In the 3D View, hit A to select all the faces there and select your image with the image icon. Assuming there&#039;s a UVMap, you should see your texture.&lt;br /&gt;
## If you don&#039;t see any faces you&#039;ll need to add the UVMap to a new texture:&lt;br /&gt;
### In the Properties view click on Textures (checkerboard icon).&lt;br /&gt;
### Click on Add New Texture (plus icon).&lt;br /&gt;
### Select Type = Image or Movie.&lt;br /&gt;
### Under Image, click on the image icon and choose your image file.&lt;br /&gt;
### Under Mapping, select Coordinates = UV.&lt;br /&gt;
### Under Influence &amp;gt; Diffuse, check Color and make sure it&#039;s 1.00.&lt;br /&gt;
## To add a normalmap:&lt;br /&gt;
### Repeat steps 5.5.1 to 5.5.5.&lt;br /&gt;
### Under Image Sampling, check Normal Map.&lt;br /&gt;
### Under Influence &amp;gt; Geometry, check Normal. Make sure it.s 1.00.&lt;br /&gt;
## You&#039;ll need to do this for each piece.&lt;br /&gt;
# Piece hierarchy:&lt;br /&gt;
## Select piece A, hold shift and select piece B. Hit Ctrl+P and it will make piece A a child of piece B.&lt;br /&gt;
## &amp;lt;strike&amp;gt;Make sure all the pieces are descending from one single piece.&amp;lt;/strike&amp;gt; This is no longer necessary but is still good practice. Spring will now place all your pieces into one root piece for you, regardless.&lt;br /&gt;
# Setting piece origins:&lt;br /&gt;
## Select a piece.&lt;br /&gt;
## Place the 3D cursor where you want the origin to be (left-click).&lt;br /&gt;
## Click on Object &amp;gt; Transform &amp;gt; Origin to 3D Cursor.&lt;br /&gt;
## You can now rotate your pieces:&lt;br /&gt;
### Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select Individual Origins.&lt;br /&gt;
### Rotate.&lt;br /&gt;
## Do this for all your pieces.&lt;br /&gt;
# Preparing for Spring (this may or may not apply depending on how assimp handles your model.):&lt;br /&gt;
## &amp;lt;strike&amp;gt;Select your root piece.&lt;br /&gt;
## Press Shift-C to put the 3D cursor in the center of the world.&lt;br /&gt;
## Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select 3D Cursor.&lt;br /&gt;
## Rotate your whole model so that it&#039;s -90 degrees. You can do this by typing &amp;quot;R X -90&amp;quot;. This will make your model lie on its back.&lt;br /&gt;
## Click Object &amp;gt; Apply &amp;gt; Rotation &amp;amp; Scale.&amp;lt;/strike&amp;gt;&lt;br /&gt;
# Save your model.&lt;br /&gt;
# Select all the pieces of your model, ignore the lamp.&lt;br /&gt;
# Click on File &amp;gt; Export &amp;gt; Collada.&lt;br /&gt;
# Check &amp;quot;Export Only Selected&amp;quot; and export.&lt;br /&gt;
# The dae file will be used as your object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:3D Models]]&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2176</id>
		<title>Assimp</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2176"/>
		<updated>2013-11-21T20:06:22Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: Updated blender workflow tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Game_and_Unit_development|Game Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Assimp=&lt;br /&gt;
Open Asset Import Library (short name: Assimp) is used in Spring for loading a number of model formats including Collada &amp;amp; 3ds (currently obj is parsed by a different codepaths).&lt;br /&gt;
&lt;br /&gt;
What Spring supports in its Assimp renderer:&lt;br /&gt;
* extended metafile (&amp;lt;code&amp;gt;%modelfilename%.lua&amp;lt;/code&amp;gt; next to the modefile)&lt;br /&gt;
* still uses tex1 &amp;amp; tex2 texture system of S3O (same shader as S3O)&lt;br /&gt;
* 2nd texcoord&lt;br /&gt;
* loading of the texture filepaths from the model (don&#039;t have to be in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;)&lt;br /&gt;
* when texture filepaths aren&#039;t included in the model, it searches for &amp;lt;code&amp;gt;%modelfilename%.*&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;%modelfilename%2.*&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;unittextures/&amp;lt;/code&amp;gt;&lt;br /&gt;
* special modelpieces `SpringHeight` &amp;amp; `SpringRadius`&lt;br /&gt;
&lt;br /&gt;
=Assimp Textures=&lt;br /&gt;
See [[3DModels:Textures#Textures_-_Assimp_Model_Formats_.28DAE.2CMDL.2CMD3_and_others_except_OBJ.29 |3DModels:Textures (Assimp Section)]]&lt;br /&gt;
&lt;br /&gt;
=Blender Workflow Tutorial=&lt;br /&gt;
This is a stub containing a simple outline of a Blender workflow.&lt;br /&gt;
&lt;br /&gt;
# Open an existing Blender model or import a different format through the File menu (File &amp;gt; Import).&lt;br /&gt;
# In the 3D view, drag out the secret panel from the right.  [[File:3-12-2013 5-02-21 PM.pngâ€Žâ€Ž|secret panel]]&lt;br /&gt;
# In that panel, select Display &amp;gt; Shading &amp;gt; GLSL. [[File:3-12-2013 5-02-04 PM.pngâ€Žâ€Ž|display settings]]&lt;br /&gt;
# Make sure you have a lamp in your scene while in this mode or your model will be dark.&lt;br /&gt;
# Applying texture: &lt;br /&gt;
## In the UV/Image editor, click the image icon (Tooltip: Browse Image to be linked) to select your texture. If it&#039;s not there, click on Image &amp;gt; Open Image to browse for it.&lt;br /&gt;
## In the 3D View, select (right-click) your object and hit Tab to enter Mesh Mode.&lt;br /&gt;
## Hit A to select all your faces.&lt;br /&gt;
## In the 3D View, hit A to select all the faces there and select your image with the image icon. Assuming there&#039;s a UVMap, you should see your texture.&lt;br /&gt;
## If you don&#039;t see any faces you&#039;ll need to add the UVMap to a new texture:&lt;br /&gt;
### In the Properties view click on Textures (checkerboard icon).&lt;br /&gt;
### Click on Add New Texture (plus icon).&lt;br /&gt;
### Select Type = Image or Movie.&lt;br /&gt;
### Under Image, click on the image icon and choose your image file.&lt;br /&gt;
### Under Mapping, select Coordinates = UV.&lt;br /&gt;
### Under Influence &amp;gt; Diffuse, check Color and make sure it&#039;s 1.00.&lt;br /&gt;
## To add a normalmap:&lt;br /&gt;
### Repeat steps 5.5.1 to 5.5.5.&lt;br /&gt;
### Under Image Sampling, check Normal Map.&lt;br /&gt;
### Under Influence &amp;gt; Geometry, check Normal. Make sure it.s 1.00.&lt;br /&gt;
## You&#039;ll need to do this for each piece.&lt;br /&gt;
# Piece hierarchy:&lt;br /&gt;
## Select piece A, hold shift and select piece B. Hit Ctrl+P and it will make piece A a child of piece B.&lt;br /&gt;
## &amp;lt;strike&amp;gt;Make sure all the pieces are descending from one single piece.&amp;lt;/strike&amp;gt; This is no longer necessary but is still good practice. Spring will now place all your pieces into one root piece for you, regardless.&lt;br /&gt;
# Setting piece origins:&lt;br /&gt;
## Select a piece.&lt;br /&gt;
## Place the 3D cursor where you want the origin to be (left-click).&lt;br /&gt;
## Click on Object &amp;gt; Transform &amp;gt; Origin to 3D Cursor.&lt;br /&gt;
## You can now rotate your pieces:&lt;br /&gt;
### Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select Individual Origins.&lt;br /&gt;
### Rotate.&lt;br /&gt;
## Do this for all your pieces.&lt;br /&gt;
# &amp;lt;strike&amp;gt;Preparing for Spring (this may or may not apply depending on how assimp handles your model):&lt;br /&gt;
## Select your root piece.&lt;br /&gt;
## Press Shift-C to put the 3D cursor in the center of the world.&lt;br /&gt;
## Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select 3D Cursor.&lt;br /&gt;
## Rotate your whole model so that it&#039;s -90 degrees. You can do this by typing &amp;quot;R X -90&amp;quot;. This will make your model lie on its back.&lt;br /&gt;
## Click Object &amp;gt; Apply &amp;gt; Rotation &amp;amp; Scale.&amp;lt;/strike&amp;gt;&lt;br /&gt;
# Save your model.&lt;br /&gt;
# Select all the pieces of your model, ignore the lamp.&lt;br /&gt;
# Click on File &amp;gt; Export &amp;gt; Collada.&lt;br /&gt;
# Check &amp;quot;Export Only Selected&amp;quot; and export.&lt;br /&gt;
# The dae file will be used as your object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:3D Models]]&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Gamedev:Main&amp;diff=8266</id>
		<title>Gamedev:Main</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Gamedev:Main&amp;diff=8266"/>
		<updated>2013-10-22T21:44:36Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: Strikeout QA site.&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;
= General =&lt;br /&gt;
&lt;br /&gt;
*[[Game structure]]&lt;br /&gt;
*[[VirtualFileSystem]]&lt;br /&gt;
*&amp;lt;strike&amp;gt;[http://answers.springlobby.info/ Q&amp;amp;A Site for the Spring Engine]&amp;lt;/strike&amp;gt; Currently down.&lt;br /&gt;
&lt;br /&gt;
= Templates &amp;amp; Examples =&lt;br /&gt;
*[[SpringTutorialGame|Spring Tutorial Game]] - A Tutorial Template Game with full examples&lt;br /&gt;
* [[Gamedev:PublicRepos|Public Repos]] - Publicly readable Spring game code repositories&lt;br /&gt;
&lt;br /&gt;
= Technical Documentation =&lt;br /&gt;
; &#039;&#039;&#039;GameData&#039;&#039;&#039;&lt;br /&gt;
* [[Armordefs.lua]]&lt;br /&gt;
* [[Icontypes.lua]]&lt;br /&gt;
* [[Messages.lua]]&lt;br /&gt;
* [[Modinfo.lua]]&lt;br /&gt;
* [[Modrules.lua]] - Global game variables&lt;br /&gt;
* [[Movedefs.lua]]&lt;br /&gt;
* [[Resources.lua]]&lt;br /&gt;
* [[Sidedata.lua]]&lt;br /&gt;
* [[Sounds.lua]]&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Definition Files&#039;&#039;&#039;&lt;br /&gt;
* [[Units-UnitDefs]] - define the attributes of units&lt;br /&gt;
* [[Units-WeaponDefs]] - define the attributes of weapons/projectiles&lt;br /&gt;
* [[Units-FeatureDefs]] - define the attributes of static map features and wrecks&lt;br /&gt;
* [[CEG]] Particle effects (explosions etc)&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Lua API &amp;amp; Libraries&#039;&#039;&#039;&lt;br /&gt;
* [[Lua_Scripting|Lua API Documentation]]&lt;br /&gt;
* [[LUPS]] - Lua Particle System&lt;br /&gt;
* [[Chili]] - A GUI Framework&lt;br /&gt;
* [[Custom Unit Shaders]] - Normal mapping and more&lt;br /&gt;
* {{forumlink|topic=28341|title=ChangePiece}} - Switch piece geometry&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Animation&#039;&#039;&#039;&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 (Deprecated)&lt;br /&gt;
*[[Animation-CobOverview]]&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;
**{{forumlink|topic=132943#132943|title=GPL COB Examples}}&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Unit Development&#039;&#039;&#039;&lt;br /&gt;
* [[Unit_collision_volumes | Unit Collision Volumes]] - collision detection&lt;br /&gt;
* [[Units:WeaponMainDir]]&lt;br /&gt;
* [[Units:Buildpics]]&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Models &amp;amp; Textures&#039;&#039;&#039;&lt;br /&gt;
* [[About_s3o|.s3o]]&lt;br /&gt;
* [[Assimp]]&lt;br /&gt;
* [[Units:Textures]]&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Misc&#039;&#039;&#039;&lt;br /&gt;
* [[MouseCursors]]&lt;br /&gt;
* [[Mod Development:Archives|Game Development:Archives]]&lt;br /&gt;
* [[Mod Development:Sidepics|Game Development:Sidepics]]&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
== In-Game Tools ==&lt;br /&gt;
*[[ToolBox]] - A Collection of Game Development Tools&lt;br /&gt;
*[[Map Making: Feature Placer|Feature Placer]] - A Map Feature &amp;amp; NPC Unit Placement Tool&lt;br /&gt;
== External Tools ==&lt;br /&gt;
* [[Upspring]]&lt;br /&gt;
* [[Map,_Mod,_And_Unit_Development_Programs|Development Tools]]&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;
==Modelling Tutorials==&lt;br /&gt;
&#039;&#039;&#039;Wings3D&#039;&#039;&#039;&lt;br /&gt;
* [[Units:CreateModel]]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?t=10612 Wings UV Mapping Tutorial]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Blender&#039;&#039;&#039;&lt;br /&gt;
* [[TutorialBlenderWorkFlow|Blender Workflow Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3DS Max&#039;&#039;&#039;&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;
==Texturing 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;
=Misc=&lt;br /&gt;
* [[Ren&#039;Py]]: a visual novel engine that can be used with Spring&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Dev]]&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2174</id>
		<title>Assimp</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2174"/>
		<updated>2013-09-26T05:45:14Z</updated>

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

		<summary type="html">&lt;p&gt;Carrepairer: /* Weapons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Call-ins are calls from the engine, into the unit script. In other words, these functions are called, if they are defined, when a particular â€œeventâ€ happens.&lt;br /&gt;
&lt;br /&gt;
For Lua unit scripts, a new callin mechanism has been implemented, which is faster than the regular callin mechanism which is used for widgets and gadgets.&lt;br /&gt;
&lt;br /&gt;
Types for arguments are only shown where they&#039;re ambiguous. For a number of (common) arguments, the types are:&lt;br /&gt;
&lt;br /&gt;
* unitID: number&lt;br /&gt;
* piece: number&lt;br /&gt;
* axis: number (1 = x axis, 2 = y axis, 3 = z axis)&lt;br /&gt;
* heading/pitch: number (radians)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Generic ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Create&#039;&#039;&#039; ( ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
This is called just after the unit script has been created.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;StartMoving&#039;&#039;&#039; ( ) -&amp;gt; nil&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;StopMoving&#039;&#039;&#039; ( ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
These are called whenever the unit starts or stops moving. Typical use for them is to trigger wheels to start spinning, animate treads, or start/stop a walking animation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Killed&#039;&#039;&#039; ( number recentDamage, number maxHealth ) -&amp;gt; number corpseType&lt;br /&gt;
&lt;br /&gt;
This is called when the unit is killed. The severity of the kill may be calculated as severity=recentDamage/maxHealth &#039;&#039;(*100 so that it&#039;s in percent, no? at least that is how severity was expressed in Cob/bos, I think. Of course there&#039;s no reason to emulate that, just pointing it out for people &amp;quot;converting&amp;quot;)&#039;&#039;. Typically, this function would play a death animation for the unit, and finally return a corpse type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WindChanged&#039;&#039;&#039; ( number heading, number strength ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
This is called for wind generators whenever the wind direction or strength changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ExtractionRateChanged&#039;&#039;&#039; ( number rate ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Called for metal extractors each time their extraction rate (metal per second) changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;setSFXoccupy&#039;&#039;&#039; ( number curTerrainType ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Called when terrain type changes. Terrain type is calculated with the following rules (in this order):&lt;br /&gt;
&lt;br /&gt;
* If unit is being transported -&amp;gt; curTerrainType = 0&lt;br /&gt;
* If ground height &amp;lt; -5 and unit is always upright -&amp;gt; curTerrainType = 2&lt;br /&gt;
* If ground height &amp;lt; -5 and unit is not always upright -&amp;gt; curTerrainType = 1&lt;br /&gt;
* If ground height &amp;lt; 0 and unit is always upright -&amp;gt; curTerrainType = 1&lt;br /&gt;
* Otherwise -&amp;gt; curTerrainType = 4&lt;br /&gt;
&lt;br /&gt;
Where is curTerrainType = 3 ? :-)&lt;br /&gt;
&lt;br /&gt;
Candidate to be changed to something saner later on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MoveRate&#039;&#039;&#039; ( number curRate ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Called only for certain types of aircraft (those which use &#039;&#039;CTAAirMoveType&#039;&#039;.) The move rate is determined by the following rules (in this order):&lt;br /&gt;
&lt;br /&gt;
* If the aircraft is landing or taking off -&amp;gt; curRate = 1&lt;br /&gt;
* Otherwise -&amp;gt; curRate = floor(curSpeed / maxSpeed * 3), clamped to be in the range [0, 2]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QueryLandingPads&#039;&#039;&#039; ( ) -&amp;gt; { number piece1, number piece2, ... }&lt;br /&gt;
&lt;br /&gt;
Called one time for units with landing pads. Should return a table with pieces which should be used as landing pads. The number of pieces returned also determines the number of pads, so for Lua unit scripts there is no QueryLandingPadCount.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Activate&#039;&#039;&#039; ( ) -&amp;gt; nil&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Deactivate&#039;&#039;&#039; ( ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Exact situation these are called depends a lot on the unit type. Factories are activated when they open their yard and deactivated when they close it. Aircraft are activated when they take off and deactivated when the land. Any unit that can be turned on or off is activated when it&#039;s turned on and deactivated when it&#039;s turned off. On &#039;&#039;SetUnitValue(COB.ACTIVATION, ...)&#039;&#039; one of these call-ins may be called too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Weapons ==&lt;br /&gt;
&lt;br /&gt;
Weapon functions come in two variants.&lt;br /&gt;
&lt;br /&gt;
* Separate function with numeric weapon number suffix. (e.g. &#039;&#039;AimWeapon&amp;lt;u&amp;gt;1&amp;lt;/u&amp;gt;(heading, pitch)&#039;&#039;)&lt;br /&gt;
* Combined function which gets weapon number as second argument. (e.g. &#039;&#039;AimWeapon(&amp;lt;u&amp;gt;weaponNum&amp;lt;/u&amp;gt;, heading, pitch)&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Only the first variant is listed here, so whenever you see a function whose name ends with a numeric one (&amp;quot;1&amp;quot;), you should either replace it with the actual weapon number, or you can write a single combined function that takes a &#039;&#039;weaponNum&#039;&#039; argument. For each script, all functions should use the same variant. Either all using name suffix, or all using combined functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QueryWeapon1&#039;&#039;&#039; ( ) -&amp;gt; number piece&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;AimFromWeapon1&#039;&#039;&#039; ( ) -&amp;gt; number piece&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;AimWeapon1&#039;&#039;&#039; ( heading, pitch ) -&amp;gt; boolean&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;AimShield1&#039;&#039;&#039; ( ) -&amp;gt; boolean&lt;br /&gt;
&lt;br /&gt;
Weapon support. The return value of QueryWeapon and AimFromWeapon determines the pieces which will be used for aiming: typically e.g. the barrel for QueryWeapon and the turret for AimFromWeapon. AimWeapon is then called to allow the script to turn the weapons in the target direction, which is passed as the heading and pitch argument (in radians). Only if AimWeapon returns true, the weapon is actually fired.&lt;br /&gt;
&lt;br /&gt;
TODO: better explanation (?), note about AimWeapon being called very often etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FireWeapon1&#039;&#039;&#039; ( ) -&amp;gt; nil&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Shot1&#039;&#039;&#039; ( ) -&amp;gt; nil&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EndBurst1&#039;&#039;&#039; ( ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
If after aiming the unit actually fires it&#039;s weapon, FireWeapon is called once at the beginning of the salvo. Shot is called just before each projectile is fired. RockUnit (see below) is called just after all projectiles for that frame have been fired. At the end of the salvo, EndBurst is called.&lt;br /&gt;
&lt;br /&gt;
Of these call-ins, FireWeapon is the more generic one and Shot and EndBurst are more specialized. FireWeapon is usually used to play a recoil animation or emit some smoke near the weapon&#039;s barrel using EmitSfx.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BlockShot1&#039;&#039;&#039; ( targetUnitID, boolean userTarget ) -&amp;gt; boolean&lt;br /&gt;
&lt;br /&gt;
Allows you to block a weapon from shooting. TargetUnitID may be nil: in this case the unit has a ground-attack order.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TargetWeight1&#039;&#039;&#039; ( targetUnitID ) -&amp;gt; number&lt;br /&gt;
&lt;br /&gt;
Allows you to tweak the priority of the target for this particular weapon. The target priority is multiplied by the return value of this function. Lower priority targets are targeted first, so return a value smaller than 1 to prioritize a target, or return a value larger than 1 to avoid a target.&lt;br /&gt;
&lt;br /&gt;
The exact behavior of specific values shouldn&#039;t be relied upon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RockUnit&#039;&#039;&#039; ( x, z ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
A bit like the weapon-specific FireWeapon function, although this is called after any weapon fires. As argument it gets a two dimensional vector in the direction the unit just fired. This may be used to â€œrockâ€ the unit as a whole a bit as part of the firing animation. Note though that this vector is in world space, so for a truly realistic rock direction it needs to be rotated according to the unit&#039;s current heading.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HitByWeapon&#039;&#039;&#039; ( x, z, weaponDefID, damage ) -&amp;gt; nil | number newDamage&lt;br /&gt;
&lt;br /&gt;
This is called if a unit has been hit by a weapon. (x, z) is the direction from which the projectile came in unit space (the reverse direction of the impulse, to be exact.) It also gets the weaponDefID of the weapon which is dealing the damage, and the amount of damage. If HitByWeapon returns a number, this number will replace the damage value calculated by the engine.&lt;br /&gt;
&lt;br /&gt;
Note: Pre Spring 95, this call-in runs just before the LuaRules UnitPreDamaged callin (see also [[LuaCallinReturn]]). If HitByWeapon overrides the damage, UnitPreDamaged will see the new damage value, and may override again the damage value. Starting Spring 95, it is run after UnitPreDamaged.&lt;br /&gt;
&lt;br /&gt;
== Builders and factories ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;StartBuilding&#039;&#039;&#039; ( heading, pitch ) -&amp;gt; nil&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;StartBuilding&#039;&#039;&#039; ( ) -&amp;gt; nil&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;StopBuilding&#039;&#039;&#039; ( ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
These notify the script when a builder or factory starts or stops building.&lt;br /&gt;
&lt;br /&gt;
The first variant (with heading and pitch arguments) is called for builders. For factories, the second variant is used. In this case the heading and pitch are not necessary, because the factory script specifies the build location itself using QueryBuildInfo.&lt;br /&gt;
&lt;br /&gt;
BTW, don&#039;t forget to set INBUILDSTANCE to 1 to start building! For lua script, that is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  function script.StartBuilding(heading, pitch)&lt;br /&gt;
&lt;br /&gt;
    SetUnitValue(COB.INBUILDSTANCE, 1)&lt;br /&gt;
&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  function script.StopBuilding()&lt;br /&gt;
    SetUnitValue(COB.INBUILDSTANCE, 0)&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QueryBuildInfo&#039;&#039;&#039; ( ) -&amp;gt; number piece&lt;br /&gt;
&lt;br /&gt;
For factories only. Should return the piece to which the unit which is going to be build will be attached while it&#039;s being build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QueryNanopiece&#039;&#039;&#039; ( ) -&amp;gt; number piece&lt;br /&gt;
&lt;br /&gt;
Called each time a nano particle is to be created. Should return the piece at which the particle will be spawned. This may be used to iterate through a few pieces, to simulate the factory/builder having multiple nanolathes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;note&amp;quot;&amp;gt;N.B. As of 92.0 the results are cached and the function is called 31 times only. Deprecated in favour of Spring.SetUnitNanoPieces, which disables this callin when used.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Transports ==&lt;br /&gt;
&lt;br /&gt;
There are some different code paths inside Spring related to transports, each (unfortunately) also associated with a different set of unit script call-ins.&lt;br /&gt;
&lt;br /&gt;
This table shows for the three different transportUnloadMethods for both air transports and ground transports which callins are used and roughly when and how often they are called. Refer to the documentation below for a description of the call-ins.&lt;br /&gt;
&lt;br /&gt;
The entire behavior around transports should be considered subject to change; it is obvious it is far from a perfect design currently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; style=&amp;quot;border-spacing:0px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!&lt;br /&gt;
!Load&lt;br /&gt;
!UnloadLand (0)&lt;br /&gt;
!UnloadDrop (1)&lt;br /&gt;
!UnloadLandFlood (2)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|default unload&lt;br /&gt;
|fly over and drop unit&lt;br /&gt;
|land, then release all units at once&lt;br /&gt;
|-&lt;br /&gt;
|air&lt;br /&gt;
|BeginTransport (each)&amp;lt;br&amp;gt;QueryTransport (each)&lt;br /&gt;
|EndTransport (last)&lt;br /&gt;
|EndTransport (each)&lt;br /&gt;
|StartUnload (first)&amp;lt;br&amp;gt;TransportDrop (each)&amp;lt;br&amp;gt;EndTransport (last)&lt;br /&gt;
|-&lt;br /&gt;
|ground&lt;br /&gt;
|TransportPickup (each)&lt;br /&gt;
|TransportDrop (each)&lt;br /&gt;
|TransportDrop (each)&lt;br /&gt;
|TransportDrop (each)&amp;lt;br&amp;gt;EndTransport (last)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Air transports ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BeginTransport&#039;&#039;&#039; ( passengerID ) -&amp;gt; nil&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;QueryTransport&#039;&#039;&#039; ( passengerID ) -&amp;gt; number piece&lt;br /&gt;
&lt;br /&gt;
For an air transport, if any one unit is picked up, these two are called in succession and the passenger is attached to the piece returned by the second one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;StartUnload&#039;&#039;&#039; ( ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Only called in UnloadLandFlood behavior. Signals the start of an unload cycle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TransportDrop&#039;&#039;&#039; ( passengerID, x, y, z ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Only called in UnloadLandFlood behavior. Called when a passenger will be unloaded. Contrary to ground transports, Spring will detach the passenger after the call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EndTransport&#039;&#039;&#039; ( ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
In UnloadLand and UnloadLandFlood behaviors, these are called one time after all units are unloaded. (The transport is empty.) For the UnloadDrop behavior, this is called for every unit that is unloaded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ground transports ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TransportPickup&#039;&#039;&#039; ( passengerID ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Called when a passenger should be loaded into the transport. This should eventually call AttachUnit to actually attach the unit. Assuming the transport is in range of the next passenger, this will be called again for the next passenger 16 frames later, &#039;&#039;unless&#039;&#039; the script enters the BUSY state: then Spring will not move on to the next passenger until the script leaves the BUSY state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TransportDrop&#039;&#039;&#039; ( passengerID, x, y, z ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Called when a passenger should be unloaded. This should eventually call DetachUnit to actually detach the unit, &#039;&#039;unless&#039;&#039; the used unload method is UnloadLandFlood, in which case Spring will actually detach the unit after the call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EndTransport&#039;&#039;&#039; ( ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Only called in UnloadLandFlood behavior, after the last unit has been unloaded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Passenger ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Falling&#039;&#039;&#039; ( ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
For a unit dropped from an UnloadDrop transport, this is called every frame to inform the script the unit is still falling. It may be used to show a parachute for example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Landed&#039;&#039;&#039; ( ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
This is called one time after the unit reached the ground. May be used to hide a parachute for example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Internal ==&lt;br /&gt;
&lt;br /&gt;
These call-ins are NOT available to Lua unit scripts. They are called by the engine however, but always &#039;intercepted&#039; by the framework gadget. For completeness (or if you are poking at the gadget), they are listed here anyway.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MoveFinished&#039;&#039;&#039; ( piece, axis ) -&amp;gt; nil&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;TurnFinished&#039;&#039;&#039; ( piece, axis ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Called when a move or turn finished. The framework gadget uses this to resume the coroutines which are waiting for the particular move or turn to be finished.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Destroy&#039;&#039;&lt;br /&gt;
&#039; ( ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
Called right before the unit&#039;s script is destroyed. This may happen if the unit is being destroyed, but also if the unit&#039;s script is being replaced by another script. The framework gadget uses this to stop all threads and remove the unit from some internal data structures.&lt;br /&gt;
&lt;br /&gt;
[[Category:Animation]]&lt;br /&gt;
[[Category:Lua]]&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Lobby_Development&amp;diff=10619</id>
		<title>Lobby Development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Lobby_Development&amp;diff=10619"/>
		<updated>2013-05-02T15:36:29Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: Usable lobby client&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Documentation=&lt;br /&gt;
&lt;br /&gt;
==Protocol==&lt;br /&gt;
* [http://springrts.com/dl/LobbyProtocol/ HTML] (is updated once a day)&lt;br /&gt;
* [https://github.com/spring/LobbyProtocol/blob/master/ProtocolDescription.xml XML] (raw, always latest)&lt;br /&gt;
&lt;br /&gt;
==Download Systems==&lt;br /&gt;
* [http://springrts.com/wiki/Dev:LobbyDownloadSystems Lobby Download Systems]&lt;br /&gt;
&lt;br /&gt;
=Lobby client development=&lt;br /&gt;
&lt;br /&gt;
==Useable lobby clients==&lt;br /&gt;
&lt;br /&gt;
===SpringLobby===&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;cross-platform&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;C++&amp;lt;/font&amp;gt;,&lt;br /&gt;
by &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;BrainDamage&amp;lt;/font&amp;gt; &amp;amp;&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;koshi&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SpringLobby is the official lobby client of spring and is bundled with the Spring engine in the installer. It uses the &#039;&#039;wxWidgets&#039;&#039; library. You can browse the sources and submit issues on its [http://springlobby.info/ website].&lt;br /&gt;
&lt;br /&gt;
===Zero-K===&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Windows&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;C#&amp;lt;/font&amp;gt;,&lt;br /&gt;
by &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Licho&amp;lt;/font&amp;gt; &amp;amp; &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;quantum&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[https://code.google.com/p/zero-k/ Zero-K project page]&lt;br /&gt;
&lt;br /&gt;
===TASClient===&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Windows&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;Delphi&amp;lt;/font&amp;gt;,&lt;br /&gt;
by &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Satirik&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can download the sources from the [http://springrts.com/svn/spring/Lobby/TASClient/ subversion repository] (svn://springrts.com/svn/spring/Lobby/TASClient/) and browse them on the [http://springrts.com/websvn/listing.php?repname=Spring&amp;amp;path=%2FLobby%2FTASClient%2F#_Lobby_TASClient_ websvn]. Latest binary version is always available here:&lt;br /&gt;
http://springrts.com/dl/tasclient/TASClientLatest.7z&lt;br /&gt;
&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?f=12&amp;amp;t=18999 How to compile TASClient]&lt;br /&gt;
&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?f=14&amp;amp;t=19014 How to customize TASClient]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===NotaLobby===&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;cross-platform&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;C++&amp;lt;/font&amp;gt;,&lt;br /&gt;
by &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;danil_kalina&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;a1983&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;TruePer&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?f=64&amp;amp;t=27289 Forum thread]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===flobby===&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Linux&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;C++&amp;lt;/font&amp;gt;,&lt;br /&gt;
by &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;cleanrock&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/cleanrock/flobby github page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Weblobby===&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;cross-platform&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;Java&amp;lt;/font&amp;gt;,&lt;br /&gt;
by &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;CarRepairer&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://weblobby.springrts.com weblobby.springrts.com]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Work in progress or abandoned==&lt;br /&gt;
&lt;br /&gt;
===Alphalobby===&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;Windows&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;C&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;unmaintained&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alphalobby is still very much work in progress. If you still wish to use it, source available from the [http://code.google.com/p/alphalobby/source/checkout mercurial repository], binary available on the [http://springfiles.com/spring/lobby-clients/alphalobby springfiles page].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CheeseLobby===&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;cross-platform&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;Java&amp;lt;/font&amp;gt;,&lt;br /&gt;
by &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Cheesecan&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?f=64&amp;amp;t=24905 forum thread]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/jahwag/cheeselobby binaries and code]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===QtLobby===&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;cross-platform&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;C++&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;unmaintained&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/qtlobby/ project page]&lt;br /&gt;
&lt;br /&gt;
=Libraries and frameworks=&lt;br /&gt;
&lt;br /&gt;
==Spring-PythonBotFramework==&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;cross-platform&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;Python&amp;lt;/font&amp;gt;, by&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;BrainDamage&amp;lt;/font&amp;gt; &amp;amp; &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;koshi&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A bot framework written in python. [https://github.com/renemilk/tasbot/wiki GitHub wiki]&lt;br /&gt;
&lt;br /&gt;
==Go SpringLobbyClient==&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;cross-platform&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;Go&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A simple client implementation of the lobby protocol in Go.&lt;br /&gt;
[https://github.com/Agon/go-slc/ project page]&lt;br /&gt;
&lt;br /&gt;
=Lobby server development=&lt;br /&gt;
&lt;br /&gt;
==SpringLS==&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;cross-platform&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;Java&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;hoijui&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The longest-running lobby server, created by Betalord. You can fetch the sources through &#039;&#039;git&#039;&#039;. Details can be found on the [http://github.com/spring/SpringLS development site].&lt;br /&gt;
&lt;br /&gt;
==UberServer==&lt;br /&gt;
&amp;lt;font color=&amp;quot;orange&amp;quot;&amp;gt;cross-platform&amp;lt;/font&amp;gt;,&lt;br /&gt;
&amp;lt;font color=&amp;quot;#00AAFF&amp;quot;&amp;gt;Python&amp;lt;/font&amp;gt;,&lt;br /&gt;
by &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;aegis&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The primary lobby server currently running on springrts.com. All protocol commands in the primary documentation should be fully-functional and compatible between both uberserver and SpringLS. You can get more information and download uberserver at the [https://github.com/lunixbochs/uberserver github page]&lt;br /&gt;
&lt;br /&gt;
[[Category: Lobbies]]&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2173</id>
		<title>Assimp</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2173"/>
		<updated>2013-04-28T07:26:52Z</updated>

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

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

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

		<summary type="html">&lt;p&gt;Carrepairer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Game_and_Unit_development|Game Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
== Blender Workflow Tutorial ==&lt;br /&gt;
&lt;br /&gt;
This is a stub containing a simple outline of a Blender workflow. Disclaimer: I&#039;m no modeling expert, there may be a better way to do this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Open an existing Blender model or import a different format through the File menu (File &amp;gt; Import).&lt;br /&gt;
# In the 3D view, drag out the secret panel from the right.&lt;br /&gt;
# In that panel, select Display &amp;gt; Shading &amp;gt; GLSL.&lt;br /&gt;
# Make sure you have a lamp in your scene while in this mode or your model will be dark.&lt;br /&gt;
# Applying texture: &lt;br /&gt;
## In the UV/Image editor, click the image icon (Tooltip: Browse Image to be linked) to select your texture. If it&#039;s not there, click on Image &amp;gt; Open Image to browse for it.&lt;br /&gt;
## In the 3D View, select (right-click) your object and hit Tab to enter Mesh Mode.&lt;br /&gt;
## Hit A to select all your faces.&lt;br /&gt;
## In the 3D View, hit A to select all the faces there and select your image with the image icon. Assuming there&#039;s a UVMap, you should see your texture.&lt;br /&gt;
## If you don&#039;t see any faces you&#039;ll need to add the UVMap to a new texture:&lt;br /&gt;
### In the Properties view click on Textures (checkerboard icon).&lt;br /&gt;
### Click on Add New Texture (plus icon).&lt;br /&gt;
### Select Type = Image or Movie.&lt;br /&gt;
### Under Image, click on the image icon and choose your image file.&lt;br /&gt;
### Under Mapping, select Coordinates = UV.&lt;br /&gt;
### Under Influence &amp;gt; Diffuse, check Color and make sure it&#039;s 1.00.&lt;br /&gt;
## To add a normalmap:&lt;br /&gt;
### Repeat steps 5.1 to 5.5.&lt;br /&gt;
### Under Image Sampling, check Normal Map.&lt;br /&gt;
### Under Influence &amp;gt; Geometry, check Normal. Make sure it.s 1.00.&lt;br /&gt;
## You&#039;ll need to do this for each piece.&lt;br /&gt;
# Piece hierarchy:&lt;br /&gt;
## Select piece A, hold shift and select piece B. Hit Ctrl+P and it will make piece A a child of piece B.&lt;br /&gt;
## Make sure all the pieces are descending from one single piece.&lt;br /&gt;
# Setting piece origins:&lt;br /&gt;
## Select a piece.&lt;br /&gt;
## Place the 3D cursor where you want the origin to be (left-click).&lt;br /&gt;
## Click on Object &amp;gt; Transform &amp;gt; Origin to 3D Cursor.&lt;br /&gt;
## You can now rotate your pieces:&lt;br /&gt;
### Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select Individual Origins.&lt;br /&gt;
### Rotate.&lt;br /&gt;
## Do this for all your pieces.&lt;br /&gt;
# Preparing for Spring:&lt;br /&gt;
## Select your root piece.&lt;br /&gt;
## Press Shift-C to put the 3D cursor in the center of the world.&lt;br /&gt;
## Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select 3D Cursor.&lt;br /&gt;
## Rotate your whole model so that it&#039;s -90 degrees. You can do this by typing &amp;quot;R X -90&amp;quot;. This will make your model lie on its back.&lt;br /&gt;
## Click Object &amp;gt; Apply &amp;gt; Rotation &amp;amp; Scale.&lt;br /&gt;
# Save your model.&lt;br /&gt;
# Select all the pieces of your model, ignore the lamp.&lt;br /&gt;
# Click on File &amp;gt; Export &amp;gt; Collada.&lt;br /&gt;
# Check &amp;quot;Export Only Selected&amp;quot; and export.&lt;br /&gt;
# The dae file will be used as your object.&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2152</id>
		<title>Assimp</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2152"/>
		<updated>2013-02-14T23:58:39Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: /* Blender Workflow Tutorial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Game_and_Unit_development|Game Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
== Blender Workflow Tutorial ==&lt;br /&gt;
&lt;br /&gt;
This is a stub containing a simple outline of a Blender workflow. Disclaimer: I&#039;m not modeling expert, there may be a better way to do this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Open an existing Blender model or import a different format through the File menu (File &amp;gt; Import).&lt;br /&gt;
# In the 3D view, drag out the secret panel from the right.&lt;br /&gt;
# In that panel, select Display &amp;gt; Shading &amp;gt; GLSL.&lt;br /&gt;
# Make sure you have a lamp in your scene while in this mode or your model will be dark.&lt;br /&gt;
# Applying texture: &lt;br /&gt;
## In the UV/Image editor, click the image icon (Tooltip: Browse Image to be linked) to select your texture. If it&#039;s not there, click on Image &amp;gt; Open Image to browse for it.&lt;br /&gt;
## In the 3D View, select (right-click) your object and hit Tab to enter Mesh Mode.&lt;br /&gt;
## Hit A to select all your faces.&lt;br /&gt;
## In the 3D View, hit A to select all the faces there and select your image with the image icon. Assuming there&#039;s a UVMap, you should see your texture.&lt;br /&gt;
## If you don&#039;t see any faces you&#039;ll need to add the UVMap to a new texture:&lt;br /&gt;
### In the Properties view click on Textures (checkerboard icon).&lt;br /&gt;
### Click on Add New Texture (plus icon).&lt;br /&gt;
### Select Type = Image or Movie.&lt;br /&gt;
### Under Image, click on the image icon and choose your image file.&lt;br /&gt;
### Under Mapping, select Coordinates = UV.&lt;br /&gt;
### Under Influence &amp;gt; Diffuse, check Color and make sure it&#039;s 1.00.&lt;br /&gt;
## To add a normalmap:&lt;br /&gt;
### Repeat steps 5.1 to 5.5.&lt;br /&gt;
### Under Image Sampling, check Normal Map.&lt;br /&gt;
### Under Influence &amp;gt; Geometry, check Normal. Make sure it.s 1.00.&lt;br /&gt;
## You&#039;ll need to do this for each piece.&lt;br /&gt;
# Piece hierarchy:&lt;br /&gt;
## Select piece A, hold shift and select piece B. Hit Ctrl+P and it will make piece A a child of piece B.&lt;br /&gt;
## Make sure all the pieces are descending from one single piece.&lt;br /&gt;
# Setting piece origins:&lt;br /&gt;
## Select a piece.&lt;br /&gt;
## Place the 3D cursor where you want the origin to be (left-click).&lt;br /&gt;
## Click on Object &amp;gt; Transform &amp;gt; Origin to 3D Cursor.&lt;br /&gt;
## You can now rotate your pieces:&lt;br /&gt;
### Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select Individual Origins.&lt;br /&gt;
### Rotate.&lt;br /&gt;
## Do this for all your pieces.&lt;br /&gt;
# Preparing for Spring:&lt;br /&gt;
## Select your root piece.&lt;br /&gt;
## Press Shift-C to put the 3D cursor in the center of the world.&lt;br /&gt;
## Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select 3D Cursor.&lt;br /&gt;
## Rotate your whole model so that it&#039;s -90 degrees. Unfortunately this appears to be only doable with the mouse (when using 3D cursor). This will make your model lie on its back.&lt;br /&gt;
## Click Object &amp;gt; Apply &amp;gt; Rotation &amp;amp; Scale.&lt;br /&gt;
# Save your model.&lt;br /&gt;
# Select all the pieces of your model, ignore the lamp.&lt;br /&gt;
# Click on File &amp;gt; Export &amp;gt; Collada.&lt;br /&gt;
# Check &amp;quot;Export Only Selected&amp;quot; and export.&lt;br /&gt;
# The dae file will be used as your object.&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2151</id>
		<title>Assimp</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2151"/>
		<updated>2013-02-14T23:56:53Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: /* Blender Workflow Tutorial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Game_and_Unit_development|Game Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
== Blender Workflow Tutorial ==&lt;br /&gt;
&lt;br /&gt;
This is a stub containing a simple outline of a Blender workflow. Disclaimer: I&#039;m not modeling expert, there may be a better way to do this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Open an existing Blender model or import a different format through the File menu (File &amp;gt; Import).&lt;br /&gt;
# In the 3D view, drag out the secret panel from the right.&lt;br /&gt;
# In that panel, select Display &amp;gt; Shading &amp;gt; GLSL.&lt;br /&gt;
# Make sure you have a lamp in your scene while in this mode or your model will be dark.&lt;br /&gt;
# Applying texture: &lt;br /&gt;
## In the UV/Image editor, click the image icon (Tooltip: Browse Image to be linked) to select your texture. If it&#039;s not there, click on Image &amp;gt; Open Image to browse for it.&lt;br /&gt;
## In the 3D View, select (right-click) your object and hit Tab to enter Mesh Mode.&lt;br /&gt;
## Hit A to select all your faces.&lt;br /&gt;
## In the 3D View, hit A to select all the faces there and select your image with the image icon. Assuming there&#039;s a UVMap, you should see your texture.&lt;br /&gt;
## If you don&#039;t see any faces you&#039;ll need to add the UVMap to a new texture:&lt;br /&gt;
### In the Properties view click on Textures (checkerboard icon).&lt;br /&gt;
### Click on Add New Texture (plus icon).&lt;br /&gt;
### Select Type = Image or Movie.&lt;br /&gt;
### Under Image, click on the image icon and choose your image file.&lt;br /&gt;
### Under Mapping, select Coordinates = UV.&lt;br /&gt;
### Under Influence &amp;gt; Diffuse, check Color and make sure it&#039;s 1.00.&lt;br /&gt;
## To add a normalmap:&lt;br /&gt;
### Repeat steps 5.1 to 5.5.&lt;br /&gt;
### Under Image Sampling, check Normal Map.&lt;br /&gt;
### Under Influence &amp;gt; Geometry, check Normal. Make sure it.s 1.00.&lt;br /&gt;
## You&#039;ll need to do this for each piece.&lt;br /&gt;
# Piece hierarchy:&lt;br /&gt;
## Select piece A, hold shift and select piece B. Hit Ctrl+P and it will make piece A a child of piece B.&lt;br /&gt;
## Make sure all the pieces are descending from one single piece.&lt;br /&gt;
# Setting piece origins:&lt;br /&gt;
## Select a piece.&lt;br /&gt;
## Place the 3D cursor where you want the origin to be (left-click).&lt;br /&gt;
## Click on Object &amp;gt; Transform &amp;gt; Origin to 3D Cursor.&lt;br /&gt;
## You can now rotate your pieces:&lt;br /&gt;
### Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select Individual Origins.&lt;br /&gt;
### Rotate.&lt;br /&gt;
## Do this for all your pieces.&lt;br /&gt;
# Preparing for Spring:&lt;br /&gt;
## Select your root piece.&lt;br /&gt;
## Press Shift-C to put the 3D cursor in the center of the world.&lt;br /&gt;
## Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select 3D Cursor.&lt;br /&gt;
## Rotate your whole model so that it&#039;s -90 degrees. Unfortunately this appears to be only doable with the mouse (when using 3D cursor).&lt;br /&gt;
## Click Object &amp;gt; Apply &amp;gt; Rotation &amp;amp; Scale.&lt;br /&gt;
# Save your model.&lt;br /&gt;
# Select all the pieces of your model, ignore the lamp.&lt;br /&gt;
# Click on File &amp;gt; Export &amp;gt; Collada.&lt;br /&gt;
# Check &amp;quot;Export Only Selected&amp;quot; and export.&lt;br /&gt;
# The dae file will be used as your object.&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2150</id>
		<title>Assimp</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Assimp&amp;diff=2150"/>
		<updated>2013-02-14T23:45:17Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: Added new tutorial.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Game_and_Unit_development|Game Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
== Blender Workflow Tutorial ==&lt;br /&gt;
&lt;br /&gt;
This is a stub containing a simple outline of a Blender workflow. Disclaimer: I&#039;m not modeling expert, there may be a better way to do this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Open an existing Blender model or import a different format through the File menu (File &amp;gt; Import).&lt;br /&gt;
# In the 3D view, drag out the secret panel from the right.&lt;br /&gt;
# In that panel, select Display &amp;gt; Shading &amp;gt; GLSL.&lt;br /&gt;
# Make sure you have a lamp in your scene while in this mode or your model will be dark.&lt;br /&gt;
# Applying texture: &lt;br /&gt;
## In the UV/Image editor, click the image icon (Tooltip: Browse Image to be linked) to select your texture. If it&#039;s not there, click on Image &amp;gt; Open Image to browse for it.&lt;br /&gt;
## In the 3D View, select (right-click) your object and hit Tab to enter Mesh Mode.&lt;br /&gt;
## Hit A to select all your faces.&lt;br /&gt;
## In the 3D View, hit A to select all the faces there and select your image with the image icon. Assuming there&#039;s a UVMap, you should see your texture.&lt;br /&gt;
## &amp;lt;Future space for setting up UVMap and normalmap&amp;gt;&lt;br /&gt;
## You&#039;ll need to do this for each piece.&lt;br /&gt;
# Piece hierarchy:&lt;br /&gt;
## Select piece A, hold shift and select piece B. Hit Ctrl+P and it will make piece A a child of piece B.&lt;br /&gt;
## Make sure all the pieces are descending from one single piece.&lt;br /&gt;
# Setting piece origins:&lt;br /&gt;
## Select a piece.&lt;br /&gt;
## Place the 3D cursor where you want the origin to be (left-click).&lt;br /&gt;
## Click on Object &amp;gt; Transform &amp;gt; Origin to 3D Cursor.&lt;br /&gt;
## You can now rotate your pieces:&lt;br /&gt;
### Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select Individual Origins.&lt;br /&gt;
### Rotate.&lt;br /&gt;
## Do this for all your pieces.&lt;br /&gt;
# Preparing for Spring:&lt;br /&gt;
## Select your root piece.&lt;br /&gt;
## Press Shift-C to put the 3D cursor in the center of the world.&lt;br /&gt;
## Click on the dropdown &amp;quot;Pivot Center for Rotation/Scaling&amp;quot; and select 3D Cursor.&lt;br /&gt;
## Rotate your whole model so that it&#039;s -90 degrees. Unfortunately this appears to be only doable with the mouse (when using 3D cursor).&lt;br /&gt;
## Click Object &amp;gt; Apply &amp;gt; Rotation &amp;amp; Scale.&lt;br /&gt;
# Save your model.&lt;br /&gt;
# Select all the pieces of your model, ignore the lamp.&lt;br /&gt;
# Click on File &amp;gt; Export &amp;gt; Collada.&lt;br /&gt;
# Check &amp;quot;Export Only Selected&amp;quot; and export.&lt;br /&gt;
# The dae file will be used as your object.&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=8082</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=8082"/>
		<updated>2013-02-14T23:18:48Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: /* Modeling 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;
**[[Units-WeaponDefs]] : define the attributes of weapons/projectiles&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;, and additionally a variety of common model formats as supported by the ASSIMP library. The biggest difference between these formats is the workflow to create a new unit. There are also s3o exporter plugins for &#039;3ds-max&#039; and an older version of &#039;blender&#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;
* [[TutorialBlenderWorkFlow|Blender Workflow 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>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Games&amp;diff=9027</id>
		<title>Games</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Games&amp;diff=9027"/>
		<updated>2011-12-26T23:41:56Z</updated>

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

		<summary type="html">&lt;p&gt;Carrepairer: /* Content download websites for Spring */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Content download websites for Spring===&lt;br /&gt;
&lt;br /&gt;
;http://springfiles.com : Nearly all spring related files can be found here, files avaiable there are also downloadable by lobby clients.&lt;br /&gt;
&lt;br /&gt;
;http://zero-k.info/Maps : List of most maps with detailed info&lt;br /&gt;
&lt;br /&gt;
;http://widgets.springrts.de/index.php?s=d : Primary Spring Widget Data Base&lt;br /&gt;
&lt;br /&gt;
;http://www.springinfo.info : a Spring Player&#039;s Portal (does not represent all Spring Development but is quite helpful)&lt;br /&gt;
&lt;br /&gt;
;http://spring-portal.com : a nice Spring site with a short &amp;lt;b&amp;gt;Getting Spring to play tutorial&amp;lt;/b&amp;gt; + more - thanks to BLC&lt;br /&gt;
&lt;br /&gt;
;http://www.tasdownloads.com : thanks to M_A_D&lt;br /&gt;
&lt;br /&gt;
;http://www.darkstars.co.uk/downloads/ : has the best &amp;lt;u&amp;gt;bandwidth&amp;lt;/u&amp;gt; you will get - thanks to AF (a Dev with a running Spring blog) &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;attention: mostly old files&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; [[FAQ|&amp;lt;- Back to Help page]]&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Complete_Annihilation&amp;diff=5117</id>
		<title>Complete Annihilation</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Complete_Annihilation&amp;diff=5117"/>
		<updated>2010-07-14T18:28:34Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: Delete this page?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.caspring.org&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Games&amp;diff=8938</id>
		<title>Games</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Games&amp;diff=8938"/>
		<updated>2010-07-14T18:22:36Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: /* TA-derived */ CA links to CA page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameslanguage}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__There are a number of games made for the Spring Engine. Some of the more popular ones are listed below, sorted by their terms of use. &amp;lt;!--(/license schemes?)--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Freeware/Open Source=&lt;br /&gt;
&#039;&#039;These games are all free to download and play and/or free to be modded without the author&#039;s permission (asking permission is considered a common courtesy though).&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[http://www.evolutionrts.info Evolution RTS]&amp;lt;/h2&amp;gt;(CC-BY-NC-ND)&lt;br /&gt;
| width=40 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;&#039;&#039;&#039;[http://www.spring1944.org/ Spring: 1944]&#039;&#039;&#039;&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimgx|xsize=300|ysize=225|image=EvoRTS screenshot.jpg|link=http://www.evolutionrts.info}}&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |{{navimgx|xsize=300|ysize=225|image=S44_tigers.jpg|link=http://www.spring1944.org}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; | A new war is brewing. A violent conflict, between the Six Colonies, each one convinced that it was in the right, each one sure of its own ability to defeat its enemies. But they need Generals. They need soldiers. They need you.&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; | Spring:1944 is a WWII themed game with four fully functional sides (US, Germany, USSR, Britain), period-accurate units and strengths. Realism comes second only to creating a game that is fun and accessible to play.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[[Kernel Panic]]&amp;lt;/h2&amp;gt;(&amp;quot;Public Domain&amp;quot;)&lt;br /&gt;
| width=40 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[[War Evolution]]&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimg|xsize=300|ysize=225|image=Kernel_Panic_3.4.jpg|link=Kernel Panic}}&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |{{navimg|xsize=300|ysize=225|image=Warevoscreen.jpg|link=War Evolution}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; | A game based around combat &#039;&#039;&#039;inside&#039;&#039;&#039; a computer, with 3 unique sides: the System, the Hacker and the Network waging war in a matrix of DOOM! No resource economy exists in KP, with the only constraints being time and space.&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; | In short words, War Evolution is different. Different from all other games. You dont have a base and you can not reinforce your &amp;quot;army&amp;quot;. In fact, you command only one single mech and if he dies, you can only spectate until the game is over.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Proprietary=&lt;br /&gt;
&#039;&#039;These games may or may not be free to play. Modifying their content (i.e. the art assets) is not allowed without the game authors explicit permission, although the code is GPL and some games (P.U.R.E.) include large GPL-friendly content collections.&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[http://www.wolfegames.com P.U.R.E.]&amp;lt;/h2&amp;gt;&lt;br /&gt;
| width=40 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[[Gundam RTS]]&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |{{navimgx|xsize=300|ysize=225|image=PURE_LOGO_1024.jpg|link=http://www.wolfegames.com}}&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |{{navimg|xsize=300|ysize=225|image=Screen104.jpg|link=Gundam RTS}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; | A game based on a completely original IP, allowing players to participate in the epic, galaxy-spanning conflict between the human Resistance forces and the malevolent A.I. known as &#039;The Overmind&#039;.&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; | Set during the One-Year War in the Universal Century timeline of the Gundam Metaseries, Gundam RTS features fast, intense mech combat gameplay in a truly Gundam style.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[http://www.imperialwinter.com Star Wars: Imperial Winter]&amp;lt;/h2&amp;gt;&lt;br /&gt;
| width=40 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[[Expand_and_Exterminate|Expand and Exterminate]]&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimgx|xsize=300|ysize=225|image=Imperial Winter assault.jpg|link=http://www.imperialwinter.com}}&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |{{navimg|xsize=300|ysize=225|image=E&amp;amp;E-screenshot2.jpg|link=Expand and Exterminate}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; | A Star Wars themed game set in the troubled post-Return of the Jedi era, SW:IW features over a hundred units for the fractured Galactic Empire and Rebel Alliance fighting for control of the galaxy.&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; | An original IP game loosely based around the Earth 2150 series of games.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=180 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;&#039;&#039;&#039;[http://azaremoth.supremedesign.org The Cursed]&#039;&#039;&#039;&amp;lt;/h2&amp;gt;&lt;br /&gt;
| width=180 |&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimgx|xsize=300|ysize=225|image=cursed.jpg|link=http://azaremoth.supremedesign.org}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; | The unique game is about bones, undead, demons and magic settled in a futuristic environment.[[http://www.springfiles.com/show_file.php?id=2498 Download link]]&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=TA-derived=&lt;br /&gt;
&#039;&#039;At least parts of these games are derived from data of the  Total Annihilation game (copyright Atari). As such, their distribution is potentially in breach of copyright laws and therefore not officially endorsed by the Spring RTS team.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[[Balanced Annihilation]]&amp;lt;/h2&amp;gt;&lt;br /&gt;
| width=40 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[http://www.caspring.org Complete Annihilation]&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimg|xsize=300|ysize=225|image=BAScreenShot.jpg|link=Balanced Annihilation}} &lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimgx|xsize=300|ysize=225|image=Pyro.jpg|link=http://www.caspring.org}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; | &lt;br /&gt;
Balanced Annihilation (BA) is currently the most popular game played using the Spring engine.  BA is a mature mod and new versions feature only minor balance tweaks.&lt;br /&gt;
&lt;br /&gt;
BA gameplay develops in stages of progressively heavier units with a growing economy. Many strategies are viable in BA, including focusing on map control, aggression, defense, air power, sea power, or mobility.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; | CA is a regularly updated game that is often regarded as a showcase of what the Spring Engine can do. The game is designed with a flat tech tree, where the effectiveness of a unit is based on its appropriateness to the situation rather than lighter units being superseded by heavier ones.&lt;br /&gt;
Although CA is a game that uses OTA content, it is currently working towards being TA-IP free.&lt;br /&gt;
&amp;lt;b&amp;gt;If you like complex warfare this is Your Mod.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[[NOTA]]&amp;lt;/h2&amp;gt;&lt;br /&gt;
| width=40 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[[XTA]]&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |{{navimg|xsize=300|ysize=225|image=Nota2nukes.jpg|link=NOTA}}&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimg|xsize=300|ysize=225|image=XtaScreenShot.jpg|link=XTA}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; | Not Original Total Annihilation is a rethink of the Total Annihilation universe with a focus on strategic, base oriented gameplay. With its revised unit scale, huge battles erupt engaging hundreds of units and scores of unit types. NOTA&#039;s completely rethought air and sea gameplay forces participation in all elements and places the tide of conflict in your hands.&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; | Originally developed as a Total Annihilation mod by the Swedish Yankspankers, XTA is the Original Public Mod released with first versions of Spring. Development of this mod by the SYs has stopped a while ago, but it is still played and actively developed by the community.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Installing Games in Spring=&lt;br /&gt;
Quite a few of the games listed above come with standalone installers - which makes things easy (check their website to find out!). &lt;br /&gt;
&lt;br /&gt;
In some cases however, the game will only distribute a &amp;quot;game-file&amp;quot; - in this case you will need to have [[Download|an installation of the Spring-Engine]], and place the file in the .../Spring/mods/ folder. If you are using a Lobby, this will often be able to do this for you automatically.&amp;lt;!--(which would these be?) Game packages requiring a more complex installation will usually come with instructions.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For an overview of information to get started, Click &#039;&#039;&#039;[[FAQ|Help]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Game Development=&lt;br /&gt;
For information on creating games for the Spring engine, see the [[Mod_and_Unit_development|Game Making]] page.&lt;br /&gt;
&lt;br /&gt;
[[Category: Games]]&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Lua_SyncedRead&amp;diff=11890</id>
		<title>Lua SyncedRead</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Lua_SyncedRead&amp;diff=11890"/>
		<updated>2009-12-02T18:00:49Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: Y and Z flipped in Spring.GetUnitWeaponVectors desc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Lua_Scripting|Lua Scripting]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
== Game ==&lt;br /&gt;
=== Special TeamID Variables ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; style=&amp;quot;font-weight:600&amp;quot;&amp;gt;(those special TeamIDs are not supported by all functions)&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.ALL_UNITS&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.MY_UNITS&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.ALLY_UNITS&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.ENEMY_UNITS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGaiaTeamID&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number teamID&lt;br /&gt;
&lt;br /&gt;
=== GameStates ===&lt;br /&gt;
&#039;&#039;&#039;Spring.IsGodModeEnabled&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.IsCheatingEnabled&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.IsDevLuaEnabled&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.IsEditDefsEnabled&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.AreHelperAIsEnabled&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.FixedAllies&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | boolean&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.IsGameOver&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; boolean&lt;br /&gt;
&lt;br /&gt;
=== Rules ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;Those functions allow to save data per Game,Team and Unit.&amp;lt;br&amp;gt;The advantage of it is that it can be read from anywhere (even from LuaUI and AIs!)&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.GetRulesInfoMap&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; { [key1] = string value1, [key2] = string value2, ... }&lt;br /&gt;
  ( string &amp;quot;key&amp;quot; ) -&amp;gt; string&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGameRulesParam&#039;&#039;&#039;&lt;br /&gt;
  ( number index | string ruleName ) -&amp;gt; number value&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGameRulesParams&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; { [rule1] = number value1, [rule2] = number value2, ... }&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTeamRulesParam&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID, number index | string ruleName ) -&amp;gt; nil | number value&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTeamRulesParams&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID ) -&amp;gt; nil | { [rule1] = number value1, [rule2] = number value2, ... }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitRulesParam&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID, number index | string ruleName ) -&amp;gt; nil | number value&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitRulesParams&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | { [rule1] = number value1, [rule2] = number value2, ... }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mod-/Map-Options ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetModOptions&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; {} | { &amp;quot;keyName1&amp;quot; = string &amp;quot;value&amp;quot;, &amp;quot;keyName2&amp;quot; = string &amp;quot;value&amp;quot;, ... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetMapOptions&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; {} | { &amp;quot;keyName1&amp;quot; = string &amp;quot;value&amp;quot;, &amp;quot;keyName2&amp;quot; = string &amp;quot;value&amp;quot;, ... }&lt;br /&gt;
&lt;br /&gt;
=== Speed/Time ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGameSpeed&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number userSpeedFactor, number speedFactor, boolean paused&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGameFrame&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number frameNum%dayFrames, number frameNum/dayFrames&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGameSeconds&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Vectors ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetWind&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number dirX, number dirY, number dirZ, &lt;br /&gt;
         number strength,  number normDirX, number normDirY, number normDirZ&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetHeadingFromVector&#039;&#039;&#039;&lt;br /&gt;
  ( number x, number z ) -&amp;gt; number heading&lt;br /&gt;
&#039;&#039;&#039;Spring.GetVectorFromHeading&#039;&#039;&#039;&lt;br /&gt;
  ( number heading ) -&amp;gt; number x, number z&lt;br /&gt;
&lt;br /&gt;
== Sides/Factions ==&lt;br /&gt;
&#039;&#039;&#039;Spring.GetSideData&#039;&#039;&#039;&lt;br /&gt;
  ( string sideName ) -&amp;gt; nil | string startUnit, string caseSensitiveSideName&lt;br /&gt;
  ( number sideID ) -&amp;gt; nil | string sideName, string startUnit, string caseSensitiveSideName&lt;br /&gt;
  ( ) -&amp;gt; { [1] = { sideName=string,caseName=string,startUnit=string}, [2] = .., .. }&lt;br /&gt;
&lt;br /&gt;
== Teams ==&lt;br /&gt;
=== StartBoxes/StartPositions ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetAllyTeamStartBox&#039;&#039;&#039;&lt;br /&gt;
  ( number allyID ) -&amp;gt; nil | number xmin, number zmin, number xmax, number zmax&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTeamStartPosition&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID ) -&amp;gt; nil | number x, number y, number z&lt;br /&gt;
&lt;br /&gt;
=== Player,Team,Ally Lists/Info ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetPlayerList&#039;&#039;&#039;&lt;br /&gt;
  ( [number teamID = -1 | boolean onlyActive = false] [, number teamID | boolean onlyActive])&lt;br /&gt;
  -&amp;gt; nil | { [1] = number playerID, etc... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTeamList&#039;&#039;&#039;&lt;br /&gt;
  ( [number allyTeamID = -1] ) -&amp;gt; nil | { [1] = number teamID, etc... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetAllyTeamList&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; { [1] = number allyTeamID, etc... }&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetPlayerInfo&#039;&#039;&#039;&lt;br /&gt;
  ( number playerID ) -&amp;gt; &lt;br /&gt;
    nil | string  &amp;quot;name&amp;quot;,  &amp;lt;font color=#55ee99&amp;gt;(in synced code this is &amp;quot;SYNCED_NONAME&amp;quot;!)&amp;lt;/font&amp;gt;&lt;br /&gt;
          boolean active,&lt;br /&gt;
          boolean spectator,&lt;br /&gt;
          number  teamID,&lt;br /&gt;
          number  allyTeamID,&lt;br /&gt;
          number  pingTime,&lt;br /&gt;
          number  cpuUsage,&lt;br /&gt;
          string  country,&lt;br /&gt;
          number  rank&lt;br /&gt;
          table   customPlayerKeys&lt;br /&gt;
&#039;&#039;&#039;Spring.GetPlayerControlledUnit&#039;&#039;&#039;&lt;br /&gt;
  ( number playerID ) -&amp;gt; nil | number unitID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetAIInfo&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID ) -&amp;gt; &lt;br /&gt;
    nil | number  teamID&lt;br /&gt;
          number  skirmishAIID,&lt;br /&gt;
          string  name,&lt;br /&gt;
          number  hostingPlayerID,&lt;br /&gt;
          string  shortName, &amp;lt;font color=#55ee99&amp;gt;(synced =&amp;gt; &amp;quot;SYNCED_NOSHORTNAME&amp;quot;; non-local =&amp;gt; &amp;quot;UNKNOWN&amp;quot;)&amp;lt;/font&amp;gt;&lt;br /&gt;
          string  version,   &amp;lt;font color=#55ee99&amp;gt;(synced =&amp;gt; &amp;quot;SYNCED_NOVERSION&amp;quot;;   non-local =&amp;gt; &amp;quot;UNKNOWN&amp;quot;)&amp;lt;/font&amp;gt;&lt;br /&gt;
          table   options    &amp;lt;font color=#55ee99&amp;gt;(synced &amp;amp; non-local =&amp;gt; empty-table)&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetAllyTeamInfo&#039;&#039;&#039;&lt;br /&gt;
  ( number allyteamID ) -&amp;gt; nil | table   customTeamKeys&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTeamInfo&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID ) -&amp;gt;&lt;br /&gt;
    nil | number  teamID,&lt;br /&gt;
          number  leader,&lt;br /&gt;
          boolean isDead,&lt;br /&gt;
          boolean isAiTeam,&lt;br /&gt;
          string  &amp;quot;side&amp;quot;,&lt;br /&gt;
          number  allyTeam&lt;br /&gt;
          table   customTeamKeys&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTeamResources&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID, string &amp;quot;metal&amp;quot; | &amp;quot;energy&amp;quot; ) -&amp;gt;&lt;br /&gt;
    nil | number currentLevel,&lt;br /&gt;
          number storage,&lt;br /&gt;
          number pull,&lt;br /&gt;
          number income,&lt;br /&gt;
          number expense,&lt;br /&gt;
          number share,&lt;br /&gt;
          number sent,&lt;br /&gt;
          number received&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTeamUnitStats&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID ) -&amp;gt;&lt;br /&gt;
    nil | number killed,&lt;br /&gt;
          number died,&lt;br /&gt;
          number capturedBy,&lt;br /&gt;
          number capturedFrom,&lt;br /&gt;
          number received,&lt;br /&gt;
          number sent&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTeamStatsHistory&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID, number startTime, number endTime ) -&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
      [1] = {&lt;br /&gt;
        &amp;quot;time&amp;quot;             = number,&lt;br /&gt;
        &amp;quot;frame&amp;quot;            = number,&lt;br /&gt;
        &amp;quot;metalUsed&amp;quot;        = number,&lt;br /&gt;
        &amp;quot;metalProduced&amp;quot;    = number,&lt;br /&gt;
        &amp;quot;metalExcess&amp;quot;      = number,&lt;br /&gt;
        &amp;quot;metalReceived&amp;quot;    = number,&lt;br /&gt;
        &amp;quot;metalSent&amp;quot;        = number,&lt;br /&gt;
        &amp;quot;energyUsed&amp;quot;       = number,&lt;br /&gt;
        &amp;quot;energyProduced&amp;quot;   = number,&lt;br /&gt;
        &amp;quot;energyExcess&amp;quot;     = number,&lt;br /&gt;
        &amp;quot;energyReceived&amp;quot;   = number,&lt;br /&gt;
        &amp;quot;energySent&amp;quot;       = number,&lt;br /&gt;
        &amp;quot;damageDealt&amp;quot;      = number,&lt;br /&gt;
        &amp;quot;damageReceived&amp;quot;   = number,&lt;br /&gt;
        &amp;quot;unitsProduced&amp;quot;    = number,&lt;br /&gt;
        &amp;quot;unitsDied&amp;quot;        = number,&lt;br /&gt;
        &amp;quot;unitsReceived&amp;quot;    = number,&lt;br /&gt;
        &amp;quot;unitsSent&amp;quot;        = number,&lt;br /&gt;
        &amp;quot;unitsCaptured&amp;quot;    = number,&lt;br /&gt;
        &amp;quot;unitsOutCaptured&amp;quot; = number,&lt;br /&gt;
        &amp;quot;unitsKilled&amp;quot;      = number&lt;br /&gt;
      }, ...&lt;br /&gt;
   }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTeamLuaAI&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID ) -&amp;gt; string &amp;quot;luaAI&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Teams/PlayersAllied ===&lt;br /&gt;
&#039;&#039;&#039;Spring.AreTeamsAllied&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID1, number teamID2 ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.ArePlayersAllied&#039;&#039;&#039;&lt;br /&gt;
  ( number playerID1, number playerID2 ) -&amp;gt; nil | boolean&lt;br /&gt;
&lt;br /&gt;
== Units ==&lt;br /&gt;
=== GetUnits ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetAllUnits&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | unitTable = { [1] = number unitID, ... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTeamUnits&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID ) -&amp;gt; nil | unitTable = { [1] = number unitID, etc... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTeamUnitsSorted&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID ) -&amp;gt; nil |&lt;br /&gt;
    unitDefTable = {&lt;br /&gt;
      [number unitDefID] = { [1] = [number unitID], etc... },&lt;br /&gt;
      etc...&lt;br /&gt;
    }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTeamUnitsCounts&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID ) -&amp;gt; nil | countTable = { [number unitDefID] = count, etc... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTeamUnitsByDefs&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID, number unitDefID | { number unitDefID1, ... } )&lt;br /&gt;
    -&amp;gt; nil | unitTable = { [1] = number unitID, etc... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTeamUnitDefCount&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID, number unitDefID ) -&amp;gt; nil | number count&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTeamUnitCount&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID ) -&amp;gt; nil | number count&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitsInRectangle&#039;&#039;&#039;&lt;br /&gt;
  ( number xmin, number zmin, number xmax, number zmax [,number teamID] ) &lt;br /&gt;
    -&amp;gt; nil | unitTable = { [1] = number unitID, etc... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitsInBox&#039;&#039;&#039;&lt;br /&gt;
  ( number xmin, number ymin, number zmin,&lt;br /&gt;
    number xmax, number ymax, number zmax [,number teamID] )&lt;br /&gt;
    -&amp;gt; nil | unitTable = { [1] = number unitID, etc... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitsInSphere&#039;&#039;&#039;&lt;br /&gt;
  ( number x, number y, number z, number radius [,number teamID] )&lt;br /&gt;
    -&amp;gt; nil | unitTable = { [1] = number unitID, etc... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitsInCylinder&#039;&#039;&#039;&lt;br /&gt;
  ( number x, number z, number radius [,number teamID] )&lt;br /&gt;
    -&amp;gt; nil | unitTable = { [1] = number unitID, etc... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitsInPlanes&#039;&#039;&#039;&lt;br /&gt;
  ( planes = { [1] = { number nx, number ny, number nz, number d }, etc... } )&lt;br /&gt;
    -&amp;gt; nil | unitTable = { [1] = number unitID, etc... }&lt;br /&gt;
&amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;&lt;br /&gt;
  plane normals point towards accepted space,&lt;br /&gt;
  so the acceptance criteria for each plane is:&lt;br /&gt;
    radius     = unit radius&lt;br /&gt;
    px, py, pz = unit position&lt;br /&gt;
    [(nx * px) + (ny * py) + (nz * pz) + (d - radius)]  &amp;lt;=  0&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitNearestAlly&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID [, number range ] ) -&amp;gt; nil | number unitID&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitNearestEnemy&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID [, number range [, bool useLOS]] ) -&amp;gt; nil | number unitID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unit Informations ===&lt;br /&gt;
&#039;&#039;&#039;Spring.ValidUnitID&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitIsDead&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitTooltip&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | string tooltip&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitDefID&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number unitDefID&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitTeam&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number teamID&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitAllyTeam&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number allyID&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitLineage&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number lineage | number lineage, boolean lineageIsRoot&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitNeutral&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | boolean neutral&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitHealth&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number health, number maxHealth, number paralyzeDamage,&lt;br /&gt;
                             number captureProgress, number buildProgress&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitArmored&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitIsStunned&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | boolean stunned_or_inbuild, boolean stunned, boolean inbuild&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitResources&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number metalMake, number metalUse,&lt;br /&gt;
                             number energyMake, number energyUse&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitExperience&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number experience&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitStates&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | {&lt;br /&gt;
    &amp;quot;firestate&amp;quot; = number,&lt;br /&gt;
    &amp;quot;movestate&amp;quot; = number,&lt;br /&gt;
    &amp;quot;repeat&amp;quot; = boolean,&lt;br /&gt;
    &amp;quot;cloak&amp;quot; = boolean,&lt;br /&gt;
    &amp;quot;active&amp;quot; = boolean,&lt;br /&gt;
    &amp;quot;trajectory&amp;quot; = boolean,&lt;br /&gt;
    [&amp;quot;autoland&amp;quot; = boolean,]&lt;br /&gt;
    [&amp;quot;autorepairlevel&amp;quot; = number,]&lt;br /&gt;
    [&amp;quot;loopbackattack&amp;quot; = boolean]&lt;br /&gt;
  } &lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitIsActive&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitIsCloaked&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitSelfDTime&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitStockpile&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number numStockpiled, number numStockpileQued,&lt;br /&gt;
                             number buildPercent&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitHeight&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitRadius&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitPosition&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number x, number y, number z&lt;br /&gt;
&amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;returns the center position of the unit (midpos).&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitBasePosition&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number x, number y, number z&lt;br /&gt;
&amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;returns the bottom of the unit.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitDirection&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number dx, number dy, number dz&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitHeading&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number heading&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitVelocity&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number velx, number vely, number velz&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitBuildFacing&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitIsBuilding&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number unitID&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitTransporter&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number unitID&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitIsTransporting&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | { [1] = number unitID, etc... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitShieldState&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number isEnabled, number curPower&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitTravel&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number travel, number travelPeriod&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitFuel&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitFlanking&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID, string &amp;quot;dir&amp;quot; ) -&amp;gt; nil | number x, number y, number z&lt;br /&gt;
  ( number unitID, string &amp;quot;mode&amp;quot; | &amp;quot;moveFactor&amp;quot; | &amp;quot;minDamage&amp;quot; | &amp;quot;maxDamage&amp;quot; ) -&amp;gt; nil | number&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number mode, number modilityAdd,&lt;br /&gt;
    number minDamage, number maxDamage, number dirX, number dirY, number dirZ&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitSensorRadius&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID, string type ) -&amp;gt; nil | number radius&lt;br /&gt;
  &amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;possible types are:&amp;lt;br&amp;gt;airLos, radar, sonar, seismic, radarJammer &amp;amp; sonarJammer&amp;lt;/font&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitLosState&#039;&#039;&#039; &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;raw is only available in gadgets&amp;lt;/font&amp;gt;&lt;br /&gt;
  ( number unitID [, number allyTeamID [, boolean raw] ] ) -&amp;gt; nil |&lt;br /&gt;
  { [&amp;quot;los&amp;quot; = true] [, &amp;quot;radar&amp;quot; = true] [, &amp;quot;typed&amp;quot; = true] }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitSeparation&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;(returns the distance of 2 units)&amp;lt;/font&amp;gt;&lt;br /&gt;
  ( number unitID1, number unitID2 [, boolean 2D ] ) -&amp;gt; nil | number distance&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitDefDimensions&#039;&#039;&#039;&lt;br /&gt;
  ( number unitDefID ) -&amp;gt; nil |&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;height&amp;quot; = number,&lt;br /&gt;
      &amp;quot;radius&amp;quot; = number,&lt;br /&gt;
      &amp;quot;midx&amp;quot;   = number,&lt;br /&gt;
      &amp;quot;minx&amp;quot;   = number,&lt;br /&gt;
      &amp;quot;maxx&amp;quot;   = number,&lt;br /&gt;
      &amp;quot;midy&amp;quot;   = number,&lt;br /&gt;
      &amp;quot;miny&amp;quot;   = number,&lt;br /&gt;
      &amp;quot;maxy&amp;quot;   = number,&lt;br /&gt;
      &amp;quot;midz&amp;quot;   = number,&lt;br /&gt;
      &amp;quot;minz&amp;quot;   = number,&lt;br /&gt;
      &amp;quot;maxz&amp;quot;   = number&lt;br /&gt;
    }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitWeaponVectors&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID, number weaponNum ) -&amp;gt; nil | number posX, number posY, number posZ,&lt;br /&gt;
    number dirX, number dirY, number dirZ&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitWeaponState&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID, number weaponNum ) -&amp;gt; nil |&lt;br /&gt;
    boolean angleGood, boolean loaded, number reloadFrame,&lt;br /&gt;
    number salvoLeft, number numStockpiled&lt;br /&gt;
  ( number unitID, number weaponNum, string tag ) -&amp;gt; nil | number&lt;br /&gt;
  &amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;tag can be:&lt;br /&gt;
  &amp;quot;reloadState&amp;quot; | &amp;quot;reloadTime&amp;quot; | &amp;quot;accuracy&amp;quot; | &amp;quot;sprayAngle&amp;quot; | &lt;br /&gt;
  &amp;quot;range&amp;quot; | &amp;quot;projectileSpeed&amp;quot; | &amp;quot;burst&amp;quot; | &amp;quot;burstRate&amp;quot; | &amp;quot;projectiles&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitLastAttacker&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number unitID&lt;br /&gt;
&lt;br /&gt;
=== Unit Pieces ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitVectors&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | {frontX,frontY,frontZ}, {upX,upY,upZ}, {rightX,rightY,rightZ}&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitPiecePosition&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID, number piece ) -&amp;gt; number posx, number posy, number posz&lt;br /&gt;
&amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;Returns piece position in unit space&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitPieceDirection&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID, number piece ) -&amp;gt; number dirx, number diry, number dirz&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Broken (returns reverse direction in piece space for pieces with &amp;gt;= 2 vertices, and returns (1,1,1) for pieces with &amp;lt; 2 vertices)&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitPieceMatrix&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID, number piece ) -&amp;gt; { [1] = number, ... , [16] = number }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitPieceList&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; { [1] = string &amp;quot;piecename&amp;quot;, ... , [pieceNumN] = string &amp;quot;piecename&amp;quot; }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitPieceMap&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; { &amp;quot;piecename1&amp;quot; = pieceNum1, ... , &amp;quot;piecenameN&amp;quot; = pieceNumN }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitPieceInfo&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID, number piece ) -&amp;gt; {&lt;br /&gt;
    &amp;quot;name&amp;quot;     = string &amp;quot;piecename&amp;quot;,&lt;br /&gt;
    &amp;quot;isEmpty&amp;quot;  = boolean,&lt;br /&gt;
    &amp;quot;children&amp;quot; = { [1] = string &amp;quot;piecename&amp;quot;, ... },&lt;br /&gt;
    &amp;quot;min&amp;quot;      = { [1] = number x, [2] = number y, [3] = number z },&lt;br /&gt;
    &amp;quot;max&amp;quot;      = { [1] = number x, [2] = number y, [3] = number z },&lt;br /&gt;
    &amp;quot;offset&amp;quot;   = { [1] = number x, [2] = number y, [3] = number z },    &lt;br /&gt;
  }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitScriptPiece&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID [, number scriptPiece ] )&lt;br /&gt;
   -&amp;gt; nil | { scriptPieceNum = number modelPieceNum } | number modelPieceNum&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;This functions translate the COB ScriptPiece numbers into the ModelPiece numbers (the set of ScriptPieces is a subset of the ModelPieces, means #ScriptPieces &amp;lt;= #ModelPieces), which is used in all other functions (the &amp;quot;number piece&amp;quot; means always the modelpiece). So if you get via Cob2Lua a pieceID you have to translate it with this function. Btw the COB ScriptPiece number is equal with the piece position in the &amp;lt;i&amp;gt;piece&amp;lt;/i&amp;gt; definition in your cob/bos.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitScriptNames&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID )&lt;br /&gt;
   -&amp;gt; { &amp;quot;cobpiecename1&amp;quot; = ScriptPieceNum1, ... , &amp;quot;cobpiecenameN&amp;quot; = ScriptPieceNumN }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitPiecePosDir&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID, number pieceNum ) -&amp;gt; nil | number posX, number posY, number posZ,&lt;br /&gt;
    number dirX, number dirZ, number dirY&lt;br /&gt;
&amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;Returns piece position and direction in world space. The direction (dirX, dirY, dirZ) is not necessarily normalized.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CommandQueues ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitCommands&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID [, number count] ) -&amp;gt; nil | commandQueueTable = {&lt;br /&gt;
     [1] = {&lt;br /&gt;
       &amp;quot;id&amp;quot;      = number,&lt;br /&gt;
       &amp;quot;params&amp;quot;  = { [1] = number, ...},&lt;br /&gt;
       &amp;quot;options&amp;quot; = {&lt;br /&gt;
         &amp;quot;coded&amp;quot;    = number,&lt;br /&gt;
         &amp;quot;alt&amp;quot;      = boolean,&lt;br /&gt;
         &amp;quot;ctrl&amp;quot;     = boolean,&lt;br /&gt;
         &amp;quot;shift&amp;quot;    = boolean,&lt;br /&gt;
         &amp;quot;right&amp;quot;    = boolean,&lt;br /&gt;
         &amp;quot;internal&amp;quot; = boolean&lt;br /&gt;
       }&lt;br /&gt;
     }, ...&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetCommandQueue&#039;&#039;&#039;   &amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;(same as Spring.GetUnitCommands)&amp;lt;/font&amp;gt;&lt;br /&gt;
  ( number unitID [, number count] ) -&amp;gt; nil | commandQueueTable = {&lt;br /&gt;
     [1] = {&lt;br /&gt;
       &amp;quot;id&amp;quot;      = number,&lt;br /&gt;
       &amp;quot;params&amp;quot;  = { [1] = number, ...},&lt;br /&gt;
       &amp;quot;options&amp;quot; = {&lt;br /&gt;
         &amp;quot;coded&amp;quot;    = number,&lt;br /&gt;
         &amp;quot;alt&amp;quot;      = boolean,&lt;br /&gt;
         &amp;quot;ctrl&amp;quot;     = boolean,&lt;br /&gt;
         &amp;quot;shift&amp;quot;    = boolean,&lt;br /&gt;
         &amp;quot;right&amp;quot;    = boolean,&lt;br /&gt;
         &amp;quot;internal&amp;quot; = boolean&lt;br /&gt;
       }&lt;br /&gt;
     }, ...&lt;br /&gt;
   }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFullBuildQueue&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt;&lt;br /&gt;
  nil | buildOrders = {&lt;br /&gt;
          [1] = { [number unitDefID] = number count },  etc...&lt;br /&gt;
        }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetRealBuildQueue&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;(cleans the buildqueue of things the unit can&#039;t build itself)&amp;lt;/font&amp;gt;&lt;br /&gt;
  ( number unitID ) -&amp;gt;&lt;br /&gt;
  nil | buildOrders = {&lt;br /&gt;
          [1] = { [number unitDefID] = number count },  etc...&lt;br /&gt;
        }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFactoryCommands&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID [, number count] ) -&amp;gt; nil | commandQueueTable = {&lt;br /&gt;
     [1] = {&lt;br /&gt;
       &amp;quot;id&amp;quot;      = number,&lt;br /&gt;
       &amp;quot;params&amp;quot;  = { [1] = number, ...},&lt;br /&gt;
       &amp;quot;options&amp;quot; = {&lt;br /&gt;
         &amp;quot;coded&amp;quot;    = number,&lt;br /&gt;
         &amp;quot;alt&amp;quot;      = boolean,&lt;br /&gt;
         &amp;quot;ctrl&amp;quot;     = boolean,&lt;br /&gt;
         &amp;quot;shift&amp;quot;    = boolean,&lt;br /&gt;
         &amp;quot;right&amp;quot;    = boolean,&lt;br /&gt;
         &amp;quot;internal&amp;quot; = boolean&lt;br /&gt;
       }&lt;br /&gt;
     }, ...&lt;br /&gt;
   }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFactoryCounts&#039;&#039;&#039; (used to get the buildqueue of a factory, seems screwed o_O)&lt;br /&gt;
  ( number unitID [, number count [, boolean addCMDs ] ] ) -&amp;gt; nil | commandQueueTable = {&lt;br /&gt;
     [2] = { [number unitDefID | number -cmdID] = number count }, ...&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
=== Command Descriptions/Buttons ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitCmdDescs&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID [, number startIndex [, number endIndex ] ] ) -&amp;gt; nil | {&lt;br /&gt;
      [1] = {&lt;br /&gt;
        &amp;quot;id&amp;quot;          = number,&lt;br /&gt;
        &amp;quot;type&amp;quot;        = number,&lt;br /&gt;
        &amp;quot;name&amp;quot;        = string,&lt;br /&gt;
        &amp;quot;action&amp;quot;      = string,&lt;br /&gt;
        &amp;quot;tooltip&amp;quot;     = string,&lt;br /&gt;
        &amp;quot;texture&amp;quot;     = string,&lt;br /&gt;
        &amp;quot;cursor&amp;quot;      = string,&lt;br /&gt;
        &amp;quot;hidden&amp;quot;      = boolean,&lt;br /&gt;
        &amp;quot;disabled&amp;quot;    = boolean,&lt;br /&gt;
        &amp;quot;showUnique&amp;quot;  = boolean,&lt;br /&gt;
        &amp;quot;onlyTexture&amp;quot; = boolean,&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;params&amp;quot;      = { [1] = string, ... }&lt;br /&gt;
     }, ...&lt;br /&gt;
   }&lt;br /&gt;
&#039;&#039;&#039;Spring.FindUnitCmdDesc&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID, number cmdID ) -&amp;gt; nil | number index&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
=== GetFeatures ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFeaturesInRectangle&#039;&#039;&#039;&lt;br /&gt;
  ( number xmin, number zmin, number xmax, number zmax [,number teamID] )&lt;br /&gt;
    -&amp;gt; nil | featureTable = { [1] = number featureID, etc... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetAllFeatures&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | { [1] = number featureID, ... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFeatureList&#039;&#039;&#039; &amp;lt;font color=&amp;quot;red&amp;quot; style=&amp;quot;font-weight:600&amp;quot;&amp;gt; NOTE: this is not really required, now all FeatureDefs are pre-loaded&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feature Informations ===&lt;br /&gt;
&#039;&#039;&#039;Spring.ValidFeatureID&#039;&#039;&#039;&lt;br /&gt;
  ( number featureID ) -&amp;gt; boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFeatureDefID&#039;&#039;&#039;&lt;br /&gt;
  ( number featureID ) -&amp;gt; nil | number featureDefID&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFeatureTeam&#039;&#039;&#039;&lt;br /&gt;
  ( number featureID ) -&amp;gt; nil | number teamID&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFeatureAllyTeam&#039;&#039;&#039;&lt;br /&gt;
  ( number featureID ) -&amp;gt; nil | number allyID&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFeatureHealth&#039;&#039;&#039;&lt;br /&gt;
  ( number featureID ) -&amp;gt; nil | number health, number maxHealth, number resurrectProgress&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFeatureHeight&#039;&#039;&#039;&lt;br /&gt;
  ( number featureID ) -&amp;gt; nil | number&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFeatureRadius&#039;&#039;&#039;&lt;br /&gt;
  ( number featureID ) -&amp;gt; nil | number&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFeaturePosition&#039;&#039;&#039;&lt;br /&gt;
  ( number featureID ) -&amp;gt; nil | number x, number y, number z&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFeatureDirection&#039;&#039;&#039;&lt;br /&gt;
  ( number featureID ) -&amp;gt; nil | number dirx, number diry, number dirz&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFeatureHeading&#039;&#039;&#039;&lt;br /&gt;
  ( number featureID ) -&amp;gt; nil | number heading&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFeatureResources&#039;&#039;&#039;&lt;br /&gt;
  ( number featureID ) -&amp;gt; nil | number RemainingMetal, number maxMetal,&lt;br /&gt;
                                number RemainingEnergy, number maxEnergy, number reclaimLeft&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFeatureNoSelect&#039;&#039;&#039;&lt;br /&gt;
  ( number featureID ) -&amp;gt; nil | boolean noSelect&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFeatureResurrect&#039;&#039;&#039;&lt;br /&gt;
  ( number featureID ) -&amp;gt; nil | string UnitDefName, number buildFacing&lt;br /&gt;
&lt;br /&gt;
== COB ==&lt;br /&gt;
&#039;&#039;&#039;Spring.GetCOBUnitVar&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID, integer varID [, boolean unpack = false ] )&lt;br /&gt;
   -&amp;gt; nil | number value | number unpackedX, number unpackedY&lt;br /&gt;
&#039;&#039;&#039;Spring.GetCOBTeamVar&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID, integer varID [, boolean unpack = false ] )&lt;br /&gt;
   -&amp;gt; nil | number value | number unpackedX, number unpackedY&lt;br /&gt;
&#039;&#039;&#039;Spring.GetCOBAllyTeamVar&#039;&#039;&#039;&lt;br /&gt;
  ( number allyID, integer varID [, boolean unpack = false ] )&lt;br /&gt;
   -&amp;gt; nil | number value | number unpackedX, number unpackedY&lt;br /&gt;
&#039;&#039;&#039;Spring.GetCOBGlobalVar&#039;&#039;&#039;&lt;br /&gt;
  ( integer varID [, boolean unpack = false ] )&lt;br /&gt;
   -&amp;gt; nil | number value | number unpackedX, number unpackedY&lt;br /&gt;
&lt;br /&gt;
== Ground ==&lt;br /&gt;
=== Ground Informations ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;Elevation is y. Water level is always at y=0. Ground height can be changed during play (terraform or deformation).&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGroundHeight&#039;&#039;&#039;&lt;br /&gt;
  ( number x, number z ) -&amp;gt; number y&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGroundOrigHeight&#039;&#039;&#039;&lt;br /&gt;
  ( number x, number z ) -&amp;gt; number y&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGroundNormal&#039;&#039;&#039;&lt;br /&gt;
  ( number x, number z ) -&amp;gt; number x, number y, number z&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGroundInfo&#039;&#039;&#039;&lt;br /&gt;
  ( number x, number z ) -&amp;gt; string &amp;quot;Type&amp;quot;, number metal, number hardness,&lt;br /&gt;
                            number tankSpeed, number kbotSpeed, number hoverSpeed,&lt;br /&gt;
                            number shipSpeed, boolean receiveTracks&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGroundBlocked&#039;&#039;&#039;&lt;br /&gt;
  ( number x, number z |&lt;br /&gt;
    number x1, number z1, number x2, number z2 )&lt;br /&gt;
    -&amp;gt; nil |  string &amp;quot;feature&amp;quot;, number featureID  |  string &amp;quot;unit&amp;quot;, number unitID&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGroundExtremes&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | number minHeight, number maxHeight&lt;br /&gt;
&lt;br /&gt;
=== Test Building ===&lt;br /&gt;
&#039;&#039;&#039;Spring.TestBuildOrder&#039;&#039;&#039;&lt;br /&gt;
  ( number unitDefID, number x, number y, number z, number facing)&lt;br /&gt;
    -&amp;gt; number blocking [,number featureID]&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;blocking can be:&lt;br /&gt;
    0 - blocked&lt;br /&gt;
    1 - mobile unit in the way&lt;br /&gt;
    2 - free  (or if featureID is != 0 then with a blocking feature that can be reclaimed)&lt;br /&gt;
  facing can be:&lt;br /&gt;
    0, &amp;quot;s&amp;quot;, &amp;quot;south&amp;quot;&lt;br /&gt;
    1, &amp;quot;e&amp;quot;, &amp;quot;east&amp;quot;&lt;br /&gt;
    2, &amp;quot;n&amp;quot;, &amp;quot;north&amp;quot;&lt;br /&gt;
    3, &amp;quot;w&amp;quot;, &amp;quot;west&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.Pos2BuildPos&#039;&#039;&#039;&lt;br /&gt;
  ( number unitDefID, number x, number y, number z ) -&amp;gt; nil | number x, number y, number z&lt;br /&gt;
&lt;br /&gt;
=== PathFinding ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitEstimatedPath&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | {&lt;br /&gt;
     [1] = { x,y,z }, ...&lt;br /&gt;
   },{&lt;br /&gt;
     [1] = startIdxOfDetailedPath,&lt;br /&gt;
     [2] = startIdxOfDetailedEstimatedPath1,&lt;br /&gt;
     [3] = startIdxOfDetailedEstimatedPath2,&lt;br /&gt;
   }&lt;br /&gt;
  &amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;GetUnitEstimatedPath() returns 2 tables:&lt;br /&gt;
    1 table the waypoints and 1 table with indices (in the waypoint table)&lt;br /&gt;
    when a new (more lazy) pathfinding algorithm  begins.&lt;br /&gt;
    So the waypoint table contains 3 different levels of details.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LOS ===&lt;br /&gt;
&#039;&#039;&#039;Spring.IsPosInLos&#039;&#039;&#039;&lt;br /&gt;
  ( number x, number y, number z, number allyID ) -&amp;gt; boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.IsPosInRadar&#039;&#039;&#039;&lt;br /&gt;
  ( number x, number y, number z, number allyID ) -&amp;gt; boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.IsPosInAirLos&#039;&#039;&#039;&lt;br /&gt;
  ( number x, number y, number z, number allyID ) -&amp;gt; boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.GetPositionLosState&#039;&#039;&#039;&lt;br /&gt;
  ( number x, number y, number z [, number allyID] )&lt;br /&gt;
    -&amp;gt; boolean LosOrRadar, boolean inLos, boolean inRadar&lt;br /&gt;
&#039;&#039;&#039;Spring.GetClosestValidPosition&#039;&#039;&#039; &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;//NOT FINISHED YET&amp;lt;/font&amp;gt;&lt;br /&gt;
  ( number unitDefID, number x, number z, number r ) -&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
== Projectiles ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetProjectilePosition&#039;&#039;&#039;&lt;br /&gt;
  ( number projectileID ) --&amp;gt; px, py, pz&lt;br /&gt;
&#039;&#039;&#039;Spring.GetProjectileVelocity&#039;&#039;&#039;&lt;br /&gt;
  ( number projectileID ) --&amp;gt; vx, vy, vz&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7972</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=7972"/>
		<updated>2009-11-13T17:02:35Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: Added links to lua animation wiki pages.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Mod development=&lt;br /&gt;
Mods, next to Maps, is the content used in Spring.&amp;lt;br&amp;gt;&lt;br /&gt;
A mod is simply a combined file containing a small structure of files and directories holding all the data required.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Mod_Development | Mod Development]] wiki is a starting page, linking to very useful information on the files included in a mod, their hierarchy and more.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Almost the entire mod developing is the creation of units. Which isn&#039;t an easy job.&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the creation of units are everywere, but not combined.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a gathered list of all Tutorials and helpfull forums threads I could find:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
*[[Mod Development]]&lt;br /&gt;
*[[Mod specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://spring.clan-sy.com/phpbb/viewtopic.php?t=6015 What do I need to create a mod]&lt;br /&gt;
*[[Simple Mod Tutorial]]&lt;br /&gt;
*[[Freely available and reusable content|Freely available and reusable content/games/mods]]&lt;br /&gt;
*[[tools &amp;amp; software for make :map mod unit]]&lt;br /&gt;
&lt;br /&gt;
==Unit Development==&lt;br /&gt;
====Automated Mod Creation====&lt;br /&gt;
* [[TA2Spring]] - Automatically adds and converts Total Annihilation unit packs (.ufo files, etc..) into Spring mods (requires a base modification for the game rules, XTA is recommended)&lt;br /&gt;
====Models - s3o Files====&lt;br /&gt;
*[http://user.supradigital.org/jcnossen/UpspringInstaller-1.54-EulerAngles.exe UpSpring, our second-gen import / export / rigging / animation tool.]&lt;br /&gt;
* [http://lassie.student.utwente.nl/vliet/springtut.pdf Maestro&#039;s tutorial of Upspring and textures].&lt;br /&gt;
* [[Basic s3o unit making guide]]&lt;br /&gt;
* [[Simple Mod Tutorial]]&lt;br /&gt;
* [[Units:CreateModel|UV Mapping in Wings3D]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10612 Wings UV Mapping Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12354 Saving polygons in Wings3d Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10947 Greeble Tutorial 1]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12356 Greeble Tutorial 2]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?p=75495 various things about unit making. (Also contains an illustrated alpha-channel tut)]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10503 Runecrafter&#039;s 3DS Max UV Mapping Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=15106 Argh&#039;s UpSpring Easy Workflow Guide]&lt;br /&gt;
* [[Trouble-shooting s3o units]]&lt;br /&gt;
&lt;br /&gt;
====Models - 3do Files====&lt;br /&gt;
outdated model format used by OTA&amp;lt;br&amp;gt;&lt;br /&gt;
(Note: UpSpring has some problems with empty objects and groundplates)&lt;br /&gt;
*use [http://spring.clan-sy.com/phpbb/viewtopic.php?f=12&amp;amp;t=7208&amp;amp;p=126129&amp;amp;hilit=upspring#p126129 UpSpring] and [http://www.fileuniverse.com/?p=show&amp;amp;a=it&amp;amp;id=305 3doBuilder] to edit those files&lt;br /&gt;
&lt;br /&gt;
====[http://springrts.com/wiki/Category:Animation Scripting and Animation - COB/BOS Files]====&lt;br /&gt;
To edit .bos files you need a program/compiler. The most famous one is [http://jobjol.nl/1384 Scriptor]&lt;br /&gt;
*[[Animation-LuaScripting]]&lt;br /&gt;
**[[Animation-LuaCallins]]&lt;br /&gt;
**[[Animation-LuaCallouts]]&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;
*[http://www.planetannihilation.com/tadc/tut_unit_01_1.asp PlanetAnnihilation] has a nice tutorial&lt;br /&gt;
*[[Units:LuaCOB]] - how to interface COB with LUA&lt;br /&gt;
*[[CEG_For_Units|Mod Development:Calling basic CEGs from COB]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?p=132943#132943 GPL-compliant sourcecode, scripting code examples, and other things.]&lt;br /&gt;
&lt;br /&gt;
====Units - FBI Files====&lt;br /&gt;
*[[Units:FBI]]&lt;br /&gt;
*[[All_FBI-variable_values:_min,_max,_default,_type|Units:FBI (variable datatype list)]]&lt;br /&gt;
*[[Unit_Categories]]&lt;br /&gt;
&lt;br /&gt;
====Units - MoveTypes====&lt;br /&gt;
*[[Units:MoveTypes]]&lt;br /&gt;
&lt;br /&gt;
====Weapons - TDF Files====&lt;br /&gt;
*[[Weapon Variables]] : This is the most up to date&lt;br /&gt;
*[[Units:WeaponMainDir]]&lt;br /&gt;
*[[Units:Weapons]] : Various informations about the weapontypes (uncompleted)&lt;br /&gt;
*[[All_Weapons_variable_values:_min%2C_max%2C_default%2C_type|Weapon datatype list]] : All weapon variables min/max/default values and datatypes listed.&lt;br /&gt;
*[[Weapons:Antinukes]]: All about antinukes.&lt;br /&gt;
&lt;br /&gt;
====Explosions====&lt;br /&gt;
*[[CEG]]&lt;br /&gt;
**[[CEG-Calls]] &lt;br /&gt;
**[[CEG-Format]] &lt;br /&gt;
**[[CEG-Classes]] &lt;br /&gt;
**[[CEG-Operators]] &lt;br /&gt;
**[[CEG-Miscellaneous]] &lt;br /&gt;
**[[CEG-OldInfo]]&lt;br /&gt;
&lt;br /&gt;
====Misc====&lt;br /&gt;
*[[Units:Design]]&lt;br /&gt;
*[[Units:Textures]]&lt;br /&gt;
*[[Units:Buildpics]]&lt;br /&gt;
*[[Units:SideData TDF]]&lt;br /&gt;
*[[Units:Download TDF]] &lt;br /&gt;
*[[Units:FlankingBonus]]&lt;br /&gt;
*[[Mod Development:Armor]]&lt;br /&gt;
*[[Mod Development:Cursors]]&lt;br /&gt;
*[[Mod Development:Archives]]&lt;br /&gt;
*[[Mod Development:Sidepics]]&lt;br /&gt;
*[[CustomUnitIcons|Mod Development:Custom unit icons]]&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Basic_s3o_unit_making_guide&amp;diff=2893</id>
		<title>Basic s3o unit making guide</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Basic_s3o_unit_making_guide&amp;diff=2893"/>
		<updated>2009-11-13T16:49:36Z</updated>

		<summary type="html">&lt;p&gt;Carrepairer: Corrected info regarding new lua animation scripts.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==What you need:==&lt;br /&gt;
&lt;br /&gt;
*The Model&lt;br /&gt;
*The UV map&lt;br /&gt;
*The Textures&lt;br /&gt;
*The Script&lt;br /&gt;
*[http://www.fileuniverse.com/?p=showitem&amp;amp;ID=2317 UpSpring]&lt;br /&gt;
&lt;br /&gt;
== The Model ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can make it in any of the 3d modelling programs mentioned [http://taspring.clan-sy.com/wiki/Map%2C_Mod%2C_And_Unit_Development_Programs#3d_Modeling here.]&lt;br /&gt;
&lt;br /&gt;
Upspring will import .OBJ, and .3DS, (.3DO is supported as well but we are supposed to be working from scratch here and not converting old units).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Importing 3DS files will have some sort of hierarchy, but with all pieces at the same level you will have to re-arrange them into the correct order using cut-paste commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If I&#039;m not mistaken, .OBJ files don&#039;t have hierarchy, so there is no distinction between parts of the unit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So for using this format you must save each part of the unit in separate files and import them individually from UpSpring. You must have at least one existing object to import to, so create an &amp;quot;empty&amp;quot; object if needed, then import the pieces following the hierarchy, or you can manually arrange them later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For moving object origins, move part using the move tool, and then use &amp;quot;Apply transformation&amp;quot; button in object tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Put the saved .S3O file in the &amp;quot;Objects3D&amp;quot; folder in your mod structure files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;All part names in s3o must be in lower case in UpSpring.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will avoid issues with the script.&lt;br /&gt;
&lt;br /&gt;
== The UV map ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only one UV map image is allowed, so you must make all parts use the same UV map.&lt;br /&gt;
&lt;br /&gt;
It&#039;s reported that the biggest texture size of the UV map is 2048x2048.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A guide on Skinning (UV mapping) can be found [http://taspring.clan-sy.com/phpbb/viewtopic.php?t=3511 here].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;**Added by TA 3D:&#039;&#039;&#039; When you want to bring in UV coordinates, go to the Texture Mapping menu again and click on Import UV coordinates from model. Since the texture is flipped vertically you have to flip the UV coordinates. Only use 3ds files for this as obj files don&#039;t have UV coordinates. I hope this helps.&#039;&#039;&#039;**&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;**Added by Mehere101:&#039;&#039;&#039; This may be out of date, using Blender 2.42 RC3 I can get UV coordinates exported into the OBJ file.  Make sure that you are exporting to Wavefront OBJ, and that whatever exporter you have has the UV Mapping Box checked (In blender its off by default for some reason)&#039;&#039;&#039;**&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can import .3DS models already UV mapped into UpSpring.&lt;br /&gt;
&lt;br /&gt;
(But in my tests the UV map results incorrectly displayed, please fix this part if you know how to do it right)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another way of making the UV map is importing the model first to UpSpring, either by using one .3DS file or the separate .OBJ files method.&lt;br /&gt;
&lt;br /&gt;
Once you have the model imported and in the right place, use &amp;quot;Export Model for UV mapping&amp;quot; in UpSpring.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then UV map that .OBJ file with whatever UV mapping tool of your liking, save, and then import back the UV using the &amp;quot;load UV map from file&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== The Textures ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quote&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;There are two textures for each model, texture1 is the standard skin texture but the alpha is used for teamcolor. Texture2 uses the green channel for reflectivity and the red channel for self illumination, blue is unused so far.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(In The GIMP, what is texture will show completely black, and what is teamcolor will show transparent, showing the texture under the alpha. Which is a bit awkward if you ask me.. as you wont be able to see what is supposed to be texture, but what wont. buh!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The value of the alpha will blend with the texture, so you can make cool teamcolor/texture transitions ;) .&lt;br /&gt;
&lt;br /&gt;
(I&#039;ve tested DDS format several times in The GIMP, using the export plugin, and have not been able to make these files work so far. Hopefully someone can add more information on this.). &#039;&#039;&#039;**Edit: I will do some digging to find out what the exact formats are that DDS is supposed to be saved as. TA 3D**&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
UpSpring 1.3 has a built it texture builder that works great. Use bmps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;**Added by TA 3D:&#039;&#039;&#039; Spring will use TGA  and PNG files, but if you want the textures to work better and run more efficiently, use DDS files which is a native image format for videocards made by Nvidia. It works on any videocard, not just Nvidia&#039;s cards.&lt;br /&gt;
NOTE: UpSpring makes the files flipped vertically so you will have to flip the UV coordinates in UpSpring. &#039;&#039;&#039;Do not use any other format for making DDS files with UpSpring than bmp otherwise you will have problems. If you use anything else the alpha channel will screw it up. Note: The following images are png to conserve bandwith.&#039;&#039;&#039;&lt;br /&gt;
Here&#039;s an example of a DDS file I made for a model recently.&lt;br /&gt;
Texture 1 Texture and Team color:&lt;br /&gt;
Texture RGB-channels of the first dds texture file:&lt;br /&gt;
&lt;br /&gt;
http://www.majhost.com/gallery/3dbricks/TASPRING/fc1.png&lt;br /&gt;
&lt;br /&gt;
Team color-the alpha channel of the first dds texture file:&lt;br /&gt;
&lt;br /&gt;
http://www.majhost.com/gallery/3dbricks/TASPRING/fc2.png&lt;br /&gt;
&lt;br /&gt;
Texture 2 Reflectivity and Illumination:&lt;br /&gt;
Reflection green-channel of the second dds texture file:&lt;br /&gt;
&lt;br /&gt;
http://www.majhost.com/gallery/3dbricks/TASPRING/fc3.png&lt;br /&gt;
&lt;br /&gt;
Illumination red-channel of the second dds texture file:&lt;br /&gt;
&lt;br /&gt;
http://www.majhost.com/gallery/3dbricks/TASPRING/fc4.png&lt;br /&gt;
&lt;br /&gt;
Upspring can make dds files using the S3O Texture Builder option under the Texture menu.&lt;br /&gt;
&lt;br /&gt;
http://www.majhost.com/gallery/3dbricks/TASPRING/menu.png&lt;br /&gt;
&lt;br /&gt;
Making the first dds file.&lt;br /&gt;
&lt;br /&gt;
http://www.majhost.com/gallery/3dbricks/TASPRING/texture_builder.png&lt;br /&gt;
&lt;br /&gt;
And making the second.&lt;br /&gt;
&lt;br /&gt;
http://www.majhost.com/gallery/3dbricks/TASPRING/texture_builder2.png&lt;br /&gt;
&lt;br /&gt;
When you want to bring in UV coordinates, go to the Texture Mapping menu again and click on Import UV coordinates from model. Since the texture is flipped vertically you have to flip the UV coordinates. If the Team color doesn&#039;t work try inverting the the Team color image using the invert box. I hope this helps. As soon as I have a working model, then I will post a pic of the above textures applied to it.&#039;&#039;&#039;**&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Put the finished files in &amp;quot;unittextures&amp;quot; folder inside your mod structure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
some other words on the textures:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;alpha is a greyscale... black = no team color, white = all team colour... because Photoshop is dumb stick to 1% balck or 99% black... anything in between is &amp;quot;blended&amp;quot;... like transparency in the team colour mapped over the main texture...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== The Script ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A common script, see other wiki resources for information on what is new/changed in spring.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The unit FBI file ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this file goes the usual information, plus one change:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
the usual&lt;br /&gt;
	Objectname=UNITNAME;&lt;br /&gt;
&lt;br /&gt;
must be &lt;br /&gt;
	Objectname=UNITNAME&#039;&#039;&#039;.s3o&#039;&#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
== Common Troubles ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*The unit doesn&#039;t show up in game, although the &amp;quot;/give unitname&amp;quot; will work and you can see the selected base.&lt;br /&gt;
&lt;br /&gt;
This is caused because the unit is underground. In the Model tab you must give your unit a center, collision sphere radius and heigth in UpSpring, you can use &amp;quot;estimate&amp;quot; which shall be fine.&lt;br /&gt;
&lt;br /&gt;
*The unit texture is all black in game!&lt;br /&gt;
&lt;br /&gt;
Read the texture section here. 3DOs cant be UV textured. Use .TGA format. Don&#039;t forget alpha.&lt;br /&gt;
&lt;br /&gt;
*The UV seems wrong in game..&lt;br /&gt;
&lt;br /&gt;
Flip the UV. In UpSpring go to, Texture Mapping&amp;gt;Show UV Maps, then, edit&amp;gt;Flip UVs.&lt;br /&gt;
&lt;br /&gt;
*I get a &amp;quot;missing part&amp;quot; error, and the unit doesn&#039;t aim turrets or animate as indicated in the script.&lt;br /&gt;
&lt;br /&gt;
See last lines in The Model part.&lt;br /&gt;
&lt;br /&gt;
== Related Threads ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=4519]&lt;br /&gt;
[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=2660]&lt;br /&gt;
[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=3766]&lt;br /&gt;
[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=3641]&lt;br /&gt;
&lt;br /&gt;
[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=4536 Complementary information]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Credits&lt;br /&gt;
&lt;br /&gt;
Its all stolen from the above threads.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;extra notes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Texture filename can be anything; you allocate the texture to the model when you save it as a .s3o object&lt;br /&gt;
&lt;br /&gt;
Object filename can be anything; the unit fbi/lua file you allocate which model to use. &lt;br /&gt;
&lt;br /&gt;
Script filename must be the same name as the unit fbi/lua filename, unless you are using lua animation scripts, in which case you can use the script tag in the unitdef file.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In the fbi/lua file:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
unitname is the name game refers to. ie. the one you type in the console to /give the unit.&lt;br /&gt;
&lt;br /&gt;
name is the name that players will see.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Unit development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Carrepairer</name></author>
	</entry>
</feed>