wraitii
df18102e96
This adds a new endpoint to the RL interface for evaluating custom JavaScript. When combined with the ability to create arbitrary modifiers, this provides the required functionality for exploring quantitative game balancing. Patch By: irishninja Fixes #5981 Differential Revision: https://code.wildfiregames.com/D3479 This was SVN commit r24962. |
||
---|---|---|
.. | ||
samples | ||
tests | ||
zero_ad | ||
README.md | ||
requirements-dev.txt | ||
setup.py |
0 AD Python Client
This directory contains zero_ad
, a python client for 0 AD which enables users to control the environment headlessly.
Installation
zero_ad
can be installed with pip
by running the following from the current directory:
pip install .
Development dependencies can be installed with pip install -r requirements-dev.txt
. Tests are using pytest and can be run with python -m pytest
.
Basic Usage
If there is not a running instance of 0 AD, first start 0 AD with the RL interface enabled:
pyrogenesis --rl-interface=127.0.0.1:6000
Next, the python client can be connected with:
import zero_ad
from zero_ad import ZeroAD
game = ZeroAD('http://localhost:6000')
A map can be loaded with:
with open('./samples/arcadia.json', 'r') as f:
arcadia_config = f.read()
state = game.reset(arcadia_config)
where ./samples/arcadia.json
is the path to a game configuration JSON (included in the first line of the commands.txt file in a game replay directory) and state
contains the initial game state for the given map. The game engine can be stepped (optionally applying actions at each step) with:
state = game.step()
For example, enemy units could be attacked with:
my_units = state.units(owner=1)
enemy_units = state.units(owner=2)
actions = [zero_ad.actions.attack(my_units, enemy_units[0])]
state = game.step(actions)
For a more thorough example, check out samples/simple-example.py!