AI:Links
AI Development
Skirmish AIs (old term: Global AIs), are what the Computer Opponents in games are called. Developing a good Skirmish AI is a major undertaking, and requires quite a bit of know how. As the SY's have more important things to do than developing an AI, they have left this job up to the community.
The community has risen to the challenge remarkably well, releasing quite a few AIs.
Interfaces in Active Development
You can use following Interfaces to write your AI:
C & C++ AI Interface - rc (please help testing!), developed by hoijui
Java AI Interface - rc (please help testing!), will support loading AIs written in pure Java
Mono AI Interface - beta, will support loading AIs written in a CLI language
Legacy C++ AI Wrapper - deprecated, ensures AIs written for springs old C++ interface can still be used
CodeNote that the full source code for many AIs is available within the Spring source repository, see Obtaining the Source.
Metal Handler Class Cain has developed and released a Metal Handler Class that succesfully finds metal spots on maps, which can be a major stumbling block for many AI developers. Information about it can be found in this thread. Krogothes Metal Class V3 - A useful mex spot finding algorithm, essential for any AI that uses metal extractors Global AI Interface
Jouninkomiko has a topic on the Global AI Interface running here. Hugh's global AI tutorial Hugh's tutorial on writing an AI in C#. Global AI .Net Interface
Write Global AIs in .Net, using Hugh Perkins's interface Global AI Java Interface
Write Global AIs in Java, using JAI DEPRECATED Unit grouping heuristic
Unit grouping and reorg heuristic by Hugh Perkins |
ResearchK-man's Spring AI documentation Useful existing documentation on the Spring unit AI, however this is not related to the Global AI. "Research about Pathfinding, AI and Voronoi diagrams" A forum post by Gabba. Graph and data structures
Graph and data structures tutorial at topcoder.com. This includes path-finding using bfs |
AI Interfaces & Wrappers
Skirmish AIs are not loaded by the engine directly, but through an interface library. This allows integration of AIs written in other languages (if an AI interface library is available for the desired language). Other possibilities include a library that can load AIs over the network, and let them run on an AI server (NOTE: this is not planned, just a possibility).
simply said: AI Interfaces are plugins for the spring engine, while Skirmish AIs are plugins for AI Interfaces.
Wrappers are comparable to AI Interfaces, but they rather lay between an AI Interface and an AI. They consist of code that adds enhances an interface in some way, and they are compiled directly into the AI library. An example of such a wrapper is the Legacy C++ interface. it lies between the C/C++ AI Interface and Legacy C++ AIs, eg KAIK and AAI, and its code is compiled directly into these AI libraries.
For further info, see AI Interface Development.