Pure Java bwapi 4.4.0 client implementation backed by N00byEdge's JavaBWAPIBackend idea and automated by Bytekeeper.
Also contains a modified version of the pure Java BWEM implementation from BWAPI4J.
- Have a similar (Java) interface to BWMirror to make porting BWMirror bots easy without all the DLL and JNI hassle and overhead.
- Stay as updated as possible with the BWAPI releases.
- No dependency on external DLL's.
- At least 5x faster compared to BWMirror for primitives as it directly reads the memory mapped client file. Even faster for BWAPI objects as it also avoids type marshalling
- Supports both 32 and 64 bit Java (e.g. deeplearning4j requires 64 bit Java which bwmirror doesn't support).
- BWEM instead of BWTA as map analyser.
- Supports Linux "natively" using openbw, made possible by by ByteKeeper
Async
support for realtime tournament constraints, made possible by dgant
- A fake BWTA is provided for easier porting from BWMirror, but it translates BWTA calls to their respective BWEM calls, so specific Regions/Chokepoints etc. may differ.
Maven
Add JitPack as a repository:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
Add JBWAPI to your dependencies in <dependencies></dependencies>
:
<dependency>
<groupId>com.github.JavaBWAPI</groupId>
<artifactId>JBWAPI</artifactId>
<version>2.1.0</version>
</dependency>
Gradle
Add JitPack as a repository:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Add JBWAPI as a dependency:
dependencies {
implementation 'com.github.JavaBWAPI:JBWAPI:2.1.0'
}
Jar
Alternatively add the latest .jar from the releases page to your project.
mvnw.cmd package
or if you already have maven installed
mvn package
A simple Hello World
bot is as easy as
import bwapi.*;
class HelloBot extends DefaultBWListener {
private BWClient bwClient;
@Override
public void onFrame() {
Game game = bwClient.getGame();
game.drawTextScreen(100, 100, "Hello World!");
}
public static void main(String[] args) {
HelloBot bot = new HelloBot();
bot.bwClient = new BWClient(bot);
bot.bwClient.startGame();
}
}
The API documentation can be found here.
You can also ask any further questions on the SSCAIT Discord
If you are a just starting out with bot development, it might be helpful to follow the tutorial!
Some bots using JBWAPI (feel free to open a pullrequest to add yours!)
- https://github.com/dgant/PurpleWave
- https://github.com/Ravaelles/Atlantis
- https://github.com/impie66/Kangaroo-Bot
If you use Linux you can choose to develop normally and run the jar
and starcraft
using wine
or try to use openbw
by following the following instructions