bevy_rl_shooter

Crates.iobevy_rl_shooter
lib.rsbevy_rl_shooter
version0.1.2
sourcesrc
created_at2023-01-05 18:23:28.497452
updated_at2023-01-05 18:23:28.497452
description👾Multi-Agent 🎮 FPS Gym Environment with 🏋️ bevy_rl
homepage
repositoryhttps://github.com/stillonearth/bevy_rl_shooter
max_upload_size
id751725
size471,505
Sergei Surovtsev (stillonearth)

documentation

README

👾Multi-Agent 🎮 FPS Gym Environment with 🏋️ bevy_rl

Crates.io MIT/Apache 2.0 Rust

https://user-images.githubusercontent.com/97428129/192408835-3a2857bf-ee6a-4213-b469-d0af0a1fc75b.mp4

Project Description

This is a basic multi-agent gym environment for bevy_rl. It is a deathmatch free-for-all environment where agents spawn as red spheres and get +10 reward on kill. The environment is implemented in Rust using bevy game engine and bevy_rl plugin.

It implements very basics of a multi-agent environment. It is a good starting point for creating more complex environments.

  • Random initialization of agents
  • REST API for controlling agents (including state, reward and camera pixels)
  • REST API to reset an environment

You can wrap the environment with a python wrapper and use it with OpenAI Gym interface. (example in python/bevy_rl_rest_api.ipynb)

Environment Description

  • 16 agents spawn in a random position
  • Agents can move and rotate
  • Environment pauses every 0.1 second to fetch control commands from REST API
  • Reward: +10 on kill

Usage

  • follow bevy's setup guide to set up Rust
  • build an environment with cargo build +nightly --release;
  • run environment with ./target/release/bevy_rl_shooter --mode train
  • python/env.py implements a python wrapper for an environment
  • python/bevy_rl_rest_api.ipynb illustrates how to use the wrapper
Commit count: 130

cargo fmt