<?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=Hughperkins</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=Hughperkins"/>
	<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/wiki/Special:Contributions/Hughperkins"/>
	<updated>2026-11-08T22:17:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=735</id>
		<title>AI:HughAI</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=735"/>
		<updated>2025-04-17T11:28:49Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: /* To install */  added link to github repo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is HughAI ==&lt;br /&gt;
&lt;br /&gt;
HughAI is a an AI written in Java.  Works quite well at fast rush attacks.&lt;br /&gt;
&lt;br /&gt;
== To install ==&lt;br /&gt;
&lt;br /&gt;
To install&lt;br /&gt;
&lt;br /&gt;
Make sure you have hoijui&#039;s Java Interface v0.1 installed. I believe this is installed automatically if you have Windows. Other platforms may have varying mileage.&lt;br /&gt;
&lt;br /&gt;
Once you have Java Interface 0.1 installed ok:&lt;br /&gt;
&lt;br /&gt;
1. Download HughAI from:&lt;br /&gt;
&lt;br /&gt;
sorry, no up to date link. github repo here: https://github.com/hughperkins/HughAI&lt;br /&gt;
&lt;br /&gt;
2. Remove any old AI/Skirmish/HughAI directory&lt;br /&gt;
&lt;br /&gt;
3. untar (using Winzip or your favorite zip utility) into AI/Skirmish, so you should have the following directory structure:&lt;br /&gt;
&lt;br /&gt;
 AI/&lt;br /&gt;
   Skirmish/&lt;br /&gt;
     HughAI/&lt;br /&gt;
       0.1/&lt;br /&gt;
         SkirmishAI.jar&lt;br /&gt;
         ... other files ...&lt;br /&gt;
&lt;br /&gt;
4. Run springlobby, create a single-player game, and do &amp;quot;add-bot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that the AI needs to be playing as Arm, and on Balanced Annihilation. On anything else, it will probably just sit there and do nothing :-D&lt;br /&gt;
&lt;br /&gt;
It&#039;s fairly early days yet, so don&#039;t expect too much just yet ;-) I&#039;ll update this message as it gets better.&lt;br /&gt;
&lt;br /&gt;
== Mods and maps ==&lt;br /&gt;
&lt;br /&gt;
Works with BA mod, with the AI running as ARM.&lt;br /&gt;
&lt;br /&gt;
== Play-style ==&lt;br /&gt;
&lt;br /&gt;
It&#039;s a non-cheating AI by day ... but if you go to the &#039;Config&#039; tab on the gui and tick the box next to &#039;maphack&#039; and then click &#039;apply&#039; or &#039;save&#039; ... it will become a cheating maphack AI!&lt;br /&gt;
&lt;br /&gt;
Otherwise, its playstyle is essentially to rush.  If it doesn&#039;t beat you within a few minutes, it&#039;s basically not going to do very much else just yet ;-)  Maybe in the future though ;-)&lt;br /&gt;
&lt;br /&gt;
== Cheating / maphack ==&lt;br /&gt;
&lt;br /&gt;
In the gui, in the &#039;config&#039; tab, click &#039;maphack&#039; then &#039;apply&#039; or &#039;save&#039; to enable maphack.&lt;br /&gt;
&lt;br /&gt;
Unclick it, and then &#039;apply&#039; or &#039;save&#039; to disable it.&lt;br /&gt;
&lt;br /&gt;
== To disable gui ==&lt;br /&gt;
&lt;br /&gt;
Either:&lt;br /&gt;
&lt;br /&gt;
- run spring in windowed mode, in the gui, in the config tab, unclick &#039;guiactivated&#039; and then click &#039;save&#039;, or&lt;br /&gt;
- in the config file BA_2.xml, change guiactivated from &#039;yes&#039; to &#039;no&#039;.&lt;br /&gt;
&lt;br /&gt;
== Can it beat other AIs? ==&lt;br /&gt;
&lt;br /&gt;
Yes ;-)  it beats E323 v2.12.0 sometimes.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
There is a gui with a tab &#039;Config&#039; that can be used to configure many things.&lt;br /&gt;
&lt;br /&gt;
A few extra things are configurable in the config file &#039;BA_&amp;lt;side&amp;gt;.xml&#039; , in the AI&#039;s directory, where side is core or arm.&lt;br /&gt;
&lt;br /&gt;
There are also a number of workflow xml files in the BA_&amp;lt;side&amp;gt;workflows subdirectory.  Currently, only one of the workflows are used, so there&#039;s no point in adding more than one for now ;-)  In the future, it might simply randomly select from one, at random, so a human enemy doesn&#039;t know if the AI will tech or rush or whatever.  Sounds reasonable?&lt;br /&gt;
&lt;br /&gt;
The workflow config files define what will get built essentially, with a priority, a unitname, and a quantity.&lt;br /&gt;
&lt;br /&gt;
The higher the priority, the earlier the units will be built.&lt;br /&gt;
&lt;br /&gt;
You can add in the same unit on multiple lines, with different priorities, so you can say: ok, first build a couple of stumpies, then a jeffy, then some more stumpies, or whatever.&lt;br /&gt;
&lt;br /&gt;
== Limitations /ways to beat it ==&lt;br /&gt;
&lt;br /&gt;
Survive the initial rush, and it will probably not do too much else.&lt;br /&gt;
&lt;br /&gt;
== Console ==&lt;br /&gt;
&lt;br /&gt;
For techies, there&#039;s a console, where you can directly write Java code.&lt;br /&gt;
&lt;br /&gt;
== Soure-code ==&lt;br /&gt;
&lt;br /&gt;
The sources are available from the following git repository:&lt;br /&gt;
&lt;br /&gt;
https://github.com/spring/HughAI&lt;br /&gt;
&lt;br /&gt;
More details on the architecture can be found in the file src-ai/architecture.txt, in the sources, which I try to keep somewhat up-to-date, but really, if you have any questions, just ask me ;-)&lt;br /&gt;
[[Category:AI]]&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:Development:Lang:CSharp&amp;diff=587</id>
		<title>AI:Development:Lang:CSharp</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:Development:Lang:CSharp&amp;diff=587"/>
		<updated>2015-08-09T10:41:26Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: Created page with &amp;quot;A really old C# AI is at https://springrts.com/wiki/AI:CSAI  It probably needs some tweaking, since it was written in 2006 :-P  The code is at https://github.com/hughperkins/S...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A really old C# AI is at https://springrts.com/wiki/AI:CSAI  It probably needs some tweaking, since it was written in 2006 :-P  The code is at https://github.com/hughperkins/SpringRTS-CSharpAI&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GlobalAI_Mono_Bindings&amp;diff=9475</id>
		<title>GlobalAI Mono Bindings</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GlobalAI_Mono_Bindings&amp;diff=9475"/>
		<updated>2015-08-09T10:34:58Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: direct manageddreams.com with hughperkins.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Writing AIs in C# massively facilitates development, because C# runs just as fast as C++ and avoids those annoying stack/heap corruption errors.&lt;br /&gt;
&lt;br /&gt;
We have bindings for .Net Framework 1.1 and 2.0 for Windows.  It would be useful to create a set of bindings for Mono so that this could run also on any Mono-supported platform.&lt;br /&gt;
&lt;br /&gt;
Such bindings would make it possible to write portable AIs in C#, Boo (Python.Net), and any .Net language capable of being compiled into a portable ILSM class library.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some thoughts on writing such bindings.&lt;br /&gt;
&lt;br /&gt;
These thoughts are taken from a fuller thread at [http://taspring.clan-sy.com/phpbb/viewtopic.php?t=7634&amp;amp;postdays=0&amp;amp;postorder=asc http://taspring.clan-sy.com/phpbb/viewtopic.php?t=7634&amp;amp;postdays=0&amp;amp;postorder=asc]&lt;br /&gt;
&lt;br /&gt;
= High-level overview =&lt;br /&gt;
&lt;br /&gt;
To create bindings for Mono, we almost certainly need a generator. The hardest part of writing a generator is parsing the input files. In the case of the Mono bindings, we can use Reflection on the existing CSAIInterfaces.dll. This could save a lot of time.&lt;br /&gt;
&lt;br /&gt;
= Download =&lt;br /&gt;
&lt;br /&gt;
Code written so far:&lt;br /&gt;
*prototyping code and generator: modified MonoEmbeddedTest at [http://hughperkins.com/csai/MonoEmbeddedTest.zip http://hughperkins.com/csai/MonoEmbeddedTest.zip]&lt;br /&gt;
*C# AI &amp;quot;Hello World&amp;quot; for Mono: [http://hughperkins.com/csai/CSharpAIMono.zip http://hughperkins.com/csai/CSharpAIMono.zip] Note that you will need to ensure that Mono-1.1.18/bin is in Spring.exe&#039;s path.&lt;br /&gt;
&lt;br /&gt;
A generator has been started in the file &amp;quot;GenerateCode.cs&amp;quot; in the MonoEmbeddedTest.zip zipfile. You can build it by doing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
csc /debug GenerateCode.cs /reference:CSAIInterfaces.dll&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using mono, you&#039;d do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mcs -debug -reference:CSAIInterfaces.dll GenerateCode.cs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Architecture =&lt;br /&gt;
&lt;br /&gt;
There are three types of classes we need to deal with:&lt;br /&gt;
*data classes, pass-by-value. This includes: Command, Float3&lt;br /&gt;
*proxied method calls from C++ to C#. This includes: IGlobalAI&lt;br /&gt;
*proxied method calls from C# to C++. This includes: IUnitDef, IAICallback&lt;br /&gt;
&lt;br /&gt;
== Pass-by-value ==&lt;br /&gt;
&lt;br /&gt;
We create a class in C++ for each pass-by-value class, with static methods &amp;quot;Marshall_MyType_to_MonoObject&amp;quot; and &amp;quot;Marshall_MonoObject_to_MyType&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The generator does this already, although it needs tweaking to cope with the double array in Command.&lt;br /&gt;
&lt;br /&gt;
Two files are created for each type: MyTypeMarshaller.cpp and MyTypeMarshaller.h&lt;br /&gt;
&lt;br /&gt;
We include the include file for the original Spring native type from MyTypeMarshaller.h, eg Float3Marshaller.h includes Float3.h.&lt;br /&gt;
&lt;br /&gt;
== Proxied method calls from C++ to C# ==&lt;br /&gt;
&lt;br /&gt;
There is only one class that this applies to, IGlobalAI.&lt;br /&gt;
&lt;br /&gt;
We create a C# class GlobalAIProxyLoader, which contains delegate definitions for each method in IGlobalAI, and which calls SetUnitCreatedHandler etc on the C++ proxy class&lt;br /&gt;
&lt;br /&gt;
We create a C++ class GlobalAIProxyCppToCs , which contains a function to receive each delegate from the C# ProxyLoader. It implements each function in IGlobalAI, redirecting to a user-provided GlobalAI C# class.&lt;br /&gt;
&lt;br /&gt;
We strip the leading &amp;quot;I&amp;quot; from the interface name to get the underlying type name.&lt;br /&gt;
&lt;br /&gt;
== Proxied method calls from C# to C++ ==&lt;br /&gt;
&lt;br /&gt;
This applies to: IUnitDef, and IAICallback.&lt;br /&gt;
&lt;br /&gt;
The native instances of these classes are always created by Spring itself, then passed back to the AI. We need to provide a C# proxy to wrap calls to a C++ proxy, which forwards the calls to the native instance.&lt;br /&gt;
&lt;br /&gt;
Two classes called MyTypeCallbackProxyCsToCpp are created, one in C# one in C++.&lt;br /&gt;
&lt;br /&gt;
The MyTypeCallbackProxyCsToCpp class in C# contains instance methods, such as SendTextMsg, which redirect to static methods, such as _SendTextMsg. The static methods are extern&#039;d internal calls to methods with the same name in the MyTypeCallbackProxyCsToCpp class in C++.&lt;br /&gt;
&lt;br /&gt;
In the general case, there can be many instances of each of these proxied classes, so we create a map of reference number to instance in the C++ proxy. The reference number is an arbitrary number starting from 1.&lt;br /&gt;
&lt;br /&gt;
Each time a function on the Spring side returns a class that needs to be proxied into C#, we create a new reference number and add it to the map. The reference number is returned into the C#-side proxy, and will be used as a handle for method calls in the future.&lt;br /&gt;
&lt;br /&gt;
The C#-side proxy that called the spring function that returned the new proxied class will receive the new handle from the C++-side proxy, and create a new instance of the appropriate proxy class, passing in the new handle in the constructor. It can then pass the new proxy class instance onto the C# AI.&lt;br /&gt;
&lt;br /&gt;
The method calls from C# into C++ contain an additional first parameter, which is the reference number , which allows the C++-side proxy to select the appropriate native object and forward the call, eg to a UnitDef object. The instance methods in the C#-side proxy class will add the additional handle parameter when they call the corresponding static method.&lt;br /&gt;
&lt;br /&gt;
The method calls in the C++ proxy are static, so they can be internal-called from C#, and in a class, to avoid namespace collisions.&lt;br /&gt;
&lt;br /&gt;
= Generator main block =&lt;br /&gt;
&lt;br /&gt;
The generator main block can add each of the types to be generated into an arraylist TypesByVal, ProxiesCppToCs or ProxiesCsToCpp, as appropriate. Then when we call generate:&lt;br /&gt;
*it goes through each arraylist and generates the appropriate classes&lt;br /&gt;
*when a class undergoing generation uses one of the other classes, the generator can handle this accordingly by checking which arraylist the other classes are in&lt;br /&gt;
&lt;br /&gt;
= Use of attributes =&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible to add custom attributes to parameters and methods in the interface classes in CSAIInterfaces.dll . These can be read by the generator and used to tweak the generation.&lt;br /&gt;
&lt;br /&gt;
For example, we could have [MarshallAsCNullTerminatedString] vs [MarshallAsCppStdString].&lt;br /&gt;
&lt;br /&gt;
An attribute is just an empty class that derives from Attribute, eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[AttributeUsage(AttributeTargets.Parameter, Inherited = false, AllowMultiple = true)]&lt;br /&gt;
public class MarshallAsCNullTerminatedString: Attribute&lt;br /&gt;
{&lt;br /&gt;
   // nothing needed here, empty class&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use of attributes should probably be kept to a minimum, to avoid modifying CSAIInterfaces.dll, but the possibility exists where necessary.&lt;br /&gt;
&lt;br /&gt;
= Hand-Tweaked Code =&lt;br /&gt;
&lt;br /&gt;
It will almost certainly be necessary to add hand-tweaked code to the proxies. For example, GetMetalMap() cannot be easily guessed, because there is no info on the size of the array, and it&#039;s not constant either.&lt;br /&gt;
&lt;br /&gt;
Hand-tweaked code could be added by creating a derived class, in C++, from the proxy class one wishes to tweak. This keeps generated code separate from human-written code, so it is easy to regenerate the files as the interfaces change.&lt;br /&gt;
&lt;br /&gt;
The generator will need to know the name of any derived classes so that it can use this in any &amp;quot;new&amp;quot; statements it generates for that proxy.&lt;br /&gt;
&lt;br /&gt;
= Overall =&lt;br /&gt;
&lt;br /&gt;
A plan exists that should probably work. Some code has been written. The devil is in the details.&lt;br /&gt;
&lt;br /&gt;
Writing the Mono bindings will need someone with a good knowledge of the Mono API, the Spring GlobalAI API, C, C++ and C#.&lt;br /&gt;
[[Category: AI Dev]]&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:CSAI&amp;diff=490</id>
		<title>AI:CSAI</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:CSAI&amp;diff=490"/>
		<updated>2015-08-09T10:31:30Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: redirect manageddreams.com to hughperkins.com, and add github repo link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CSAI ==&lt;br /&gt;
&lt;br /&gt;
CSAI works ok as ARM on land maps, using the AA2.23 or XTA7 mod.&lt;br /&gt;
&lt;br /&gt;
CSAI is written in C#, by Hugh Perkins&lt;br /&gt;
&lt;br /&gt;
== Supported Mods ==&lt;br /&gt;
&lt;br /&gt;
*AA2.23&lt;br /&gt;
*XTA7&lt;br /&gt;
&lt;br /&gt;
== Supported Platforms ==&lt;br /&gt;
&lt;br /&gt;
*Windows&lt;br /&gt;
&lt;br /&gt;
== Supported Maps ==&lt;br /&gt;
&lt;br /&gt;
CSAI works best with maps with one large contiguous land segment.&lt;br /&gt;
&lt;br /&gt;
The following maps have been tested and work ok:&lt;br /&gt;
*SmallDivide&lt;br /&gt;
*CometCatcher Remake v02&lt;br /&gt;
*SpeedMetal&lt;br /&gt;
*Small Supreme Battlefield&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
CSAI scout sets off, SSB, XTA7:&lt;br /&gt;
&lt;br /&gt;
[[File:csaivsaai_xta7_ssb_4zippysetsoffsmall.JPG]]&lt;br /&gt;
&lt;br /&gt;
CSAI tanks leave trail of destruction through AAI base, SSB, XTA7:&lt;br /&gt;
&lt;br /&gt;
[[File:csaivsaai_xta7_ssb_23trailofdestructionthroughaaibasesmall.JPG]]&lt;br /&gt;
&lt;br /&gt;
CSAI tanks kill AAI commander on SSB, XTA7:&lt;br /&gt;
&lt;br /&gt;
[[File:csaivsaai_xta7_ssb_25byebyeaaicommandersmall.JPG]]&lt;br /&gt;
&lt;br /&gt;
CSAI (in red) approaches TSI base, SpeedMetal, AA2.23.  That plasma beam could cause some pain.&lt;br /&gt;
&lt;br /&gt;
[[File:csaivstsispeedmetal_arriveatbase.JPG]]&lt;br /&gt;
&lt;br /&gt;
Plasma beam down, CSAI overruns TSI base, SpeedMetal, AA2.23.&lt;br /&gt;
&lt;br /&gt;
[[File:csaivstsispeedmetal_2plasmagoneoverrun.JPG]]&lt;br /&gt;
&lt;br /&gt;
CSAI (in red) attacks AAI, SpeedMetal, AA2.23&lt;br /&gt;
&lt;br /&gt;
[[File:speedmetalzergsmall.JPG]]&lt;br /&gt;
&lt;br /&gt;
CSAI units approach TSI base, SmallDivide, AA2.23&lt;br /&gt;
&lt;br /&gt;
[[File:vstsismalldivide_1_attackgroupapproachingbase.JPG]]&lt;br /&gt;
&lt;br /&gt;
CSAI units kill TSI commander, SmallDivide, AA2.23&lt;br /&gt;
&lt;br /&gt;
[[File:vstsismalldivide_6tsicommanderdies.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Replays ==&lt;br /&gt;
&lt;br /&gt;
Here are some replays to give you an impression of how CSAI fights.&lt;br /&gt;
&lt;br /&gt;
CSAI vs AAI 0.75, XTA7:&lt;br /&gt;
&lt;br /&gt;
Small Supreme Battlefield&lt;br /&gt;
&lt;br /&gt;
*[http://hughperkins.com/csai/061026-SmallSupremeBattlefield-0.73b1-0-csai-vs-aai-xta7.sdf http://hughperkins.com/csai/061026-SmallSupremeBattlefield-0.73b1-0-csai-vs-aai-xta7.sdf] &lt;br /&gt;
&lt;br /&gt;
CSAI vs AAI 0.75, AA2.23:&lt;br /&gt;
&lt;br /&gt;
*[http://hughperkins.com/csai/061023-SmallDivide-0.73b1-20.sdf http://hughperkins.com/csai/061023-SmallDivide-0.73b1-20.sdf]&lt;br /&gt;
*[http://hughperkins.com/csai/061023-CometCatcherRemake-v02-0.73b1-0.sdf http://hughperkins.com/csai/061023-CometCatcherRemake-v02-0.73b1-0.sdf]&lt;br /&gt;
*[http://hughperkins.com/csai/061025-SpeedMetal-0.73b1-2.sdf http://hughperkins.com/csai/061025-SpeedMetal-0.73b1-2.sdf]&lt;br /&gt;
&lt;br /&gt;
CSAI vs TSI 0.12, AA2.23:&lt;br /&gt;
&lt;br /&gt;
*[http://hughperkins.com/csai/061025-CometCatcherRemake-v02-0.73b1-3.sdf http://hughperkins.com/csai/061025-CometCatcherRemake-v02-0.73b1-3.sdf]&lt;br /&gt;
*[http://hughperkins.com/csai/061025-SpeedMetal-0.73b1-0-csai-vs-tsi-aa223.sdf http://hughperkins.com/csai/061025-SpeedMetal-0.73b1-0-csai-vs-tsi-aa223.sdf]&lt;br /&gt;
*[http://hughperkins.com/csai/061025-SmallDivide-0.73b1-0-csai-vs-tsi-aa223.sdf http://hughperkins.com/csai/061025-SmallDivide-0.73b1-0-csai-vs-tsi-aa223.sdf]&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
Latest release:&lt;br /&gt;
*[http://hughperkins.com/csai/CSharpAI-20061028.zip http://hughperkins.com/csai/CSharpAI-20061028.zip]&lt;br /&gt;
&lt;br /&gt;
Previous releases:&lt;br /&gt;
*[http://hughperkins.com/csai/CSharpAI_20061026b.zip http://hughperkins.com/csai/CSharpAI_20061026b.zip]&lt;br /&gt;
*[http://hughperkins.com/csai/CSharpAI_20061026.zip http://hughperkins.com/csai/CSharpAI_20061026.zip]&lt;br /&gt;
*[http://hughperkins.com/csai/CSharpAI_20061025.zip http://hughperkins.com/csai/CSharpAI_20061025.zip]&lt;br /&gt;
*[http://hughperkins.com/csai/CSharpAI_20061024.zip http://hughperkins.com/csai/CSharpAI_20061024.zip]&lt;br /&gt;
&lt;br /&gt;
== To Install ==&lt;br /&gt;
&lt;br /&gt;
*Ensure that you have the Microsoft Framework .Net 1.1 runtime installed.  You can download this from Microsoft, for free.&lt;br /&gt;
*Ensure that you have the latest version of Spring installed, 0.73b.&lt;br /&gt;
*Download the latest CSharpAI zipfile from the Downloads section and unzip it.&lt;br /&gt;
*Run setup.exe&lt;br /&gt;
*Confirm the Spring installation directory&lt;br /&gt;
*The CSAI dlls should be automatically installed into the Spring directory&lt;br /&gt;
&lt;br /&gt;
== To use ==&lt;br /&gt;
&lt;br /&gt;
To run the bot:&lt;br /&gt;
*create a multiplayer game, using Absolute Annihilation 2.23&lt;br /&gt;
*specify start positions as &amp;quot;random&amp;quot; or &amp;quot;fixed&amp;quot;&lt;br /&gt;
*click &amp;quot;add bot&amp;quot;&lt;br /&gt;
*specify the ai as &amp;quot;csailoader.dll&amp;quot;&lt;br /&gt;
*&amp;lt;b&amp;gt;Important: ensure bot plays as ARM&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can find a logfile in the Spring/AI/CSAI directory, called csharpai_team0.log  , where 0 is the name of the team&lt;br /&gt;
&lt;br /&gt;
== Commands available ==&lt;br /&gt;
&lt;br /&gt;
You can talk to your AI whilst it plays.&lt;br /&gt;
&lt;br /&gt;
Commands to the ai always start with &amp;quot;.csai &amp;quot;, then the command.&lt;br /&gt;
&lt;br /&gt;
Type &amp;quot;.csai help&amp;quot; for a list of available commands.  Here are some of them:&lt;br /&gt;
&lt;br /&gt;
*.csai commanderbuildpower  Commander builds a solar cell near him&lt;br /&gt;
*.csai commanderbuildextractor Commander builds a metal extractor on nearest available metal spot&lt;br /&gt;
*.csai commandermove 0 1000 1500   Move team 0 commander to position (1000,1500)&lt;br /&gt;
*.csai commandergetpos   Ask for commander&#039;s current position&lt;br /&gt;
*.csai commanderbuild armvp   Ask commander to build a vehicle plant next to him.  Use any valid unit name here (see logfile for list) (must be buildable by arm commander)&lt;br /&gt;
&lt;br /&gt;
*.csai killallfriendly    Kills all units belonging to AI, except for commander  This is sometimes useful during AI testing&lt;br /&gt;
*.csai unitcount (countunits?)   Shows number of units currently&lt;br /&gt;
&lt;br /&gt;
*.csai showmetalspots   Show detected optimal metal extractor positions.  Also shows metalspots that have been marked used&lt;br /&gt;
&lt;br /&gt;
*.csai tankscount   Find out how many tanks are available&lt;br /&gt;
*.csai tanksmoveto 0 500 1000    Move all team 0 tanks to position 500, 1000&lt;br /&gt;
&lt;br /&gt;
*.csai autoshowenemieson  Shows detected mobile enemies (samson icon) and static enemies (antinuke icon)&lt;br /&gt;
&lt;br /&gt;
== How to beat CSAI ==&lt;br /&gt;
&lt;br /&gt;
Here are some strategies that will kill the current release of CSAI.&lt;br /&gt;
&lt;br /&gt;
Massive concentration of defense near AI&#039;s base:&lt;br /&gt;
&lt;br /&gt;
http://hughperkins.com/csai/screenshots/silpkillcsai-3.JPG&lt;br /&gt;
&lt;br /&gt;
Replay:&lt;br /&gt;
[http://hughperkins.com/csai/silp3-061031-Core_Faf-0.73b1-2.sdf http://hughperkins.com/csai/silp3-061031-Core_Faf-0.73b1-2.sdf]&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
&lt;br /&gt;
*All current released versions: on computers where the regional settings specifies the decimal separator as something other than &amp;quot;.&amp;quot;, the metal cache will fail to load correctly.  This means the commander will put extractors along the top of the screen and lose.  This affects computers in France and Germany.&lt;br /&gt;
&lt;br /&gt;
== Release notes ==&lt;br /&gt;
&lt;br /&gt;
=== Release 28 October ===&lt;br /&gt;
&lt;br /&gt;
C  /C# Interface&lt;br /&gt;
&lt;br /&gt;
*corrected critical bug in AICallbackProxy::GetMetalMap()&lt;br /&gt;
*augmented number of allowed units to 10000 in AICallbackProxy&lt;br /&gt;
&lt;br /&gt;
CSAI&lt;br /&gt;
&lt;br /&gt;
*(experimental) created setup.exe to facilitate installation&lt;br /&gt;
&lt;br /&gt;
=== Release 26 October 2006 b ===&lt;br /&gt;
&lt;br /&gt;
C  /C# Interface&lt;br /&gt;
*No changes&lt;br /&gt;
&lt;br /&gt;
CSAI&lt;br /&gt;
*created PackCoordinator architecture&lt;br /&gt;
*fixed bug that caused infantry factories to shutdown occasionally when playing XTA&lt;br /&gt;
*spreadsearch initiated more aggressively&lt;br /&gt;
&lt;br /&gt;
=== Release 26 October 2006 ===&lt;br /&gt;
&lt;br /&gt;
C  /C# Interface&lt;br /&gt;
*No changes&lt;br /&gt;
&lt;br /&gt;
CSAI&lt;br /&gt;
*supports XTA 7&lt;br /&gt;
*modified Metal algo to prefer spots which are over actual metal, rather than offset to one side&lt;br /&gt;
*(experimental) clearance around metal extractors reduced to improve location precision.  NOTE: this may increase unit blocking, to be verified&lt;br /&gt;
*you can turn debug on by creating an empty file called &amp;quot;debug.flg&amp;quot; in the ai/csai directory&lt;br /&gt;
*(experimental) added search algo for tanks if they havent seen an enemy for about a minute and there&#039;s at least 100 of them&lt;br /&gt;
*improved radar deployment&lt;br /&gt;
&lt;br /&gt;
=== Release 25 October 2006 ===&lt;br /&gt;
&lt;br /&gt;
C  /C# Interface&lt;br /&gt;
*No changes&lt;br /&gt;
&lt;br /&gt;
CSAI&lt;br /&gt;
*added support for metal maps&lt;br /&gt;
*fixed bug with metalspots being marked used even if not&lt;br /&gt;
*added constructor controller, to ensure always at least one constructor&lt;br /&gt;
*added anti-sticking patch for constructors&lt;br /&gt;
*added memory for buildings to enemycontroller (since buildings cant move)&lt;br /&gt;
*corrected bugs in enemy selection algorithm&lt;br /&gt;
*trimmed cpu resource drain for stuck constructors&lt;br /&gt;
*removed default drawing of detected enemies; you can say &amp;quot;.csai autoshowenemieson&amp;quot; to reactivate this&lt;br /&gt;
*removed default drawing of planned construction site; you can say &amp;quot;.csai constructorshownextbuildsiteon&amp;quot; to reactivate this&lt;br /&gt;
*experimenting with kbot factory&lt;br /&gt;
*experimenting with replacing samsons by jethros&lt;br /&gt;
*factories no longer announce their creation&lt;br /&gt;
*added AttackPackCoordinator to improve pack grouping&lt;br /&gt;
&lt;br /&gt;
=== Release 24 October 2006 ===&lt;br /&gt;
&lt;br /&gt;
C  /C# Interface&lt;br /&gt;
*CSAI.dll moved to AI/CSAI (only CSAIInterfaces.dll remains in Spring root)&lt;br /&gt;
*&amp;lt;csailoaderfilename&amp;gt;.xml config file added, to configure which C# AI dll to load&lt;br /&gt;
*batchfile building no longer supported (please use nant)&lt;br /&gt;
*added IMoveData&lt;br /&gt;
*added IUnitDef.movedata&lt;br /&gt;
*added all command constants, eg MOVE, SELFD, to Command.cs&lt;br /&gt;
*added operators to Float3&lt;br /&gt;
*added UnitIsBusy to AICallback (checks GetCurrentUnitCommands returns empty deque)&lt;br /&gt;
*documentation moved to wiki at http://springrts.com/wiki/AI:CSAIInterface&lt;br /&gt;
&lt;br /&gt;
CSAI&lt;br /&gt;
*added commands to move commander, and get commander to build things&lt;br /&gt;
*logfiles moved to AI/CSAI , in line with AI standards&lt;br /&gt;
*batchfile building no longer supported (please use nant)&lt;br /&gt;
*UnitController added, to register player-owned units&lt;br /&gt;
*FactoryController added, to register player-owned factories&lt;br /&gt;
*added port of AF&#039;s UnitDefHelp&lt;br /&gt;
*added architecture for strategies&lt;br /&gt;
*event architecture added to CSAI for unitcreated, unitfinished, unitdamaged, etc&lt;br /&gt;
*added PowerController to control energy&lt;br /&gt;
*added MetalController to control metal&lt;br /&gt;
*added TankController to manage tanks (bootstrapping class only)&lt;br /&gt;
*added EnemyController to monitor enemies&lt;br /&gt;
*added RadarController to manage radars&lt;br /&gt;
*added simple heuristic to prevent commander blocking himself in or factories&lt;br /&gt;
*added ScoutController&lt;br /&gt;
*added Request system to factories, to decide what to build&lt;br /&gt;
*documentation moved to wiki at http://springrts.com/wiki/AI:CSAI&lt;br /&gt;
&lt;br /&gt;
== Developer resources ==&lt;br /&gt;
&lt;br /&gt;
You may wish to extend or modify CSAI.  If so, the following pages may be useful:&lt;br /&gt;
&lt;br /&gt;
* github repo: https://github.com/hughperkins/SpringRTS-CSharpAI&lt;br /&gt;
*[[CSAI Build Instructions]]  How to build CSAI&lt;br /&gt;
*[[AI:CSAIInterface]]   Information on the C  /C# interface&lt;br /&gt;
[[Category:AI]]&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14201</id>
		<title>Maps:Map Designer</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14201"/>
		<updated>2012-02-28T02:06:39Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Map_development|Map Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
== MapDesigner, by Hugh Perkins ==&lt;br /&gt;
&lt;br /&gt;
[http://hughperkins.com/csai/MapDesigner.zip Download]&lt;br /&gt;
&lt;br /&gt;
*Supports multipass texture splatting.  SM3 loader.&lt;br /&gt;
*Heightmap editor.  Left click to raise land, right click to lower&lt;br /&gt;
*Paint splatted texture.  Left click to paint texture, right click to erase&lt;br /&gt;
*Export heightmap, slopemap and blend maps&lt;br /&gt;
*Exported slopemap color-coded by movement area, eg infantry, vehicle and extreme (configurable)&lt;br /&gt;
&lt;br /&gt;
Source-code repository, in git:&lt;br /&gt;
&lt;br /&gt;
git://github.com/hughperkins/SpringMapDesigner.git&lt;br /&gt;
&lt;br /&gt;
Source-code browser:&lt;br /&gt;
&lt;br /&gt;
http://github.com/hughperkins/SpringMapDesigner/tree/master&lt;br /&gt;
&lt;br /&gt;
Written in C#, using either mono or .net, both work, over gtk.net.&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
&lt;br /&gt;
[image:http://hughperkins.com/csai/mapdesigner3small.JPG]&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
&lt;br /&gt;
MapDesigner is optimized for creating SM3 maps, which use texture splatting to provide high detail maps.&lt;br /&gt;
&lt;br /&gt;
For each texture, we need:&lt;br /&gt;
*the texture, which will be tiled according to the tilesize&lt;br /&gt;
*a blend map, which controls where the texture will be visible&lt;br /&gt;
&lt;br /&gt;
The blend map is essentially an alpha map.  The areas which are white will be splatted with our texture, and the other areas will be transparent.&lt;br /&gt;
&lt;br /&gt;
The textures are rendered in layers, one by one.  The later layers cover the earlier layers, according to each one&#039;s blend map texture.  Here&#039;s some pictures that illustrate how this works.  We are rendering each layer with a vertical offset so you can see each layer on its own.&lt;br /&gt;
&lt;br /&gt;
[Media:http://hughperkins.com/csai/multitextureview1.JPG]&lt;br /&gt;
&lt;br /&gt;
[Media:http://hughperkins.com/csai/multitextureview2.JPG]&lt;br /&gt;
&lt;br /&gt;
[Media:http://hughperkins.com/csai/multitextureview3.JPG]&lt;br /&gt;
&lt;br /&gt;
In reality, these layers are all rendered together, with no vertical offset, so they look like they are all part of the same single terrain.&lt;br /&gt;
&lt;br /&gt;
You can use any DevIL-compatible texture as your splat texture.  Select a texture stage and click &amp;quot;Load texture...&amp;quot; to load the texture into that texture stage.  You can change the tilesize to control how it is splatted in the visible areas.&lt;br /&gt;
&lt;br /&gt;
The blend texture works like an alpha texture, but the data is actually stored in the RGB channels, as a grey-level.  MapDesigner lets you paint or remove to and from the blend texture, which has the effect of painting splat texture on the map, or removing it.&lt;br /&gt;
&lt;br /&gt;
== Texture stages ==&lt;br /&gt;
&lt;br /&gt;
Multiple texture stages can be configured.  We use one texture stage for each splatted texture and set its operation to &amp;quot;Blend&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first texture stage - texstage1 - should be set to &amp;quot;Replace&amp;quot;, and has no blend texture.  That&#039;s because it&#039;s the base texture for the map, on top of which the other textures are painted.&lt;br /&gt;
&lt;br /&gt;
Advanced:&lt;br /&gt;
*It&#039;s possible to set other operations on the texture stages.&lt;br /&gt;
&lt;br /&gt;
== Paint splatted texture ==&lt;br /&gt;
&lt;br /&gt;
*select &amp;quot;Paint texture&amp;quot;&lt;br /&gt;
*select a texture stage&lt;br /&gt;
*set texture stage operation to &amp;quot;Blend&amp;quot; and load a texture if necessary&lt;br /&gt;
*Left click map to paint texture, right click to erase&lt;br /&gt;
*You can click &amp;quot;Save blend texture&amp;quot; to export the blend texture map&lt;br /&gt;
&lt;br /&gt;
Note that texture stages are applied in order, first 1 then 2 then 3 etc.  The later layers cover the earlier ones.&lt;br /&gt;
&lt;br /&gt;
If you click the map and nothing happens, your changes may be being masked by later layers.  You can edit the later layers to uncover your changes, or click &amp;quot;move down&amp;quot; to move your edited layer later in the queue.&lt;br /&gt;
&lt;br /&gt;
[Media:http://hughperkins.com/csai/mapdesignblendediting.JPG]&lt;br /&gt;
&lt;br /&gt;
== Water ==&lt;br /&gt;
&lt;br /&gt;
Areas below zero height will be underwater:&lt;br /&gt;
&lt;br /&gt;
[Media:http://hughperkins.com/csai/mapdesignwater.JPG]&lt;br /&gt;
&lt;br /&gt;
== Exported Slopemap ==&lt;br /&gt;
&lt;br /&gt;
You can use File | Export slopemap... to export a slopemap for your map.&lt;br /&gt;
&lt;br /&gt;
Black means zero slope, green is vehicles, blue is infantry, red is extreme:&lt;br /&gt;
&lt;br /&gt;
[Media:http://hughperkins.com/csai/slopemap2.JPG]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Configuration is stored in config.xml ,which can be opened in notepad&lt;br /&gt;
*You can change height and width in the display section to change the window size on next startup&lt;br /&gt;
*You can configure key mappings, and mouse move configuration&lt;br /&gt;
[[Category:Map_making]]&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14200</id>
		<title>Maps:Map Designer</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14200"/>
		<updated>2012-02-28T02:05:40Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: /* Concepts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Map_development|Map Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
== MapDesigner, by Hugh Perkins ==&lt;br /&gt;
&lt;br /&gt;
[http://manageddreams.com/csai/MapDesigner.zip Download]&lt;br /&gt;
&lt;br /&gt;
*Supports multipass texture splatting.  SM3 loader.&lt;br /&gt;
*Heightmap editor.  Left click to raise land, right click to lower&lt;br /&gt;
*Paint splatted texture.  Left click to paint texture, right click to erase&lt;br /&gt;
*Export heightmap, slopemap and blend maps&lt;br /&gt;
*Exported slopemap color-coded by movement area, eg infantry, vehicle and extreme (configurable)&lt;br /&gt;
&lt;br /&gt;
Source-code repository, in git:&lt;br /&gt;
&lt;br /&gt;
git://github.com/hughperkins/SpringMapDesigner.git&lt;br /&gt;
&lt;br /&gt;
Source-code browser:&lt;br /&gt;
&lt;br /&gt;
http://github.com/hughperkins/SpringMapDesigner/tree/master&lt;br /&gt;
&lt;br /&gt;
Written in C#, using either mono or .net, both work, over gtk.net.&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
&lt;br /&gt;
[image:http://manageddreams.com/csai/mapdesigner3small.JPG]&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
&lt;br /&gt;
MapDesigner is optimized for creating SM3 maps, which use texture splatting to provide high detail maps.&lt;br /&gt;
&lt;br /&gt;
For each texture, we need:&lt;br /&gt;
*the texture, which will be tiled according to the tilesize&lt;br /&gt;
*a blend map, which controls where the texture will be visible&lt;br /&gt;
&lt;br /&gt;
The blend map is essentially an alpha map.  The areas which are white will be splatted with our texture, and the other areas will be transparent.&lt;br /&gt;
&lt;br /&gt;
The textures are rendered in layers, one by one.  The later layers cover the earlier layers, according to each one&#039;s blend map texture.  Here&#039;s some pictures that illustrate how this works.  We are rendering each layer with a vertical offset so you can see each layer on its own.&lt;br /&gt;
&lt;br /&gt;
[Media:http://hughperkins.com/csai/multitextureview1.JPG]&lt;br /&gt;
&lt;br /&gt;
[Media:http://hughperkins.com/csai/multitextureview2.JPG]&lt;br /&gt;
&lt;br /&gt;
[Media:http://hughperkins.com/csai/multitextureview3.JPG]&lt;br /&gt;
&lt;br /&gt;
In reality, these layers are all rendered together, with no vertical offset, so they look like they are all part of the same single terrain.&lt;br /&gt;
&lt;br /&gt;
You can use any DevIL-compatible texture as your splat texture.  Select a texture stage and click &amp;quot;Load texture...&amp;quot; to load the texture into that texture stage.  You can change the tilesize to control how it is splatted in the visible areas.&lt;br /&gt;
&lt;br /&gt;
The blend texture works like an alpha texture, but the data is actually stored in the RGB channels, as a grey-level.  MapDesigner lets you paint or remove to and from the blend texture, which has the effect of painting splat texture on the map, or removing it.&lt;br /&gt;
&lt;br /&gt;
== Texture stages ==&lt;br /&gt;
&lt;br /&gt;
Multiple texture stages can be configured.  We use one texture stage for each splatted texture and set its operation to &amp;quot;Blend&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first texture stage - texstage1 - should be set to &amp;quot;Replace&amp;quot;, and has no blend texture.  That&#039;s because it&#039;s the base texture for the map, on top of which the other textures are painted.&lt;br /&gt;
&lt;br /&gt;
Advanced:&lt;br /&gt;
*It&#039;s possible to set other operations on the texture stages.&lt;br /&gt;
&lt;br /&gt;
== Paint splatted texture ==&lt;br /&gt;
&lt;br /&gt;
*select &amp;quot;Paint texture&amp;quot;&lt;br /&gt;
*select a texture stage&lt;br /&gt;
*set texture stage operation to &amp;quot;Blend&amp;quot; and load a texture if necessary&lt;br /&gt;
*Left click map to paint texture, right click to erase&lt;br /&gt;
*You can click &amp;quot;Save blend texture&amp;quot; to export the blend texture map&lt;br /&gt;
&lt;br /&gt;
Note that texture stages are applied in order, first 1 then 2 then 3 etc.  The later layers cover the earlier ones.&lt;br /&gt;
&lt;br /&gt;
If you click the map and nothing happens, your changes may be being masked by later layers.  You can edit the later layers to uncover your changes, or click &amp;quot;move down&amp;quot; to move your edited layer later in the queue.&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/csai/mapdesignblendediting.JPG]&lt;br /&gt;
&lt;br /&gt;
== Water ==&lt;br /&gt;
&lt;br /&gt;
Areas below zero height will be underwater:&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/csai/mapdesignwater.JPG]&lt;br /&gt;
&lt;br /&gt;
== Exported Slopemap ==&lt;br /&gt;
&lt;br /&gt;
You can use File | Export slopemap... to export a slopemap for your map.&lt;br /&gt;
&lt;br /&gt;
Black means zero slope, green is vehicles, blue is infantry, red is extreme:&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/csai/slopemap2.JPG]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Configuration is stored in config.xml ,which can be opened in notepad&lt;br /&gt;
*You can change height and width in the display section to change the window size on next startup&lt;br /&gt;
*You can configure key mappings, and mouse move configuration&lt;br /&gt;
[[Category:Map_making]]&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Vstsismalldivide_6tsicommanderdies.JPG&amp;diff=22195</id>
		<title>File:Vstsismalldivide 6tsicommanderdies.JPG</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Vstsismalldivide_6tsicommanderdies.JPG&amp;diff=22195"/>
		<updated>2011-01-12T08:32:45Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Vstsismalldivide_1_attackgroupapproachingbase.JPG&amp;diff=22194</id>
		<title>File:Vstsismalldivide 1 attackgroupapproachingbase.JPG</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Vstsismalldivide_1_attackgroupapproachingbase.JPG&amp;diff=22194"/>
		<updated>2011-01-12T08:32:35Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Speedmetalzergsmall.JPG&amp;diff=22076</id>
		<title>File:Speedmetalzergsmall.JPG</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Speedmetalzergsmall.JPG&amp;diff=22076"/>
		<updated>2011-01-12T08:32:26Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Csaivstsispeedmetal_2plasmagoneoverrun.JPG&amp;diff=21673</id>
		<title>File:Csaivstsispeedmetal 2plasmagoneoverrun.JPG</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Csaivstsispeedmetal_2plasmagoneoverrun.JPG&amp;diff=21673"/>
		<updated>2011-01-12T08:32:10Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Csaivstsispeedmetal_arriveatbase.JPG&amp;diff=21674</id>
		<title>File:Csaivstsispeedmetal arriveatbase.JPG</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Csaivstsispeedmetal_arriveatbase.JPG&amp;diff=21674"/>
		<updated>2011-01-12T08:31:55Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Csaivsaai_xta7_ssb_25byebyeaaicommandersmall.JPG&amp;diff=21671</id>
		<title>File:Csaivsaai xta7 ssb 25byebyeaaicommandersmall.JPG</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Csaivsaai_xta7_ssb_25byebyeaaicommandersmall.JPG&amp;diff=21671"/>
		<updated>2011-01-12T08:31:25Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: uploaded a new version of &amp;amp;quot;File:Csaivsaai xta7 ssb 25byebyeaaicommandersmall.JPG&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Csaivsaai_xta7_ssb_23trailofdestructionthroughaaibasesmall.JPG&amp;diff=21669</id>
		<title>File:Csaivsaai xta7 ssb 23trailofdestructionthroughaaibasesmall.JPG</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Csaivsaai_xta7_ssb_23trailofdestructionthroughaaibasesmall.JPG&amp;diff=21669"/>
		<updated>2011-01-12T08:30:49Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: uploaded a new version of &amp;amp;quot;File:Csaivsaai xta7 ssb 23trailofdestructionthroughaaibasesmall.JPG&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Csaivsaai_xta7_ssb_23trailofdestructionthroughaaibasesmall.JPG&amp;diff=21668</id>
		<title>File:Csaivsaai xta7 ssb 23trailofdestructionthroughaaibasesmall.JPG</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Csaivsaai_xta7_ssb_23trailofdestructionthroughaaibasesmall.JPG&amp;diff=21668"/>
		<updated>2011-01-12T08:29:18Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:CSAI&amp;diff=487</id>
		<title>AI:CSAI</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:CSAI&amp;diff=487"/>
		<updated>2011-01-12T08:28:58Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: /* Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CSAI ==&lt;br /&gt;
&lt;br /&gt;
CSAI works ok as ARM on land maps, using the AA2.23 or XTA7 mod.&lt;br /&gt;
&lt;br /&gt;
CSAI is written in C#, by Hugh Perkins&lt;br /&gt;
&lt;br /&gt;
== Supported Mods ==&lt;br /&gt;
&lt;br /&gt;
*AA2.23&lt;br /&gt;
*XTA7&lt;br /&gt;
&lt;br /&gt;
== Supported Platforms ==&lt;br /&gt;
&lt;br /&gt;
*Windows&lt;br /&gt;
&lt;br /&gt;
== Supported Maps ==&lt;br /&gt;
&lt;br /&gt;
CSAI works best with maps with one large contiguous land segment.&lt;br /&gt;
&lt;br /&gt;
The following maps have been tested and work ok:&lt;br /&gt;
*SmallDivide&lt;br /&gt;
*CometCatcher Remake v02&lt;br /&gt;
*SpeedMetal&lt;br /&gt;
*Small Supreme Battlefield&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
CSAI scout sets off, SSB, XTA7:&lt;br /&gt;
&lt;br /&gt;
[[File:csaivsaai_xta7_ssb_4zippysetsoffsmall.JPG]]&lt;br /&gt;
&lt;br /&gt;
CSAI tanks leave trail of destruction through AAI base, SSB, XTA7:&lt;br /&gt;
&lt;br /&gt;
[[File:csaivsaai_xta7_ssb_23trailofdestructionthroughaaibasesmall.JPG]]&lt;br /&gt;
&lt;br /&gt;
CSAI tanks kill AAI commander on SSB, XTA7:&lt;br /&gt;
&lt;br /&gt;
[[File:csaivsaai_xta7_ssb_25byebyeaaicommandersmall.JPG]]&lt;br /&gt;
&lt;br /&gt;
CSAI (in red) approaches TSI base, SpeedMetal, AA2.23.  That plasma beam could cause some pain.&lt;br /&gt;
&lt;br /&gt;
[[File:csaivstsispeedmetal_arriveatbase.JPG]]&lt;br /&gt;
&lt;br /&gt;
Plasma beam down, CSAI overruns TSI base, SpeedMetal, AA2.23.&lt;br /&gt;
&lt;br /&gt;
[[File:csaivstsispeedmetal_2plasmagoneoverrun.JPG]]&lt;br /&gt;
&lt;br /&gt;
CSAI (in red) attacks AAI, SpeedMetal, AA2.23&lt;br /&gt;
&lt;br /&gt;
[[File:speedmetalzergsmall.JPG]]&lt;br /&gt;
&lt;br /&gt;
CSAI units approach TSI base, SmallDivide, AA2.23&lt;br /&gt;
&lt;br /&gt;
[[File:vstsismalldivide_1_attackgroupapproachingbase.JPG]]&lt;br /&gt;
&lt;br /&gt;
CSAI units kill TSI commander, SmallDivide, AA2.23&lt;br /&gt;
&lt;br /&gt;
[[File:vstsismalldivide_6tsicommanderdies.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Replays ==&lt;br /&gt;
&lt;br /&gt;
Here are some replays to give you an impression of how CSAI fights.&lt;br /&gt;
&lt;br /&gt;
CSAI vs AAI 0.75, XTA7:&lt;br /&gt;
&lt;br /&gt;
Small Supreme Battlefield&lt;br /&gt;
&lt;br /&gt;
*[http://manageddreams.com/csai/061026-SmallSupremeBattlefield-0.73b1-0-csai-vs-aai-xta7.sdf http://manageddreams.com/csai/061026-SmallSupremeBattlefield-0.73b1-0-csai-vs-aai-xta7.sdf] &lt;br /&gt;
&lt;br /&gt;
CSAI vs AAI 0.75, AA2.23:&lt;br /&gt;
&lt;br /&gt;
*[http://manageddreams.com/csai/061023-SmallDivide-0.73b1-20.sdf http://manageddreams.com/csai/061023-SmallDivide-0.73b1-20.sdf]&lt;br /&gt;
*[http://manageddreams.com/csai/061023-CometCatcherRemake-v02-0.73b1-0.sdf http://manageddreams.com/csai/061023-CometCatcherRemake-v02-0.73b1-0.sdf]&lt;br /&gt;
*[http://manageddreams.com/csai/061025-SpeedMetal-0.73b1-2.sdf http://manageddreams.com/csai/061025-SpeedMetal-0.73b1-2.sdf]&lt;br /&gt;
&lt;br /&gt;
CSAI vs TSI 0.12, AA2.23:&lt;br /&gt;
&lt;br /&gt;
*[http://manageddreams.com/csai/061025-CometCatcherRemake-v02-0.73b1-3.sdf http://manageddreams.com/csai/061025-CometCatcherRemake-v02-0.73b1-3.sdf]&lt;br /&gt;
*[http://manageddreams.com/csai/061025-SpeedMetal-0.73b1-0-csai-vs-tsi-aa223.sdf http://manageddreams.com/csai/061025-SpeedMetal-0.73b1-0-csai-vs-tsi-aa223.sdf]&lt;br /&gt;
*[http://manageddreams.com/csai/061025-SmallDivide-0.73b1-0-csai-vs-tsi-aa223.sdf http://manageddreams.com/csai/061025-SmallDivide-0.73b1-0-csai-vs-tsi-aa223.sdf]&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
Latest release:&lt;br /&gt;
*[http://manageddreams.com/csai/CSharpAI-20061028.zip http://manageddreams.com/csai/CSharpAI-20061028.zip]&lt;br /&gt;
&lt;br /&gt;
Previous releases:&lt;br /&gt;
*[http://manageddreams.com/csai/CSharpAI_20061026b.zip http://manageddreams.com/csai/CSharpAI_20061026b.zip]&lt;br /&gt;
*[http://manageddreams.com/csai/CSharpAI_20061026.zip http://manageddreams.com/csai/CSharpAI_20061026.zip]&lt;br /&gt;
*[http://manageddreams.com/csai/CSharpAI_20061025.zip http://manageddreams.com/csai/CSharpAI_20061025.zip]&lt;br /&gt;
*[http://manageddreams.com/csai/CSharpAI_20061024.zip http://manageddreams.com/csai/CSharpAI_20061024.zip]&lt;br /&gt;
&lt;br /&gt;
== To Install ==&lt;br /&gt;
&lt;br /&gt;
*Ensure that you have the Microsoft Framework .Net 1.1 runtime installed.  You can download this from Microsoft, for free.&lt;br /&gt;
*Ensure that you have the latest version of Spring installed, 0.73b.&lt;br /&gt;
*Download the latest CSharpAI zipfile from the Downloads section and unzip it.&lt;br /&gt;
*Run setup.exe&lt;br /&gt;
*Confirm the Spring installation directory&lt;br /&gt;
*The CSAI dlls should be automatically installed into the Spring directory&lt;br /&gt;
&lt;br /&gt;
== To use ==&lt;br /&gt;
&lt;br /&gt;
To run the bot:&lt;br /&gt;
*create a multiplayer game, using Absolute Annihilation 2.23&lt;br /&gt;
*specify start positions as &amp;quot;random&amp;quot; or &amp;quot;fixed&amp;quot;&lt;br /&gt;
*click &amp;quot;add bot&amp;quot;&lt;br /&gt;
*specify the ai as &amp;quot;csailoader.dll&amp;quot;&lt;br /&gt;
*&amp;lt;b&amp;gt;Important: ensure bot plays as ARM&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can find a logfile in the TASpring/AI/CSAI directory, called csharpai_team0.log  , where 0 is the name of the team&lt;br /&gt;
&lt;br /&gt;
== Commands available ==&lt;br /&gt;
&lt;br /&gt;
You can talk to your AI whilst it plays.&lt;br /&gt;
&lt;br /&gt;
Commands to the ai always start with &amp;quot;.csai &amp;quot;, then the command.&lt;br /&gt;
&lt;br /&gt;
Type &amp;quot;.csai help&amp;quot; for a list of available commands.  Here are some of them:&lt;br /&gt;
&lt;br /&gt;
*.csai commanderbuildpower  Commander builds a solar cell near him&lt;br /&gt;
*.csai commanderbuildextractor Commander builds a metal extractor on nearest available metal spot&lt;br /&gt;
*.csai commandermove 0 1000 1500   Move team 0 commander to position (1000,1500)&lt;br /&gt;
*.csai commandergetpos   Ask for commander&#039;s current position&lt;br /&gt;
*.csai commanderbuild armvp   Ask commander to build a vehicle plant next to him.  Use any valid unit name here (see logfile for list) (must be buildable by arm commander)&lt;br /&gt;
&lt;br /&gt;
*.csai killallfriendly    Kills all units belonging to AI, except for commander  This is sometimes useful during AI testing&lt;br /&gt;
*.csai unitcount (countunits?)   Shows number of units currently&lt;br /&gt;
&lt;br /&gt;
*.csai showmetalspots   Show detected optimal metal extractor positions.  Also shows metalspots that have been marked used&lt;br /&gt;
&lt;br /&gt;
*.csai tankscount   Find out how many tanks are available&lt;br /&gt;
*.csai tanksmoveto 0 500 1000    Move all team 0 tanks to position 500, 1000&lt;br /&gt;
&lt;br /&gt;
*.csai autoshowenemieson  Shows detected mobile enemies (samson icon) and static enemies (antinuke icon)&lt;br /&gt;
&lt;br /&gt;
== How to beat CSAI ==&lt;br /&gt;
&lt;br /&gt;
Here are some strategies that will kill the current release of CSAI.&lt;br /&gt;
&lt;br /&gt;
Massive concentration of defense near AI&#039;s base:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/screenshots/silpkillcsai-3.JPG]]&lt;br /&gt;
&lt;br /&gt;
Replay:&lt;br /&gt;
[http://manageddreams.com/csai/silp3-061031-Core_Faf-0.73b1-2.sdf http://manageddreams.com/csai/silp3-061031-Core_Faf-0.73b1-2.sdf]&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
&lt;br /&gt;
*All current released versions: on computers where the regional settings specifies the decimal separator as something other than &amp;quot;.&amp;quot;, the metal cache will fail to load correctly.  This means the commander will put extractors along the top of the screen and lose.  This affects computers in France and Germany.&lt;br /&gt;
&lt;br /&gt;
== Release notes ==&lt;br /&gt;
&lt;br /&gt;
=== Release 28 October ===&lt;br /&gt;
&lt;br /&gt;
C  /C# Interface&lt;br /&gt;
&lt;br /&gt;
*corrected critical bug in AICallbackProxy::GetMetalMap()&lt;br /&gt;
*augmented number of allowed units to 10000 in AICallbackProxy&lt;br /&gt;
&lt;br /&gt;
CSAI&lt;br /&gt;
&lt;br /&gt;
*(experimental) created setup.exe to facilitate installation&lt;br /&gt;
&lt;br /&gt;
=== Release 26 October 2006 b ===&lt;br /&gt;
&lt;br /&gt;
C  /C# Interface&lt;br /&gt;
*No changes&lt;br /&gt;
&lt;br /&gt;
CSAI&lt;br /&gt;
*created PackCoordinator architecture&lt;br /&gt;
*fixed bug that caused infantry factories to shutdown occasionally when playing XTA&lt;br /&gt;
*spreadsearch initiated more aggressively&lt;br /&gt;
&lt;br /&gt;
=== Release 26 October 2006 ===&lt;br /&gt;
&lt;br /&gt;
C  /C# Interface&lt;br /&gt;
*No changes&lt;br /&gt;
&lt;br /&gt;
CSAI&lt;br /&gt;
*supports XTA 7&lt;br /&gt;
*modified Metal algo to prefer spots which are over actual metal, rather than offset to one side&lt;br /&gt;
*(experimental) clearance around metal extractors reduced to improve location precision.  NOTE: this may increase unit blocking, to be verified&lt;br /&gt;
*you can turn debug on by creating an empty file called &amp;quot;debug.flg&amp;quot; in the ai/csai directory&lt;br /&gt;
*(experimental) added search algo for tanks if they havent seen an enemy for about a minute and there&#039;s at least 100 of them&lt;br /&gt;
*improved radar deployment&lt;br /&gt;
&lt;br /&gt;
=== Release 25 October 2006 ===&lt;br /&gt;
&lt;br /&gt;
C  /C# Interface&lt;br /&gt;
*No changes&lt;br /&gt;
&lt;br /&gt;
CSAI&lt;br /&gt;
*added support for metal maps&lt;br /&gt;
*fixed bug with metalspots being marked used even if not&lt;br /&gt;
*added constructor controller, to ensure always at least one constructor&lt;br /&gt;
*added anti-sticking patch for constructors&lt;br /&gt;
*added memory for buildings to enemycontroller (since buildings cant move)&lt;br /&gt;
*corrected bugs in enemy selection algorithm&lt;br /&gt;
*trimmed cpu resource drain for stuck constructors&lt;br /&gt;
*removed default drawing of detected enemies; you can say &amp;quot;.csai autoshowenemieson&amp;quot; to reactivate this&lt;br /&gt;
*removed default drawing of planned construction site; you can say &amp;quot;.csai constructorshownextbuildsiteon&amp;quot; to reactivate this&lt;br /&gt;
*experimenting with kbot factory&lt;br /&gt;
*experimenting with replacing samsons by jethros&lt;br /&gt;
*factories no longer announce their creation&lt;br /&gt;
*added AttackPackCoordinator to improve pack grouping&lt;br /&gt;
&lt;br /&gt;
=== Release 24 October 2006 ===&lt;br /&gt;
&lt;br /&gt;
C  /C# Interface&lt;br /&gt;
*CSAI.dll moved to AI/CSAI (only CSAIInterfaces.dll remains in Spring root)&lt;br /&gt;
*&amp;lt;csailoaderfilename&amp;gt;.xml config file added, to configure which C# AI dll to load&lt;br /&gt;
*batchfile building no longer supported (please use nant)&lt;br /&gt;
*added IMoveData&lt;br /&gt;
*added IUnitDef.movedata&lt;br /&gt;
*added all command constants, eg MOVE, SELFD, to Command.cs&lt;br /&gt;
*added operators to Float3&lt;br /&gt;
*added UnitIsBusy to AICallback (checks GetCurrentUnitCommands returns empty deque)&lt;br /&gt;
*documentation moved to wiki at http://taspring.clan-sy.com/wiki/AI:CSAIInterface&lt;br /&gt;
&lt;br /&gt;
CSAI&lt;br /&gt;
*added commands to move commander, and get commander to build things&lt;br /&gt;
*logfiles moved to AI/CSAI , in line with AI standards&lt;br /&gt;
*batchfile building no longer supported (please use nant)&lt;br /&gt;
*UnitController added, to register player-owned units&lt;br /&gt;
*FactoryController added, to register player-owned factories&lt;br /&gt;
*added port of AF&#039;s UnitDefHelp&lt;br /&gt;
*added architecture for strategies&lt;br /&gt;
*event architecture added to CSAI for unitcreated, unitfinished, unitdamaged, etc&lt;br /&gt;
*added PowerController to control energy&lt;br /&gt;
*added MetalController to control metal&lt;br /&gt;
*added TankController to manage tanks (bootstrapping class only)&lt;br /&gt;
*added EnemyController to monitor enemies&lt;br /&gt;
*added RadarController to manage radars&lt;br /&gt;
*added simple heuristic to prevent commander blocking himself in or factories&lt;br /&gt;
*added ScoutController&lt;br /&gt;
*added Request system to factories, to decide what to build&lt;br /&gt;
*documentation moved to wiki at http://taspring.clan-sy.com/wiki/AI:CSAI&lt;br /&gt;
&lt;br /&gt;
== Developer resources ==&lt;br /&gt;
&lt;br /&gt;
You may wish to extend or modify CSAI.  If so, the following pages may be useful:&lt;br /&gt;
&lt;br /&gt;
*[[CSAI Build Instructions]]  How to build CSAI&lt;br /&gt;
*[[AI:CSAIInterface]]   Information on the C  /C# interface&lt;br /&gt;
[[Category:AI]]&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Csaivsaai_xta7_ssb_4zippysetsoffsmall.JPG&amp;diff=21672</id>
		<title>File:Csaivsaai xta7 ssb 4zippysetsoffsmall.JPG</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Csaivsaai_xta7_ssb_4zippysetsoffsmall.JPG&amp;diff=21672"/>
		<updated>2011-01-12T08:28:00Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Csaivsaai_xta7_ssb_25byebyeaaicommandersmall.JPG&amp;diff=21670</id>
		<title>File:Csaivsaai xta7 ssb 25byebyeaaicommandersmall.JPG</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=File:Csaivsaai_xta7_ssb_25byebyeaaicommandersmall.JPG&amp;diff=21670"/>
		<updated>2011-01-12T08:26:39Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=727</id>
		<title>AI:HughAI</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=727"/>
		<updated>2009-09-21T06:05:47Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: /* To install */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is HughAI ==&lt;br /&gt;
&lt;br /&gt;
HughAI is a an AI written in Java.  Works quite well at fast rush attacks.&lt;br /&gt;
&lt;br /&gt;
== To install ==&lt;br /&gt;
&lt;br /&gt;
To install&lt;br /&gt;
&lt;br /&gt;
Make sure you have hoijui&#039;s Java Interface v0.1 installed. I believe this is installed automatically if you have Windows. Other platforms may have varying mileage.&lt;br /&gt;
&lt;br /&gt;
Once you have Java Interface 0.1 installed ok:&lt;br /&gt;
&lt;br /&gt;
1. Download HughAI from:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughai/HughAI20090921b.tar.bz2&lt;br /&gt;
&lt;br /&gt;
2. Remove any old AI/Skirmish/HughAI directory&lt;br /&gt;
&lt;br /&gt;
3. untar (using Winzip or your favorite zip utility) into AI/Skirmish, so you should have the following directory structure:&lt;br /&gt;
&lt;br /&gt;
 AI/&lt;br /&gt;
   Skirmish/&lt;br /&gt;
     HughAI/&lt;br /&gt;
       0.1/&lt;br /&gt;
         SkirmishAI.jar&lt;br /&gt;
         ... other files ...&lt;br /&gt;
&lt;br /&gt;
4. Run springlobby, create a single-player game, and do &amp;quot;add-bot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that the AI needs to be playing as Arm, and on Balanced Annihilation. On anything else, it will probably just sit there and do nothing :-D&lt;br /&gt;
&lt;br /&gt;
It&#039;s fairly early days yet, so don&#039;t expect too much just yet ;-) I&#039;ll update this message as it gets better.&lt;br /&gt;
&lt;br /&gt;
== Mods and maps ==&lt;br /&gt;
&lt;br /&gt;
Works with BA mod, with the AI running as ARM.&lt;br /&gt;
&lt;br /&gt;
== Play-style ==&lt;br /&gt;
&lt;br /&gt;
It&#039;s a non-cheating AI by day ... but if you go to the &#039;Config&#039; tab on the gui and tick the box next to &#039;maphack&#039; and then click &#039;apply&#039; or &#039;save&#039; ... it will become a cheating maphack AI!&lt;br /&gt;
&lt;br /&gt;
Otherwise, its playstyle is essentially to rush.  If it doesn&#039;t beat you within a few minutes, it&#039;s basically not going to do very much else just yet ;-)  Maybe in the future though ;-)&lt;br /&gt;
&lt;br /&gt;
== Cheating / maphack ==&lt;br /&gt;
&lt;br /&gt;
In the gui, in the &#039;config&#039; tab, click &#039;maphack&#039; then &#039;apply&#039; or &#039;save&#039; to enable maphack.&lt;br /&gt;
&lt;br /&gt;
Unclick it, and then &#039;apply&#039; or &#039;save&#039; to disable it.&lt;br /&gt;
&lt;br /&gt;
== To disable gui ==&lt;br /&gt;
&lt;br /&gt;
Either:&lt;br /&gt;
&lt;br /&gt;
- run spring in windowed mode, in the gui, in the config tab, unclick &#039;guiactivated&#039; and then click &#039;save&#039;, or&lt;br /&gt;
- in the config file BA_2.xml, change guiactivated from &#039;yes&#039; to &#039;no&#039;.&lt;br /&gt;
&lt;br /&gt;
== Can it beat other AIs? ==&lt;br /&gt;
&lt;br /&gt;
Yes ;-)  Replays against E323:&lt;br /&gt;
&lt;br /&gt;
1. against E323 from mid-August:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughaireplays/HughAIbeatsE323.tar.bz2&lt;br /&gt;
&lt;br /&gt;
2. against E323 v2.12.0:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughaireplays/hughaivse323_sep14.tar.bz2&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
There is a gui with a tab &#039;Config&#039; that can be used to configure many things.&lt;br /&gt;
&lt;br /&gt;
A few extra things are configurable in the config file &#039;BA_&amp;lt;side&amp;gt;.xml&#039; , in the AI&#039;s directory, where side is core or arm.&lt;br /&gt;
&lt;br /&gt;
There are also a number of workflow xml files in the BA_&amp;lt;side&amp;gt;workflows subdirectory.  Currently, only one of the workflows are used, so there&#039;s no point in adding more than one for now ;-)  In the future, it might simply randomly select from one, at random, so a human enemy doesn&#039;t know if the AI will tech or rush or whatever.  Sounds reasonable?&lt;br /&gt;
&lt;br /&gt;
The workflow config files define what will get built essentially, with a priority, a unitname, and a quantity.&lt;br /&gt;
&lt;br /&gt;
The higher the priority, the earlier the units will be built.&lt;br /&gt;
&lt;br /&gt;
You can add in the same unit on multiple lines, with different priorities, so you can say: ok, first build a couple of stumpies, then a jeffy, then some more stumpies, or whatever.&lt;br /&gt;
&lt;br /&gt;
== Limitations /ways to beat it ==&lt;br /&gt;
&lt;br /&gt;
Survive the initial rush, and it will probably not do too much else.&lt;br /&gt;
&lt;br /&gt;
== Console ==&lt;br /&gt;
&lt;br /&gt;
For techies, there&#039;s a console, where you can directly write Java code:&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/hughai/ConsoleInAction2.png]&lt;br /&gt;
&lt;br /&gt;
== Soure-code ==&lt;br /&gt;
&lt;br /&gt;
The sources are available from the following git repository:&lt;br /&gt;
&lt;br /&gt;
git://github.com/hughperkins/HughAI.git&lt;br /&gt;
http://github.com/hughperkins/HughAI/tree/master&lt;br /&gt;
&lt;br /&gt;
More details on the architecture can be found in the file src-ai/architecture.txt, in the sources, which I try to keep somewhat up-to-date, but really, if you have any questions, just ask me ;-)&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=726</id>
		<title>AI:HughAI</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=726"/>
		<updated>2009-09-21T05:19:53Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is HughAI ==&lt;br /&gt;
&lt;br /&gt;
HughAI is a an AI written in Java.  Works quite well at fast rush attacks.&lt;br /&gt;
&lt;br /&gt;
== To install ==&lt;br /&gt;
&lt;br /&gt;
To install&lt;br /&gt;
&lt;br /&gt;
Make sure you have hoijui&#039;s Java Interface v0.1 installed. I believe this is installed automatically if you have Windows. Other platforms may have varying mileage.&lt;br /&gt;
&lt;br /&gt;
Once you have Java Interface 0.1 installed ok:&lt;br /&gt;
&lt;br /&gt;
1. Download HughAI from:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughai/HughAI20090921.tar.bz2&lt;br /&gt;
&lt;br /&gt;
2. Remove any old AI/Skirmish/HughAI directory&lt;br /&gt;
&lt;br /&gt;
3. untar (using Winzip or your favorite zip utility) into AI/Skirmish, so you should have the following directory structure:&lt;br /&gt;
&lt;br /&gt;
 AI/&lt;br /&gt;
   Skirmish/&lt;br /&gt;
     HughAI/&lt;br /&gt;
       0.1/&lt;br /&gt;
         SkirmishAI.jar&lt;br /&gt;
         ... other files ...&lt;br /&gt;
&lt;br /&gt;
4. Run springlobby, create a single-player game, and do &amp;quot;add-bot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that the AI needs to be playing as Arm, and on Balanced Annihilation. On anything else, it will probably just sit there and do nothing :-D&lt;br /&gt;
&lt;br /&gt;
It&#039;s fairly early days yet, so don&#039;t expect too much just yet ;-) I&#039;ll update this message as it gets better.&lt;br /&gt;
&lt;br /&gt;
== Mods and maps ==&lt;br /&gt;
&lt;br /&gt;
Works with BA mod, with the AI running as ARM.&lt;br /&gt;
&lt;br /&gt;
== Play-style ==&lt;br /&gt;
&lt;br /&gt;
It&#039;s a non-cheating AI by day ... but if you go to the &#039;Config&#039; tab on the gui and tick the box next to &#039;maphack&#039; and then click &#039;apply&#039; or &#039;save&#039; ... it will become a cheating maphack AI!&lt;br /&gt;
&lt;br /&gt;
Otherwise, its playstyle is essentially to rush.  If it doesn&#039;t beat you within a few minutes, it&#039;s basically not going to do very much else just yet ;-)  Maybe in the future though ;-)&lt;br /&gt;
&lt;br /&gt;
== Cheating / maphack ==&lt;br /&gt;
&lt;br /&gt;
In the gui, in the &#039;config&#039; tab, click &#039;maphack&#039; then &#039;apply&#039; or &#039;save&#039; to enable maphack.&lt;br /&gt;
&lt;br /&gt;
Unclick it, and then &#039;apply&#039; or &#039;save&#039; to disable it.&lt;br /&gt;
&lt;br /&gt;
== To disable gui ==&lt;br /&gt;
&lt;br /&gt;
Either:&lt;br /&gt;
&lt;br /&gt;
- run spring in windowed mode, in the gui, in the config tab, unclick &#039;guiactivated&#039; and then click &#039;save&#039;, or&lt;br /&gt;
- in the config file BA_2.xml, change guiactivated from &#039;yes&#039; to &#039;no&#039;.&lt;br /&gt;
&lt;br /&gt;
== Can it beat other AIs? ==&lt;br /&gt;
&lt;br /&gt;
Yes ;-)  Replays against E323:&lt;br /&gt;
&lt;br /&gt;
1. against E323 from mid-August:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughaireplays/HughAIbeatsE323.tar.bz2&lt;br /&gt;
&lt;br /&gt;
2. against E323 v2.12.0:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughaireplays/hughaivse323_sep14.tar.bz2&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
There is a gui with a tab &#039;Config&#039; that can be used to configure many things.&lt;br /&gt;
&lt;br /&gt;
A few extra things are configurable in the config file &#039;BA_&amp;lt;side&amp;gt;.xml&#039; , in the AI&#039;s directory, where side is core or arm.&lt;br /&gt;
&lt;br /&gt;
There are also a number of workflow xml files in the BA_&amp;lt;side&amp;gt;workflows subdirectory.  Currently, only one of the workflows are used, so there&#039;s no point in adding more than one for now ;-)  In the future, it might simply randomly select from one, at random, so a human enemy doesn&#039;t know if the AI will tech or rush or whatever.  Sounds reasonable?&lt;br /&gt;
&lt;br /&gt;
The workflow config files define what will get built essentially, with a priority, a unitname, and a quantity.&lt;br /&gt;
&lt;br /&gt;
The higher the priority, the earlier the units will be built.&lt;br /&gt;
&lt;br /&gt;
You can add in the same unit on multiple lines, with different priorities, so you can say: ok, first build a couple of stumpies, then a jeffy, then some more stumpies, or whatever.&lt;br /&gt;
&lt;br /&gt;
== Limitations /ways to beat it ==&lt;br /&gt;
&lt;br /&gt;
Survive the initial rush, and it will probably not do too much else.&lt;br /&gt;
&lt;br /&gt;
== Console ==&lt;br /&gt;
&lt;br /&gt;
For techies, there&#039;s a console, where you can directly write Java code:&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/hughai/ConsoleInAction2.png]&lt;br /&gt;
&lt;br /&gt;
== Soure-code ==&lt;br /&gt;
&lt;br /&gt;
The sources are available from the following git repository:&lt;br /&gt;
&lt;br /&gt;
git://github.com/hughperkins/HughAI.git&lt;br /&gt;
http://github.com/hughperkins/HughAI/tree/master&lt;br /&gt;
&lt;br /&gt;
More details on the architecture can be found in the file src-ai/architecture.txt, in the sources, which I try to keep somewhat up-to-date, but really, if you have any questions, just ask me ;-)&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=725</id>
		<title>AI:HughAI</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=725"/>
		<updated>2009-09-21T05:19:10Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: /* To install */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is HughAI ==&lt;br /&gt;
&lt;br /&gt;
HughAI is a an AI written in Java.  Works quite well at fast rush attacks.&lt;br /&gt;
&lt;br /&gt;
== To install ==&lt;br /&gt;
&lt;br /&gt;
To install&lt;br /&gt;
&lt;br /&gt;
Make sure you have hoijui&#039;s Java Interface v0.1 installed. I believe this is installed automatically if you have Windows. Other platforms may have varying mileage.&lt;br /&gt;
&lt;br /&gt;
Once you have Java Interface 0.1 installed ok:&lt;br /&gt;
&lt;br /&gt;
1. Download HughAI from:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughai/HughAI20090921.tar.bz2&lt;br /&gt;
&lt;br /&gt;
2. Remove any old AI/Skirmish/HughAI directory&lt;br /&gt;
&lt;br /&gt;
3. untar (using Winzip or your favorite zip utility) into AI/Skirmish, so you should have the following directory structure:&lt;br /&gt;
&lt;br /&gt;
 AI/&lt;br /&gt;
   Skirmish/&lt;br /&gt;
     HughAI/&lt;br /&gt;
       0.1/&lt;br /&gt;
         SkirmishAI.jar&lt;br /&gt;
         ... other files ...&lt;br /&gt;
&lt;br /&gt;
4. Run springlobby, create a single-player game, and do &amp;quot;add-bot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that the AI needs to be playing as Arm, and on Balanced Annihilation. On anything else, it will probably just sit there and do nothing :-D&lt;br /&gt;
&lt;br /&gt;
It&#039;s fairly early days yet, so don&#039;t expect too much just yet ;-) I&#039;ll update this message as it gets better.&lt;br /&gt;
&lt;br /&gt;
== Mods and maps ==&lt;br /&gt;
&lt;br /&gt;
Works with BA mod, with the AI running as ARM.&lt;br /&gt;
&lt;br /&gt;
== Play-style ==&lt;br /&gt;
&lt;br /&gt;
It&#039;s a non-cheating AI by day ... but if you go to the &#039;Config&#039; tab on the gui and tick the box next to &#039;maphack&#039; and then click &#039;apply&#039; or &#039;save&#039; ... it will become a cheating maphack AI!&lt;br /&gt;
&lt;br /&gt;
Otherwise, its playstyle is essentially to rush.  If it doesn&#039;t beat you within a few minutes, it&#039;s basically not going to do very much else just yet ;-)  Maybe in the future though ;-)&lt;br /&gt;
&lt;br /&gt;
== Cheating / maphack ==&lt;br /&gt;
&lt;br /&gt;
In the gui, in the &#039;config&#039; tab, click &#039;maphack&#039; then &#039;apply&#039; or &#039;save&#039; to enable maphack.&lt;br /&gt;
&lt;br /&gt;
Unclick it, and then &#039;apply&#039; or &#039;save&#039; to disable it.&lt;br /&gt;
&lt;br /&gt;
== To disable gui ==&lt;br /&gt;
&lt;br /&gt;
Either:&lt;br /&gt;
&lt;br /&gt;
- run spring in windowed mode, in the gui, in the config tab, unclick &#039;guiactivated&#039; and then click &#039;save&#039;, or&lt;br /&gt;
- in the config file BA_2.xml, change guiactivated from &#039;yes&#039; to &#039;no&#039;.&lt;br /&gt;
&lt;br /&gt;
== Can it beat other AIs? ==&lt;br /&gt;
&lt;br /&gt;
Yes ;-)  Replays against E323:&lt;br /&gt;
&lt;br /&gt;
1. against E323 from mid-August:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughaireplays/HughAIbeatsE323.tar.bz2&lt;br /&gt;
&lt;br /&gt;
2. against E323 v2.12.0:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughaireplays/hughaivse323_sep14.tar.bz2&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
There is a gui with a tab &#039;Config&#039; that can be used to configure many things.&lt;br /&gt;
&lt;br /&gt;
A few extra things are configurable in the config file &#039;BA_2.xml&#039; , in the AI&#039;s directory.&lt;br /&gt;
&lt;br /&gt;
There are also a number of workflow xml files in the BA_workflows subdirectory.  Currently, only one of the workflows are used, so there&#039;s no point in adding more than one for now ;-)  In the future, it might simply randomly select from one, at random, so a human enemy doesn&#039;t know if the AI will tech or rush or whatever.  Sounds reasonable?&lt;br /&gt;
&lt;br /&gt;
The workflow config files define what will get built essentially, with a priority, a unitname, and a quantity.&lt;br /&gt;
&lt;br /&gt;
The higher the priority, the earlier the units will be built.&lt;br /&gt;
&lt;br /&gt;
You can add in the same unit on multiple lines, with different priorities, so you can say: ok, first build a couple of stumpies, then a jeffy, then some more stumpies, or whatever.&lt;br /&gt;
&lt;br /&gt;
== Limitations /ways to beat it ==&lt;br /&gt;
&lt;br /&gt;
Survive the initial rush, and it will probably not do too much else.&lt;br /&gt;
&lt;br /&gt;
== Console ==&lt;br /&gt;
&lt;br /&gt;
For techies, there&#039;s a console, where you can directly write Java code:&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/hughai/ConsoleInAction2.png]&lt;br /&gt;
&lt;br /&gt;
== Soure-code ==&lt;br /&gt;
&lt;br /&gt;
The sources are available from the following git repository:&lt;br /&gt;
&lt;br /&gt;
git://github.com/hughperkins/HughAI.git&lt;br /&gt;
http://github.com/hughperkins/HughAI/tree/master&lt;br /&gt;
&lt;br /&gt;
More details on the architecture can be found in the file src-ai/architecture.txt, in the sources, which I try to keep somewhat up-to-date, but really, if you have any questions, just ask me ;-)&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=724</id>
		<title>AI:HughAI</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=724"/>
		<updated>2009-09-14T05:20:44Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is HughAI ==&lt;br /&gt;
&lt;br /&gt;
HughAI is a an AI written in Java.  Works quite well at fast rush attacks.&lt;br /&gt;
&lt;br /&gt;
== To install ==&lt;br /&gt;
&lt;br /&gt;
To install&lt;br /&gt;
&lt;br /&gt;
Make sure you have hoijui&#039;s Java Interface v0.1 installed. I believe this is installed automatically if you have Windows. Other platforms may have varying mileage.&lt;br /&gt;
&lt;br /&gt;
Once you have Java Interface 0.1 installed ok:&lt;br /&gt;
&lt;br /&gt;
1. Download HughAI from:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughai/HughAI_20090914.tar.bz2&lt;br /&gt;
&lt;br /&gt;
2. Remove any old AI/Skirmish/HughAI directory&lt;br /&gt;
&lt;br /&gt;
3. untar (using Winzip or your favorite zip utility) into AI/Skirmish, so you should have the following directory structure:&lt;br /&gt;
&lt;br /&gt;
 AI/&lt;br /&gt;
   Skirmish/&lt;br /&gt;
     HughAI/&lt;br /&gt;
       0.1/&lt;br /&gt;
         SkirmishAI.jar&lt;br /&gt;
         ... other files ...&lt;br /&gt;
&lt;br /&gt;
4. Run springlobby, create a single-player game, and do &amp;quot;add-bot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that the AI needs to be playing as Arm, and on Balanced Annihilation. On anything else, it will probably just sit there and do nothing :-D&lt;br /&gt;
&lt;br /&gt;
It&#039;s fairly early days yet, so don&#039;t expect too much just yet ;-) I&#039;ll update this message as it gets better.&lt;br /&gt;
&lt;br /&gt;
== Mods and maps ==&lt;br /&gt;
&lt;br /&gt;
Works with BA mod, with the AI running as ARM.&lt;br /&gt;
&lt;br /&gt;
== Play-style ==&lt;br /&gt;
&lt;br /&gt;
It&#039;s a non-cheating AI by day ... but if you go to the &#039;Config&#039; tab on the gui and tick the box next to &#039;maphack&#039; and then click &#039;apply&#039; or &#039;save&#039; ... it will become a cheating maphack AI!&lt;br /&gt;
&lt;br /&gt;
Otherwise, its playstyle is essentially to rush.  If it doesn&#039;t beat you within a few minutes, it&#039;s basically not going to do very much else just yet ;-)  Maybe in the future though ;-)&lt;br /&gt;
&lt;br /&gt;
== Cheating / maphack ==&lt;br /&gt;
&lt;br /&gt;
In the gui, in the &#039;config&#039; tab, click &#039;maphack&#039; then &#039;apply&#039; or &#039;save&#039; to enable maphack.&lt;br /&gt;
&lt;br /&gt;
Unclick it, and then &#039;apply&#039; or &#039;save&#039; to disable it.&lt;br /&gt;
&lt;br /&gt;
== To disable gui ==&lt;br /&gt;
&lt;br /&gt;
Either:&lt;br /&gt;
&lt;br /&gt;
- run spring in windowed mode, in the gui, in the config tab, unclick &#039;guiactivated&#039; and then click &#039;save&#039;, or&lt;br /&gt;
- in the config file BA_2.xml, change guiactivated from &#039;yes&#039; to &#039;no&#039;.&lt;br /&gt;
&lt;br /&gt;
== Can it beat other AIs? ==&lt;br /&gt;
&lt;br /&gt;
Yes ;-)  Replays against E323:&lt;br /&gt;
&lt;br /&gt;
1. against E323 from mid-August:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughaireplays/HughAIbeatsE323.tar.bz2&lt;br /&gt;
&lt;br /&gt;
2. against E323 v2.12.0:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughaireplays/hughaivse323_sep14.tar.bz2&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
There is a gui with a tab &#039;Config&#039; that can be used to configure many things.&lt;br /&gt;
&lt;br /&gt;
A few extra things are configurable in the config file &#039;BA_2.xml&#039; , in the AI&#039;s directory.&lt;br /&gt;
&lt;br /&gt;
There are also a number of workflow xml files in the BA_workflows subdirectory.  Currently, only one of the workflows are used, so there&#039;s no point in adding more than one for now ;-)  In the future, it might simply randomly select from one, at random, so a human enemy doesn&#039;t know if the AI will tech or rush or whatever.  Sounds reasonable?&lt;br /&gt;
&lt;br /&gt;
The workflow config files define what will get built essentially, with a priority, a unitname, and a quantity.&lt;br /&gt;
&lt;br /&gt;
The higher the priority, the earlier the units will be built.&lt;br /&gt;
&lt;br /&gt;
You can add in the same unit on multiple lines, with different priorities, so you can say: ok, first build a couple of stumpies, then a jeffy, then some more stumpies, or whatever.&lt;br /&gt;
&lt;br /&gt;
== Limitations /ways to beat it ==&lt;br /&gt;
&lt;br /&gt;
Survive the initial rush, and it will probably not do too much else.&lt;br /&gt;
&lt;br /&gt;
== Console ==&lt;br /&gt;
&lt;br /&gt;
For techies, there&#039;s a console, where you can directly write Java code:&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/hughai/ConsoleInAction2.png]&lt;br /&gt;
&lt;br /&gt;
== Soure-code ==&lt;br /&gt;
&lt;br /&gt;
The sources are available from the following git repository:&lt;br /&gt;
&lt;br /&gt;
git://github.com/hughperkins/HughAI.git&lt;br /&gt;
http://github.com/hughperkins/HughAI/tree/master&lt;br /&gt;
&lt;br /&gt;
More details on the architecture can be found in the file src-ai/architecture.txt, in the sources, which I try to keep somewhat up-to-date, but really, if you have any questions, just ask me ;-)&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=723</id>
		<title>AI:HughAI</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=723"/>
		<updated>2009-09-14T05:17:05Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is HughAI ==&lt;br /&gt;
&lt;br /&gt;
HughAI is a an AI written in Java.  Works quite well at fast rush attacks.&lt;br /&gt;
&lt;br /&gt;
== To install ==&lt;br /&gt;
&lt;br /&gt;
To install&lt;br /&gt;
&lt;br /&gt;
Make sure you have hoijui&#039;s Java Interface v0.1 installed. I believe this is installed automatically if you have Windows. Other platforms may have varying mileage.&lt;br /&gt;
&lt;br /&gt;
Once you have Java Interface 0.1 installed ok:&lt;br /&gt;
&lt;br /&gt;
1. Download HughAI from:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughai/HughAI_20090914.tar.bz2&lt;br /&gt;
&lt;br /&gt;
2. Remove any old AI/Skirmish/HughAI directory&lt;br /&gt;
&lt;br /&gt;
3. untar (using Winzip or your favorite zip utility) into AI/Skirmish, so you should have the following directory structure:&lt;br /&gt;
&lt;br /&gt;
 AI/&lt;br /&gt;
   Skirmish/&lt;br /&gt;
     HughAI/&lt;br /&gt;
       0.1/&lt;br /&gt;
         SkirmishAI.jar&lt;br /&gt;
         ... other files ...&lt;br /&gt;
&lt;br /&gt;
4. Run springlobby, create a single-player game, and do &amp;quot;add-bot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that the AI needs to be playing as Arm, and on Balanced Annihilation. On anything else, it will probably just sit there and do nothing :-D&lt;br /&gt;
&lt;br /&gt;
It&#039;s fairly early days yet, so don&#039;t expect too much just yet ;-) I&#039;ll update this message as it gets better.&lt;br /&gt;
&lt;br /&gt;
== Mods and maps ==&lt;br /&gt;
&lt;br /&gt;
Works with BA mod, with the AI running as ARM.&lt;br /&gt;
&lt;br /&gt;
== Play-style ==&lt;br /&gt;
&lt;br /&gt;
It&#039;s a non-cheating AI by day ... but if you go to the &#039;Config&#039; tab on the gui and tick the box next to &#039;maphack&#039; and then click &#039;apply&#039; or &#039;save&#039; ... it will become a cheating maphack AI!&lt;br /&gt;
&lt;br /&gt;
Otherwise, its playstyle is essentially to rush.  If it doesn&#039;t beat you within a few minutes, it&#039;s basically not going to do very much else just yet ;-)  Maybe in the future though ;-)&lt;br /&gt;
&lt;br /&gt;
== Can it beat other AIs? ==&lt;br /&gt;
&lt;br /&gt;
Yes ;-)  Replays against E323:&lt;br /&gt;
&lt;br /&gt;
1. against E323 from mid-August:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughaireplays/HughAIbeatsE323.tar.bz2&lt;br /&gt;
&lt;br /&gt;
2. against E323 v2.12.0:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughaireplays/hughaivse323_sep14.tar.bz2&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
There is a gui with a tab &#039;Config&#039; that can be used to configure many things.&lt;br /&gt;
&lt;br /&gt;
A few extra things are configurable in the config file &#039;BA_2.xml&#039; , in the AI&#039;s directory.&lt;br /&gt;
&lt;br /&gt;
There are also a number of workflow xml files in the BA_workflows subdirectory.  Currently, only one of the workflows are used, so there&#039;s no point in adding more than one for now ;-)  In the future, it might simply randomly select from one, at random, so a human enemy doesn&#039;t know if the AI will tech or rush or whatever.  Sounds reasonable?&lt;br /&gt;
&lt;br /&gt;
The workflow config files define what will get built essentially, with a priority, a unitname, and a quantity.&lt;br /&gt;
&lt;br /&gt;
The higher the priority, the earlier the units will be built.&lt;br /&gt;
&lt;br /&gt;
You can add in the same unit on multiple lines, with different priorities, so you can say: ok, first build a couple of stumpies, then a jeffy, then some more stumpies, or whatever.&lt;br /&gt;
&lt;br /&gt;
== Limitations /ways to beat it ==&lt;br /&gt;
&lt;br /&gt;
Survive the initial rush, and it will probably not do too much else.&lt;br /&gt;
&lt;br /&gt;
== Console ==&lt;br /&gt;
&lt;br /&gt;
For techies, there&#039;s a console, where you can directly write Java code:&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/hughai/ConsoleInAction2.png]&lt;br /&gt;
&lt;br /&gt;
== Soure-code ==&lt;br /&gt;
&lt;br /&gt;
The sources are available from the following git repository:&lt;br /&gt;
&lt;br /&gt;
git://github.com/hughperkins/HughAI.git&lt;br /&gt;
http://github.com/hughperkins/HughAI/tree/master&lt;br /&gt;
&lt;br /&gt;
More details on the architecture can be found in the file src-ai/architecture.txt, in the sources, which I try to keep somewhat up-to-date, but really, if you have any questions, just ask me ;-)&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=721</id>
		<title>AI:HughAI</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=721"/>
		<updated>2009-09-09T10:08:25Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: minor formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is HughAI ==&lt;br /&gt;
&lt;br /&gt;
HughAI is a Java port of CSAI2, which was a partially refactored version of [[AI:CSAI]], a fast rush AI, written in C#, by Hugh Perkins.&lt;br /&gt;
&lt;br /&gt;
== To install ==&lt;br /&gt;
&lt;br /&gt;
To install&lt;br /&gt;
&lt;br /&gt;
Make sure you have hoijui&#039;s Java Interface v0.1 installed. I believe this is installed automatically if you have Windows. Other platforms may have varying mileage.&lt;br /&gt;
&lt;br /&gt;
Once you have Java Interface 0.1 installed ok:&lt;br /&gt;
&lt;br /&gt;
1. Download HughAI from:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughai/HughAI.2009sep09.tar.bz2&lt;br /&gt;
&lt;br /&gt;
2. untar (using Winzip or your favorite zip utility) into AI/Skirmish, so you should have the following directory structure:&lt;br /&gt;
&lt;br /&gt;
 AI/&lt;br /&gt;
   Skirmish/&lt;br /&gt;
     HughAI/&lt;br /&gt;
       0.1/&lt;br /&gt;
         SkirmishAI.jar&lt;br /&gt;
         ... other files ...&lt;br /&gt;
&lt;br /&gt;
3. Run springlobby, create a single-player game, and do &amp;quot;add-bot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that the AI needs to be playing as Arm, and on Balanced Annihilation. On anything else, it will probably just sit there and do nothing :-D&lt;br /&gt;
&lt;br /&gt;
It&#039;s fairly early days yet, so don&#039;t expect too much just yet ;-) I&#039;ll update this message as it gets better.&lt;br /&gt;
&lt;br /&gt;
== Mods and maps ==&lt;br /&gt;
&lt;br /&gt;
It only really works with Balanced Annihilation, unless you start to tweak the config files.&lt;br /&gt;
&lt;br /&gt;
== Play-style ==&lt;br /&gt;
&lt;br /&gt;
It&#039;s a non-cheating AI by day ... but if you go to the &#039;Config&#039; tab on the gui and tick the box next to &#039;maphack&#039; and then click &#039;apply&#039; or &#039;save&#039; ... it will become a cheating maphack AI!&lt;br /&gt;
&lt;br /&gt;
Otherwise, its playstyle is essentially to rush.  If it doesn&#039;t beat you within a few minutes, it&#039;s basically not going to do very much else just yet ;-)  Maybe in the future though ;-)&lt;br /&gt;
&lt;br /&gt;
== Can it beat other AIs? ==&lt;br /&gt;
&lt;br /&gt;
Yes ;-)  Replay against E323:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughaireplays/HughAIbeatsE323.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Of course, it&#039;s all a bit fragile, and there&#039;s a lot of luck involved, so I&#039;m sure it&#039;s pretty easy to make a replay of E323 being the winning AI :-D&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
There is a gui with a tab &#039;Config&#039; that can be used to configure many things.&lt;br /&gt;
&lt;br /&gt;
A few extra things are configurable in the config file &#039;BA_2.xml&#039; , in the AI&#039;s directory.&lt;br /&gt;
&lt;br /&gt;
There are also a number of workflow xml files in the BA_workflows subdirectory.  Currently, only one of the workflows are used, so there&#039;s no point in adding more than one for now ;-)  In the future, it might simply randomly select from one, at random, so a human enemy doesn&#039;t know if the AI will tech or rush or whatever.  Sounds reasonable?&lt;br /&gt;
&lt;br /&gt;
The workflow config files define what will get built essentially, with a priority, a unitname, and a quantity.&lt;br /&gt;
&lt;br /&gt;
The higher the priority, the earlier the units will be built.&lt;br /&gt;
&lt;br /&gt;
You can add in the same unit on multiple lines, with different priorities, so you can say: ok, first build a couple of stumpies, then a jeffy, then some more stumpies, or whatever.&lt;br /&gt;
&lt;br /&gt;
== Limitations /ways to beat it ==&lt;br /&gt;
&lt;br /&gt;
Survive the initial rush, and it will probably not do too much else.&lt;br /&gt;
&lt;br /&gt;
== Console ==&lt;br /&gt;
&lt;br /&gt;
For techies, there&#039;s a console, where you can directly write Java code:&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/hughai/ConsoleInAction2.png]&lt;br /&gt;
&lt;br /&gt;
== Soure-code ==&lt;br /&gt;
&lt;br /&gt;
The sources are available from the following git repository:&lt;br /&gt;
&lt;br /&gt;
git://github.com/hughperkins/HughAI.git&lt;br /&gt;
http://github.com/hughperkins/HughAI/tree/master&lt;br /&gt;
&lt;br /&gt;
More details on the architecture can be found in the file src-ai/architecture.txt, in the sources, which I tree to keep somewhat up-to-date, but really, if you have any questions, just ask me ;-)&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=720</id>
		<title>AI:HughAI</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=720"/>
		<updated>2009-09-09T10:07:56Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: Updated with today&amp;#039;s changes, and a replay vs E323 ;-)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is HughAI ==&lt;br /&gt;
&lt;br /&gt;
HughAI is a Java port of CSAI2, which was a partially refactored version of [[AI:CSAI]], a fast rush AI, written in C#, by Hugh Perkins.&lt;br /&gt;
&lt;br /&gt;
== To install ==&lt;br /&gt;
&lt;br /&gt;
To install&lt;br /&gt;
&lt;br /&gt;
Make sure you have hoijui&#039;s Java Interface v0.1 installed. I believe this is installed automatically if you have Windows. Other platforms may have varying mileage.&lt;br /&gt;
&lt;br /&gt;
Once you have Java Interface 0.1 installed ok:&lt;br /&gt;
&lt;br /&gt;
1. Download HughAI from:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughai/HughAI.2009sep09.tar.bz2&lt;br /&gt;
&lt;br /&gt;
2. untar (using Winzip or your favorite zip utility) into AI/Skirmish, so you should have the following directory structure:&lt;br /&gt;
&lt;br /&gt;
 AI/&lt;br /&gt;
   Skirmish/&lt;br /&gt;
     HughAI/&lt;br /&gt;
       0.1/&lt;br /&gt;
         SkirmishAI.jar&lt;br /&gt;
         ... other files ...&lt;br /&gt;
&lt;br /&gt;
3. Run springlobby, create a single-player game, and do &amp;quot;add-bot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that the AI needs to be playing as Arm, and on Balanced Annihilation. On anything else, it will probably just sit there and do nothing :-D&lt;br /&gt;
&lt;br /&gt;
It&#039;s fairly early days yet, so don&#039;t expect too much just yet ;-) I&#039;ll update this message as it gets better.&lt;br /&gt;
&lt;br /&gt;
== Mods and maps ==&lt;br /&gt;
&lt;br /&gt;
It only really works with Balanced Annihilation, unless you start to tweak the config files.&lt;br /&gt;
&lt;br /&gt;
== Play-style ==&lt;br /&gt;
&lt;br /&gt;
It&#039;s a non-cheating AI by day ... but if you go to the &#039;Config&#039; tab on the gui and tick the box next to &#039;maphack&#039; and then click &#039;apply&#039; or &#039;save&#039; ... it will become a cheating maphack AI!&lt;br /&gt;
&lt;br /&gt;
Otherwise, its playstyle is essentially to rush.  If it doesn&#039;t beat you within a few minutes, it&#039;s basically not going to do very much else just yet ;-)  Maybe in the future though ;-)&lt;br /&gt;
&lt;br /&gt;
Can it beat other AIs?&lt;br /&gt;
======================&lt;br /&gt;
&lt;br /&gt;
Yes ;-)  Replay against E323:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughaireplays/HughAIbeatsE323.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Of course, it&#039;s all a bit fragile, and there&#039;s a lot of luck involved, so I&#039;m sure it&#039;s pretty easy to make a replay of E323 being the winning AI :-D&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
There is a gui with a tab &#039;Config&#039; that can be used to configure many things.&lt;br /&gt;
&lt;br /&gt;
A few extra things are configurable in the config file &#039;BA_2.xml&#039; , in the AI&#039;s directory.&lt;br /&gt;
&lt;br /&gt;
There are also a number of workflow xml files in the BA_workflows subdirectory.  Currently, only one of the workflows are used, so there&#039;s no point in adding more than one for now ;-)  In the future, it might simply randomly select from one, at random, so a human enemy doesn&#039;t know if the AI will tech or rush or whatever.  Sounds reasonable?&lt;br /&gt;
&lt;br /&gt;
The workflow config files define what will get built essentially, with a priority, a unitname, and a quantity.&lt;br /&gt;
&lt;br /&gt;
The higher the priority, the earlier the units will be built.&lt;br /&gt;
&lt;br /&gt;
You can add in the same unit on multiple lines, with different priorities, so you can say: ok, first build a couple of stumpies, then a jeffy, then some more stumpies, or whatever.&lt;br /&gt;
&lt;br /&gt;
== Limitations /ways to beat it ==&lt;br /&gt;
&lt;br /&gt;
Survive the initial rush, and it will probably not do too much else.&lt;br /&gt;
&lt;br /&gt;
== Console ==&lt;br /&gt;
&lt;br /&gt;
For techies, there&#039;s a console, where you can directly write Java code:&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/hughai/ConsoleInAction2.png]&lt;br /&gt;
&lt;br /&gt;
== Soure-code ==&lt;br /&gt;
&lt;br /&gt;
The sources are available from the following git repository:&lt;br /&gt;
&lt;br /&gt;
git://github.com/hughperkins/HughAI.git&lt;br /&gt;
http://github.com/hughperkins/HughAI/tree/master&lt;br /&gt;
&lt;br /&gt;
More details on the architecture can be found in the file src-ai/architecture.txt, in the sources, which I tree to keep somewhat up-to-date, but really, if you have any questions, just ask me ;-)&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=719</id>
		<title>AI:HughAI</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=719"/>
		<updated>2009-09-07T12:33:41Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: minor forrmatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is HughAI ==&lt;br /&gt;
&lt;br /&gt;
HughAI is a Java port of CSAI2, which was a partially refactored version of [[AI:CSAI]], a fast rush AI, written in C#, by Hugh Perkins.&lt;br /&gt;
&lt;br /&gt;
== To install ==&lt;br /&gt;
&lt;br /&gt;
To install&lt;br /&gt;
&lt;br /&gt;
Make sure you have hoijui&#039;s Java Interface v0.1 installed. I believe this is installed automatically if you have Windows. Other platforms may have varying mileage.&lt;br /&gt;
&lt;br /&gt;
Once you have Java Interface 0.1 installed ok:&lt;br /&gt;
&lt;br /&gt;
1. Download HughAI from:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughai/HughAI.tar.bz2&lt;br /&gt;
&lt;br /&gt;
2. untar (using Winzip or your favorite zip utility) into AI/Skirmish, so you should have the following directory structure:&lt;br /&gt;
&lt;br /&gt;
 AI/&lt;br /&gt;
   Skirmish/&lt;br /&gt;
     HughAI/&lt;br /&gt;
       0.1/&lt;br /&gt;
         SkirmishAI.jar&lt;br /&gt;
         ... other files ...&lt;br /&gt;
&lt;br /&gt;
3. Run springlobby, create a single-player game, and do &amp;quot;add-bot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that the AI needs to be playing as Arm, and on Balanced Annihilation. On anything else, it will probably just sit there and do nothing :-D&lt;br /&gt;
&lt;br /&gt;
It&#039;s fairly early days yet, so don&#039;t expect too much just yet ;-) I&#039;ll update this message as it gets better.&lt;br /&gt;
&lt;br /&gt;
== Mods and maps ==&lt;br /&gt;
&lt;br /&gt;
It only really works with Balanced Annihilation, unless you start to tweak the config files.&lt;br /&gt;
&lt;br /&gt;
== Play-style ==&lt;br /&gt;
&lt;br /&gt;
It&#039;s a non-cheating AI.  It sends out scouts to locate the enemy.  It attacks with a pack of units, and withdraws them if too many die.  That&#039;s it for now ;-)  It did ok in its C# form.  It&#039;s currently undergoing quite a lot of mutation, and it&#039;s becoming quite configurable, so it&#039;s early days yet.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
There is a per-mod configuration file in the AI directory, with a version postfix, currently _2, ie:&lt;br /&gt;
&lt;br /&gt;
BA_2.xml&lt;br /&gt;
&lt;br /&gt;
This can be used to tweak the names of certain default and basic units.&lt;br /&gt;
&lt;br /&gt;
There are also a number of workflow xml files in the BA_workflows subdirectory.  Currently, only one of the workflows are used, so there&#039;s no point in adding more than one for now ;-)  In the future, it might simply randomly select from one, at random, so a human enemy doesn&#039;t know if the AI will tech or rush or whatever.  Sounds reasonable?&lt;br /&gt;
&lt;br /&gt;
The workflow config files define what will get built essentially, with a priority, a unitname, and a quantity.&lt;br /&gt;
&lt;br /&gt;
The higher the priority, the earlier the units will be built.&lt;br /&gt;
&lt;br /&gt;
You can add in the same unit on multiple lines, with different priorities, so you can say: ok, first build a couple of stumpies, then a jeffy, then some more stumpies, or whatever.&lt;br /&gt;
&lt;br /&gt;
== Limitations /ways to beat it ==&lt;br /&gt;
&lt;br /&gt;
Currently, no threatmap, so just dump some really powerful defense in its way, and it&#039;ll obsessively throw itself against it.&lt;br /&gt;
&lt;br /&gt;
== Soure-code ==&lt;br /&gt;
&lt;br /&gt;
The sources are available from the following git repository:&lt;br /&gt;
&lt;br /&gt;
git://github.com/hughperkins/HughAI.git&lt;br /&gt;
http://github.com/hughperkins/HughAI/tree/master&lt;br /&gt;
&lt;br /&gt;
More details on the architecture can be found in the file src-ai/architecture.txt, in the sources:&lt;br /&gt;
&lt;br /&gt;
http://github.com/hughperkins/HughAI/blob/f23bf8cb4353d5577599f0c531474d36342fba11/src-ai/architecture.txt&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=718</id>
		<title>AI:HughAI</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=718"/>
		<updated>2009-09-07T10:59:22Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: Wrote it more from the poitn of view of a user than a developer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is HughAI ==&lt;br /&gt;
&lt;br /&gt;
HughAI is a Java port of CSAI2, which was a partially refactored version of [[AI:CSAI]], a fast rush AI, written in C#, by Hugh Perkins.&lt;br /&gt;
&lt;br /&gt;
== To install ==&lt;br /&gt;
&lt;br /&gt;
To install&lt;br /&gt;
&lt;br /&gt;
Make sure you have hoijui&#039;s Java Interface v0.1 installed. I believe this is installed automatically if you have Windows. Other platforms may have varying mileage.&lt;br /&gt;
&lt;br /&gt;
Once you have Java Interface 0.1 installed ok:&lt;br /&gt;
&lt;br /&gt;
1. Download HughAI from:&lt;br /&gt;
&lt;br /&gt;
http://manageddreams.com/hughai/HughAI.tar.bz2&lt;br /&gt;
&lt;br /&gt;
2. untar (using Winzip or your favorite zip utility) into AI/Skirmish, so you should have the following directory structure:&lt;br /&gt;
&lt;br /&gt;
AI/&lt;br /&gt;
Skirmish/&lt;br /&gt;
HughAI/&lt;br /&gt;
0.1/&lt;br /&gt;
SkirmishAI.jar&lt;br /&gt;
... other files ...&lt;br /&gt;
&lt;br /&gt;
3. Run springlobby, create a single-player game, and do &amp;quot;add-bot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that the AI needs to be playing as Arm, and on Balanced Annihilation. On anything else, it will probably just sit there and do nothing :-D&lt;br /&gt;
&lt;br /&gt;
It&#039;s fairly early days yet, so don&#039;t expect too much just yet ;-) I&#039;ll update this message as it gets better.&lt;br /&gt;
&lt;br /&gt;
== Mods and maps ==&lt;br /&gt;
&lt;br /&gt;
It only really works with Balanced Annihilation, unless you start to tweak the config files.&lt;br /&gt;
&lt;br /&gt;
== Play-style ==&lt;br /&gt;
&lt;br /&gt;
It&#039;s a non-cheating AI.  It sends out scouts to locate the enemy.  It attacks with a pack of units, and withdraws them if too many die.  That&#039;s it for now ;-)  It did ok in its C# form.  It&#039;s currently undergoing quite a lot of mutation, and it&#039;s becoming quite configurable, so it&#039;s early days yet.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
There is a per-mod configuration file in the AI directory, with a version postfix, currently _2, ie:&lt;br /&gt;
&lt;br /&gt;
BA_2.xml&lt;br /&gt;
&lt;br /&gt;
This can be used to tweak the names of certain default and basic units.&lt;br /&gt;
&lt;br /&gt;
There are also a number of workflow xml files in the BA_workflows subdirectory.  Currently, only one of the workflows are used, so there&#039;s no point in adding more than one for now ;-)  In the future, it might simply randomly select from one, at random, so a human enemy doesn&#039;t know if the AI will tech or rush or whatever.  Sounds reasonable?&lt;br /&gt;
&lt;br /&gt;
The workflow config files define what will get built essentially, with a priority, a unitname, and a quantity.&lt;br /&gt;
&lt;br /&gt;
The higher the priority, the earlier the units will be built.&lt;br /&gt;
&lt;br /&gt;
You can add in the same unit on multiple lines, with different priorities, so you can say: ok, first build a couple of stumpies, then a jeffy, then some more stumpies, or whatever.&lt;br /&gt;
&lt;br /&gt;
== Limitations /ways to beat it ==&lt;br /&gt;
&lt;br /&gt;
Currently, no threatmap, so just dump some really powerful defense in its way, and it&#039;ll obsessively throw itself against it.&lt;br /&gt;
&lt;br /&gt;
== Soure-code ==&lt;br /&gt;
&lt;br /&gt;
The sources are available from the following git repository:&lt;br /&gt;
&lt;br /&gt;
git://github.com/hughperkins/HughAI.git&lt;br /&gt;
http://github.com/hughperkins/HughAI/tree/master&lt;br /&gt;
&lt;br /&gt;
More details on the architecture can be found in the file src-ai/architecture.txt, in the sources:&lt;br /&gt;
&lt;br /&gt;
http://github.com/hughperkins/HughAI/blob/f23bf8cb4353d5577599f0c531474d36342fba11/src-ai/architecture.txt&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=717</id>
		<title>AI:HughAI</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=717"/>
		<updated>2009-09-06T14:45:38Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: added link to&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;HughAI is a Java port of CSAI2, which was a partially refactored version of [[AI:CSAI]], a fast rush AI, written in C#, by Hugh Perkins.&lt;br /&gt;
&lt;br /&gt;
It is not quite ready for use as a fun interesting opponent in a real game, but it could be fun to play with by developers.  It includes a bunch of classes for deriving maps, such as slope maps, movement area maps, and los maps, from the data made available to the AI.&lt;br /&gt;
&lt;br /&gt;
It contains a GUI written in Swing, to which classes can subscribe, registering the name of a button, and a handler method to be called.&lt;br /&gt;
&lt;br /&gt;
Similarly, chat commands can be registered by the AI classes.&lt;br /&gt;
&lt;br /&gt;
More details on the architecture can be found in the file src-ai/architecture.txt, in the sources:&lt;br /&gt;
&lt;br /&gt;
http://github.com/hughperkins/HughAI/blob/f23bf8cb4353d5577599f0c531474d36342fba11/src-ai/architecture.txt&lt;br /&gt;
&lt;br /&gt;
The sources are available from the following git repository:&lt;br /&gt;
&lt;br /&gt;
git://github.com/hughperkins/HughAI.git&lt;br /&gt;
&lt;br /&gt;
Web browser page:&lt;br /&gt;
&lt;br /&gt;
http://github.com/hughperkins/HughAI/tree/master&lt;br /&gt;
&lt;br /&gt;
The AI uses hoijui&#039;s Java Interface v0.1.&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14198</id>
		<title>Maps:Map Designer</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14198"/>
		<updated>2009-09-06T14:42:02Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: corrected links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Map_development|Map Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
== MapDesigner, by Hugh Perkins ==&lt;br /&gt;
&lt;br /&gt;
[http://manageddreams.com/csai/MapDesigner.zip Download]&lt;br /&gt;
&lt;br /&gt;
*Supports multipass texture splatting.  SM3 loader.&lt;br /&gt;
*Heightmap editor.  Left click to raise land, right click to lower&lt;br /&gt;
*Paint splatted texture.  Left click to paint texture, right click to erase&lt;br /&gt;
*Export heightmap, slopemap and blend maps&lt;br /&gt;
*Exported slopemap color-coded by movement area, eg infantry, vehicle and extreme (configurable)&lt;br /&gt;
&lt;br /&gt;
Source-code repository, in git:&lt;br /&gt;
&lt;br /&gt;
git://github.com/hughperkins/SpringMapDesigner.git&lt;br /&gt;
&lt;br /&gt;
Source-code browser:&lt;br /&gt;
&lt;br /&gt;
http://github.com/hughperkins/SpringMapDesigner/tree/master&lt;br /&gt;
&lt;br /&gt;
Written in C#, using either mono or .net, both work, over gtk.net.&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
&lt;br /&gt;
[image:http://manageddreams.com/csai/mapdesigner3small.JPG]&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
&lt;br /&gt;
MapDesigner is optimized for creating SM3 maps, which use texture splatting to provide high detail maps.&lt;br /&gt;
&lt;br /&gt;
For each texture, we need:&lt;br /&gt;
*the texture, which will be tiled according to the tilesize&lt;br /&gt;
*a blend map, which controls where the texture will be visible&lt;br /&gt;
&lt;br /&gt;
The blend map is essentially an alpha map.  The areas which are white will be splatted with our texture, and the other areas will be transparent.&lt;br /&gt;
&lt;br /&gt;
The textures are rendered in layers, one by one.  The later layers cover the earlier layers, according to each one&#039;s blend map texture.  Here&#039;s some pictures that illustrate how this works.  We are rendering each layer with a vertical offset so you can see each layer on its own.&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/csai/multitextureview1.JPG]&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/csai/multitextureview2.JPG]&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/csai/multitextureview3.JPG]&lt;br /&gt;
&lt;br /&gt;
In reality, these layers are all rendered together, with no vertical offset, so they look like they are all part of the same single terrain.&lt;br /&gt;
&lt;br /&gt;
You can use any DevIL-compatible texture as your splat texture.  Select a texture stage and click &amp;quot;Load texture...&amp;quot; to load the texture into that texture stage.  You can change the tilesize to control how it is splatted in the visible areas.&lt;br /&gt;
&lt;br /&gt;
The blend texture works like an alpha texture, but the data is actually stored in the RGB channels, as a grey-level.  MapDesigner lets you paint or remove to and from the blend texture, which has the effect of painting splat texture on the map, or removing it.&lt;br /&gt;
&lt;br /&gt;
== Texture stages ==&lt;br /&gt;
&lt;br /&gt;
Multiple texture stages can be configured.  We use one texture stage for each splatted texture and set its operation to &amp;quot;Blend&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first texture stage - texstage1 - should be set to &amp;quot;Replace&amp;quot;, and has no blend texture.  That&#039;s because it&#039;s the base texture for the map, on top of which the other textures are painted.&lt;br /&gt;
&lt;br /&gt;
Advanced:&lt;br /&gt;
*It&#039;s possible to set other operations on the texture stages.&lt;br /&gt;
&lt;br /&gt;
== Paint splatted texture ==&lt;br /&gt;
&lt;br /&gt;
*select &amp;quot;Paint texture&amp;quot;&lt;br /&gt;
*select a texture stage&lt;br /&gt;
*set texture stage operation to &amp;quot;Blend&amp;quot; and load a texture if necessary&lt;br /&gt;
*Left click map to paint texture, right click to erase&lt;br /&gt;
*You can click &amp;quot;Save blend texture&amp;quot; to export the blend texture map&lt;br /&gt;
&lt;br /&gt;
Note that texture stages are applied in order, first 1 then 2 then 3 etc.  The later layers cover the earlier ones.&lt;br /&gt;
&lt;br /&gt;
If you click the map and nothing happens, your changes may be being masked by later layers.  You can edit the later layers to uncover your changes, or click &amp;quot;move down&amp;quot; to move your edited layer later in the queue.&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/csai/mapdesignblendediting.JPG]&lt;br /&gt;
&lt;br /&gt;
== Water ==&lt;br /&gt;
&lt;br /&gt;
Areas below zero height will be underwater:&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/csai/mapdesignwater.JPG]&lt;br /&gt;
&lt;br /&gt;
== Exported Slopemap ==&lt;br /&gt;
&lt;br /&gt;
You can use File | Export slopemap... to export a slopemap for your map.&lt;br /&gt;
&lt;br /&gt;
Black means zero slope, green is vehicles, blue is infantry, red is extreme:&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/csai/slopemap2.JPG]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Configuration is stored in config.xml ,which can be opened in notepad&lt;br /&gt;
*You can change height and width in the display section to change the window size on next startup&lt;br /&gt;
*You can configure key mappings, and mouse move configuration&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14197</id>
		<title>Maps:Map Designer</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14197"/>
		<updated>2009-09-06T14:39:46Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: /* Concepts */ corrected links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Map_development|Map Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
== MapDesigner, by Hugh Perkins ==&lt;br /&gt;
&lt;br /&gt;
[http://manageddreams.com/csai/MapDesigner.zip Download]&lt;br /&gt;
&lt;br /&gt;
*Supports multipass texture splatting.  SM3 loader.&lt;br /&gt;
*Heightmap editor.  Left click to raise land, right click to lower&lt;br /&gt;
*Paint splatted texture.  Left click to paint texture, right click to erase&lt;br /&gt;
*Export heightmap, slopemap and blend maps&lt;br /&gt;
*Exported slopemap color-coded by movement area, eg infantry, vehicle and extreme (configurable)&lt;br /&gt;
&lt;br /&gt;
Source-code repository, in git:&lt;br /&gt;
&lt;br /&gt;
git://github.com/hughperkins/SpringMapDesigner.git&lt;br /&gt;
&lt;br /&gt;
Source-code browser:&lt;br /&gt;
&lt;br /&gt;
http://github.com/hughperkins/SpringMapDesigner/tree/master&lt;br /&gt;
&lt;br /&gt;
Written in C#, using either mono or .net, both work, over gtk.net.&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
&lt;br /&gt;
[image:http://manageddreams.com/csai/mapdesigner3small.JPG]&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
&lt;br /&gt;
MapDesigner is optimized for creating SM3 maps, which use texture splatting to provide high detail maps.&lt;br /&gt;
&lt;br /&gt;
For each texture, we need:&lt;br /&gt;
*the texture, which will be tiled according to the tilesize&lt;br /&gt;
*a blend map, which controls where the texture will be visible&lt;br /&gt;
&lt;br /&gt;
The blend map is essentially an alpha map.  The areas which are white will be splatted with our texture, and the other areas will be transparent.&lt;br /&gt;
&lt;br /&gt;
The textures are rendered in layers, one by one.  The later layers cover the earlier layers, according to each one&#039;s blend map texture.  Here&#039;s some pictures that illustrate how this works.  We are rendering each layer with a vertical offset so you can see each layer on its own.&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/csai/multitextureview1.JPG]&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/csai/multitextureview2.JPG]&lt;br /&gt;
&lt;br /&gt;
[Media:http://manageddreams.com/csai/multitextureview3.JPG]&lt;br /&gt;
&lt;br /&gt;
In reality, these layers are all rendered together, with no vertical offset, so they look like they are all part of the same single terrain.&lt;br /&gt;
&lt;br /&gt;
You can use any DevIL-compatible texture as your splat texture.  Select a texture stage and click &amp;quot;Load texture...&amp;quot; to load the texture into that texture stage.  You can change the tilesize to control how it is splatted in the visible areas.&lt;br /&gt;
&lt;br /&gt;
The blend texture works like an alpha texture, but the data is actually stored in the RGB channels, as a grey-level.  MapDesigner lets you paint or remove to and from the blend texture, which has the effect of painting splat texture on the map, or removing it.&lt;br /&gt;
&lt;br /&gt;
== Texture stages ==&lt;br /&gt;
&lt;br /&gt;
Multiple texture stages can be configured.  We use one texture stage for each splatted texture and set its operation to &amp;quot;Blend&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first texture stage - texstage1 - should be set to &amp;quot;Replace&amp;quot;, and has no blend texture.  That&#039;s because it&#039;s the base texture for the map, on top of which the other textures are painted.&lt;br /&gt;
&lt;br /&gt;
Advanced:&lt;br /&gt;
*It&#039;s possible to set other operations on the texture stages.&lt;br /&gt;
&lt;br /&gt;
== Paint splatted texture ==&lt;br /&gt;
&lt;br /&gt;
*select &amp;quot;Paint texture&amp;quot;&lt;br /&gt;
*select a texture stage&lt;br /&gt;
*set texture stage operation to &amp;quot;Blend&amp;quot; and load a texture if necessary&lt;br /&gt;
*Left click map to paint texture, right click to erase&lt;br /&gt;
*You can click &amp;quot;Save blend texture&amp;quot; to export the blend texture map&lt;br /&gt;
&lt;br /&gt;
Note that texture stages are applied in order, first 1 then 2 then 3 etc.  The later layers cover the earlier ones.&lt;br /&gt;
&lt;br /&gt;
If you click the map and nothing happens, your changes may be being masked by later layers.  You can edit the later layers to uncover your changes, or click &amp;quot;move down&amp;quot; to move your edited layer later in the queue.&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignblendediting.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Water ==&lt;br /&gt;
&lt;br /&gt;
Areas below zero height will be underwater:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignwater.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Exported Slopemap ==&lt;br /&gt;
&lt;br /&gt;
You can use File | Export slopemap... to export a slopemap for your map.&lt;br /&gt;
&lt;br /&gt;
Black means zero slope, green is vehicles, blue is infantry, red is extreme:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/slopemap2.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Configuration is stored in config.xml ,which can be opened in notepad&lt;br /&gt;
*You can change height and width in the display section to change the window size on next startup&lt;br /&gt;
*You can configure key mappings, and mouse move configuration&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14196</id>
		<title>Maps:Map Designer</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14196"/>
		<updated>2009-09-06T14:39:15Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: /* MapDesigner, by Hugh Perkins */ added new repository&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Map_development|Map Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
== MapDesigner, by Hugh Perkins ==&lt;br /&gt;
&lt;br /&gt;
[http://manageddreams.com/csai/MapDesigner.zip Download]&lt;br /&gt;
&lt;br /&gt;
*Supports multipass texture splatting.  SM3 loader.&lt;br /&gt;
*Heightmap editor.  Left click to raise land, right click to lower&lt;br /&gt;
*Paint splatted texture.  Left click to paint texture, right click to erase&lt;br /&gt;
*Export heightmap, slopemap and blend maps&lt;br /&gt;
*Exported slopemap color-coded by movement area, eg infantry, vehicle and extreme (configurable)&lt;br /&gt;
&lt;br /&gt;
Source-code repository, in git:&lt;br /&gt;
&lt;br /&gt;
git://github.com/hughperkins/SpringMapDesigner.git&lt;br /&gt;
&lt;br /&gt;
Source-code browser:&lt;br /&gt;
&lt;br /&gt;
http://github.com/hughperkins/SpringMapDesigner/tree/master&lt;br /&gt;
&lt;br /&gt;
Written in C#, using either mono or .net, both work, over gtk.net.&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
&lt;br /&gt;
[image:http://manageddreams.com/csai/mapdesigner3small.JPG]&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
&lt;br /&gt;
MapDesigner is optimized for creating SM3 maps, which use texture splatting to provide high detail maps.&lt;br /&gt;
&lt;br /&gt;
For each texture, we need:&lt;br /&gt;
*the texture, which will be tiled according to the tilesize&lt;br /&gt;
*a blend map, which controls where the texture will be visible&lt;br /&gt;
&lt;br /&gt;
The blend map is essentially an alpha map.  The areas which are white will be splatted with our texture, and the other areas will be transparent.&lt;br /&gt;
&lt;br /&gt;
The textures are rendered in layers, one by one.  The later layers cover the earlier layers, according to each one&#039;s blend map texture.  Here&#039;s some pictures that illustrate how this works.  We are rendering each layer with a vertical offset so you can see each layer on its own.&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview1.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview2.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview3.JPG]]&lt;br /&gt;
&lt;br /&gt;
In reality, these layers are all rendered together, with no vertical offset, so they look like they are all part of the same single terrain.&lt;br /&gt;
&lt;br /&gt;
You can use any DevIL-compatible texture as your splat texture.  Select a texture stage and click &amp;quot;Load texture...&amp;quot; to load the texture into that texture stage.  You can change the tilesize to control how it is splatted in the visible areas.&lt;br /&gt;
&lt;br /&gt;
The blend texture works like an alpha texture, but the data is actually stored in the RGB channels, as a grey-level.  MapDesigner lets you paint or remove to and from the blend texture, which has the effect of painting splat texture on the map, or removing it.&lt;br /&gt;
&lt;br /&gt;
== Texture stages ==&lt;br /&gt;
&lt;br /&gt;
Multiple texture stages can be configured.  We use one texture stage for each splatted texture and set its operation to &amp;quot;Blend&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first texture stage - texstage1 - should be set to &amp;quot;Replace&amp;quot;, and has no blend texture.  That&#039;s because it&#039;s the base texture for the map, on top of which the other textures are painted.&lt;br /&gt;
&lt;br /&gt;
Advanced:&lt;br /&gt;
*It&#039;s possible to set other operations on the texture stages.&lt;br /&gt;
&lt;br /&gt;
== Paint splatted texture ==&lt;br /&gt;
&lt;br /&gt;
*select &amp;quot;Paint texture&amp;quot;&lt;br /&gt;
*select a texture stage&lt;br /&gt;
*set texture stage operation to &amp;quot;Blend&amp;quot; and load a texture if necessary&lt;br /&gt;
*Left click map to paint texture, right click to erase&lt;br /&gt;
*You can click &amp;quot;Save blend texture&amp;quot; to export the blend texture map&lt;br /&gt;
&lt;br /&gt;
Note that texture stages are applied in order, first 1 then 2 then 3 etc.  The later layers cover the earlier ones.&lt;br /&gt;
&lt;br /&gt;
If you click the map and nothing happens, your changes may be being masked by later layers.  You can edit the later layers to uncover your changes, or click &amp;quot;move down&amp;quot; to move your edited layer later in the queue.&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignblendediting.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Water ==&lt;br /&gt;
&lt;br /&gt;
Areas below zero height will be underwater:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignwater.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Exported Slopemap ==&lt;br /&gt;
&lt;br /&gt;
You can use File | Export slopemap... to export a slopemap for your map.&lt;br /&gt;
&lt;br /&gt;
Black means zero slope, green is vehicles, blue is infantry, red is extreme:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/slopemap2.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Configuration is stored in config.xml ,which can be opened in notepad&lt;br /&gt;
*You can change height and width in the display section to change the window size on next startup&lt;br /&gt;
*You can configure key mappings, and mouse move configuration&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14195</id>
		<title>Maps:Map Designer</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14195"/>
		<updated>2009-09-06T14:36:57Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: /* User interface */ corrected link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Map_development|Map Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
== MapDesigner, by Hugh Perkins ==&lt;br /&gt;
&lt;br /&gt;
[http://manageddreams.com/csai/MapDesigner.zip Download]&lt;br /&gt;
&lt;br /&gt;
*Supports multipass texture splatting.  SM3 loader.&lt;br /&gt;
*Heightmap editor.  Left click to raise land, right click to lower&lt;br /&gt;
*Paint splatted texture.  Left click to paint texture, right click to erase&lt;br /&gt;
*Export heightmap, slopemap and blend maps&lt;br /&gt;
*Exported slopemap color-coded by movement area, eg infantry, vehicle and extreme (configurable)&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
&lt;br /&gt;
[image:http://manageddreams.com/csai/mapdesigner3small.JPG]&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
&lt;br /&gt;
MapDesigner is optimized for creating SM3 maps, which use texture splatting to provide high detail maps.&lt;br /&gt;
&lt;br /&gt;
For each texture, we need:&lt;br /&gt;
*the texture, which will be tiled according to the tilesize&lt;br /&gt;
*a blend map, which controls where the texture will be visible&lt;br /&gt;
&lt;br /&gt;
The blend map is essentially an alpha map.  The areas which are white will be splatted with our texture, and the other areas will be transparent.&lt;br /&gt;
&lt;br /&gt;
The textures are rendered in layers, one by one.  The later layers cover the earlier layers, according to each one&#039;s blend map texture.  Here&#039;s some pictures that illustrate how this works.  We are rendering each layer with a vertical offset so you can see each layer on its own.&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview1.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview2.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview3.JPG]]&lt;br /&gt;
&lt;br /&gt;
In reality, these layers are all rendered together, with no vertical offset, so they look like they are all part of the same single terrain.&lt;br /&gt;
&lt;br /&gt;
You can use any DevIL-compatible texture as your splat texture.  Select a texture stage and click &amp;quot;Load texture...&amp;quot; to load the texture into that texture stage.  You can change the tilesize to control how it is splatted in the visible areas.&lt;br /&gt;
&lt;br /&gt;
The blend texture works like an alpha texture, but the data is actually stored in the RGB channels, as a grey-level.  MapDesigner lets you paint or remove to and from the blend texture, which has the effect of painting splat texture on the map, or removing it.&lt;br /&gt;
&lt;br /&gt;
== Texture stages ==&lt;br /&gt;
&lt;br /&gt;
Multiple texture stages can be configured.  We use one texture stage for each splatted texture and set its operation to &amp;quot;Blend&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first texture stage - texstage1 - should be set to &amp;quot;Replace&amp;quot;, and has no blend texture.  That&#039;s because it&#039;s the base texture for the map, on top of which the other textures are painted.&lt;br /&gt;
&lt;br /&gt;
Advanced:&lt;br /&gt;
*It&#039;s possible to set other operations on the texture stages.&lt;br /&gt;
&lt;br /&gt;
== Paint splatted texture ==&lt;br /&gt;
&lt;br /&gt;
*select &amp;quot;Paint texture&amp;quot;&lt;br /&gt;
*select a texture stage&lt;br /&gt;
*set texture stage operation to &amp;quot;Blend&amp;quot; and load a texture if necessary&lt;br /&gt;
*Left click map to paint texture, right click to erase&lt;br /&gt;
*You can click &amp;quot;Save blend texture&amp;quot; to export the blend texture map&lt;br /&gt;
&lt;br /&gt;
Note that texture stages are applied in order, first 1 then 2 then 3 etc.  The later layers cover the earlier ones.&lt;br /&gt;
&lt;br /&gt;
If you click the map and nothing happens, your changes may be being masked by later layers.  You can edit the later layers to uncover your changes, or click &amp;quot;move down&amp;quot; to move your edited layer later in the queue.&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignblendediting.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Water ==&lt;br /&gt;
&lt;br /&gt;
Areas below zero height will be underwater:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignwater.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Exported Slopemap ==&lt;br /&gt;
&lt;br /&gt;
You can use File | Export slopemap... to export a slopemap for your map.&lt;br /&gt;
&lt;br /&gt;
Black means zero slope, green is vehicles, blue is infantry, red is extreme:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/slopemap2.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Configuration is stored in config.xml ,which can be opened in notepad&lt;br /&gt;
*You can change height and width in the display section to change the window size on next startup&lt;br /&gt;
*You can configure key mappings, and mouse move configuration&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=716</id>
		<title>AI:HughAI</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=716"/>
		<updated>2009-09-06T14:21:00Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: added link to architecture.txt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;HughAI is a Java port of CSAI2, which was a partially refactored version of CSAI, a fast rush AI, written in C#, by Hugh Perkins.&lt;br /&gt;
&lt;br /&gt;
It is not quite ready for use as a fun interesting opponent in a real game, but it could be fun to play with by developers.  It includes a bunch of classes for deriving maps, such as slope maps, movement area maps, and los maps, from the data made available to the AI.&lt;br /&gt;
&lt;br /&gt;
It contains a GUI written in Swing, to which classes can subscribe, registering the name of a button, and a handler method to be called.&lt;br /&gt;
&lt;br /&gt;
Similarly, chat commands can be registered by the AI classes.&lt;br /&gt;
&lt;br /&gt;
More details on the architecture can be found in the file src-ai/architecture.txt, in the sources:&lt;br /&gt;
&lt;br /&gt;
http://github.com/hughperkins/HughAI/blob/f23bf8cb4353d5577599f0c531474d36342fba11/src-ai/architecture.txt&lt;br /&gt;
&lt;br /&gt;
The sources are available from the following git repository:&lt;br /&gt;
&lt;br /&gt;
git://github.com/hughperkins/HughAI.git&lt;br /&gt;
&lt;br /&gt;
Web browser page:&lt;br /&gt;
&lt;br /&gt;
http://github.com/hughperkins/HughAI/tree/master&lt;br /&gt;
&lt;br /&gt;
The AI uses hoijui&#039;s Java Interface v0.1.&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=715</id>
		<title>AI:HughAI</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:HughAI&amp;diff=715"/>
		<updated>2009-09-06T14:11:16Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: Created new page for HughAI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;HughAI is a Java port of CSAI2, which was a partially refactored version of CSAI, a fast rush AI, written in C#, by Hugh Perkins.&lt;br /&gt;
&lt;br /&gt;
It is not quite ready for use as a fun interesting opponent in a real game, but it could be fun to play with by developers.  It includes a bunch of classes for deriving maps, such as slope maps, movement area maps, and los maps, from the data made available to the AI.&lt;br /&gt;
&lt;br /&gt;
It contains a GUI written in Swing, to which classes can subscribe, registering the name of a button, and a handler method to be called.&lt;br /&gt;
&lt;br /&gt;
Similarly, chat commands can be registered by the AI classes.&lt;br /&gt;
&lt;br /&gt;
More details on the architecture can be found in the file Architecture.txt, in the sources.&lt;br /&gt;
&lt;br /&gt;
The sources are available from the following git repository:&lt;br /&gt;
&lt;br /&gt;
git://github.com/hughperkins/HughAI.git&lt;br /&gt;
&lt;br /&gt;
Web browser page:&lt;br /&gt;
&lt;br /&gt;
http://github.com/hughperkins/HughAI/tree/master&lt;br /&gt;
&lt;br /&gt;
The AI uses hoijui&#039;s Java Interface v0.1.&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:Skirmish:List&amp;diff=1079</id>
		<title>AI:Skirmish:List</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AI:Skirmish:List&amp;diff=1079"/>
		<updated>2009-09-06T14:06:31Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: /* Under Active Development */ added HughAI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main_Page|Main Page]] &amp;lt; AIs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Basics about [[AI:Skirmish|Skirmish AIs]] in Spring.&lt;br /&gt;
&lt;br /&gt;
==== Under Active Development ====&lt;br /&gt;
Listed in alphabetical order.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;[[AI:AAI|AAI]]&#039;&#039;&#039;     : config-based, by [[User:Submarine|Submarine]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:BKPAI|BKPAI]]&#039;&#039;&#039; : config-less, Kernel Panic only, by Baczek&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:HughAI|HughAI]]&#039;&#039;&#039; : config-based, Java port of CSAI, by Hugh Perkins&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:KAIK|KAIK]]&#039;&#039;&#039;   : config-less,  most competitive AI for BA, based on [[AI:KAI|KAI]] by Krogothe, now developed by Kloot&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:NTAI|NTai]]&#039;&#039;&#039;   : config-based, the longest running AI, currently non-functional, by [[User:AF|AF]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:RAI|RAI]]&#039;&#039;&#039;     : config-less,  supports more mods then KAIK, by Reth&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:C.R.A.I.G.|C.R.A.I.G.]]&#039;&#039;&#039;     : config-based, currently [http://spring1944.net/ Spring 1944] and [http://www.imperialwinter.com/ SWIW] only, by Tobi&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Special ====&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;[[AI:NullAI|NullAI]]&#039;&#039;&#039;                    : C Test AI, does nothing&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:NullLegacyCppAI|NullLegacyCppAI]]&#039;&#039;&#039;  : Legacy C++ Test AI, does nothing&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:NullJavaAI|NullJavaAI]]&#039;&#039;&#039;            : basic Java Test AI, does nothing&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:NullOOJavaAI|NullOOJavaAI]]&#039;&#039;&#039;        : Java Test AI using the OO wrapper, does nothing&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[Random enemies]]&#039;&#039;&#039;                      : Generates random enemies at enemy starting positions who then seek you out. This is not really a Skirmish AI, but rather what was in place before Skirmish AIs for spring existed.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== No Longer Under Development ====&lt;br /&gt;
None of these AIs will work with the current spring release version.&lt;br /&gt;
They are listed here, in case someone wants to take up development again,&lt;br /&gt;
and for code reference.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;[[AI:CSAI|CSAI]]&#039;&#039;&#039;   : C# AI, by Hugh Perkins&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:JAI|JAI]]&#039;&#039;&#039;     : first try at writing an AI in Java, by [[User:hoijui|hoijui]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:JCAI|JCAI]]&#039;&#039;&#039;   : by Zaphod&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:KAI|KAI]]&#039;&#039;&#039;     : by Krogothe&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:MyAI|MyAI]]&#039;&#039;&#039;   : An earlier AI, by Berion&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:OTAI|OTAI]]&#039;&#039;&#039;   : V1.13, An AI aimed at emulating the AI in OTA, by Veylon&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:QAI|QAI]]&#039;&#039;&#039;     : V2.42, A half finished AI, by Qman&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:SAI|SAI]]&#039;&#039;&#039;     : V0.15, by Spectre&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:TSI|TSI]]&#039;&#039;&#039;     : A Polish project, originally based on [[AI:SAI|SAI]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:TAI|TAI]]&#039;&#039;&#039;     : replaced by [[AI:NTAI|NTai]], by [[User:AF|AF]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:ZcAIn|ZcAIn]]&#039;&#039;&#039; : by Cain&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Planned For Development ====&lt;br /&gt;
; &#039;&#039;&#039;[[AI:Epic|Epic]]&#039;&#039;&#039;   : Next Gen AI, planned by [[User:AF|AF]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
; &#039;&#039;&#039;[[AI:GAI|GAI]]&#039;&#039;&#039;     : Groovy AI, planned by Agon &amp;amp; [[User:hoijui|hoijui]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: AI]]&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Building_Spring_on_Linux&amp;diff=3337</id>
		<title>Building Spring on Linux</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Building_Spring_on_Linux&amp;diff=3337"/>
		<updated>2009-09-06T14:05:18Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: /* Full list */ added name of 7zip ubuntu package &amp;#039;p7zip-full&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Building_spring|Building Spring]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
= Build From Source on Linux =&lt;br /&gt;
If prefer to use your distributions package system, refer to the Linux [[SetupGuide]].&lt;br /&gt;
&lt;br /&gt;
If there is no package tailored for your distribution, you have to install from sources manually. Doing this for distributions where packages are available is not recommended.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font style=&amp;quot;color: #f44&amp;quot;&amp;gt;&#039;&#039;&#039;Warning: Be carefull when building from source. You might encounter sync errors in online play if you are using special compilers (all GCC from the 4.x series should be safe) or unstandard compiler settings (be carefull about -march)!&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Obtaining the Source ==&lt;br /&gt;
{{Obtaining_The_Source_Code}}&lt;br /&gt;
&lt;br /&gt;
= Get Dependencies =&lt;br /&gt;
&lt;br /&gt;
You will need to install some development packages Spring depends on. These vary from distro to distro and may also depend on your specific configuration.&lt;br /&gt;
&lt;br /&gt;
If your distributions is not listed below, you should be able to figure out the correct package names from this. The scons configure will whine if you forget something, but it does not check if you remembered to install zip, even though you still need it.&lt;br /&gt;
&lt;br /&gt;
== Full list ==&lt;br /&gt;
* Programs necessary to build&lt;br /&gt;
** cmake (or scons)&lt;br /&gt;
** 7zip (aka p7zip (package &#039;p7zip-full&#039; on Ubuntu))&lt;br /&gt;
** The usual build toolchain&lt;br /&gt;
*** gcc&lt;br /&gt;
*** make&lt;br /&gt;
* Libraries&lt;br /&gt;
** SDL&lt;br /&gt;
** boost (version 1.35 or later)&lt;br /&gt;
*** threads&lt;br /&gt;
*** regex&lt;br /&gt;
*** signals&lt;br /&gt;
*** system&lt;br /&gt;
** DeviL (IL, ILU)&lt;br /&gt;
** OpenAL (openal-soft, older openal-0.0.8 does not work)&lt;br /&gt;
** OpenGL headers (mesa, glew, etc.)&lt;br /&gt;
** zlib&lt;br /&gt;
** freetype&lt;br /&gt;
** ogg,vorbis and vorbisfile&lt;br /&gt;
* Optional, for bindings and Ais&lt;br /&gt;
** Python (2.5)&lt;br /&gt;
** Java-SDK&lt;br /&gt;
&lt;br /&gt;
== Debian ==&lt;br /&gt;
&lt;br /&gt;
For Etch (debian 4.0 stable) and Sid (debian unstable), I&#039;ve confirmed the&lt;br /&gt;
following to be the minimal set that is necessary to get. This works with Ubuntu 8.10, too.&lt;br /&gt;
The version of spring from git repository depends on boost at least version 1.35.* (if your distro is behind you can try [https://launchpad.net/~pgquiles/+archive/ppa some unofficial backports]) and won&#039;t work on lower versions. &lt;br /&gt;
&lt;br /&gt;
Also, on 64-bit be sure to build against devIl 1.6.8-rc2 or higher, 1.6.7 has a bug in the PNG loading code that causes issues.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo aptitude install build-essential zlib1g-dev libfreetype6-dev&lt;br /&gt;
sudo aptitude install libsdl1.2-dev libopenal-dev libglew-dev libboost-dev&lt;br /&gt;
sudo aptitude install libboost-thread-dev libboost-regex-dev libdevil-dev&lt;br /&gt;
sudo aptitude install libboost-serialization-dev zip&lt;br /&gt;
sudo aptitude install libboost-program-options-dev&lt;br /&gt;
sudo aptitude install libvorbis-dev libxcursor-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
and either scons and python2.5-dev or cmake, depending on what you use for building (I advise to use cmake).  On debian 5.0 (lenny), libglew1.5-dev is required as well.&lt;br /&gt;
&lt;br /&gt;
== Gentoo ==&lt;br /&gt;
This has been tested to work with a clean install of gentoo 2008.0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
emerge cmake \&amp;gt;=media-libs/freetype-2.0.0 \&amp;gt;=media-libs/libsdl-1.2.0&lt;br /&gt;
emerge media-libs/openal media-libs/glew dev-libs/boost&lt;br /&gt;
emerge app-arch/zip media-libs/libogg&lt;br /&gt;
USE=&amp;quot;png jpg tiff opengl&amp;quot; emerge media-libs/devil &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
&lt;br /&gt;
On Fedora 8, these dependencies should be sufficient:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install cmake boost-devel openal-devel SDL-devel \&lt;br /&gt;
DevIL-devel glew-devel libvorbis-devel &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Build And Install =&lt;br /&gt;
&lt;br /&gt;
== Using CMake (2.6 or newer) ==&lt;br /&gt;
Configure and build:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake .&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Your paths are: Spring executable in &amp;lt;code&amp;gt;/usr/local/games/spring&amp;lt;/code&amp;gt; and&lt;br /&gt;
read-only data in &amp;lt;code&amp;gt;/usr/local/share/games/spring&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Using Scons ==&lt;br /&gt;
Configure and build:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
scons configure&lt;br /&gt;
scons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
scons install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{{Finalizing_linux_install}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{{Troubleshooting_linux}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Compiling]]&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Lua:Main&amp;diff=10853</id>
		<title>Lua:Main</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Lua:Main&amp;diff=10853"/>
		<updated>2008-11-07T06:11:25Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Lua FAQ&#039;&#039;&#039;&amp;lt;br&amp;gt; &lt;br /&gt;
[[Lua_Beginners_FAQ]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[:Category:Lua]] (shows which interfaces are loaded by LuaUI,LuaRules,etc.)&amp;lt;br&amp;gt;&lt;br /&gt;
[http://spring.clan-sy.com/phpbb/viewtopic.php?f=23&amp;amp;t=15596 Forum topic with some basic information about gadgets]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://spring.clan-sy.com/phpbb/viewtopic.php?f=23&amp;amp;t=16223 Forum topic with a manual on Spring lua scripting]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interfaces&#039;&#039;&#039; &amp;lt;font color=#55ee99&amp;gt;(last update: 76b1)&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
{{LuaInterfaces}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Other useful tables&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[LuaCallinReturn]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[WeaponDefNames]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[UnitDefNames]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official Lua documentation&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.lua.org/pil/ &#039;Programming in Lua&#039; book online]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.lua.org/manual/5.1/ Lua 5.1 Reference manual]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://lua-users.org/wiki/TutorialDirectory Lua tutorials]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;old Wikis&#039;&#039;&#039; &amp;lt;font color=red&amp;gt;(outdated)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Lua_SyncedInterface]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Units:LuaCOB]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Lua_Startscripts]]&amp;lt;/font&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=SpringEngineTODO&amp;diff=17090</id>
		<title>SpringEngineTODO</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=SpringEngineTODO&amp;diff=17090"/>
		<updated>2008-11-07T05:55:40Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This page is badly out of date. Some of these items have been done, abandoned or replaced with better ideas.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Here is a TODO list for anyone interested in developing the spring code. If you are not involved in the development, please contact one of the developers first before you add things here.&lt;br /&gt;
&lt;br /&gt;
* Implement saving/loading. There are a lot of direct LoadSave() functions in the game code, but the easier way would probably to finish the serialization in the class registration type interfaces (rts/System/creg), so everything can be serialized automatically. &lt;br /&gt;
&lt;br /&gt;
* [[Syncing System|Implement re-sync]]. After a sync problem is detected, and a re-sync of the random seed does not fix it the game would pause and use the rsync to adjust game state (current plan if for float3 data) to resync, as suggested by Jesse Schoch in [http://lolut.utbm.info/pipermail/taspring-linux/2006-February/000810.html]. After using rsync on it should be able to continue normally until the next sync error is detected.&lt;br /&gt;
&lt;br /&gt;
* Abstract and improve unit rendering:&lt;br /&gt;
** 3DO/S3O support is not abstracted, many parts of unit rendering are spread throughout spring and assume 3DO, and the rendering is a messy mixture of 3DO and S3O stuff. Abstracting the model rendering with a sort of IModel and IModelInstance interfaces would allow adding other model formats as well (Such as a skeletal animation format).&lt;br /&gt;
&lt;br /&gt;
* Implement a general sensor system replacing the radars, as described in http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6105&lt;br /&gt;
&lt;br /&gt;
* Add a dynamic-lighting system: Allow units to have dynamic lights on them that affect lighting of other units and landscape, with sort of &amp;quot;approximating lights&amp;quot; for cases where a lot of units get close together. This is a big thing, but it would improve spring graphics a lot if done well. Or Deferred Lighting/Shading?&lt;br /&gt;
&lt;br /&gt;
* Fix the left-click/right-click thing, preferably make it possible to configure mouse / keyboard settings.&lt;br /&gt;
&lt;br /&gt;
* Get a mac version working. Contact the developers on the forums for this, as there are people looking into this already.&lt;br /&gt;
&lt;br /&gt;
Even though this isn&#039;t really about the Spring engine:&lt;br /&gt;
&lt;br /&gt;
* SpringLobby is a cross-platform lobby client, implemented in C++ and wxWidgets. We encourage you to look into our todo list on http://springlobby.info and see what you could do for it.&lt;br /&gt;
&lt;br /&gt;
Lua:&lt;br /&gt;
&lt;br /&gt;
* Create a Mission Development Kit: ie, do whatever it takes to make it easy to create campaign missions, eg create a gui tool that makes it easy to place units on the map, create triggers, and so on.&lt;br /&gt;
&lt;br /&gt;
[[Category:Source development]]&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=SpringEngineTODO&amp;diff=17089</id>
		<title>SpringEngineTODO</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=SpringEngineTODO&amp;diff=17089"/>
		<updated>2008-11-07T05:54:43Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This page is badly out of date. Some of these items have been done, abandoned or replaced with better ideas.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Here is a TODO list for anyone interested in developing the spring code. If you are not involved in the development, please contact one of the developers first before you add things here.&lt;br /&gt;
&lt;br /&gt;
* Implement saving/loading. There are a lot of direct LoadSave() functions in the game code, but the easier way would probably to finish the serialization in the class registration type interfaces (rts/System/creg), so everything can be serialized automatically. &lt;br /&gt;
&lt;br /&gt;
* [[Syncing System|Implement re-sync]]. After a sync problem is detected, and a re-sync of the random seed does not fix it the game would pause and use the rsync to adjust game state (current plan if for float3 data) to resync, as suggested by Jesse Schoch in [http://lolut.utbm.info/pipermail/taspring-linux/2006-February/000810.html]. After using rsync on it should be able to continue normally until the next sync error is detected.&lt;br /&gt;
&lt;br /&gt;
* Abstract and improve unit rendering:&lt;br /&gt;
** 3DO/S3O support is not abstracted, many parts of unit rendering are spread throughout spring and assume 3DO, and the rendering is a messy mixture of 3DO and S3O stuff. Abstracting the model rendering with a sort of IModel and IModelInstance interfaces would allow adding other model formats as well (Such as a skeletal animation format).&lt;br /&gt;
&lt;br /&gt;
* Implement a general sensor system replacing the radars, as described in http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6105&lt;br /&gt;
&lt;br /&gt;
* Add a dynamic-lighting system: Allow units to have dynamic lights on them that affect lighting of other units and landscape, with sort of &amp;quot;approximating lights&amp;quot; for cases where a lot of units get close together. This is a big thing, but it would improve spring graphics a lot if done well. Or Deferred Lighting/Shading?&lt;br /&gt;
&lt;br /&gt;
* Fix the left-click/right-click thing, preferably make it possible to configure mouse / keyboard settings.&lt;br /&gt;
&lt;br /&gt;
* Get a mac version working. Contact the developers on the forums for this, as there are people looking into this already.&lt;br /&gt;
&lt;br /&gt;
Even though this isn&#039;t really about the Spring engine:&lt;br /&gt;
&lt;br /&gt;
* SpringLobby is a cross-platform lobby client, implemented in C++ and wxWidgets. We encourage you to look into our todo list on http://springlobby.info and see what you could do for it.&lt;br /&gt;
&lt;br /&gt;
Lua:&lt;br /&gt;
&lt;br /&gt;
* Create a Mission Development Kit: ie, do whatever it takes to make it easy to create campaign missions, eg create a gui tool that makes it easy to place units on the map, create triggers, and so on.&lt;br /&gt;
&lt;br /&gt;
Monthly Topic Rotation:&lt;br /&gt;
&lt;br /&gt;
* [[Monthly_Topic_Rotation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Source development]]&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=SpringEngineTODO&amp;diff=17088</id>
		<title>SpringEngineTODO</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=SpringEngineTODO&amp;diff=17088"/>
		<updated>2008-11-07T05:54:16Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This page is badly out of date. Some of these items have been done, abandoned or replaced with better ideas.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Here is a TODO list for anyone interested in developing the spring code. If you are not involved in the development, please contact one of the developers first before you add things here.&lt;br /&gt;
&lt;br /&gt;
* Implement saving/loading. There are a lot of direct LoadSave() functions in the game code, but the easier way would probably to finish the serialization in the class registration type interfaces (rts/System/creg), so everything can be serialized automatically. &lt;br /&gt;
&lt;br /&gt;
* [[Syncing System|Implement re-sync]]. After a sync problem is detected, and a re-sync of the random seed does not fix it the game would pause and use the rsync to adjust game state (current plan if for float3 data) to resync, as suggested by Jesse Schoch in [http://lolut.utbm.info/pipermail/taspring-linux/2006-February/000810.html]. After using rsync on it should be able to continue normally until the next sync error is detected.&lt;br /&gt;
&lt;br /&gt;
* Abstract and improve unit rendering:&lt;br /&gt;
** 3DO/S3O support is not abstracted, many parts of unit rendering are spread throughout spring and assume 3DO, and the rendering is a messy mixture of 3DO and S3O stuff. Abstracting the model rendering with a sort of IModel and IModelInstance interfaces would allow adding other model formats as well (Such as a skeletal animation format).&lt;br /&gt;
&lt;br /&gt;
* Implement a general sensor system replacing the radars, as described in http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6105&lt;br /&gt;
&lt;br /&gt;
* Add a dynamic-lighting system: Allow units to have dynamic lights on them that affect lighting of other units and landscape, with sort of &amp;quot;approximating lights&amp;quot; for cases where a lot of units get close together. This is a big thing, but it would improve spring graphics a lot if done well. Or Deferred Lighting/Shading?&lt;br /&gt;
&lt;br /&gt;
* Fix the left-click/right-click thing, preferably make it possible to configure mouse / keyboard settings.&lt;br /&gt;
&lt;br /&gt;
* Get a mac version working. Contact the developers on the forums for this, as there are people looking into this already.&lt;br /&gt;
&lt;br /&gt;
Even though this isn&#039;t really about the Spring engine:&lt;br /&gt;
&lt;br /&gt;
* SpringLobby is a cross-platform lobby client, implemented in C++ and wxWidgets. We encourage you to look into our todo list on http://springlobby.info and see what you could do for it.&lt;br /&gt;
&lt;br /&gt;
Lua:&lt;br /&gt;
&lt;br /&gt;
* Create a Mission Development Kit: ie, do whatever it takes to make it easy to create campaign missions, eg create a gui tool that makes it easy to place units on the map, create triggers, and so on.&lt;br /&gt;
&lt;br /&gt;
Monthly Topic Rotation:&lt;br /&gt;
&lt;br /&gt;
* [Monthly_Topic_Rotation]&lt;br /&gt;
&lt;br /&gt;
[[Category:Source development]]&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=SpringEngineTODO&amp;diff=17087</id>
		<title>SpringEngineTODO</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=SpringEngineTODO&amp;diff=17087"/>
		<updated>2008-11-07T05:53:10Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This page is badly out of date. Some of these items have been done, abandoned or replaced with better ideas.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Here is a TODO list for anyone interested in developing the spring code. If you are not involved in the development, please contact one of the developers first before you add things here.&lt;br /&gt;
&lt;br /&gt;
* Implement saving/loading. There are a lot of direct LoadSave() functions in the game code, but the easier way would probably to finish the serialization in the class registration type interfaces (rts/System/creg), so everything can be serialized automatically. &lt;br /&gt;
&lt;br /&gt;
* [[Syncing System|Implement re-sync]]. After a sync problem is detected, and a re-sync of the random seed does not fix it the game would pause and use the rsync to adjust game state (current plan if for float3 data) to resync, as suggested by Jesse Schoch in [http://lolut.utbm.info/pipermail/taspring-linux/2006-February/000810.html]. After using rsync on it should be able to continue normally until the next sync error is detected.&lt;br /&gt;
&lt;br /&gt;
* Abstract and improve unit rendering:&lt;br /&gt;
** 3DO/S3O support is not abstracted, many parts of unit rendering are spread throughout spring and assume 3DO, and the rendering is a messy mixture of 3DO and S3O stuff. Abstracting the model rendering with a sort of IModel and IModelInstance interfaces would allow adding other model formats as well (Such as a skeletal animation format).&lt;br /&gt;
&lt;br /&gt;
* Implement a general sensor system replacing the radars, as described in http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6105&lt;br /&gt;
&lt;br /&gt;
* Add a dynamic-lighting system: Allow units to have dynamic lights on them that affect lighting of other units and landscape, with sort of &amp;quot;approximating lights&amp;quot; for cases where a lot of units get close together. This is a big thing, but it would improve spring graphics a lot if done well. Or Deferred Lighting/Shading?&lt;br /&gt;
&lt;br /&gt;
* Fix the left-click/right-click thing, preferably make it possible to configure mouse / keyboard settings.&lt;br /&gt;
&lt;br /&gt;
* Get a mac version working. Contact the developers on the forums for this, as there are people looking into this already.&lt;br /&gt;
&lt;br /&gt;
Even though this isn&#039;t really about the Spring engine:&lt;br /&gt;
&lt;br /&gt;
* SpringLobby is a cross-platform lobby client, implemented in C++ and wxWidgets. We encourage you to look into our todo list on http://springlobby.info and see what you could do for it.&lt;br /&gt;
&lt;br /&gt;
Lua:&lt;br /&gt;
&lt;br /&gt;
* Create a Mission Development Kit: ie, do whatever it takes to make it easy to create campaign missions, eg create a gui tool that makes it easy to place units on the map, create triggers, and so on.&lt;br /&gt;
&lt;br /&gt;
[[Category:Source development]]&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Building_spring&amp;diff=3725</id>
		<title>Building spring</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Building_spring&amp;diff=3725"/>
		<updated>2008-11-07T05:51:02Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: /* Development Suggestions */ Replaced &amp;quot;list of example projects&amp;quot; link with &amp;quot;SpringEngineTODO&amp;quot; link, which is way more comprehensive and up to date&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;NOTE: Outlined below is information on assisting with the development of the Spring source itself. For information about developing a mod (units, widgets, maps, etc.) see the [[Mod_and_Unit_development]] page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Even if you are developing a mod, it is highly recommended that you get the engine source. Engine source + full text search: DO IT.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Below you can find information on how to work with the Spring source in the current mainline (Windows platform) if you like to work on another platform (Linux &amp;amp; Mac) please look at the bottem of this page under &amp;quot;Multiplatform development&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Starting Development==&lt;br /&gt;
To start development, you will need&lt;br /&gt;
#To read the [[Coding_Standards]]&lt;br /&gt;
#The latest version of the source &lt;br /&gt;
#A good code manipulation program&lt;br /&gt;
#Compiling your modified source&lt;br /&gt;
&lt;br /&gt;
== Keep track what others do ==&lt;br /&gt;
If you develop with others, you need to know what they do. We have [http://spring.clan-sy.com/fisheye/ fisheye], a very handy SVN helper, and [http://spring.clan-sy.com/websvn/ WebSVN] running on the server.&lt;br /&gt;
&lt;br /&gt;
===Source Code Documentation===&lt;br /&gt;
A good place to start is [http://buildbot.no-ip.org/~buildbot/spring/doxygen the source code documentation].&lt;br /&gt;
&lt;br /&gt;
An explanation on how the code is executed in game can be found in the [[Spring Engine Code]]&lt;br /&gt;
page.&lt;br /&gt;
&lt;br /&gt;
==Obtaining the Source==&lt;br /&gt;
The latest SVN is at: [https://spring.clan-sy.com/svn/spring https://spring.clan-sy.com/svn/spring]&amp;lt;br&amp;gt;&lt;br /&gt;
A hourly updated read-only mirror is available at: svn://caspring.org:3691/&lt;br /&gt;
&lt;br /&gt;
Another option is to manually [http://spring.clan-sy.com/download.php download] it along with the latest released version of the game. However, for serious developers, a better way would be to download the source straight from the subversion (SVN) repository. This will also allow you to make a patch out of the changes you make to the code, and send it to one of the developers with SVN access.&lt;br /&gt;
&lt;br /&gt;
Windows SVN clients : [http://subversion.tigris.org Subversion] (Win32-Console), &lt;br /&gt;
[http://www.syntevo.com/smartsvn/index.jsp SmartSVN] (Java) and [http://tortoisesvn.tigris.org TortoiseSVN] (MSI).&lt;br /&gt;
&lt;br /&gt;
Assuming that you are using the Subversion svn client you can download the latest SVN source with one of the following commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;svn.exe checkout https://spring.clan-sy.com/svn/spring/trunk&amp;lt;br&amp;gt;&lt;br /&gt;
svn.exe checkout svn://caspring.org:3691/trunk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It will create a trunk subdirectory in the directory from where you ran it, which will contain the source code root directory which will be later referred to as /spring&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using Git rather than SVN, you need to initialize local repository and fetch using:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;git-svn clone https://spring.clan-sy.com/svn/spring&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(this may take a while)&lt;br /&gt;
&lt;br /&gt;
To update your local repository, use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;git-svn fetch https://spring.clan-sy.com/svn/spring&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Learning C++==&lt;br /&gt;
You will need to know C++ to modify or understand Spring&#039;s source code. If you are interested in learning C++, see [[Learning_CPP]]&lt;br /&gt;
&lt;br /&gt;
However please note that badly designed code (code created by a C++ novice for example), even if working will likely not be included in the spring code. Spring is a large project, and therefore it is necessary to stay away from hack jobs and create general solutions to problems.&lt;br /&gt;
&lt;br /&gt;
==Setting up your development environment==&lt;br /&gt;
You have either to use the SCons build system that is multi platform, or use Microsoft Visual Studio for building spring. See also [[Development_IDEs]] for some more background information about the IDE to choose.&lt;br /&gt;
&lt;br /&gt;
===Visual Studio 8 (2005)===&lt;br /&gt;
(possibly the free Express Edition) &lt;br /&gt;
&lt;br /&gt;
* Install the [http://spring.clan-sy.com/dl/spring-vc8libs.exe vclibs library package]. You need to install this in the /spring directory from the SVN checkout or the zipped source. If done right, it will look like:&lt;br /&gt;
**/spring/&lt;br /&gt;
**/spring/installer&lt;br /&gt;
**/spring/rts&lt;br /&gt;
**/spring/... other dirs&lt;br /&gt;
**/spring/vclibs&lt;br /&gt;
* Install the [http://msdn.microsoft.com/directx/sdk/ DirectX SDK]&lt;br /&gt;
* Install the PlatformSDK. I got away with unchecking the parts of the PlatformSDK that were obviously not related (IIS, web stuff). Makes for a smaller download. Make &#039;&#039;&#039;sure&#039;&#039;&#039; the Platform SDK and DirectX SDK are in the VS search/include directories:&lt;br /&gt;
* After installing them, open Visual C++. Click Tools &amp;gt;&amp;gt; Options &amp;gt;&amp;gt; Projects and Solutions &amp;gt;&amp;gt; VC++ Directories. Add these entries to the corresponding sections (paths just a reference, yours may be different):&lt;br /&gt;
**Include files:&lt;br /&gt;
***$(ProgramFiles)\Microsoft DirectX SDK (August 2007)\Include&lt;br /&gt;
***$(ProgramFiles)\Microsoft Platform SDK\include&lt;br /&gt;
**Library files:&lt;br /&gt;
***$(ProgramFiles)\Microsoft DirectX SDK (August 2007)\Lib\x86 (Might need \x64 on a 64-bit platform, I don&#039;t know.)&lt;br /&gt;
***$(ProgramFiles)\Microsoft Platform SDK\lib&lt;br /&gt;
* Open the solution. /spring/rts/build/vstudio8/rts.sln&lt;br /&gt;
* Start building (usually you want to select the release/no debug build, debug is really too slow and is used only when you really know what you want to test)&lt;br /&gt;
* Select the working directory in the project properties, otherwise spring will not work correctly&lt;br /&gt;
&lt;br /&gt;
===Visual Studio 9 (2008)===&lt;br /&gt;
(possibly the free Express Edition)&lt;br /&gt;
&lt;br /&gt;
Not yet fully working as far as I know; you need at least this hotfix from Microsoft though:&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/946040&lt;br /&gt;
&lt;br /&gt;
For the rest the Visual Studio 8 instructions should apply, mostly.&lt;br /&gt;
&lt;br /&gt;
===SCONS/MinGW===&lt;br /&gt;
Code::Blocks and Dev C++ use MinGW too, so if you are using one of these IDEs, you&#039;ll want to follow these instructions too.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Getting the compiler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can compile spring either with MinGW version 3 or 4. MinGW 4.2.1 is used for spring release builds (cross compiled on Linux). Therefore, version 4 is recommended.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;MinGW 3&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you do not have MinGW installed yet, the easiest way to get it, is to install it together with one of the two IDEs [http://downloads.sourceforge.net/dev-cpp/devcpp-4.9.9.2_setup.exe Dev-C++] or [http://downloads.sourceforge.net/codeblocks/codeblocks-8.02mingw-setup.exe Code::Blocks]. They both come with MinGW 3.4, which still compiles spring correctly (June 2008). Use [http://spring.clan-sy.com/dl/spring-mingwlibs-v10.exe v10 of the MinGW library package] if you have MinGW 3.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;MinGW 4 (recommended)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t yet have it, go to [http://sf.net/project/showfiles.php?group_id=2435 the MinGW download page], and get at least the following packages (MinGW 4.3.0):&lt;br /&gt;
* mingw-runtime&lt;br /&gt;
* core&lt;br /&gt;
* c++&lt;br /&gt;
* java (if MinGW 4.3.1 is out yet, you dont need this)&lt;br /&gt;
* binutils&lt;br /&gt;
* win32api&lt;br /&gt;
Use [http://spring.jobjol.nl/show_file.php?id=1102 v11 of the MinGW library package] if you have MinGW 4.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Compiling spring&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Make sure you install the MinGW library package in the checkout directory, so the path is: /spring/mingwlibs. If done right, it will look like:&lt;br /&gt;
**/spring/&lt;br /&gt;
**/spring/installer&lt;br /&gt;
**/spring/rts&lt;br /&gt;
**/spring/... other dirs&lt;br /&gt;
**/spring/mingwlibs&lt;br /&gt;
&lt;br /&gt;
These programs are a must have if you want to compile Spring with MinGW, so install them now, if you don&#039;t have them already.&lt;br /&gt;
&lt;br /&gt;
*[http://www.python.org/ftp/python/2.5.1/python-2.5.1.msi Python 2.5 installer]&lt;br /&gt;
*[http://downloads.sourceforge.net/pywin32/pywin32-210.win32-py2.5.exe Python 2.5 win32 extensions installer] &lt;br /&gt;
*[http://prdownloads.sourceforge.net/scons/scons-0.96.96.win32.exe Scons 0.96 installer]&lt;br /&gt;
*[http://www.cmake.org/files/v2.6/cmake-2.6.0-win32-x86.exe CMake 2.6 installer]&lt;br /&gt;
&lt;br /&gt;
Oh, and quick instructions:&lt;br /&gt;
&lt;br /&gt;
* Grab and install the above programs.&lt;br /&gt;
* Make sure C:\Python25, C:\Python25\Scripts and C:\Dev-Cpp\bin are in your PATH environment variable. Set environment variables by: Start -&amp;gt; Settings -&amp;gt; Control Panel -&amp;gt; System -&amp;gt; Advanced -&amp;gt; Environment variables (for Windows XP).&lt;br /&gt;
* Make sure a MINGDIR environment variable with value C:\Dev-Cpp exists. (change paths where appropriate.)&lt;br /&gt;
* Checkout the Spring SVN repository, following the instructions above in obtaining source. (TODO:link)&lt;br /&gt;
* Open a console (Start -&amp;gt; Run -&amp;gt; cmd.exe -&amp;gt; Run), cd \where you checked it out in the previous step, if you checked it out on a different drive make sure to change drives with DriveLetter:&amp;lt;enter&amp;gt; first.&lt;br /&gt;
* Type scons configure&amp;lt;enter&amp;gt;. Refer to scons --help for options which can be passed to scons configure. Gotchas:&lt;br /&gt;
** If you get an error message starting with &amp;quot;EOFError: : env = Environement...&amp;quot;, try deleting the file build/scons_signatures.dblite&lt;br /&gt;
** If you get an error message stating &amp;quot;ImportError: No module named win32file:&amp;quot;, you have probably not installed the python-win32-extensions.&lt;br /&gt;
** If all proceeds as intended you will see a message similar to: &amp;quot;Everything seems OK.  Run `scons&#039; now to build.&amp;quot;&lt;br /&gt;
* Type scons&amp;lt;enter&amp;gt; to start the compilation.&lt;br /&gt;
** If you have Delphi installed and get an error message that the commandline params &amp;quot;--no-print-directory&amp;quot; &amp;amp; &amp;quot;-C&amp;quot; aren&#039;t supported, then you should remove the Delphi dirs from your &amp;lt;i&amp;gt;PATH&amp;lt;/i&amp;gt; variable, because scons tried to run the delphi&#039;s make.exe instead of using mingw32-make. (this will cause that streflop can&#039;t be build!)&lt;br /&gt;
* Wait for the compilation to finish, this may take a while.&lt;br /&gt;
* Copy datafiles and stuff from official Spring installation to the /spring/game directory (where spring.exe is located, after the compilation finished.)&lt;br /&gt;
* Copy missing DLLs from mingwlibs/dll.&lt;br /&gt;
* Start developing.&lt;br /&gt;
&lt;br /&gt;
If you are using Linux, refer to the [[SetupGuide]] to build Spring and get it running.&lt;br /&gt;
&lt;br /&gt;
=== CMake/GCC ===&lt;br /&gt;
Currently the CMake scripts are not capable of generating Visual Studio project files, so CMake can only be used for gcc compiling.&lt;br /&gt;
&lt;br /&gt;
* Install CMake (must be at least version 2.6.0) from either www.cmake.org or through your distributions package manager&lt;br /&gt;
* get the source code (from svn, tarballs...)&lt;br /&gt;
==== The GUI method ====&lt;br /&gt;
CMake offers a nice Qt4 gui to ease the following steps (to use the gui explained here, cmake must be at least version 2.6.1). Doing so should be straightforward:&lt;br /&gt;
* select source directory&lt;br /&gt;
* select (and/or create) build directory where temporary files are stored&lt;br /&gt;
* hit configure button&lt;br /&gt;
* choose your build type:&lt;br /&gt;
** Unix makefile if you are using linux and want to compile linux executables&lt;br /&gt;
** mingw makefiles if you are working on windows&lt;br /&gt;
** Unix makefile with cross compiler setup to cross-compile mingw32 executables, you have to select the toolchain file you want to use (see below)&lt;br /&gt;
* configure variables to your need (move the mouse over the options and read the tooltip for further informations on them and or see Section &amp;quot;Options&amp;quot;)&lt;br /&gt;
* push generate button&lt;br /&gt;
* open commandline and do &amp;quot;make&amp;quot; and &amp;quot;make install&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== The commandline method ====&lt;br /&gt;
Only works with the linux version of cmake, and is easiely scriptable.&lt;br /&gt;
* cd to (and/or create) build directory where temporary files are stored&lt;br /&gt;
* &amp;quot;cmake &amp;lt;path to source tree&amp;gt; &amp;lt;options&amp;gt;&amp;quot; where:&lt;br /&gt;
** &amp;lt;path to source tree&amp;gt; is the path to the spring source directory&lt;br /&gt;
**  &amp;lt;options&amp;gt; are defined like &amp;quot;-D&amp;lt;option name&amp;gt;=&amp;lt;value&amp;gt;&lt;br /&gt;
* depending on your settings you may need to run &amp;quot;cmake ...&amp;quot; twice&lt;br /&gt;
* run &amp;quot;make&amp;quot; and &amp;quot;make install&amp;quot;&lt;br /&gt;
* PACKAGE MAINTAINERS:&lt;br /&gt;
** doing &amp;quot;make install DESTDIR=/some/path&amp;quot; will install spring in the specified place, putting files in subdirectories like configured. This may be helpfull when making packages so spring don&#039;T get installed on your system for real (see also CMake FAQ [[http://www.vtk.org/Wiki/CMake_FAQ#Does_CMake.27s_.22make_install.22_support_DESTDIR.3F]]).&lt;br /&gt;
** You need to update the mime database (update-mime-database) and the kde database (kbuildsycoca) after installing to make the system aware of the newly installed mime types and desktop shortcuts.&lt;br /&gt;
&lt;br /&gt;
==== Some Options Explained ====&lt;br /&gt;
* MINGWLIBS: directory where the [http://spring.jobjol.nl/show_file.php?id=1102 v11 of the MinGW library package is] (only needed when compiling with mingw)&lt;br /&gt;
* CMAKE_BUILD_TYPE: either RELEASE, DEBUG, DEBUG2, DEBUG3 which compiler options to use&lt;br /&gt;
* CMAKE_INSTALL_PREFIX: installation prefix (defaults to /usr/local) defines the base directory for installing&lt;br /&gt;
* DATADIR, LIBDIR, BINDIR: where to install data, libraries or binaries (relative paths are based on CMAKE_INSTALL_PREFIX, absolute paths are absolute (DESTDIR is still respected))&lt;br /&gt;
* APPLICATIONS_DIR, MIME_DIR, PIXMAPS_DIR: where to install freedesktop-files (icons, mime-types and application-description)&lt;br /&gt;
&lt;br /&gt;
==== The toolchain file ====&lt;br /&gt;
An example should be self-explainatory:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 # the name of the target operating system&lt;br /&gt;
 SET(CMAKE_SYSTEM_NAME Windows)&lt;br /&gt;
&lt;br /&gt;
 # which compilers to use for C and C++&lt;br /&gt;
 SET(CMAKE_C_COMPILER i686-mingw32-gcc)&lt;br /&gt;
 SET(CMAKE_CXX_COMPILER i686-mingw32-g++)&lt;br /&gt;
&lt;br /&gt;
 # here is the target environment located&lt;br /&gt;
 SET(CMAKE_FIND_ROOT_PATH /usr/i686-mingw32)&lt;br /&gt;
&lt;br /&gt;
 SET(MINGWLIBS /home/karl/spring/mingwlibs_v11)&amp;lt;/code&amp;gt;&lt;br /&gt;
Pass this with &amp;quot;-DCMAKE_TOOLCHAIN_FILE=/your/toolchain/file&amp;quot; to cmake or select it in the gui to make a cross-compilation.&lt;br /&gt;
&lt;br /&gt;
==== Further reference ====&lt;br /&gt;
* CMake FAQ [[http://www.vtk.org/Wiki/CMake_FAQ]]&lt;br /&gt;
* man CMake&lt;br /&gt;
* the CMake documentation (long!) [[http://www.cmake.org/HTML/cmake-2.6.html]]&lt;br /&gt;
&lt;br /&gt;
==Development Suggestions==&lt;br /&gt;
Before starting to make modifications to the source, take a look at the [[development guidelines]] which outlines some important things to think about. To find something interesting to work on, look at [[SpringEngineTODO]]. You can also check the list of [[whois doing what]] to see what others are doing. If you do edit the code, please add [[Doxygen style comments]] to the code, which will then enhance the source code documentation.&lt;br /&gt;
&lt;br /&gt;
==How to get your code included==&lt;br /&gt;
If you create something that you think should be included in the official source tree, you can report a &amp;quot;bug&amp;quot; in [http://spring.clan-sy.com/mantis/ mantis, our BTS]. Add your patch as attachment, and put &amp;quot;[patch]&amp;quot; in front of the subject, so it is easy for us to separate patches from bugs.&lt;br /&gt;
&lt;br /&gt;
It&#039;s also considered standard practice to post one&#039;s modifications in the [http://spring.clan-sy.com/phpbb/viewforum.php?f=12 development forum] and get feedback.&lt;br /&gt;
&lt;br /&gt;
==Spring Engine TODO list==&lt;br /&gt;
There is a TODO list for developers who want to contribute to the engine itself:&lt;br /&gt;
[[SpringEngineTODO]]. There is also a [http://spring.clan-sy.com/phpbb/viewforum.php?f=21 feature request forum], which may give you some ideas. Don&#039;t be overwhelmed by the sheer number of (silly) requests though!&lt;br /&gt;
&lt;br /&gt;
==Development links==&lt;br /&gt;
* [http://planetspring.free.fr/spring/ Automatic installer builds (crosscompiled, mingw)]&lt;br /&gt;
* [http://spring.jobjol.nl/show_file.php?id=860 Spring base content files]&lt;br /&gt;
* [http://developer.berlios.de/projects/taspring-linux BerliOS project page (OLD)]&lt;br /&gt;
* [http://spring.clan-sy.com/mantis Bug Tracking System]&lt;br /&gt;
* [http://buildbot.no-ip.org:8010/ Buildbot]&lt;br /&gt;
* [https://lists.berlios.de/mailman/listinfo/taspring-linux-commit Commit mailing list]&lt;br /&gt;
* [http://spring.clan-sy.com/dl/spring-vc8libs.exe Development libraries for Visual Studio 2005]&lt;br /&gt;
* [http://www.unknown-files.net/spring/3839/mingwlibsv10/ Development libraries for MinGW]&lt;br /&gt;
* [http://lolut.utbm.info/cgi-bin/mailman/listinfo/taspring-linux Developers mailing list (practically dead, use this forum instead) (DOWN)]&lt;br /&gt;
* [http://buildbot.no-ip.org/~buildbot/spring/doxygen Doxygen pages of the latest source (regenerated nightly)]&lt;br /&gt;
* [http://spring.clan-sy.com/fisheye Fisheye interface to SVN]&lt;br /&gt;
* [http://sourceforge.net/projects/springrts SourceForge project page (OLD)]&lt;br /&gt;
* [http://buildbot.no-ip.org/~buildbot/spring/stacktraceTranslator.php StackTrace Translator]&lt;br /&gt;
* [https://spring.clan-sy.com/svn/spring/trunk/ Subversion repository]&lt;br /&gt;
* [http://spring.clan-sy.com/websvn/listing.php?repname=spring&amp;amp;path=%2F&amp;amp;sc=0 WebSVN]&lt;br /&gt;
* [http://spring.clan-sy.com/websvn/log.php?repname=spring&amp;amp;path=%2F&amp;amp;rev=0&amp;amp;sc=0&amp;amp;isdir=1 WebSVN link to &amp;quot;development log&amp;quot;]&lt;br /&gt;
* [http://spring.clan-sy.com/websvn/filedetails.php?repname=spring&amp;amp;path=%2Ftrunk%2FDocumentation%2Fchangelog.txt&amp;amp;rev=0&amp;amp;sc=0 WebSVN link to the most recent changelog.txt]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]] [[Category:Source development]]&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=SpringEngineTODO&amp;diff=17083</id>
		<title>SpringEngineTODO</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=SpringEngineTODO&amp;diff=17083"/>
		<updated>2008-11-01T10:15:05Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This page is badly out of date. Some of these items have been done, abandoned or replaced with better ideas.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Here is a TODO list for anyone interested in developing the spring code. If you are not involved in the development, please contact one of the developers first before you add things here.&lt;br /&gt;
&lt;br /&gt;
* Implement saving/loading. There are a lot of direct LoadSave() functions in the game code, but the easier way would probably to finish the serialization in the class registration type interfaces (rts/System/creg), so everything can be serialized automatically. &lt;br /&gt;
&lt;br /&gt;
* [[Syncing System|Implement re-sync]]. After a sync problem is detected, and a re-sync of the random seed does not fix it the game would pause and use the rsync to adjust game state (current plan if for float3 data) to resync, as suggested by Jesse Schoch in [http://lolut.utbm.info/pipermail/taspring-linux/2006-February/000810.html]. After using rsync on it should be able to continue normally until the next sync error is detected.&lt;br /&gt;
&lt;br /&gt;
* Abstract and improve unit rendering:&lt;br /&gt;
** Improve the S3O rendering: It doesn&#039;t generate nice explosion particles like the 3DO system, and it has other issues with drawing as well (refer to the s3o related threads on the forum for this, or test it and see for yourself).&lt;br /&gt;
** 3DO/S3O support is not abstracted, many parts of unit rendering are spread throughout spring and assume 3DO, and the rendering is a messy mixture of 3DO and S3O stuff. Abstracting the model rendering with a sort of IModel and IModelInstance interfaces would allow adding other model formats as well (Such as a skeletal animation format).&lt;br /&gt;
&lt;br /&gt;
* Improve weapon collision detection with more complex shapes for the bigger units. Giving every model a set of convex collision meshes, saved in the S3O file, could be a solution. This will need a change in the s3o format and upspring editor, so you will need some cooperate with me on that part(jcnossen).&lt;br /&gt;
&lt;br /&gt;
* Make more elements of spring data-driven. Explosion bitmaps, trees, etc... A lot of graphics are hardcoded and should be changeable with scripts or config files (FBI/TDF).&lt;br /&gt;
&lt;br /&gt;
* Implement a general sensor system replacing the radars, as described in http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6105&lt;br /&gt;
&lt;br /&gt;
* Add a dynamic-lighting system: Allow units to have dynamic lights on them that affect lighting of other units and landscape, with sort of &amp;quot;approximating lights&amp;quot; for cases where a lot of units get close together. This is a big thing, but it would improve spring graphics a lot if done well.&lt;br /&gt;
&lt;br /&gt;
* Get a mac version working. Contact the developers on the forums for this, as there are people looking into this already.&lt;br /&gt;
&lt;br /&gt;
* Add context-sensitive music.  Most generic way could be to allow lua to be used to play tracks included within a &amp;quot;sound&amp;quot; directory of the current mod.&lt;br /&gt;
&lt;br /&gt;
* Create a Mission Development Kit: ie, do whatever it takes to make it easy to create campaign missions, eg create a gui tool that makes it easy to place units on the map, create triggers, and so on.&lt;br /&gt;
&lt;br /&gt;
* Make nano particles unsynced, ie. make them respect the MaxParticles setting.&lt;br /&gt;
&lt;br /&gt;
Even though this isn&#039;t really about the Spring engine:&lt;br /&gt;
&lt;br /&gt;
* SpringLobby is a cross-platform lobby client, implemented in C++ and wxWidgets. We encourage you to look into our todo list on http://springlobby.info and see what you could do for it.&lt;br /&gt;
&lt;br /&gt;
[[Category:Source development]]&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14193</id>
		<title>Maps:Map Designer</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14193"/>
		<updated>2006-12-01T10:04:08Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: /* MapDesigner, by Hugh Perkins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MapDesigner, by Hugh Perkins ==&lt;br /&gt;
&lt;br /&gt;
[http://manageddreams.com/csai/MapDesigner.zip Download]&lt;br /&gt;
&lt;br /&gt;
*Supports multipass texture splatting.  SM3 loader.&lt;br /&gt;
*Heightmap editor.  Left click to raise land, right click to lower&lt;br /&gt;
*Paint splatted texture.  Left click to paint texture, right click to erase&lt;br /&gt;
*Export heightmap, slopemap and blend maps&lt;br /&gt;
*Exported slopemap color-coded by movement area, eg infantry, vehicle and extreme (configurable)&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesigner3small.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
&lt;br /&gt;
MapDesigner is optimized for creating SM3 maps, which use texture splatting to provide high detail maps.&lt;br /&gt;
&lt;br /&gt;
For each texture, we need:&lt;br /&gt;
*the texture, which will be tiled according to the tilesize&lt;br /&gt;
*a blend map, which controls where the texture will be visible&lt;br /&gt;
&lt;br /&gt;
The blend map is essentially an alpha map.  The areas which are white will be splatted with our texture, and the other areas will be transparent.&lt;br /&gt;
&lt;br /&gt;
The textures are rendered in layers, one by one.  The later layers cover the earlier layers, according to each one&#039;s blend map texture.  Here&#039;s some pictures that illustrate how this works.  We are rendering each layer with a vertical offset so you can see each layer on its own.&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview1.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview2.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview3.JPG]]&lt;br /&gt;
&lt;br /&gt;
In reality, these layers are all rendered together, with no vertical offset, so they look like they are all part of the same single terrain.&lt;br /&gt;
&lt;br /&gt;
You can use any DevIL-compatible texture as your splat texture.  Select a texture stage and click &amp;quot;Load texture...&amp;quot; to load the texture into that texture stage.  You can change the tilesize to control how it is splatted in the visible areas.&lt;br /&gt;
&lt;br /&gt;
The blend texture works like an alpha texture, but the data is actually stored in the RGB channels, as a grey-level.  MapDesigner lets you paint or remove to and from the blend texture, which has the effect of painting splat texture on the map, or removing it.&lt;br /&gt;
&lt;br /&gt;
== Texture stages ==&lt;br /&gt;
&lt;br /&gt;
Multiple texture stages can be configured.  We use one texture stage for each splatted texture and set its operation to &amp;quot;Blend&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first texture stage - texstage1 - should be set to &amp;quot;Replace&amp;quot;, and has no blend texture.  That&#039;s because it&#039;s the base texture for the map, on top of which the other textures are painted.&lt;br /&gt;
&lt;br /&gt;
Advanced:&lt;br /&gt;
*It&#039;s possible to set other operations on the texture stages.&lt;br /&gt;
&lt;br /&gt;
== Paint splatted texture ==&lt;br /&gt;
&lt;br /&gt;
*select &amp;quot;Paint texture&amp;quot;&lt;br /&gt;
*select a texture stage&lt;br /&gt;
*set texture stage operation to &amp;quot;Blend&amp;quot; and load a texture if necessary&lt;br /&gt;
*Left click map to paint texture, right click to erase&lt;br /&gt;
*You can click &amp;quot;Save blend texture&amp;quot; to export the blend texture map&lt;br /&gt;
&lt;br /&gt;
Note that texture stages are applied in order, first 1 then 2 then 3 etc.  The later layers cover the earlier ones.&lt;br /&gt;
&lt;br /&gt;
If you click the map and nothing happens, your changes may be being masked by later layers.  You can edit the later layers to uncover your changes, or click &amp;quot;move down&amp;quot; to move your edited layer later in the queue.&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignblendediting.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Water ==&lt;br /&gt;
&lt;br /&gt;
Areas below zero height will be underwater:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignwater.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Exported Slopemap ==&lt;br /&gt;
&lt;br /&gt;
You can use File | Export slopemap... to export a slopemap for your map.&lt;br /&gt;
&lt;br /&gt;
Black means zero slope, green is vehicles, blue is infantry, red is extreme:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/slopemap2.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Configuration is stored in config.xml ,which can be opened in notepad&lt;br /&gt;
*You can change height and width in the display section to change the window size on next startup&lt;br /&gt;
*You can configure key mappings, and mouse move configuration&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14192</id>
		<title>Maps:Map Designer</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14192"/>
		<updated>2006-12-01T10:02:34Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: /* Texture stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MapDesigner, by Hugh Perkins ==&lt;br /&gt;
&lt;br /&gt;
[http://manageddreams.com/csai/MapDesigner.zip Download]&lt;br /&gt;
&lt;br /&gt;
*Support multipass texture splatting.  SM3 loader.&lt;br /&gt;
*Heightmap editor.  Left click to raise land, right click to lower&lt;br /&gt;
*Paint splatted texture.  Left click to paint texture, right click to erase&lt;br /&gt;
*Export heightmap, slopemap and blend maps&lt;br /&gt;
*Exported slopemap color-coded by movement area, eg infantry, vehicle and extreme (configurable)&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesigner3small.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
&lt;br /&gt;
MapDesigner is optimized for creating SM3 maps, which use texture splatting to provide high detail maps.&lt;br /&gt;
&lt;br /&gt;
For each texture, we need:&lt;br /&gt;
*the texture, which will be tiled according to the tilesize&lt;br /&gt;
*a blend map, which controls where the texture will be visible&lt;br /&gt;
&lt;br /&gt;
The blend map is essentially an alpha map.  The areas which are white will be splatted with our texture, and the other areas will be transparent.&lt;br /&gt;
&lt;br /&gt;
The textures are rendered in layers, one by one.  The later layers cover the earlier layers, according to each one&#039;s blend map texture.  Here&#039;s some pictures that illustrate how this works.  We are rendering each layer with a vertical offset so you can see each layer on its own.&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview1.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview2.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview3.JPG]]&lt;br /&gt;
&lt;br /&gt;
In reality, these layers are all rendered together, with no vertical offset, so they look like they are all part of the same single terrain.&lt;br /&gt;
&lt;br /&gt;
You can use any DevIL-compatible texture as your splat texture.  Select a texture stage and click &amp;quot;Load texture...&amp;quot; to load the texture into that texture stage.  You can change the tilesize to control how it is splatted in the visible areas.&lt;br /&gt;
&lt;br /&gt;
The blend texture works like an alpha texture, but the data is actually stored in the RGB channels, as a grey-level.  MapDesigner lets you paint or remove to and from the blend texture, which has the effect of painting splat texture on the map, or removing it.&lt;br /&gt;
&lt;br /&gt;
== Texture stages ==&lt;br /&gt;
&lt;br /&gt;
Multiple texture stages can be configured.  We use one texture stage for each splatted texture and set its operation to &amp;quot;Blend&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first texture stage - texstage1 - should be set to &amp;quot;Replace&amp;quot;, and has no blend texture.  That&#039;s because it&#039;s the base texture for the map, on top of which the other textures are painted.&lt;br /&gt;
&lt;br /&gt;
Advanced:&lt;br /&gt;
*It&#039;s possible to set other operations on the texture stages.&lt;br /&gt;
&lt;br /&gt;
== Paint splatted texture ==&lt;br /&gt;
&lt;br /&gt;
*select &amp;quot;Paint texture&amp;quot;&lt;br /&gt;
*select a texture stage&lt;br /&gt;
*set texture stage operation to &amp;quot;Blend&amp;quot; and load a texture if necessary&lt;br /&gt;
*Left click map to paint texture, right click to erase&lt;br /&gt;
*You can click &amp;quot;Save blend texture&amp;quot; to export the blend texture map&lt;br /&gt;
&lt;br /&gt;
Note that texture stages are applied in order, first 1 then 2 then 3 etc.  The later layers cover the earlier ones.&lt;br /&gt;
&lt;br /&gt;
If you click the map and nothing happens, your changes may be being masked by later layers.  You can edit the later layers to uncover your changes, or click &amp;quot;move down&amp;quot; to move your edited layer later in the queue.&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignblendediting.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Water ==&lt;br /&gt;
&lt;br /&gt;
Areas below zero height will be underwater:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignwater.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Exported Slopemap ==&lt;br /&gt;
&lt;br /&gt;
You can use File | Export slopemap... to export a slopemap for your map.&lt;br /&gt;
&lt;br /&gt;
Black means zero slope, green is vehicles, blue is infantry, red is extreme:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/slopemap2.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Configuration is stored in config.xml ,which can be opened in notepad&lt;br /&gt;
*You can change height and width in the display section to change the window size on next startup&lt;br /&gt;
*You can configure key mappings, and mouse move configuration&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14191</id>
		<title>Maps:Map Designer</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14191"/>
		<updated>2006-12-01T09:59:09Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: /* Concepts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MapDesigner, by Hugh Perkins ==&lt;br /&gt;
&lt;br /&gt;
[http://manageddreams.com/csai/MapDesigner.zip Download]&lt;br /&gt;
&lt;br /&gt;
*Support multipass texture splatting.  SM3 loader.&lt;br /&gt;
*Heightmap editor.  Left click to raise land, right click to lower&lt;br /&gt;
*Paint splatted texture.  Left click to paint texture, right click to erase&lt;br /&gt;
*Export heightmap, slopemap and blend maps&lt;br /&gt;
*Exported slopemap color-coded by movement area, eg infantry, vehicle and extreme (configurable)&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesigner3small.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
&lt;br /&gt;
MapDesigner is optimized for creating SM3 maps, which use texture splatting to provide high detail maps.&lt;br /&gt;
&lt;br /&gt;
For each texture, we need:&lt;br /&gt;
*the texture, which will be tiled according to the tilesize&lt;br /&gt;
*a blend map, which controls where the texture will be visible&lt;br /&gt;
&lt;br /&gt;
The blend map is essentially an alpha map.  The areas which are white will be splatted with our texture, and the other areas will be transparent.&lt;br /&gt;
&lt;br /&gt;
The textures are rendered in layers, one by one.  The later layers cover the earlier layers, according to each one&#039;s blend map texture.  Here&#039;s some pictures that illustrate how this works.  We are rendering each layer with a vertical offset so you can see each layer on its own.&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview1.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview2.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview3.JPG]]&lt;br /&gt;
&lt;br /&gt;
In reality, these layers are all rendered together, with no vertical offset, so they look like they are all part of the same single terrain.&lt;br /&gt;
&lt;br /&gt;
You can use any DevIL-compatible texture as your splat texture.  Select a texture stage and click &amp;quot;Load texture...&amp;quot; to load the texture into that texture stage.  You can change the tilesize to control how it is splatted in the visible areas.&lt;br /&gt;
&lt;br /&gt;
The blend texture works like an alpha texture, but the data is actually stored in the RGB channels, as a grey-level.  MapDesigner lets you paint or remove to and from the blend texture, which has the effect of painting splat texture on the map, or removing it.&lt;br /&gt;
&lt;br /&gt;
== Texture stages ==&lt;br /&gt;
&lt;br /&gt;
Multiple texture stages can be configured.  We use one texture stage for each splatted texture and set its operation to &amp;quot;Blend&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first texture stage - texstage1 - should be set to &amp;quot;Replace&amp;quot;, and has no blend texture.&lt;br /&gt;
&lt;br /&gt;
Advanced:&lt;br /&gt;
*It&#039;s possible to set other operations on the texture stages.&lt;br /&gt;
&lt;br /&gt;
== Paint splatted texture ==&lt;br /&gt;
&lt;br /&gt;
*select &amp;quot;Paint texture&amp;quot;&lt;br /&gt;
*select a texture stage&lt;br /&gt;
*set texture stage operation to &amp;quot;Blend&amp;quot; and load a texture if necessary&lt;br /&gt;
*Left click map to paint texture, right click to erase&lt;br /&gt;
*You can click &amp;quot;Save blend texture&amp;quot; to export the blend texture map&lt;br /&gt;
&lt;br /&gt;
Note that texture stages are applied in order, first 1 then 2 then 3 etc.  The later layers cover the earlier ones.&lt;br /&gt;
&lt;br /&gt;
If you click the map and nothing happens, your changes may be being masked by later layers.  You can edit the later layers to uncover your changes, or click &amp;quot;move down&amp;quot; to move your edited layer later in the queue.&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignblendediting.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Water ==&lt;br /&gt;
&lt;br /&gt;
Areas below zero height will be underwater:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignwater.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Exported Slopemap ==&lt;br /&gt;
&lt;br /&gt;
You can use File | Export slopemap... to export a slopemap for your map.&lt;br /&gt;
&lt;br /&gt;
Black means zero slope, green is vehicles, blue is infantry, red is extreme:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/slopemap2.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Configuration is stored in config.xml ,which can be opened in notepad&lt;br /&gt;
*You can change height and width in the display section to change the window size on next startup&lt;br /&gt;
*You can configure key mappings, and mouse move configuration&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14190</id>
		<title>Maps:Map Designer</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14190"/>
		<updated>2006-12-01T09:58:04Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: Added texture stage section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MapDesigner, by Hugh Perkins ==&lt;br /&gt;
&lt;br /&gt;
[http://manageddreams.com/csai/MapDesigner.zip Download]&lt;br /&gt;
&lt;br /&gt;
*Support multipass texture splatting.  SM3 loader.&lt;br /&gt;
*Heightmap editor.  Left click to raise land, right click to lower&lt;br /&gt;
*Paint splatted texture.  Left click to paint texture, right click to erase&lt;br /&gt;
*Export heightmap, slopemap and blend maps&lt;br /&gt;
*Exported slopemap color-coded by movement area, eg infantry, vehicle and extreme (configurable)&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesigner3small.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
&lt;br /&gt;
MapDesigner is optimized for creating SM3 maps, which use texture splatting to provide high detail maps.&lt;br /&gt;
&lt;br /&gt;
For each texture, we need:&lt;br /&gt;
*the texture, which will be tiled according to the tilesize section&lt;br /&gt;
*a blend map, which controls where the texture will be visible&lt;br /&gt;
&lt;br /&gt;
The blend map is essentially an alpha map.  The areas which are white will be splatted with our texture, and the other areas will be transparent.&lt;br /&gt;
&lt;br /&gt;
The textures are rendered in layers, one by one.  The later layers cover the earlier layers, according to each one&#039;s blend map texture.  Here&#039;s some pictures that illustrate how this works.  We are rendering each layer with a vertical offset so you can see each layer on its own.&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview1.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview2.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview3.JPG]]&lt;br /&gt;
&lt;br /&gt;
In reality, these layers are all rendered together, with no vertical offset, so they look like they are all part of the same single terrain.&lt;br /&gt;
&lt;br /&gt;
You can use any DevIL-compatible texture as your splat texture.  Select a texture stage and click &amp;quot;Load texture...&amp;quot; to load the texture into that texture stage.  You can change the tilesize to control how it is splatted in the visible areas.&lt;br /&gt;
&lt;br /&gt;
The blend texture works like an alpha texture, but the data is actually stored in the RGB channels, as a grey-level.  MapDesigner lets you paint or remove to and from the blend texture, which has the effect of painting splat texture on the map, or removing it.&lt;br /&gt;
&lt;br /&gt;
== Texture stages ==&lt;br /&gt;
&lt;br /&gt;
Multiple texture stages can be configured.  We use one texture stage for each splatted texture and set its operation to &amp;quot;Blend&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first texture stage - texstage1 - should be set to &amp;quot;Replace&amp;quot;, and has no blend texture.&lt;br /&gt;
&lt;br /&gt;
Advanced:&lt;br /&gt;
*It&#039;s possible to set other operations on the texture stages.&lt;br /&gt;
&lt;br /&gt;
== Paint splatted texture ==&lt;br /&gt;
&lt;br /&gt;
*select &amp;quot;Paint texture&amp;quot;&lt;br /&gt;
*select a texture stage&lt;br /&gt;
*set texture stage operation to &amp;quot;Blend&amp;quot; and load a texture if necessary&lt;br /&gt;
*Left click map to paint texture, right click to erase&lt;br /&gt;
*You can click &amp;quot;Save blend texture&amp;quot; to export the blend texture map&lt;br /&gt;
&lt;br /&gt;
Note that texture stages are applied in order, first 1 then 2 then 3 etc.  The later layers cover the earlier ones.&lt;br /&gt;
&lt;br /&gt;
If you click the map and nothing happens, your changes may be being masked by later layers.  You can edit the later layers to uncover your changes, or click &amp;quot;move down&amp;quot; to move your edited layer later in the queue.&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignblendediting.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Water ==&lt;br /&gt;
&lt;br /&gt;
Areas below zero height will be underwater:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignwater.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Exported Slopemap ==&lt;br /&gt;
&lt;br /&gt;
You can use File | Export slopemap... to export a slopemap for your map.&lt;br /&gt;
&lt;br /&gt;
Black means zero slope, green is vehicles, blue is infantry, red is extreme:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/slopemap2.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Configuration is stored in config.xml ,which can be opened in notepad&lt;br /&gt;
*You can change height and width in the display section to change the window size on next startup&lt;br /&gt;
*You can configure key mappings, and mouse move configuration&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14189</id>
		<title>Maps:Map Designer</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14189"/>
		<updated>2006-12-01T09:55:44Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: Added concepts section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MapDesigner, by Hugh Perkins ==&lt;br /&gt;
&lt;br /&gt;
[http://manageddreams.com/csai/MapDesigner.zip Download]&lt;br /&gt;
&lt;br /&gt;
*Support multipass texture splatting.  SM3 loader.&lt;br /&gt;
*Heightmap editor.  Left click to raise land, right click to lower&lt;br /&gt;
*Paint splatted texture.  Left click to paint texture, right click to erase&lt;br /&gt;
*Export heightmap, slopemap and blend maps&lt;br /&gt;
*Exported slopemap color-coded by movement area, eg infantry, vehicle and extreme (configurable)&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesigner3small.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
&lt;br /&gt;
MapDesigner is optimized for creating SM3 maps, which use texture splatting to provide high detail maps.&lt;br /&gt;
&lt;br /&gt;
For each texture, we need:&lt;br /&gt;
*the texture, which will be tiled according to the tilesize section&lt;br /&gt;
*a blend map, which controls where the texture will be visible&lt;br /&gt;
&lt;br /&gt;
The blend map is essentially an alpha map.  The areas which are white will be splatted with our texture, and the other areas will be transparent.&lt;br /&gt;
&lt;br /&gt;
The textures are rendered in layers, one by one.  The later layers cover the earlier layers, according to each one&#039;s blend map texture.  Here&#039;s some pictures that illustrate how this works.  We are rendering each layer with a vertical offset so you can see each layer on its own.&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview1.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview2.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/multitextureview3.JPG]]&lt;br /&gt;
&lt;br /&gt;
In reality, these layers are all rendered together, with no vertical offset, so they look like they are all part of the same single terrain.&lt;br /&gt;
&lt;br /&gt;
You can use any DevIL-compatible texture as your splat texture.  Select a texture stage and click &amp;quot;Load texture...&amp;quot; to load the texture into that texture stage.  You can change the tilesize to control how it is splatted in the visible areas.&lt;br /&gt;
&lt;br /&gt;
The blend texture works like an alpha texture, but the data is actually stored in the RGB channels, as a grey-level.  MapDesigner lets you paint or remove to and from the blend texture, which has the effect of painting splat texture on the map, or removing it.&lt;br /&gt;
&lt;br /&gt;
== Paint splatted texture ==&lt;br /&gt;
&lt;br /&gt;
*select &amp;quot;Paint texture&amp;quot;&lt;br /&gt;
*select a texture stage&lt;br /&gt;
*set texture stage operation to &amp;quot;Blend&amp;quot; and load a texture if necessary&lt;br /&gt;
*Left click map to paint texture, right click to erase&lt;br /&gt;
*You can click &amp;quot;Save blend texture&amp;quot; to export the blend texture map&lt;br /&gt;
&lt;br /&gt;
Note that texture stages are applied in order, first 1 then 2 then 3 etc.  The later layers cover the earlier ones.&lt;br /&gt;
&lt;br /&gt;
If you click the map and nothing happens, your changes may be being masked by later layers.  You can edit the later layers to uncover your changes, or click &amp;quot;move down&amp;quot; to move your edited layer later in the queue.&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignblendediting.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Water ==&lt;br /&gt;
&lt;br /&gt;
Areas below zero height will be underwater:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignwater.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Exported Slopemap ==&lt;br /&gt;
&lt;br /&gt;
You can use File | Export slopemap... to export a slopemap for your map.&lt;br /&gt;
&lt;br /&gt;
Black means zero slope, green is vehicles, blue is infantry, red is extreme:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/slopemap2.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Configuration is stored in config.xml ,which can be opened in notepad&lt;br /&gt;
*You can change height and width in the display section to change the window size on next startup&lt;br /&gt;
*You can configure key mappings, and mouse move configuration&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14188</id>
		<title>Maps:Map Designer</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14188"/>
		<updated>2006-12-01T09:34:11Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MapDesigner, by Hugh Perkins ==&lt;br /&gt;
&lt;br /&gt;
[http://manageddreams.com/csai/MapDesigner.zip Download]&lt;br /&gt;
&lt;br /&gt;
*Support multipass texture splatting.  SM3 loader.&lt;br /&gt;
*Heightmap editor.  Left click to raise land, right click to lower&lt;br /&gt;
*Paint splatted texture.  Left click to paint texture, right click to erase&lt;br /&gt;
*Export heightmap, slopemap and blend maps&lt;br /&gt;
*Exported slopemap color-coded by movement area, eg infantry, vehicle and extreme (configurable)&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesigner3small.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Paint splatted texture ==&lt;br /&gt;
&lt;br /&gt;
*select &amp;quot;Paint texture&amp;quot;&lt;br /&gt;
*select a texture stage&lt;br /&gt;
*set texture stage operation to &amp;quot;Blend&amp;quot; and load a texture if necessary&lt;br /&gt;
*Left click map to paint texture, right click to erase&lt;br /&gt;
*You can click &amp;quot;Save blend texture&amp;quot; to export the blend texture map&lt;br /&gt;
&lt;br /&gt;
Note that texture stages are applied in order, first 1 then 2 then 3 etc.  The later layers cover the earlier ones.&lt;br /&gt;
&lt;br /&gt;
If you click the map and nothing happens, your changes may be being masked by later layers.  You can edit the later layers to uncover your changes, or click &amp;quot;move down&amp;quot; to move your edited layer later in the queue.&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignblendediting.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Water ==&lt;br /&gt;
&lt;br /&gt;
Areas below zero height will be underwater:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignwater.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Exported Slopemap ==&lt;br /&gt;
&lt;br /&gt;
You can use File | Export slopemap... to export a slopemap for your map.&lt;br /&gt;
&lt;br /&gt;
Black means zero slope, green is vehicles, blue is infantry, red is extreme:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/slopemap2.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Configuration is stored in config.xml ,which can be opened in notepad&lt;br /&gt;
*You can change height and width in the display section to change the window size on next startup&lt;br /&gt;
*You can configure key mappings, and mouse move configuration&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14187</id>
		<title>Maps:Map Designer</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Maps:Map_Designer&amp;diff=14187"/>
		<updated>2006-12-01T09:33:24Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: Updated for 0.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MapDesigner, by Hugh Perkins ==&lt;br /&gt;
&lt;br /&gt;
[http://manageddreams.com/csai/MapDesigner.zip Download]&lt;br /&gt;
&lt;br /&gt;
*Support multipass texture splatting.  SM3 loader.&lt;br /&gt;
*Heightmap editor.  Left click to raise land, right click to lower&lt;br /&gt;
*Paint splatted texture.  Left click to paint texture, right click to erase&lt;br /&gt;
*Export heightmap, slopemap and blend maps&lt;br /&gt;
*Exported slopemap color-coded by movement area, eg infantry, vehicle and extreme (configurable)&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesigner3small.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Paint splatted texture ==&lt;br /&gt;
&lt;br /&gt;
*select &amp;quot;Paint texture&amp;quot;&lt;br /&gt;
*select a texture stage&lt;br /&gt;
*set texture stage operation to &amp;quot;Blend&amp;quot; and load a texture if necessary&lt;br /&gt;
*Left click map to paint texture, right click to erase&lt;br /&gt;
*You can click &amp;quot;Save blend texture&amp;quot; to export the blend texture map&lt;br /&gt;
&lt;br /&gt;
Note that texture stages are applied in order, first 1 then 2 then 3 etc.  The later layers cover the earlier ones.&lt;br /&gt;
&lt;br /&gt;
If you click the map and nothing happens, your changes may be being masked by later layers.  You can edit the later layers to uncover your changes, or click &amp;quot;move down&amp;quot; to move your edited layer later in the queue.&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/mapdesignblendediting.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Water ==&lt;br /&gt;
&lt;br /&gt;
Areas below zero height will be underwater:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/heightmap2.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Exported Slopemap ==&lt;br /&gt;
&lt;br /&gt;
You can use File | Export slopemap... to export a slopemap for your map.&lt;br /&gt;
&lt;br /&gt;
Black means zero slope, green is vehicles, blue is infantry, red is extreme:&lt;br /&gt;
&lt;br /&gt;
[[Media:http://manageddreams.com/csai/slopemap2.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Configuration is stored in config.xml ,which can be opened in notepad&lt;br /&gt;
*You can change height and width in the display section to change the window size on next startup&lt;br /&gt;
*You can configure key mappings, and mouse move configuration&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Map_development&amp;diff=13247</id>
		<title>Map development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Map_development&amp;diff=13247"/>
		<updated>2006-12-01T04:47:31Z</updated>

		<summary type="html">&lt;p&gt;Hughperkins: /* Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Map making SM3=&lt;br /&gt;
&lt;br /&gt;
SM3 (Spring Mapformat 3) is getting allong nicely and maps using this format can be made. The following is documented so far.&lt;br /&gt;
&lt;br /&gt;
*[[SM3_Map_Format|jcnossen&#039;s brief description on how this mapformat works.]]&lt;br /&gt;
*[[SM3_FAQ|The first FAQ for the new mapformat.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:sm3-minimap-thumb.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Map making, SMF=&lt;br /&gt;
Maps, are a complex mixture of heightmaps and textures.&lt;br /&gt;
Fortunately, there are several people who share their knowledge with us.&lt;br /&gt;
There few tutorials will make your life as mapper a lot better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Full Guides For Map Making ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Create_maps|aGorm&#039;s map creating Guide]]&lt;br /&gt;
*[[Map_Making_Guide|aGorms Ultimate Map Making Guide(unfinished)]]&lt;br /&gt;
*[[IceXuick_Map_Design_Help|IceXuicks Map creating Guide]]&lt;br /&gt;
*[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=3941 Forboding Angel&#039;s map creating Tutorial]&lt;br /&gt;
*[[Maps:Tutorial|Another tutorial from a designing point of view]]&lt;br /&gt;
*[[A_Complete_Map_Making_Tutorial|A Complete Map Making Tutorial (under construction)]]&lt;br /&gt;
*[[Runecrafter|Runecrafter&#039;s Map Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specific Guides ==&lt;br /&gt;
&lt;br /&gt;
*[[Quanto_OTAMAP_Guide|Quanto&#039;s Guide to OTA Porting and Small Maps]]&lt;br /&gt;
*[[Maps:SMD|Everything about .SMD]]&lt;br /&gt;
*[[Maps:Compiling|Everything about Compiling your map]]&lt;br /&gt;
*[[MapsBalance|Some things about map balance]]&lt;br /&gt;
&lt;br /&gt;
Features. Stones, rocks, trees, for your map can be found in [http://taspring.clan-sy.com/phpbb/viewtopic.php?t=4047 This thread]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
*[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=2420 Maelstrom&#039;s SMD Generator]&lt;br /&gt;
*[http://www.fileuniverse.com/?p=showitem&amp;amp;ID=1507 Mother&#039;s Mapconv]&lt;br /&gt;
*[http://user.supradigital.org/jcnossen/FeaturePlacer.zip Jnossen&#039;s SM3 feature placer]&lt;br /&gt;
*[[Maps:Map Designer]] Hugh&#039;s 3D map designer.  Splatting, heightmap editing, splat painting, SM3&lt;br /&gt;
&lt;br /&gt;
== Mappers Clan ==&lt;br /&gt;
[[Map Making Guild]]: That weird fish aGorm set up a clan for poor mappers that can&#039;t get into a clan on there gaming merit... (Mainly for himself therefor...)&lt;br /&gt;
&lt;br /&gt;
== Reference and FAQs ==&lt;br /&gt;
&lt;br /&gt;
* [[Maps:Noob Mistakes]]&lt;br /&gt;
* [[Water Height: Mapconv vs. Heightmap]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
TIPS:&lt;br /&gt;
&lt;br /&gt;
A useful tip, on almost every map in a 1v1 you will start opposite your opponent unless you choose your position. this is because random order simply randomly distributes players at the default start points which in almost every map are opposite each other. One exception that I know of is flooded desert where you both start on the left hand island.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category:Map development]]&lt;/div&gt;</summary>
		<author><name>Hughperkins</name></author>
	</entry>
</feed>