初始化文件配置
配置csv文件
配置0_general.csv文件
该文件主要定义环境配置中使用到的基本选项的属性值,包括地图的大小、时间的瓷都等等,如下表中所示:
| 配置选项 | 数值类型 | 含义 |
|---|---|---|
| MapSizeX | int | x方向上地图大小 |
| MapSizeY | int | y方向上地图大小 |
| DaytimeLength | int | 白天的所占时间步数(DaytimeLength + NighttimeLength = DayLength) |
| DayLength | int | 一天所占时间步数,包括白天和黑夜 |
| SeasonLength | int | 一个季节的天数 |
| StartSeason | int | 定义开始的季节(季节的定义参见7_weather.csv) |
| UsePreset | int | 是否使用8_preset.csv中定义的地图 |
| WeatherDuration | int | 一个季节所包含的天数 |
| AgentCount | int | 环境中agent的总数目,需要和2_agent.csv中的agent总数目保持一致 |
配置示例如下所示:
| MapSizeX | MapSizeY | DaytimeLength | DayLength | SeasonLength | StartSeason | UsePreset | WeatherDuration | AgentCount |
|---|---|---|---|---|---|---|---|---|
| 40 | 40 | 100 | 200 | 10 | 0 | 0 | 2 | 1 |
配置1_landform.csv文件
该文件主要定义环境中存在的不同的地形以及其对应的BUFF属性,同时配置agent以及being的分布。
| 配置选项 | 数值类型 | 含义 |
|---|---|---|
| LandformName | string | 地形的名字 |
| SizeRatio | int | 该地形占整个地形的比例 |
配置示例如下所示:
| LandformName | SizeRatio |
|---|---|
| Grassland | 2 |
| Forest | 3 |
该示例中包含有Grassland和Forest等两种地形,同时随机初始化的面积比例是 Grassland : Forest = 2 : 3。
配置地形BUFF
在不同的地形上,agent的相关属性会受到不同的影响。该影响由6_buff.csv中定义的BUFF决定,其中,landform_LandformName为名为LandformName地形对应的BUFF。由示例表格中可以看出,地形Grassland对应的地形BUFF为landform_Grassland,在该地形上agent的视野范围增加1,详细信息参见6_buff.csv中示例。
配置agent以及being分布
可以根据地形配置文件中定义的地形,在2_agent.csv和3_being.csv中Distribution列定义这些物种在不同地形上的数目,具体参加以上文件配置中的实例。
配置2_agent.csv文件
该文件主要环境中智能体的基本特性以及相应的属性值,如下表中所示:
| 配置选项 | 数值类型 | 含义 |
|---|---|---|
| AgentName | string | 特定类型的agent的名字 |
| Slot | array-like([string]) | 使用 ";"分割符区分不同的装备栏,定义装备栏的方式为"SlotName1;SlotName2;…;SlotNamen" |
| BackpackSize | int | 背包的大小,非负整数 |
| HP | int | 初始血量,非负整数 |
| Hunger | int | 初始饱食度,非负整数 |
| Thirst | int | 初始饥渴度,非负整数 |
| Temperature | int | 初始体温 |
| ATK | int | 初始攻击力,非负整数 |
| DEF | int | 初始防御力,非负整数 |
| AttackDistance | int | 初始攻击范围,非负整数 |
| CollectDistance | int | 初始采集范围,非负整数 |
| Vision | int | 白天初始视野范围,非负整数 |
| NightVision | int | 黑夜初始视野范围,非负整数 |
| Speed | int | 初始速度,非负整数 |
| Actable | string | 可执行的动作,使用":"作为分隔符,i/a/f/p/c/e/s/d/m分别对应逻辑Action输入接口中动作维度含义表格中从上到下的9个动作 |
| Distribution | dict-like(key[string]:value[int]) | 定义agent初始状态下在各地形上的数目, 定义方式为"landform1:num1;landform2:num2;…;landformn:numN"。 |
| Script | ||
| Condition |
具体实例如下表中所示:
| AgentName | Slot | BackpackSize | HP | Hunger | Thirst | Temperature | ATK | DEF | AttackDistance | CollectDistance | Vision | NightVision | Speed | Actable | Distribution | Script | Condition |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Brave | Weapon;Armor;Light;Other | 20 | 100 | 100 | 100 | 25 | 10 | 5 | 1 | 1 | 7 | 1 | 2 | m:e:f:p:c:d:s:i:a | Grassland:1 | ||
| PYS | Weapon;Armor;Light;Other | 20 | 100 | 100 | 100 | 25 | 10 | 5 | 1 | 1 | 7 | 1 | 1 | i:e:f:p:c:d:s:a |
添加新类型的agent
添加新类型的agent主要包含2个步骤:
- 编辑上述表格,如在表格中增加名为PYS的agent,同时定义相关的属性。
- Distritbuion列的各种不同类型的agent的总数目应该等于0_general.csv中AgentCount列中定义的数目。
- 在根目录下
assets添加对应的agent素材图片,如名为PYS的agent需添加PYS.png的图片,该图片的分辨率为32x32。
配置3_being.csv文件
这个文件主要定义环境中存在的生物的相关特性以及属性值。 在环境中,being是除了agent之外在环境中存在的生物,包括动物和植物。Being的行为是自动的,根据给出的配置信息,being有一套特定的与环境交互的规则。
| 字段 | 类型 | 含义 |
|---|---|---|
| BeingName | string | being的名称。 |
| HP | int | 初始血量,非负整数 |
| ATK | int | 初始攻击力,非负整数 |
| DEF | int | 初始防御力,非负整数 |
| Vision | int | 白天初始视野范围,非负整数 |
| NightVision | int | 黑夜初始视野范围,非负整数 |
| Speed | int | 初始速度,非负整数 |
| MoveInterval | int | 每次移动之间的间隔,若为N表示该生物每隔N个时间步才能移动一次;为0表示该生物每个时间步均可移动 |
| RebirthCount | int | 重生周期,生物在死亡(HP归零)后多少个时间步后重生,正整数 |
| Temper | int | 脾气,取值范围[0,1,2],为0时被智能体攻击后逃跑,为1时被智能体攻击后会反击,只有为2时会主动攻击智能体 |
| AttackDistance | int | 初始攻击范围,非负整数 |
| Distribution | dict-like (key[string]:value[int]) | 生物的分布,表示在特定地形上有多少个生物,生成时优先满足preset中的配置,preset在地形上数量小于给定数量会补充,反之则不生成。可为空。 |
| CollectTable | dict-like (Item[string]:Capacity[int]: Period[int]) | 表示可以从being采集到的物品表,item为物品名称,Capacity指being最多能保存的物品数,Period是item的生产周期。在Being死亡时,CollectTable中的物品也会掉落。可为空。 |
| DropTable | dict-like (Item[string]:Count[int]) | 表示being掉落物品表,item为物品名称,Count为掉落数。可为空。 |
| Script | ||
| Condition |
具体实例如下表中所示:
| BeingName | HP | ATK | DEF | Vision | NightVision | Speed | MoveInterval | RebirthCount | Temper | AttackDistance | Distribution | CollectTable | DropTable | Script | Condition |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Pig | 20 | 0 | 10 | 4 | 3 | 1 | 1 | 1500 | 0 | 1 | Forest:10 | Leather:4;Meat:3;Tendon:1 | |||
| Rabbit | 5 | 0 | 0 | 4 | 3 | 1 | 0 | 1000 | 0 | 1 | Grassland:5;Forest:10 | Meat:1 | |||
| Ox | 100 | 30 | 20 | 5 | 2 | 1 | 0 | 2000 | 1 | 2 | Grassland:5 | Meat:8 | |||
| Goat | 40 | 7 | 0 | 4 | 2 | 1 | 2 | 1000 | 1 | 2 | Grassland:10 | Meat:3 | |||
| Tree | 100 | 0 | 0 | 0 | 0 | 0 | 0 | 500 | 0 | 0 | Grassland:10 | Branch:10:1000 | Wood:4 | ||
| AppleTree | 120 | 0 | 0 | 0 | 0 | 0 | 0 | 600 | 0 | 0 | Forest:5 | Apple:20:5000 | Wood:4 | ||
| Grass | 40 | 0 | 0 | 0 | 0 | 0 | 0 | 200 | 0 | 0 | Grassland:10;Forest:10 | Cutgrass:10:100 |
其中,Distribution列中地形为1_landform.csv中定义;CollectTable列以及DropTable列中材料为4_item.csv中定义。
添加新类型的being
添加新类型的being主要包含2个步骤:
- 编辑上述表格,如在表格中增加名为Ox的being,同时定义相关的属性。
- CollectTable列以及DropTable列中定义的材料为4_item.csv中定义。
- 在根目录下
assets添加对应的being素材图片,如名为Ox的生物需添加Ox.png的图片,该图片的分辨率为32x32。
配置4_item.csv文件
该文件主要定义环境中存在的各种材料,包括采集物、掉落物以及合成物。其中,采集物由agent从3_being.csv和5_resource.csv中定义的物品中采集获得,掉落物由agent杀死3_being.csv中定义的being后拾取获得,合成物由上述的物品按照SythesizeTable列中定义的合成方式合成得到,具体定义如下表中所示:
| 字段 | 类型 | 含义 |
|---|---|---|
| ItemName | string | item的名称。 |
| EquipBuff | string | 装备item后获得的buff名(buff表中配置了buff效果),可为null。 |
| ConsumeBuff | string | 消耗item后获得的buff名(buff表中配置了buff效果),可为null。 |
| Slot | string | 装备item时放入槽的种类,可为null。 |
| Durability | int | item在装备后进行攻击/防御的耐久度,表示攻击/防御多少次后会消失,-1代表item装备后,不会因为攻击/防御次数而消失。 |
| Duration | int | item本身的耐久度,表示从item存在到消失所需要的时间,-1代表item不会因为时间而消失。 |
| EquipDuration | int | item在装备时的耐久度,表示item在equip状态下的时间超过多久会坏掉,-1代表item装备后,不会因为时间而消失。 |
| SynthesizeTable | dict-like (key[string]:value[int]) | item的合成表,表示item可由一系列特定数量的物品合成而得,可为空。 |
具体实例如下所示:
| ItemName | EquipBuff | ConsumeBuff | Slot | Durability | Duration | EquipDuration | SynthesizeTable | Script | Condition |
|---|---|---|---|---|---|---|---|---|---|
| Meat | consume_Meat | -1 | 5:0 | -1 | |||||
| Water | consume_Water | -1 | 10:0 | -1 | |||||
| Ice | consume_Ice | -1 | 5:0 | -1 | |||||
| Apple | consume_Apple | -1 | 10:0 | -1 | |||||
| Torch | equip_Torch | Light | -1 | 10:0 | 2:0 | Branch:1;Cutgrass:4 | |||
| Spear | equip_Spear | Weapon | 20 | -1 | -1 | Branch:1;Cutgrass:2;Stone:1 | |||
| Bow | equip_Bow | Weapon | 50 | -1 | -1 | Branch:2;Cutgrass:2;Tendon:1 | |||
| LeatherArmor | equip_LeatherArmor | Armor | 20 | -1 | -1 | Leather:2;Cutgrass:4 | |||
| WoodArmor | equip_WoodArmor | Armor | 20 | -1 | -1 | Wood:2;Cutgrass:4 | |||
| ColdStone | equip_ColdStone | Other | -1 | -1 | 5:0 | Stone:5;Cutgrass:6;Ice:4 | |||
| Cutgrass | -1 | 25:0 | -1 | ||||||
| Stone | -1 | -1 | -1 | ||||||
| Branch | -1 | 25:0 | -1 | ||||||
| Leather | -1 | 10:0 | -1 | ||||||
| GodWeapon | -1 | -1 | -1 | ||||||
| Tendon | -1 | 10:0 | -1 | ||||||
| Wood | -1 | 10:0 | -1 | ||||||
| Hair | -1 | 10:0 | -1 |
添加新类型的item
添加新类型的item主要包含2个步骤:
- 编辑上述表格,如在表格中增加名为Meat的item,同时定义相关的属性。
- EquipBuff列以及ConsumeBuff列中BUFF信息在6_buff.csv中定义。
- SythesizeTable列定义装备的合成方式。
- 在根目录下
assets添加对应的item素材图片,如名为Meat的item需添加Meat.png的图片,该图片的分辨率为32x32。
配置5_resource.csv文件
resource定义了环境中存在的各种资源及资源所能提供的item。agent可以从一种资源中采集到特定的item。
| 字段 | 类型 | 含义 | 例子 |
|---|---|---|---|
| ResourceName | string | resource的名称。 | Pool |
| Distribution | dict-like (key[string]:value[int]) | resource的分布,表示在特定地形上有多少个resource,生成时优先满足preset中的配置,preset在地形上数量小于给定数量会补充,反之则不生成。可为空。 | Grassland:2 |
| CollecTable | dict-like (Item[string]:Capacity[int]: Period[int]) | 表示可以从resource采集到的物品表,item为物品名称,Capacity指being最多能保存的物品数,Period是item的生产周期。 | Water:2:2 |
具体实例如下所示:
| ResourceName | Distribution | CollectTable | Script | Condition |
|---|---|---|---|---|
| Pool | Grassland:5;Forest:10 | Water:10:500 | ||
| Embacle | Snowland:5 | Ice:20:500 | ||
| Rock | Grassland:5;Desert:20 | Stone:5:500 |
添加新类型的resource
添加新类型的resource主要包含2个步骤:
- 编辑上述表格,如在表格中增加名为Rock的resource,同时定义相关的属性。
- CollectTable列中定义的材料为4_item.csv中定义。
- 在根目录下
assets添加对应的resource素材图片,如名为Rock的生物需添加Rock.png的图片,该图片的分辨率为32x32。
配置6_buff.csv文件
buff表定义了各种buff名所对应的增益,作用在持有者的attribute上。
| 字段 | 类型 | 含义 |
|---|---|---|
| BuffName | string | buff的名称。 |
| Enhance | dict-like (key[string]:value[float]) | buff保存的固定字典变量,指定了特定attribute的enhance参数值;这一参数值的具体作用则要由BuffWorkFuntion来决定。attribute需要在2_agent.csv中的一致。 |
| Duration | int | buff的默认持续时间 -1: 表示永续,其持有者不会因为时间的流逝而移除这类buff; 0: 表示即时buff,其持有者在当前step结束后立即移除这类buff; 正整数: 表示持有者自动丢弃buff的时间步,其持有者在经过这段step数之后,会移除这类buff(与0在语义上是连续的)。 |
| Repeat | bool | true: 持有者在每个step结束时,调用一次BuffWorkFunction false: 持有者仅在当个step调用一次BuffWorkFuntion |
| BuffWorkFunction | array-like ([int(;float;float…)]) | Buff的自定义作用函数 第0位: BuffWorkFunction的种类, int型 第1~任意位: 根据BuffWorkFunction的需求,自定义的参数,float型。 |
具体实例如下表所示:
| BuffName | Enhance | Duration | Repeat | BuffWorkFunction |
|---|---|---|---|---|
| Night | Temperature:-5 | -1 | 0 | 1 |
| Metabolic | Hunger:1;Thirst:1 | -1 | 1 | 2;50;1;10;1 |
| equip_ColdStone | Temperature:-10 | -1 | 0 | 1 |
| equip_Torch | NightVision:8 | -1 | 0 | 1 |
| equip_Bow | ATK:20;AttackDistance:10 | -1 | 0 | 1 |
| equip_Spear | ATK:30;AttackDistance:2 | -1 | 0 | 1 |
| equip_WarmStone | Temperature:10 | -1 | 0 | 1 |
| equip_LeatherArmor | DEF:10 | -1 | 0 | 1 |
| equip_WoodArmor | DEF:40 | -1 | 0 | 1 |
| consume_Meat | HP:10;Hunger:20 | 0 | 0 | 0 |
| consume_Water | HP:10;Thirst:20 | 0 | 0 | 0 |
| consume_Apple | HP:20;Hunger:15;Thirst:10 | 0 | 0 | 0 |
| consume_Ice | Temperature:-2;Thirst:3 | 5 | 1 | 0 |
| weather_Sunny | Vision:1 | -1 | 0 | 1 |
| weather_Rainy | Vision:-1;Temperature:-10 | -1 | 0 | 1 |
| weather_Snowy | Vision:-2;Temperature:-20 | -1 | 0 | 1 |
| weather_Hot | Temperature:20 | -1 | 0 | 1 |
| landform_Desert | Speed:-1 | 2 | 0 | 1 |
| landform_Grassland | Vision:1 | -1 | 0 | 1 |
| landform_Forest | Speed:-1;Vision:-1 | -1 | 0 | 1 |
添加新类型的buff
编辑上述表格,如在表格中增加名为consume_Meat的buff,同时定义相关的属性。若想设计一种新的Buff机制,需要用户自行定义BuffWorkFunction函数。
一般的Buff添加示例如下
-
添加一种立即生效的consume_buff
假设需要引入一种新的食物FoodA,消耗后立即获得3点HP和5点饥渴度:
BuffName Enhance Duration Repeat BuffWorkFunction consume_FoodA HP:3;Thirst:5 0 0 0 Duration,Repeat,BuffWorkFunction在这种情形下都设为0。
-
添加一种持续生效的consume_buff
假设需要引入一种新的食物foodB,消耗后在5个step内,每个step结束时增加3点HP:
BuffName Enhance Duration Repeat BuffWorkFunction consume_FoodB HP:3 5 1 0 其中,Duration是持续发挥作用的step数,Repeat设置为1,BuffWorkFunction为0。
-
添加一种equip_buff
假设需要引入一种新的装备,名为Hammer,装备后攻击力上升20,卸下时攻击力下降20:
BuffName Enhance Duration Repeat BuffWorkFunction equip_Hammer ATK:20 -1 0 1 一般来说,equip buff的Duration,Repeat,BuffWorkFunction依次为-1,0,1.
配置7_weather.csv文件
定义了四季对应天气的比例,天气A在一种Season B下的出现率=A在B的比重/总比重。
| 字段 | 类型 | 含义 | 例子 |
|---|---|---|---|
| Season | string | season的名称。 | spring |
| Hot | int | 热天在该season的比重 | 100 |
| Sunny | int | 晴天在该season的比重 | 1 |
| Rainy | int | 雨天在该season的比重 | 1 |
| Snowy | int | 雪天在该season的比重 | 1 |
配置示例见下表:
| Season | Hot | Sunny | Rainy | Snowy |
|---|---|---|---|---|
| Spring | 100 | 1 | 1 | 1 |
| Summer | 2 | 1 | 2 | 0 |
| Autumn | 0 | 1 | 0 | 1 |
| Winter | 0 | 1 | 0 | 2 |
更改weather
根据每个季节所需要的天气占比,更改表中对应权重即可。
配置8_preset.csv文件
preset定义了各类object(agent,being,item,resource)在地图中的分布。若0_general.csv中定义的UsePreset为0,则不启用preset。
若地图大小为n*n,则表格大小为n*n,第i行j列第格子对应的是地图坐标(i,j)上的【地形id(int)-object名称(string)-数量(int)】。其中地形id要小于总地形数,object名称需要与2_agent.csv,3_being.csv,4_item.csv,5_resource.csv中一致,只有item的数量才可大于1。
若地图大小为4*4,可以通过如下形式定义地图:
| 0-Pig | 0 | 0 | 0 |
|---|---|---|---|
| 0 | 0-PYS | 0 | 0-Pool |
| 0-Tree | 0-Pig | 0-Torch-3 | 0 |
| 0 | 0 | 0-Pool | 0 |
如上表所示,0-Torch-3代表该坐标地形id为0,有3个Torch;当只有地形id时代表该坐标上没有object,如0代表该坐标地形id为0,没有物品;没有数量时默认数量为1,如0-PYS代表该坐标地形id为0,有1个PYS。
用户可以根据需要按上述方式编辑preset表格,定义所需地图。
配置json文件
配置game_done.json文件
game_done.json是定义了游戏的结束条件,当agent满足game_done.json中的任意一条时,视为游戏结束。
默认配置和具体含义如下,
{
#结束位置,当agent到达点(-1,-1)或点(23,25),视为游戏结束
"position": [
[-1, -1],
[23, 25]
],
#结束属性,当agent的属性中Hunger==0或者Thirst==0,视为游戏结束
"attribute": {
"Hunger": 0,
"Thirst": 0
},
#结束物品,当agent的backpack中Meat==50或者Branch==1000,视为游戏结束
"backpack": {
"Meat": 50,
"Branch": 1000
},
#结束装备,当agent的equipment中具有Bow或者WoodArmor,视为游戏结束
"equipment": [
"Bow",
"WoodArmor"
]
}
修改game_done.json文件
position
position为一个由坐标[x(int),y(int)]组成的list,删除其中的某一个[x,y]可将点(x,y)从结束位置中移除;在position list中增加[x,y],可将点(x,y)视为结束位置。
attribute
attribute为一个由[属性名(string):值(int)]构成的dict,增加/删除/修改其中的[属性名(string):值(int)],可以变更由属性决定的结束条件,注意属性名要在2_agent.csv中给出定义。
backpack
attribute为一个由[物品名(string):值(int)]构成的dict,增加/删除/修改其中的[物品名(string):值(int)],可以变更由背包物品决定的结束条件,注意物品名要与4_item.csv中一致。
equipment
equipment为一个由装备名(string)组成的list,删除其中的某一个装备名E可将E不再视为结束装备;在equipment list中增加装备名E,可将装备E视为结束装备。
配置score.json文件
score.json文件定义了执行各个动作所能得到的reward。在环境中,reward是根据agent执行动作后返回的结果计算出来的,每一个动作获得的reward都对应一个dict;除此之外,agent的死亡判定、目标点价值、属性增益也会计算出reward,叠加到动作对应的reward中来构成最终的reward。
Idle
由于Idle指agent不进行任何操作,只会返回success(agent死亡时返回fail),因此我们如下配置,
"Idle": {
"default": 0.0
},
其中"default"代表默认值,若想给agent的不作为一定惩罚,可以将其设为一个合理的负值。
Attack
Attack为一个dict,内容为[动作结果(string):reward(float)]。
agent在进行Attack操作后,会得到fail/object_hit/object_kill三种结果,其中object应该与3_being.csv中所定义的一致,
- fail,攻击失败,对应一个reward。
- object_hit,攻击成功,对object造成了伤害。每个object对应一个reward,若没有定义objectA_hit的reward,则采用default_hit对应的reward。
- object_kill,攻击成功,杀死了object。每个object对应一个reward,若没有定义objectA_kill的reward,则采用default_kill对应的reward。
"Attack": {
"fail": -1.0,
"default_hit": 0.0,
"default_kill": 0.0,
"Pig_hit": 0.0,
"Pig_kill": 0.0
},
上面为Attack dict的配置示例,除了默认的fail,default_hit,default_kill所对应的reward值之外,还定义了Pig_hit和Pig_kill的reward,这使得:
- 攻击失败获得fail对应的reward
- 对Pig造成伤害获得Pig_hit对应的reward
-
杀死Pig获得Pig_kill对应的reward
- 对除Pig以外的object造成伤害获得default_hit对应的reward
- 杀死除Pig以外的object获得default_kill对应的reward
在Attack dict中根据需要进行修改/增加/删除,则可修改Attack动作所返回的reward。
Collect
Collect为一个dict,内容为[动作对象(string):reward(float)]。
agent在进行Collect操作后,会得到fail/object两种结果,其中object应该与3_being.csv和5_resource.csv中所定义的一致,
- fail,采集失败,对应一个reward。
- object,采集object成功。每个object对应一个reward,若没有定义objectA的reward,则采用default对应的reward。
"Collect": {
"fail": -1.0,
"default": 0.0,
"Tree": 0.0
},
上面为Collect dict的配置示例,除了默认的fail,default所对应的reward值之外,还定义了Tree的reward,这使得:
- 采集失败获得fail对应的reward
-
从Tree上采集物品获得Tree对应的reward
- 对除Tree以外的object采集成功获得default对应的reward
在Collect dict中根据需要进行修改/增加/删除,则可修改Collect动作所返回的reward。
Discard
Discard为一个dict,内容为[动作对象(string):reward(float)]。
agent在进行Discard操作后,会得到fail/object两种结果,其中object应该与4_item.csv中所定义的一致,
- fail,丢弃失败,对应一个reward。
- object,丢弃object成功。每个object对应一个reward,若没有定义objectA的reward,则采用default对应的reward。
"Discard": {
"fail": -1.0,
"default": 0.0,
"Meat": 0.0
},
上面为Discard dict的配置示例,除了默认的fail,default所对应的reward值之外,还定义了Meat的reward,这使得:
- 丢弃失败获得fail对应的reward
-
丢弃Meat获得Meat对应的reward
- 丢弃除Meat以外的object获得default对应的reward
在Discard dict中根据需要进行修改/增加/删除,则可修改Discard动作所返回的reward。
Move
Move为一个dict,只对应两个结果fail/default,配置如下,用户可以根据需要自行修改数值。
"Move": {
"fail": -1.0,
"default": 0.0
},
Synthesize
Synthesize为一个dict,内容为[动作对象(string):reward(float)]。
agent在进行Synthesize操作后,会得到fail/object两种结果,其中object应该与4_item.csv中所定义的一致,
- fail,合成失败,对应一个reward。
- object,合成object成功。每个object对应一个reward,若没有定义objectA的reward,则采用default对应的reward。
"Synthesize": {
"fail": -1.0,
"default": 0.0,
"Torch": 0.0
},
上面为Synthesize dict的配置示例,除了默认的fail,default所对应的reward值之外,还定义了Torch的reward,这使得:
- 合成失败获得fail对应的reward
-
合成Torch获得Torch对应的reward
- 合成除Torch以外的object获得default对应的reward
在Synthesize dict中根据需要进行修改/增加/删除,则可修改Synthesize动作所返回的reward。
Pickup
Pickup为一个dict,内容为[动作对象(string):reward(float)]。
agent在进行Pickup操作后,会得到fail/object两种结果,其中object应该与4_item.csv中所定义的一致,
- fail,拣取失败,对应一个reward。
- object,拣取object成功。每个object对应一个reward,若没有定义objectA的reward,则采用default对应的reward。
"Pickup": {
"fail": -1.0,
"default": 0.0,
"Meat": 0.0
},
上面为Pickup dict的配置示例,除了默认的fail,default所对应的reward值之外,还定义了Meat的reward,这使得:
- 拣取失败获得fail对应的reward
-
拣取Meat获得Meat对应的reward
- 拣取除Meat以外的object获得default对应的reward
在Pickup dict中根据需要进行修改/增加/删除,则可修改Pickup动作所返回的reward。
Equip
Equip为一个dict,内容为[动作结果(string):reward(float)]。
agent在进行Equip操作后,会得到fail/object_equip/object_undress三种结果,其中object应该与4_item.csv中所定义的一致,
- fail,装备失败,对应一个reward。
- object_equip,装备object成功。每个object对应一个reward,若没有定义objectA_equip的reward,则采用default_equip对应的reward。
- object_undress,卸下object成功。每个object对应一个reward,若没有定义objectA_undress的reward,则采用default_undress对应的reward。
"Equip": {
"fail": -1.0,
"default_equip": 0.0,
"default_undress": 0.0,
"Torch_equip": 0.0,
"Torch_undress": 0.0
},
上面为Equip dict的配置示例,除了默认的fail,default_equip,default_undress所对应的reward值之外,还定义了Torch_equip和Torch_undress的reward,这使得:
- 装备失败获得fail对应的reward
- 装备Torch获得Torch_equip对应的reward
-
卸下Torch获得Torch_undress对应的reward
- 装备除Torch以外的object获得default_equip对应的reward
- 卸下除Torch以外的object获得default_undress对应的reward
在Equip dict中根据需要进行修改/增加/删除,则可修改Equip动作所返回的reward。
Consume
Consume为一个dict,内容为[动作对象(string):reward(float)]。
agent在进行Consume操作后,会得到fail/object两种结果,其中object应该与4_item.csv中所定义的一致,
- fail,消耗失败,对应一个reward。
- object,消耗object成功。每个object对应一个reward,若没有定义objectA的reward,则采用default对应的reward。
"Consume": {
"fail": -1.0,
"default": 0.0,
"Water": 0.1,
"Meat": 0.1
},
上面为Consume dict的配置示例,除了默认的fail,default所对应的reward值之外,还定义了Meat,Water的reward,这使得:
- 消耗失败获得fail对应的reward
- 消耗Meat获得Meat对应的reward
-
消耗Water获得Water对应的reward
- 消耗除Meat、Water以外的object获得default对应的reward
在Consume dict中根据需要进行修改/增加/删除,则可修改Consume动作所返回的reward。
Attribute
对该reward的计算是独立的,每个step后都会计算并叠加到reward当中。
Attribute是一个dict,内容格式为[属性名(string):reward(int)],它根据agent自身attribute的变化来计算reward。其中属性名需要与2_agent.csv中所定义的一致。
属性增益所带来的reward计算公式如下, \(r=\Sigma_{i\epsilon I} Attribute['i']\times\Delta i+\Sigma_{j\epsilon J} Attribute['default']\times\Delta j\) 其中I是在Attribute dict的key中包含的属性名集合,J是没有在Attribute dict的key中出现的属性名集合。
示例配置如下,
"Attribute":{
"default": 0.0,
"ATK": 1.0,
"HP": 2.0,
"DEF": 0.5
},
在Attribute dict中根据需要进行修改/增加/删除,则可修改属性变化所造成的reward。
Dead
对该reward的计算是独立的,每个step后都会计算并叠加到reward当中。
agent在死亡时获得的reward,一般为负数,示例如下
"Dead": -10,
ScorePoint
对该reward的计算是独立的,每个step后都会计算并叠加到reward当中。
agent在达到特定目标点时获得的reward,如,若想让agent在到达点(0,0)获得-1的reward,在到达点(9,9)获得1的reward可如下配置,
"ScorePoint": {
"0-0" : -1,
"9-9" : 1
}
用户想要修改ScorePoint时,只需在"ScorePoint"字典内增加或删除["x坐标(int)-y坐标(int)":reward(float)]即可。
配置示例
{
"Idle": {
"default": 0.0
},
"Attack": {
"fail": -1.0,
"default_hit": 0.0,
"default_kill": 0.0,
"Pig_hit": 0.0,
"Pig_kill": 0.0
},
"Collect": {
"fail": -1.0,
"default": 0.0,
"Tree": 0.0
},
"Discard": {
"fail": -1.0,
"default": 0.0,
"Meat": 0.0
},
"Move": {
"fail": -1.0,
"default": 0.0
},
"Synthesize": {
"fail": -1.0,
"default": 0.0,
"Torch": 0.0
},
"Pickup": {
"fail": -1.0,
"default": 0.0,
"Meat": 0.0
},
"Equip": {
"fail": -1.0,
"default_equip": 0.0,
"default_undress": 0.0,
"Torch_equip": 0.0,
"Torch_undress": 0.0
},
"Consume": {
"fail": -1.0,
"default": 0.0,
"Water": 0.1,
"Meat": 0.1
},
"Attribute":{
"default": 0.0,
"ATK": 1.0,
"HP": 2.0,
"DEF": 0.5
},
"Dead": -10,
"ScorePoint": {
"0-0" : -1,
"9-9" : 1
}
}