@iamzealotwang
2017-04-26T10:39:29.000000Z
字数 3062
阅读 775
Zombie 随机逻辑
zome_templete_{x}.jsonzome_templete_{x}.json 存入指定文件夹CEBigMapGenerate.jar,扫描改文件夹,生成最终的Zombie_BigMap.jsonZombie_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_ConfigExcel文件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)
ItemDropConfigExcel文件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的条目)