Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,5 @@ jobs:
java-version: ${{ matrix.java }}
- name: Build with Maven
run: mvn -B package --file pom.xml
- name: Test with Maven
run: mvn test
49 changes: 30 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,39 @@
[![Build Status](https://travis-ci.org/JavaBWAPI/JBWAPI.svg?branch=develop)](https://travis-ci.org/JavaBWAPI/JBWAPI)[![Total alerts](https://img.shields.io/lgtm/alerts/g/JavaBWAPI/JBWAPI.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/JavaBWAPI/JBWAPI/alerts/)[![Language grade: Java](https://img.shields.io/lgtm/grade/java/g/JavaBWAPI/JBWAPI.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/JavaBWAPI/JBWAPI/context:java)
[![Build Statues](https://github.com/JavaBWAPI/JBWAPI/actions/workflows/maven.yml/badge.svg)](https://github.com/JavaBWAPI/JBWAPI/actions/workflows/maven.yml)
[![CodeQL](https://github.com/JavaBWAPI/JBWAPI/actions/workflows/codeql.yml/badge.svg)](https://github.com/JavaBWAPI/JBWAPI/actions/workflows/codeql.yml)

# JBWAPI

Pure Java [bwapi](https://github.com/bwapi/bwapi) 4.4.0 client implementation backed by [N00byEdge](https://github.com/N00byEdge)'s [JavaBWAPIBackend](https://github.com/N00byEdge/JavaBWAPIBackend) idea and automated by [Bytekeeper](https://github.com/Bytekeeper).
Pure Java [bwapi](https://github.com/bwapi/bwapi) 4.4.0 client implementation backed by
[N00byEdge](https://github.com/N00byEdge)'s [JavaBWAPIBackend](https://github.com/N00byEdge/JavaBWAPIBackend) idea and
automated by [Bytekeeper](https://github.com/Bytekeeper).

Also contains a modified version of the pure Java BWEM implementation from [BWAPI4J](https://github.com/OpenBW/BWAPI4J).

## Goals

- Have a similar (Java) interface to BWMirror to make porting BWMirror bots easy without all the DLL and JNI hassle and overhead.
- 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](https://github.com/JavaBWAPI/JBWAPI/issues/17) 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](https://deeplearning4j.org/) requires 64 bit Java which bwmirror doesn't support).
- At least [5x](https://github.com/JavaBWAPI/JBWAPI/issues/17) faster compared to BWMirror for primitives as it
directly reads the memory mapped client file. Even faster for BWAPI objects as it also avoids marshalling.
- Supports both 32-and 64-bit Java (e.g. [deeplearning4j](https://deeplearning4j.org/) requires 64-bit Java which
BWMirror doesn't support).
- BWEM instead of BWTA as map analyser.
- Supports Linux "natively" using [openbw](https://github.com/JavaBWAPI/JBWAPI/pull/73), made possible by by [ByteKeeper](https://github.com/Bytekeeper)
- `Async` support for realtime tournament constraints, made possible by [dgant](https://github.com/dgant)
- Supports Linux "natively" using [openbw](https://github.com/JavaBWAPI/JBWAPI/pull/73), made possible by
[ByteKeeper](https://github.com/Bytekeeper).
- `Async` support for realtime tournament constraints, made possible by [dgant](https://github.com/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.
- A fake BWTA is provided for an easier transition from BWMirror. However, it translates BWTA calls to their respective
BWEM calls, so specific Regions/Chokepoints etc. may differ.

## Usage

**Maven**
### Maven

Add JitPack as a repository:
```
Expand All @@ -44,7 +53,7 @@ Add JBWAPI to your dependencies in `<dependencies></dependencies>`:
</dependency>
```

**Gradle**
### Gradle

Add JitPack as a repository:
```
Expand All @@ -62,9 +71,10 @@ dependencies {
}
```

**Jar**
### Jar

Alternatively add the latest .jar from the [releases](https://github.com/JavaBWAPI/JBWAPI/releases) page to your project.
Alternatively add the latest `.jar` from the [releases](https://github.com/JavaBWAPI/JBWAPI/releases) page to your
project.

## Compilation

Expand All @@ -76,9 +86,9 @@ or if you already have maven installed

## Example

A simple `Hello World` bot is as easy as
A simple `Hello World` bot is as easy as:

```Java
```java
import bwapi.*;

class HelloBot extends DefaultBWListener {
Expand Down Expand Up @@ -106,18 +116,19 @@ You can also ask any further questions on the [SSCAIT Discord](https://discord.g

## Tutorial

If you are a just starting out with bot development, it might be helpful to follow the [tutorial](https://github.com/JavaBWAPI/Java-BWAPI-Tutorial/wiki)!

If you are a just starting out with bot development, it might be helpful to follow the
[tutorial](https://github.com/JavaBWAPI/Java-BWAPI-Tutorial/wiki)!

## Bots

Some bots using [JBWAPI](https://github.com/JavaBWAPI/JBWAPI) (feel free to open a pullrequest to add yours!)
Some bots using [JBWAPI](https://github.com/JavaBWAPI/JBWAPI) (feel free to open a pull request 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](https://www.winehq.org/)
or try to use `openbw` by following the following [instructions](./build_with_openbw.md)
If you use Linux you can choose to develop normally and run the `jar` and `starcraft` using
[wine](https://www.winehq.org/) or try to use `openbw` by following the following
[instructions](./build_with_openbw.md).
Loading