JBWAPI
JBWAPI copied to clipboard
Pure Java BWAPI Client implementation for JVM languages
JBWAPI
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.
Goals
- 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.
Advantages
- 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
Asyncsupport for realtime tournament constraints, made possible by dgant
Warnings
- 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.
Usage
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.
Compilation
mvnw.cmd package
or if you already have maven installed
mvn package
Example
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();
}
}
Documentation
The API documentation can be found here.
You can also ask any further questions on the SSCAIT Discord
Tutorial
If you are a just starting out with bot development, it might be helpful to follow the tutorial!
Bots
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
Linux
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