Skip to content

Commit 00a2050

Browse files
author
Bytekeeper
committed
Updated readme.
1 parent b7f63f9 commit 00a2050

File tree

1 file changed

+30
-19
lines changed

1 file changed

+30
-19
lines changed

README.md

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,16 @@ Part of the problem is the question "who will win?"
77

88
ASS tries to answer that question by allowing a simulation of possible outcome.
99

10+
Additionally, various utilities for path-finding or fast location queries are also available.
11+
1012
## References
1113

1214
[Appveyor Build Artifact](https://ci.appveyor.com/project/Bytekeeper/ass/build/artifacts)
1315

1416
[Javadoc](http://docs.bytekeeper.org/)
1517

18+
[JBWAPI](https://github.com/JasperGeurtz/JBWAPI/)
19+
1620
[BWAPI4J](https://github.com/OpenBW/BWAPI4J)
1721

1822
[BWMirror](https://github.com/vjurenka/BWMirror)
@@ -24,8 +28,8 @@ ASS tries to answer that question by allowing a simulation of possible outcome.
2428

2529

2630
## Usage
27-
While the simulator is API independent, [BWAPI4J](https://github.com/OpenBW/BWAPI4J)
28-
is working out of the box. [JBWAPI](https://github.com/JasperGeurtz/JBWAPI/)
31+
While the simulator is API independent, [JBWAPI](https://github.com/JasperGeurtz/JBWAPI/)
32+
and [BWAPI4J](https://github.com/OpenBW/BWAPI4J) work out of the box.
2933
[BWMirror](https://github.com/vjurenka/BWMirror) should also
3034
work but is not thoroughly tested.
3135

@@ -75,21 +79,11 @@ To get it, either download and build it yourself or grab the
7579
the `BWAPI4JAgentFactory` (resp. `BWMirrorAgentFactory`) can be used to create an `Agent` for an existing `Unit`.
7680
Creating `Agents` by using just a `UnitType` is also possible.
7781

78-
### Simulator
82+
# Simulator
7983
The main class is `Simulator`. You can add `Agents` for player A or player B here.
8084
After doing that, you can simulate a number of frames (default: 96). Next, you
8185
retrieve the result and check if it's to your liking (some of your units survived?).
8286

83-
### Evaluator
84-
Another way to estimate outcome of a battle is to use the `Evaluator`. It does not simulate
85-
agents as the `Simulator does`. Instead it uses some heuristics to determine a
86-
"how well is player A going to be vs B" ranging from [0-1].
87-
88-
The basic idea is:
89-
* Let all agents of A shoot at B and all agents of B shoot at A
90-
* Divide through the combined health to determine how many agents would have died in that round
91-
* Medic heal, health and shield regen are also factored in
92-
9387
## Features
9488
Simulates:
9589
* Medics
@@ -104,10 +98,11 @@ Simulates:
10498
* Splash (Radial, Line and "Bounce" aka Tanks, Lurkers and Mutas)
10599
* Stim, Armor, Weapon, Range and Speed upgrades
106100
* `master`: Effects like plague, lockdown, stasis, dark swarm
101+
* `master`: Frame skipping to improve simulation performance at cost of precision
107102

108103
## Limitations
109104
* Elevation is deemed "constant" within the simulation
110-
* Visibility is ignored
105+
* Visibility is ignored (`master`: visibility is "constant" within the simulation)
111106
* Spellcasters are doing nothing
112107
* Distance mechanism does not match BW's "boxed" distances
113108
* Instant acceleration
@@ -135,21 +130,37 @@ Attackers:
135130

136131
You can also use the `RetreatBehavior` to make some or all units run away instead of attacking.
137132

138-
## Additional APIs
133+
## Evaluator
134+
Another way to estimate outcome of a battle is to use the `Evaluator`. It does not simulate
135+
agents as the `Simulator does`. Instead it uses some heuristics to determine a
136+
"how well is player A going to be vs B" ranging from [0-1].
139137

140-
### Modified DBScan
138+
The basic idea is:
139+
* Let all agents of A shoot at B and all agents of B shoot at A
140+
* Divide through the combined health to determine how many agents would have died in that round
141+
* Medic heal, health and shield regen are also factored in
142+
143+
144+
# Additional APIs
145+
146+
## Modified DBScan
141147
A DBScan based clustering algorithm.
142148
* Stable clustering: Unless a cluster is split up, units will end up in the same cluster as in previous runs
143149
* Iterative: Instead of assigning all units to clusters at once, do it iteratively. Once done,
144150
the clustering restarts and the previous result can be accessed.
145151

146-
### PositionQueries
152+
## PositionQueries
147153
A utility class to make 2D-position based queries:
148154
* radius queries
149155
* area queries
150156
* nearest queries
151157

152-
### Jump Path Search
158+
## Jump Path Search
153159
An implementation of the algorithm described here: https://zerowidth.com/2013/05/05/jump-point-search-explained.html
154160

155-
Generally much faster that a normal A* while still being optimal.
161+
Generally much faster that a normal A* while still being optimal.
162+
163+
## `Master`-only
164+
* GMS class to manage gas, minerals and supply in one value type.
165+
* Can be used to manage existing resources vs cost of units, tech or upgrades
166+

0 commit comments

Comments
 (0)