<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.fightorder.net/wiki/index.php?action=history&amp;feed=atom&amp;title=AI%3ADevelopment</id>
	<title>AI:Development - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.fightorder.net/wiki/index.php?action=history&amp;feed=atom&amp;title=AI%3ADevelopment"/>
	<link rel="alternate" type="text/html" href="https://www.fightorder.net/wiki/index.php?title=AI:Development&amp;action=history"/>
	<updated>2026-04-21T05:46:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.fightorder.net/wiki/index.php?title=AI:Development&amp;diff=706&amp;oldid=prev</id>
		<title>Qrow: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://www.fightorder.net/wiki/index.php?title=AI:Development&amp;diff=706&amp;oldid=prev"/>
		<updated>2025-11-14T05:22:18Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:22, 13 November 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Qrow</name></author>
	</entry>
	<entry>
		<id>https://www.fightorder.net/wiki/index.php?title=AI:Development&amp;diff=705&amp;oldid=prev</id>
		<title>Interwiki&gt;Paulomorfeo at 23:45, 22 October 2014</title>
		<link rel="alternate" type="text/html" href="https://www.fightorder.net/wiki/index.php?title=AI:Development&amp;diff=705&amp;oldid=prev"/>
		<updated>2014-10-22T23:45:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Engine_Development|Development]] &amp;lt; AI Development&lt;br /&gt;
&lt;br /&gt;
=How to write a Skirmish AI for Spring=&lt;br /&gt;
This section gives help on how to create Artificial Intelligence agents that control teams (as if a player) - &amp;quot;Skirmish AI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The SpringRTS engine interacts with the Skirmish AIs through an &amp;quot;Interface&amp;quot;. There are stable (10-2014, Spring v98) interfaces for the languages C/C++ and Java (not currently sure about the others but I think Lua too).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Quick Start==&lt;br /&gt;
See these pages for tutorials on how to setup a development environment, connect to the appropriate &amp;quot;Interface&amp;quot; and how to build your first example Skirmish AI:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[AI:Development:Lang:Cpp|C++]]&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[AI:Development:Lang:C|C]]&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[AI:Development:Lang:Java|Java]]&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;(up-to-date as of 10-2014, SpringRTS v98)&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[AI:Development:Lang:Lua|Lua]]&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[AI:Development:Lang:Python|Python]]&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[AI:Development:Lang:CSharp|C#]]&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[AI:Development:Lang:Groovy|Groovy]]&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==I have setup my development environment. What now?==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[AI:Development:System|SpringRTS &amp;lt;-&amp;gt; AIs architecture]]&amp;#039;&amp;#039;&amp;#039; - architecture of SpringRTS and how it interacts with the AIs.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[AI:Development:TheMaps|The mappings provided by the AI Interface]]&amp;#039;&amp;#039;&amp;#039; - how the engine maps the game area and how the interface exposes those maps.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[AI:Development:MonitorAndDebug|How to monitor and debug your Skirmish AI]]&amp;#039;&amp;#039;&amp;#039; - How to monitor and debug your Skirmish AI.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[AI:Skirmish:List|AIs for Spring]]&amp;#039;&amp;#039;&amp;#039; - list of some of the Skirmish AIs that have already been developed for SpringRTS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overall AI ideas, practical examples, useful resources==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[AI:Links|AI related links]]&amp;#039;&amp;#039;&amp;#039; - ranging from how to conceptualize AI agents all the way down to how to tackle very specific problems like pathfinding.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[AI:GameInferences|Useful inferences]]&amp;#039;&amp;#039;&amp;#039; - how to infer where the opponents might have started, where on the maps can your units go, etc..&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[http://springrts.com/phpbb/viewforum.php?f=15 Springs AI dev forum]&amp;#039;&amp;#039;&amp;#039; - comunity&amp;#039;s forum dedicated to AI development.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[AI:Development:Interface|AI Interfaces &amp;amp; Wrappers]]&amp;#039;&amp;#039;&amp;#039; - semi-technical description of the Interfaces that expose the SpringRTS engine to the AI agents.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other hints, tips and interesting infos ==&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039; AI &amp;quot;frame skipping&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
http://springrts.com/phpbb/viewtopic.php?p=463953#p463953&amp;lt;br&amp;gt;&lt;br /&gt;
As in: if a Java/C/C++ SkirmishAI gets delayed responding back to the Interface, the SpringRTS engine will wait on the AI. Thus delaying the game, thus not having the AI &amp;quot;skip&amp;quot; frames.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039; Engine commands to control the AIs&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
In spring you have some control over AIs with these commands:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
/aireload&lt;br /&gt;
/ailist&lt;br /&gt;
/aikill&lt;br /&gt;
/aicontrol&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039; Lua&amp;lt;--&amp;gt;AI communications [in Spring 0.83+]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
http://springrts.com/phpbb/viewtopic.php?f=15&amp;amp;t=26298&lt;br /&gt;
He shall say that only it once!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039; Link to source code of the Interface, engine-side&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Chances are you&amp;#039;ll have doubts about what exactly the commands abc(), qwe() or xyz() do. Asking in the AI forum is a good way to clarify. The most reliable is probably to look at the source code (if you&amp;#039;re able to navigate the maze of C++ code in all its glory, that is):&amp;lt;br&amp;gt;&lt;br /&gt;
https://github.com/spring/spring/blob/develop/rts/ExternalAI/AICallback.h&amp;lt;br&amp;gt;&lt;br /&gt;
https://github.com/spring/spring/blob/develop/rts/ExternalAI/AICallback.cpp&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: AI Dev]]&lt;/div&gt;</summary>
		<author><name>Interwiki&gt;Paulomorfeo</name></author>
	</entry>
</feed>