After finishing my work on updating the BWAPI-Mono-Bridge2, I again decided to work on StarCraft for a final demontration of my idea of intelligent plan switching.

The Bridge is an updated version of someone else's work which did not work anymore when I wanted to allow Bath students to work on StarCraft. Two years ago I did a quick fix and updated the SWIG wrapper from BWAPI 3.5 to BWAPI 3.7.4

After concentrating on other areas and as I am now nearly concluding my PhD, I thought I will return to RTS planning a last time. I still did not find another Wrapper for BWAPI, which is entirely written in C++, and Csharp. So I updated my bridge, fixing some small issues with how the lists internally are handled. It took quite some time to understand SWIG and how to write macros for automatically wrapping a large API like BWAPI. The latest release of my wrapper seems to do the job nicely for BWAPI 3.7.4 using SWIG 3.0.5.

I initially planned to update the wrapper to be able to handle BWAPI 4.1, however it seems that my understanding of SWIG and C++11 is not enough to wrap the code correctly. I spent some time but found that C++11 presents a major hurdle when wrapping the API due to issues with templating and strongly typed enums...

Back to my AI plans:

The main idea is still my belief that human design and knowledge bases derived from human problem conceptualization are really helpful and outperform fully automated reasoning. The issue being, the search place of possible approaches to a good solution is far too big/time consuming to search. StarCraft contains a reasonably well detailed library of strategies and opening books which seemed like an ideal starting point. Why not represent those books as plans and allow a dynamic transition using my planner (an HTN planner). The planner at run-time is in charge of deliberation and plan switching. At design time however we utilize human design to create plans based on the existing data base.

I think that is interesting ;)

I am not saying advanced CI techniques such as MCTS or GP are worst but the combination is at least for me more interesting than a "simple" search approach.