Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/DrInfy/sc2-pathlib
Pathfinding and terrain analysis library for Starcraft 2 bot api in Rust
https://github.com/DrInfy/sc2-pathlib
Last synced: 3 months ago
JSON representation
Pathfinding and terrain analysis library for Starcraft 2 bot api in Rust
- Host: GitHub
- URL: https://github.com/DrInfy/sc2-pathlib
- Owner: DrInfy
- License: mit
- Created: 2019-06-23T17:54:34.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-06-05T19:40:39.000Z (over 1 year ago)
- Last Synced: 2024-07-18T01:32:12.414Z (4 months ago)
- Language: Rust
- Size: 491 KB
- Stars: 14
- Watchers: 2
- Forks: 9
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-sc2-ai - sc2-pathlib - Pathfinding and terrain analysis library for Starcraft 2 bot api in Rust (Libraries / Python Libraries)
README
# sc2-pathlib
Pathfinding and terrain analysis library for Starcraft 2 bot api in Rust## Getting Started
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
### Prerequisites
#### PythonYou will need Python 3.7 or newer.
#### Rust
You will need to install the latest Rust:
https://rustup.rs/
### Installing
Clone the sc2-pathlib repository and run `cargo build --release` in the sc2-pathlib directory. This should create a `libsc2pathlib.so`(Linux), a `sc2pathlib.dll`(Windows), or a `libsc2pathlib.dylib` file in `sc2-pathlib\target\release`. If on Windows, you need to rename the `sc2pathlib.dll` file to `sc2pathlib.pyd`.
On Linux or Mac OS, rename it to `sc2pathlib.so`.Alternatively, you can run helper scripts:
- `build.bat` on Windows
- `linux_build.sh` on Linux
- `mac_build.sh` on Mac OSCopy `sc2pathlib.so`/`sc2pathlib.pyd` to the directory where your Python program resides to be able to import it as a Python library.
#### Example
```
>>> import sc2pathlib
>>> pf = sc2pathlib.PathFind([[1,1,1,1],[0,0,0,1],[1,1,0,1],[1,1,1,1]])
>>> pf.find_path((0, 0), (2, 0))([(0, 0), (0, 1), (0, 2), (0, 3), (1, 3), (2, 3), (3, 3), (3, 2), (3, 1), (2, 0)], 9.414199829101562)
>>>
```## PathFind
#### Parameters
`grid`: A two-dimensional array using 1 for pathable and 0 for obstacles.
Example:
`[[1,1,1,1],[0,0,0,1],[1,1,0,1],[1,1,1,1]]`## Functions
### find_path
Uses A* pathfinding algorithm and returns a tuple containing the path as an array of tuples and the distance.
#### Parameters
`start`: Tuple with the x and y value of the start position.
`end`: Tuple with the x and y value of the end position.
`possible_heuristic`: Optional parameter with value between 0-2. Lower value uses less accurate heuristic for distance calculation for improved performance.### find_path_influence
Same function as above but uses influence to calculate path and return influenced distance.
#### Parameters
The same as `find_path`.