深度强化学习课程文档

(可选)如何自定义环境

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

(可选)如何自定义环境

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

level scene

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

如果您点击“钥匙”节点(它在 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 上更新