Abathur — a Framework for AIs in SC2

Jens Schmidt
2 min readAug 8, 2020

A modulized approach to writing SC2 AIs in .NET Core with multi-language support. Follow the process of kickstarting a dormant project.

The first use of Abathur Framework— one line of code.

What it was…
Abathur, NydusNetwork and NydusWorm worked together to ease development of modulized SC2 AIs. The Abathur (.NET Core) framework communicated with the SC2 Client using NydusNetwork (.NET Core) as a wrapper to the official protobuf interface exposed by the client. Framework functionality could then be accessed from multiple languages, e.g. Python through NydusWorm.

The framework essentially took care of all the cumbersome parts of writing SC2 bots; Identify base locations, keep track of own and enemy units, find valid placement for buildings, automatically queue requirements to fulfil production orders, manage units as squads — anyone who has written a bot from scratch knows that even launching a game with the correct settings can be quite an undertaking at first. All this came as a neat little NuGet package that allowed you to simply queue a Banshee (in one line of code) and have everything else managed for you.

It even exposed unit groupings (squads) to external modules, allowing developers to write modules in different languages and have them work seemingly together as one (at a small performance cost). NydusWorm provided a proof-of-concept to this multi-language (C# <-> Python) approach.

What it is…
The framework has now laid dormant for a little over 2 years. A minor bug caused the framework to not launch if multiple versions of SC2 existed in the \StarCraft II\Versions folder — resulting in frustration for anyone who tried to pick-up the new framework.

To add insult to injury, the 4.8.4 patch has destroyed some inner workings of Abathur, rendering it useless in its current state.

What the future brings…
Finishing my masters in Computer Science has cleared up time in my schedule and I have decided to dust off this old gem. I plan on getting the framework functional again, upgrading to .NET Core 3.2 and expand it a bit.

The Python part of the project (NydusWorm) will remain neglected for now. I will share frustrations, hacks, and revelations here on Medium.

Feel free to reach out!

--

--

Jens Schmidt

Software Engineer @ Smoking Gun Interactive, Vancouver. Currently working on https://kallax.io/app