跳转到主要内容

Godot游戏引擎的深度强化学习包

项目描述

Godot RL代理

欢迎加入我们的Discord,以获取有关Godot RL代理的帮助和讨论。

Godot RL代理是一个完全开源的包,允许游戏创作者、AI研究人员和爱好者学习NPC或代理的复杂行为。此存储库提供

  • 在Godot引擎中创建的游戏与在Python中运行的机器学习算法之间的接口
  • 四个知名rl框架的包装器:StableBaselines3Sample FactoryRay RLLibCleanRL
  • 支持基于内存的代理,具有LSTM或基于注意力的接口
  • 支持2D和3D游戏
  • 一套AI传感器,增强您的代理观察游戏世界的能力
  • Godot和Godot RL代理在非常宽松的MIT许可证下完全免费和开源。没有任何附加条件,没有任何版税,什么都没有。

您可以在我们的AAAI-2022研讨会论文中了解更多关于Godot RL代理的信息。

https://user-images.githubusercontent.com/7275864/140730165-dbfddb61-cc90-47c7-86b3-88086d376641.mp4

快速入门指南

本快速入门指南将指导您使用StableBaselines3后端在Godot RL Agents库中快速开始使用,因为它支持Windows、Mac和Linux。我们建议从这里开始,然后在学习更复杂的代理行为时尝试我们的高级教程。此外,还有一个视频教程,展示了如何安装库和创建自定义环境。

安装和首次训练

安装Godot RL Agents库。如果您是Python新手或未使用虚拟环境,强烈建议使用venvConda创建一个虚拟环境,以隔离项目依赖项。

一旦您设置了虚拟环境,请继续进行安装

pip install godot-rl

下载一个或多个示例,例如BallChase、JumperHard、FlyBy。示例

gdrl.env_from_hub -r edbeeching/godot_rl_JumperHard

您可能需要添加游戏可执行文件运行权限。

chmod +x examples/godot_rl_JumperHard/bin/JumperHard.x86_64

训练和可视化

gdrl --env=gdrl --env_path=examples/godot_rl_JumperHard/bin/JumperHard.x86_64 --experiment_name=Experiment_01 --viz

编辑器交互式训练

您也可以在Godot编辑器中训练代理,而无需导出游戏可执行文件。

  1. https://godotengine.org/下载Godot 4游戏引擎
  2. 打开引擎,将examples/godot_rl_JumperHard中的JumperHard示例导入到引擎中
  3. 在编辑器中开始训练:gdrl

创建自定义环境

有关创建自定义环境的专用教程在这里。我们建议在尝试创建自己的环境之前遵循此教程。

如果您在开始时遇到任何问题,请在我们的Discord上寻求帮助或提交GitHub问题。

将您的训练代理导出和加载为onnx格式

库的最新版本提供了对Stable Baselines 3、rllib和CleanRL训练框架的onnx模型的实验性支持。

  1. 首先,使用sb3示例使用脚本的说明)训练您的代理,启用选项--onnx_export_path=GameModel.onnx
  2. 然后,使用Godot编辑器的mono版本,将onnx模型路径添加到sync节点中。如果您看不到此选项,您可能需要从此处下载插件
  3. 现在游戏应该会使用onnx模型加载并运行。如果您在构建项目时遇到问题,请确保您项目中的.csproj.sln文件的内容与插件的内容相匹配。

高级用法

https://user-images.githubusercontent.com/7275864/209160117-cd95fa6b-67a0-40af-9d89-ea324b301795.mp4

请在跟随本节之前确保您已成功完成快速入门指南。

Godot RL Agents支持4个不同的RL训练框架,以下链接详细介绍了如何使用特定的后端

贡献

我们欢迎对库的新贡献,例如

  • 使用Godot创建的新环境
  • readme文件的改进
  • 对Python代码库的补充

首先通过创建仓库的分支并克隆到您的机器上开始,然后创建一个venv并执行可编辑安装。

# If you want to PR, you should fork the lib or ask to be a contibutor

git clone git@github.com:YOUR_USERNAME/godot_rl_agents.git
cd godot_rl_agents
python -m venv venv
pip install -e ".[dev]"
# check tests run
make test

然后添加您的功能。使用以下方式格式化代码

make style
make quality

然后对原始仓库中的main创建PR。

常见问题解答

为什么我们开发了Godot RL Agents?

框架的目标是

  • 为深度强化学习和游戏开发提供一款免费的开源工具。
  • 让游戏制作者能够赋予他们的非玩家角色独特的行动。
  • 通过与其他强化学习智能体交互进行自动化的游戏玩法测试。

我如何为Godot RL Agents做出贡献?

请尝试使用,找出错误,或者如果你自己修复了它们,提交一个拉取请求。

你将在何时提供Mac支持?

现在应该可以正常工作了,如果有任何问题,请告诉我们。

你能帮助我的游戏项目吗?

如果这里的README和文档没有提供足够的信息,请通过Discord或GitHub与我们联系,我们可能能够提供一些建议。

这个工具与Unity ML agents有多相似?

我们受到Unity ML agents工具包的启发,我们旨在提供一个更紧凑、简洁且易于修改的代码库,抽象程度较低。

许可证

Godot RL Agents是MIT许可。有关详细信息,请参阅许可证文件

"卡通飞机"(https://skfb.ly/UOLT)由antonmoek授权,许可协议为Creative Commons Attribution(http://creativecommons.org/licenses/by/4.0/)。

引用Godot RL Agents

@article{beeching2021godotrlagents,
  author={Beeching, Edward and Dibangoye, Jilles and
    Simonin, Olivier and Wolf, Christian},
title = {Godot Reinforcement Learning Agents},
journal = {{arXiv preprint arXiv:2112.03636.},
year = {2021},
}

致谢

我们感谢Godot Engine的作者为我们提供了一个如此强大且灵活的游戏引擎,用于AI智能体开发。我们感谢Sample Factory、Clean RL、Ray和Stable Baselines的开发者创建了易于使用且强大的RL训练框架。我们感谢Unity ML Agents Toolkit的创作者,他们的作品启发我们创作了这个项目。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源代码分发

godot_rl-0.8.1.tar.gz (29.6 kB 查看散列)

上传时间 源代码

构建分发

godot_rl-0.8.1-py3-none-any.whl (28.4 kB 查看散列)

上传时间 Python 3

由以下支持