AI Realtime Strategy Shard Spring

Shard v0.1

I’ve a new project to announce! Something I’ve been researching for a while related to University, and NTai’s successor. I call it Shard.

Rather than name it an acronym like all the other spring AIs, I called it Shard. Seeing my university supervisor attempt to say NTai out loud may be fun, but it would be harsh to subject him to more lingual gymnastics.

So What is Shard?

Shard is a spring AI, written using a mixture of lua and C++. It can be used as an interface for speeding up writting new AIs, or it can be used as a starting point.

This is possible because Shard searches for each file it has by first checking a subfolder to see if a game specific version is provided. This way you can override any part of Shard, add to Shard, or build entire AIs on top of it.

For example, Shard by default uses a basic NTai style task list, defined in taskqueues.lua, but you can override this. For example, for XTA, you could create an XTA subfolder, with an XTA specific version of taskqueues.lua. You could then go further and include a customized BehaviourFactory.lua and add a custom behaviour for commanders, such as an auto-dgun behaviour.

Thus one can reprogram Shard to do what they want. Shard is also written in such a way that the APIs are all engine agnostic. The primary example being that Shard 0.2 or 0.3 will also work under Starcraft Broodwar.

Shard uses the Spring Engine C++ wrapper, and all the API calls available make use of cheating interfaces at the moment, so that means it has a map hack. You can find a short description of the API available in api.lua, and if you wish to override code, the sub-folder goes inside the ai subdirectory, and has the same folder name as the games ‘shortname’.

What do I need to use this?

You need a copy of the Spring Engine. Currently Shard works under the game Balanced Annihilation and provides only a basic configuration. It’s not intended to play competitively at the moment.

Download it here

Leave a Reply

Your email address will not be published. Required fields are marked *