Godot游戏引擎的深度强化学习包
项目描述
Godot RL代理
欢迎加入我们的Discord,以获取有关Godot RL代理的帮助和讨论。
Godot RL代理是一个完全开源的包,允许游戏创作者、AI研究人员和爱好者学习NPC或代理的复杂行为。此存储库提供
- 在Godot引擎中创建的游戏与在Python中运行的机器学习算法之间的接口
- 四个知名rl框架的包装器:StableBaselines3、Sample Factory、Ray RLLib和CleanRL。
- 支持基于内存的代理,具有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新手或未使用虚拟环境,强烈建议使用venv
或Conda创建一个虚拟环境,以隔离项目依赖项。
一旦您设置了虚拟环境,请继续进行安装
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编辑器中训练代理,而无需导出游戏可执行文件。
- 从https://godotengine.org/下载Godot 4游戏引擎
- 打开引擎,将
examples/godot_rl_JumperHard
中的JumperHard示例导入到引擎中 - 在编辑器中开始训练:
gdrl
创建自定义环境
有关创建自定义环境的专用教程在这里。我们建议在尝试创建自己的环境之前遵循此教程。
如果您在开始时遇到任何问题,请在我们的Discord上寻求帮助或提交GitHub问题。
将您的训练代理导出和加载为onnx格式
库的最新版本提供了对Stable Baselines 3、rllib和CleanRL训练框架的onnx模型的实验性支持。
- 首先,使用sb3示例(使用脚本的说明)训练您的代理,启用选项
--onnx_export_path=GameModel.onnx
- 然后,使用Godot编辑器的
mono
版本,将onnx模型路径添加到sync节点中。如果您看不到此选项,您可能需要从此处下载插件 - 现在游戏应该会使用onnx模型加载并运行。如果您在构建项目时遇到问题,请确保您项目中的
.csproj
和.sln
文件的内容与插件源的内容相匹配。
高级用法
https://user-images.githubusercontent.com/7275864/209160117-cd95fa6b-67a0-40af-9d89-ea324b301795.mp4
请在跟随本节之前确保您已成功完成快速入门指南。
Godot RL Agents支持4个不同的RL训练框架,以下链接详细介绍了如何使用特定的后端
- StableBaselines3(Windows、Mac、Linux)
- SampleFactory(Mac、Linux)
- CleanRL(Windows、Mac、Linux)
- Ray rllib(Windows、Mac、Linux)
贡献
我们欢迎对库的新贡献,例如
- 使用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的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | fe00b92909ea5e9e8d870da83b68a3302250d479f4e898dc47be319e799c4383 |
|
MD5 | a40251bc74c81f32fab3ae4d3f7f43dd |
|
BLAKE2b-256 | 693523df07945e4a9a2dca7e6818dcef13bdb7033a104b7b3ededa56006dcab1 |