快速使用指南
简要API使用
cpp命令行测试
环境配置和编译过程参见安装指南, 编译完cpp代码后在build
目录下执行命令:
./eden
游戏环境首先会加载config
目录中的环境配置,出现[INFO] Please input script ...
时,可以输入命令执行对应功能。
首先输入game.reset
命令进行初始化,使用add.map.2-3.Meat.2
可以向地图的指定位置放置两个Meat,然后使用show.object_map
命令查看地图上的物体的分布,具体操作过程如下图中所示。
其中可以看到(2,3)位置出现了Meat(缩写为Me),(10,6)位置的Br为游戏中的智能体Brave,其左边相邻的Ra代表rabbit,地图上其他位置的缩写代表的意思可以查看config
目录中的2_agent.csv
、3_being.csv
、5_resource.csv
等文件中所设置的内容。
接下来,输入命令action.attack.Brave-0.10-5
以及game.update
,使得智能体Br攻击其左边的Rabbit,并使游戏环境进行一步。可以看到attack动作执行成功,地图上对应位置的Rabbit转变成为Meat。
如下图所示,两条命令可以合在一行中作为一条script输入,更多命令和更多特性参见事件定义脚本
python 命令行测试
编写下列脚本,使用run_script
函数即可进行类似cpp命令行测试的测试工作。除此之外,python端可以进行gym环境中的reset
、step
等函数(详细的环境信息参见python接口指南):
import gym, eden
e = gym.make('eden-v0')
e.reset() # or e.run_script('game.reset')
e.run_script('add.map.2-3.Meat.2')
e.run_script('show.object_map')
测试命令表
上述两种测试方法中,可以使用的具体测试命令参见事件定义脚本中的command
图形界面接口使用
编译安装完成之后,在Eden根目录下执行:
python -m eden.interactive
启动图形化界面如下:
界面说明
名称 | 界面区域 | 说明 |
---|---|---|
地图 | 左上角 | 白天时不可见区域(agent视野范围以外)为白色,晚上时不可见区域为黑色 |
背包 | 左下角蓝色框 | 背包格子 |
装备 | 左下角橙色框 | 装备格子 |
合成表 | 右下角紫色框 | 可合成的物品列表 |
属性 | 右上角 | agent的attribute |
操作说明
使用鼠标的左键以及右键单击需要进行操作的物体或者位置。具体动作说明如下表:
动作 | 鼠标点击方式 | 说明 |
---|---|---|
移动 | 鼠标右键或者左键单击地图中空白区域 | 向点击的空白区域,按照最大可移动距离以及近似方向移动 |
采集 | 鼠标左键单击地图上的动植物或者资源点 | 若该物体资源被采集完,则采集失败;若采集成功,背包中增加相应物品 |
攻击 | 鼠标右键单击地图上的动植物 | 若该物体在攻击范围内且防御力小于agent攻击力,血条数值减少 |
拾取 | 鼠标左键单击地图上的掉落物 | |
消耗 | 鼠标左键单击背包中的可消耗物 | |
合成 | 鼠标左键单击合成表中的物品 | 如果背包中有足够的合成材料,背包中的合成材料减少,同时增加一个合成物 |
装备 | 鼠标左键单击背包中的可装备物 | 背包中的装备物被移动到装备栏中 |
丢弃 | 鼠标右键单击背包中的物品 |
运行Demo演示
单智能体Demo
使用Python编写手工策略脚本
可以使用gym中的wrapper模块对原始的环境进行打包,从而编写手工策略。在编写具体策略之前,需要查阅python接口指南来了解所选择的eden
环境中的各种信息,比如observation中每一位代表的含义、action的维度等等。
作为示例,我们在eden-v0
上编写了手工策略manual_strategy.py
,用在单个智能体的生存游戏中,其策略流程如下所示。
策略存在失效情况,比如:
1、无法对视野外的信息进行规划,比如若视野内没有水资源,不能主动地前往未探索区域寻找
2、每一步都基于事先设定的优先级进行贪心选择,不能有效应对游戏流程中各种情况下价值的变化,比如在和攻击性强的动物交战时,攻击该动物的优先级应该提高,而不应该去进行采集和拾取等动作
3、难以应对需要判断历史信息的情景,比如某处资源可能已经耗尽,需要在策略中判断所有此种动作执行不成功的情况,若有遗漏,则策略将不断重复某个失败的动作
策略运行演示
##