Skip to main content

A python interface for training Reinforcement Learning bots to battle on pokemon showdown.

Project description

Poke-env: Python Interface for Pokemon Showdown Bots

PyPI version fury.io PyPI pyversions License: MIT Documentation Status codecov

poke-env is a Python library for building scripted agents, self-play experiments, and reinforcement learning workflows on Pokemon Showdown.

A simple agent in action

Installation

This project requires Python >= 3.10 and access to a Pokemon Showdown server. For training and local development, running your own server is strongly recommended.

pip install poke-env

You can use smogon's server to try out your agents against humans, but having a development server is strongly recommended. In particular, it is recommended to use the --no-security flag to run a local server with most rate limiting and throttling turned off. Please refer to the docs for detailed setup instructions.

git clone https://github.com/smogon/pokemon-showdown.git
cd pokemon-showdown
npm install
cp config/config-example.js config/config.js
node pokemon-showdown start --no-security

First local battle

Once your local server is running, the quickest way to verify your setup is to run two built-in players against each other. RandomPlayer uses the default localhost server configuration, so this script should work as-is:

import asyncio

from poke_env.player import RandomPlayer


async def main():
    player_1 = RandomPlayer(max_concurrent_battles=1)
    player_2 = RandomPlayer(max_concurrent_battles=1)

    await player_1.battle_against(player_2, n_battles=1)

    print(f"Finished battles: {player_1.n_finished_battles}")
    print(f"Player 1 wins: {player_1.n_won_battles}")


if __name__ == "__main__":
    asyncio.run(main())

To build your own bot, subclass Player and override choose_move. The quickstart guide walks through that step by step.

Documentation and examples

Documentation, detailed examples, and starting code are available on Read the Docs.

Useful entry points:

Development version

You can also clone the latest master version with:

git clone https://github.com/hsahovic/poke-env.git

Dependencies and development dependencies can then be installed with:

pip install .[dev]

Acknowledgements

This project is a follow-up of a group project from an artificial intelligence class at Ecole Polytechnique.

You can find the original repository here. It is partially inspired by the showdown-battle-bot project. Of course, none of these would have been possible without Pokemon Showdown.

Team data comes from Smogon forums' RMT section.

Data

Data files are adapted versions of the js data files from Pokemon Showdown.

License

License: MIT

Citing poke-env

@misc{poke_env,
    author       = {Haris Sahovic},
    title        = {Poke-env: pokemon AI in python},
    url          = {https://github.com/hsahovic/poke-env}
}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

poke_env-0.13.0.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

poke_env-0.13.0-py3-none-any.whl (1.4 MB view details)

Uploaded Python 3

File details

Details for the file poke_env-0.13.0.tar.gz.

File metadata

  • Download URL: poke_env-0.13.0.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for poke_env-0.13.0.tar.gz
Algorithm Hash digest
SHA256 d2b2ed02aee9785a5fb435a04952b5423020313895dc7ca62385841345d6b884
MD5 4832e2bf86794140f3703423c3235eb2
BLAKE2b-256 211df7809a6eefb974227bdf82c778094992e332d334efbdda9e4bcc17cd7823

See more details on using hashes here.

File details

Details for the file poke_env-0.13.0-py3-none-any.whl.

File metadata

  • Download URL: poke_env-0.13.0-py3-none-any.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for poke_env-0.13.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5b17eb2f446bdd04b6a5cc465f68735d4207b4a04e3e7a8557d8701b81e14f6f
MD5 b5d392be7b17a13392796a667847219d
BLAKE2b-256 8d685c7e5586ebd5364d19d74949f2dac249fdbc30aaf86ef9b592418cf7dc89

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page