快速使用指南

简要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.csv3_being.csv5_resource.csv等文件中所设置的内容。

api1

接下来,输入命令action.attack.Brave-0.10-5以及game.update,使得智能体Br攻击其左边的Rabbit,并使游戏环境进行一步。可以看到attack动作执行成功,地图上对应位置的Rabbit转变成为Meat。

如下图所示,两条命令可以合在一行中作为一条script输入,更多命令和更多特性参见事件定义脚本

api2

python 命令行测试

编写下列脚本,使用run_script函数即可进行类似cpp命令行测试的测试工作。除此之外,python端可以进行gym环境中的resetstep等函数(详细的环境信息参见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

启动图形化界面如下:

ui

界面说明

名称 界面区域 说明
地图 左上角 白天时不可见区域(agent视野范围以外)为白色,晚上时不可见区域为黑色
背包 左下角蓝色框 背包格子
装备 左下角橙色框 装备格子
合成表 右下角紫色框 可合成的物品列表
属性 右上角 agent的attribute

操作说明

使用鼠标的左键以及右键单击需要进行操作的物体或者位置。具体动作说明如下表:

动作 鼠标点击方式 说明
移动 鼠标右键或者左键单击地图中空白区域 向点击的空白区域,按照最大可移动距离以及近似方向移动
采集 鼠标左键单击地图上的动植物或者资源点 若该物体资源被采集完,则采集失败;若采集成功,背包中增加相应物品
攻击 鼠标右键单击地图上的动植物 若该物体在攻击范围内且防御力小于agent攻击力,血条数值减少
拾取 鼠标左键单击地图上的掉落物  
消耗 鼠标左键单击背包中的可消耗物  
合成 鼠标左键单击合成表中的物品 如果背包中有足够的合成材料,背包中的合成材料减少,同时增加一个合成物
装备 鼠标左键单击背包中的可装备物 背包中的装备物被移动到装备栏中
丢弃 鼠标右键单击背包中的物品  

运行Demo演示

可视化界面演示

单智能体Demo

使用Python编写手工策略脚本

可以使用gym中的wrapper模块对原始的环境进行打包,从而编写手工策略。在编写具体策略之前,需要查阅python接口指南来了解所选择的eden环境中的各种信息,比如observation中每一位代表的含义、action的维度等等。

作为示例,我们在eden-v0上编写了手工策略manual_strategy.py,用在单个智能体的生存游戏中,其策略流程如下所示。

graph TD Start(策略开始) --> 1(属性值低下且有食物) 1 --> |消耗食物| End(返回动作) 1 --> |No |2(饥渴度低下) 2 --> |采集水| End(返回动作) 2 --> |No |3(存在未装备的道具) 3 --> |装备对应道具| End(返回动作) 3 --> |No |4(可以合成道具) 4 --> |合成对应道具| End(返回动作) 4 --> |No |5(可以捡起物品) 5 --> |拾取| End(返回动作) 5 --> |No |6(可以采集资源) 6 --> |采集| End(返回动作) 6 --> |No |7(可以攻击动植物) 7 --> |攻击| End(返回动作) 7 --> |No |8(向资源点移动或随机游走) 8 --> |移动| End(返回动作)

策略存在失效情况,比如:

1、无法对视野外的信息进行规划,比如若视野内没有水资源,不能主动地前往未探索区域寻找

2、每一步都基于事先设定的优先级进行贪心选择,不能有效应对游戏流程中各种情况下价值的变化,比如在和攻击性强的动物交战时,攻击该动物的优先级应该提高,而不应该去进行采集和拾取等动作

3、难以应对需要判断历史信息的情景,比如某处资源可能已经耗尽,需要在策略中判断所有此种动作执行不成功的情况,若有遗漏,则策略将不断重复某个失败的动作

策略运行演示

##