home | features | getting started | FAQ | Stone | Iron | Control the Iron! | download | help | about

# Welcome to the BWEM library homepage

[online version of this page]

Brood War Easy Map is a C++ library that analyses Brood War's maps and provides relevant information such as areas, choke points and base locations.
It is built on top of the BWAPI library.
It first aims at simplifying the development of bots for Brood War, but can be used for any task requiring high level map information. It can be used as a replacement for the BWTA2 add-on, as it performs faster and shows better robustness while providing similar information.

The current version is 1.4

It has been tested with Microsoft Visual Studio Express 2013 for Windows Desktop, 32-bit

If you encounter any bug, error or warning message, do not hesitate to report it on http://sourceforge.net/p/bwem/discussion/general or contact me.

## Screenshots:

Andromeda.scx

Ride of Valkyries.scx

Heartbreak Ridge.scx

Great Barrier Reef.scx

Baby Steps.scm

## Download link

## License: MIT/X11

## Requirements:

- BWAPI 4.1.2
- C++11 compiler (e.g. Visual Studio 2013)

## Limitations:

- BWEM doesn't provide any geometric description (polygon) of the computed areas. If you need this, check the BWTA2 library
- BWEM is not compatible with older versions of BWAPI (prior to 4.0). If you need such compatibility, check the BWTA library

## History:

### July, 2017 : 1.4

- fix: A bug in Area::BoundingBoxSize
- fix: A bug with BWAPIClient and Map reinitialization (thanks to Florian Klemme for report and good hint)
- fix: A bug with Electric Circuit (thanks to Florian Klemme @Kruecke for report)
- fix: UserData::(Set)Ext was wrongly equivalent to UserData::(Set)Ptr (thanks to Florian Klemme for report and fix)
- fix: Compiling under vs 2017 (thanks to Joseph Huang for report and fix)
- new feature: ExampleWall
- new feature: BWEM_ext::disjoint

### September, 2016 : 1.3

- fix: A bug in Map::Crop
- fix: The length calculation in Map::GetPath has been improved in the case of a path through one ChokePoint exactly.
- new feature: Area::LowGroundPercentage, Area::HighGroundPercentage, Area::VeryHighGroundPercentage
- new feature: Tile::Doodad
- new feature: Ressource::Amount
- new feature: inBoundingBox
- new feature: Map::Initialized()
- new feature: GridMap
- new feature: Added the macros BWEM_USE_WINUTILS and BWEM_USE_MAP_PRINTER
- break: Tile::HigherGround was somewhat useless and has been replaced with Tile::GroundHeight (see the screenshot Ride of Valkyries.scx. See also this related issue in BWAPI).
- break: The type utils::check_t is now a class enum. If you used the 'check' and 'no_check' values explicitly, you will have to replace them with 'check_t::check' and 'check_t::no_check' respectively.

### November, 2015 : 1.2

- fix: MapPrinter could crash when writing the file, due to some invalid path. Now errors are handled in the constructor in a safer way.
- fix: The semantics of MapPrinter::showAreas and MapPrinter::showContinents have been made clearer.
- fix: An empty Log.txt was created and could crash, due to some invalid path. This file creation has been removed.
- fix: Tile::Data and Tile::SetData are no longer used by the internals. This removes the possibility that the automatic path recalculation overwrites user data.
- fix: BWAPI_ext::makeBoundingBoxIncludePoint is now more robust.
- feature: Area, ChokePoint, Base and Tile classes now inherit from the UserData class, thus providing them with the same free-to-use data.

### September, 2015 : first release 1.0 beta

home | features | getting started | FAQ | Stone | Iron | Control the Iron! | download | help | about