@iamzealotwang
2017-04-26T10:39:29.000000Z
字数 3062
阅读 680
Zombie
随机逻辑
zome_templete_{x}.json
zome_templete_{x}.json
存入指定文件夹CEBigMapGenerate.jar
,扫描改文件夹,生成最终的Zombie_BigMap.json
Zombie_BigMap.json
存入Unity的配置目录中(或放服务器[TBD])
{
"zoneList": [
{
"SafeHouse": [
{
"x": 5,
"y": 4
},
{
"x": 7,
"y": 10
}
],
"Special": [
{
"x": 20,
"y": 10
}
],
"House_Lv1": [
{
"x": 10,
"y": 5
},
{
"x": 7,
"7": 9
}
]
}
]
}
zoneList
的数量是zome_templete_{x}.json
的数量,做Random时候
3x2=6
则一共需要取6个小zone区块zoneList
中做随机,如果一旦选择过则不在选取SafeHouse
& Special
这两个是固定Key
SafeHouse
用于生成放置安全屋的位置,从给定的List里面只选出一个点放置安全屋,其他位置变为空地Special
用于放置特定的建筑物.比如指定了12个Special点,但是只有10个Special建筑,则剩余两个点为空SceneMap_Config
Excel文件CEExcel2Json.jar
导出Zombie_SceneMapConfig.json
{
"SceneList": [
{
"key": "House_L1",
"openLightPrecent": 90,
"enemyIDList": [
"Z001",
"Z002",
"Z003"
],
"roomTagList":[
{
"key":"Common",
"weight": 30
},
{
"key":"House",
"weight": 90
}
],
"buildingTemplateList": [
{
"key": "R_3_4",
"enemeyValue": 30,
"weight": 30
},
{
"key": "R_2_4",
"enemeyValue": 30,
"weight": 30
},
{
"key": "R_2_3",
"enemeyValue": 30,
"weight": 30
}
]
},
{
"Key": "NewRoom",
"openLightPrecent": 100,
"enemyIDList": [
"Z001",
"Z002",
"Z003"
],
"roomTagList":[
{
"key":"House",
"weight": 30
}
],
"buildingTemplateList": [
{
"key": "T_New_1",
"enemeyValue": 30,
"weight": 50
},
{
"key": "T_New_2",
"enemeyValue": 30,
"weight": 50
}
]
}
]
}
SceneList
下面是一个列表,里面每个元素都有一个key
属性, 其内部指定的值 比如NewRoom
,House_L1
和大地图随机表zome_templete_{x}.json
的建筑类型一一对应
房间内灯有多大几率是好的,该值为百分比注意:不是权重值
当前场景中可以出现的僵尸种类,比如Z001,Z002,Z003
表示该类型的房间只能出现ID为以上三种类型的僵尸. 具体僵尸如何产生 见随机僵尸
逻辑
当前场景随机房间时候的可以使用的随机库,以及该库使用的概率
当前场景,进行随机时候使用的模板,以及使用该模板的几率
比如:
{
"key": "T_New_1",
"enemeyValue": 30,
"weight": 50
},
{
"key": "T_New_2",
"enemeyValue": 30,
"weight": 50
}
表示,当前建筑物随机时候 会从模板T_New_1
,T_New_2
中根据权重选择一个使用,其中enemeyValue
指定当前模板中怪物的难度系数,相关概念参见随机僵尸
在Unity中直接编辑: 在创建Prefab时候,同时需要指定
比如: XL级别的Common房间一共制作了10个,其他9个的权重值都为5,最后一个权重值为10. 则最后一个房间被使用的概率为(10/10+5x9)
ItemDropConfig
Excel文件CEExcel2Json.jar
导出Zombie_ItemDropConfig.json
{
"ItemDropList": [
{
"key": "House_L1_Box",
"dropList": [
{
"num": 2,
"dropItemType": [
{
"id": "I_001",
"weight": 5
},
{
"id": "I_003",
"weight": 20
}
]
},
{
"num": 1,
"dropItemType": [
{
"id": "I_001",
"weight": 5
},
{
"id": "NONE",
"weight": 20
}
]
}
]
}
]
}
列表中罗列出,所有的可能产生的随机库
key
中指定当前随机库的名称.比如House_L1_Box
, 其中的House_L1
为当前场景的Key名称.详情见地图随机配置
, 后面的_Box
中的Box
为当前随机物品的类型. 该类型对应在Unity中创建Prefab时候指定.
该List指定,随机物品如何产生,其中List的大小 为需要执行的Random的次数. 内部的
- num
:用来指定 该次Random会Random几个物品
- id
& weight
: 用来指定对应物品的ID和出现的几率,其中id为NONE
表示不产生物品
比如
"dropList": [
{
"num": 2,
"dropItemType": [
{
"id": "I_001",
"weight": 5
},
{
"id": "I_003",
"weight": 20
}
]
},
{
"num": 1,
"dropItemType": [
{
"id": "I_001",
"weight": 5
},
{
"id": "NONE",
"weight": 20
}
]
}
]
该dropList 会进行两次Random, 第一次Random 会产生两个物品, 每一次产生的物品库是
{
"id": "I_001",
"weight": 5
},
{
"id": "I_003",
"weight": 20
}
第二次Random会产生一个物品或者不产生物品(看是否Random到了为None的条目)