Skip to content

Pure Java BWAPI Client implementation for JVM languages

License

Notifications You must be signed in to change notification settings

JavaBWAPI/JBWAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build StatusTotal alertsLanguage grade: Java

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 !

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>1.5.1</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:1.5.1'
}

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!