Deep RL 课程文档

(可选) 如何自定义环境

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始入门

(可选) 如何自定义环境

如果您想自定义游戏关卡,请打开关卡场景 res://scenes/level.tscn,然后在 Godot 文件系统中打开 res://scenes/modules/ 文件夹

level scene

该关卡包含 3 个使用模块、机器人和一些额外的碰撞器制作的房间,这些碰撞器阻止了通过爬上第一个房间的墙壁并以这种方式到达钥匙来完成关卡的能力。通过将模块添加到场景中,您可以添加新的房间和物品。

如果您单击 Key 节点(它在 Room3 中,您也可以搜索它),然后单击 Node > Signals,您将看到 collected 信号已连接到机器人和箱子。我们使用它来跟踪机器人是否收集了钥匙,以及解锁箱子。相同的系统也应用于使用拉杆激活楼梯,如果您添加更多拉杆/楼梯/钥匙,您可以使用信号将它们连接起来。

level signals

如果您切换到 Groups,您将看到钥匙是 resetable 组的成员。在同一组中,我们有木筏、拉杆、箱子、玩家,并且可以添加任何在剧集重置时需要重置的节点。

resetables group

为了使其工作,resetable 组中的每个对象还需要实现 reset() 方法,该方法负责重置该对象。

因为我们有多个关卡场景实例用于训练,所以我们不会重置所有 resetables,而只重置同一场景中的那些。在 level_manager.gd 中,我们有一个方法 reset_all_resetables() 负责执行此操作,并且在需要重置时由机器人脚本调用。

在更改关卡大小后,还需要更新 robot_ai_controller.gd 中的 level_size 变量。为此,只需粗略测量关卡的最长维度,并更新变量即可。

如果您更改了 AIController 需要跟踪的对象数量(拉杆、木筏等),您将需要在脚本中更新相关代码,包括这些对象的导出属性,然后在关卡场景的 AIController 的检查器属性中连接它们

ai controller inspector properties

在此之后,您可能还需要在演示记录场景中更新 AIController 的相同属性。

< > 在 GitHub 上更新