初始化文件配置

配置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.csv3_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.csv5_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.csv3_being.csv4_item.csv5_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.csv5_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
  }
}