[关闭]
@iamzealotwang 2017-04-26T10:39:29.000000Z 字数 3062 阅读 680

随机生成逻辑

Zombie 随机逻辑


大地图随机

制作流程

  1. Tilemap制作10x10大小的小区域地图,将地图Export为Json格式 zome_templete_{x}.json
  2. 将所有的zome_templete_{x}.json 存入指定文件夹
  3. 运行CEBigMapGenerate.jar,扫描改文件夹,生成最终的Zombie_BigMap.json
  4. 将生成的Zombie_BigMap.json存入Unity的配置目录中(或放服务器[TBD])

Json Demo

  1. {
  2. "zoneList": [
  3. {
  4. "SafeHouse": [
  5. {
  6. "x": 5,
  7. "y": 4
  8. },
  9. {
  10. "x": 7,
  11. "y": 10
  12. }
  13. ],
  14. "Special": [
  15. {
  16. "x": 20,
  17. "y": 10
  18. }
  19. ],
  20. "House_Lv1": [
  21. {
  22. "x": 10,
  23. "y": 5
  24. },
  25. {
  26. "x": 7,
  27. "7": 9
  28. }
  29. ]
  30. }
  31. ]
  32. }

解析

zoneList

zoneList的数量是zome_templete_{x}.json的数量,做Random时候

  1. 首先确认主地图的大小,比如3x2=6则一共需要取6个小zone区块
  2. zoneList中做随机,如果一旦选择过则不在选取
SafeHouse & Special

SafeHouse & Special 这两个是固定Key


地图随机配置

制作流程(TBD)

  1. 编辑SceneMap_ConfigExcel文件
  2. 运行CEExcel2Json.jar导出Zombie_SceneMapConfig.json

Json Demo

  1. {
  2. "SceneList": [
  3. {
  4. "key": "House_L1",
  5. "openLightPrecent": 90,
  6. "enemyIDList": [
  7. "Z001",
  8. "Z002",
  9. "Z003"
  10. ],
  11. "roomTagList":[
  12. {
  13. "key":"Common",
  14. "weight": 30
  15. },
  16. {
  17. "key":"House",
  18. "weight": 90
  19. }
  20. ],
  21. "buildingTemplateList": [
  22. {
  23. "key": "R_3_4",
  24. "enemeyValue": 30,
  25. "weight": 30
  26. },
  27. {
  28. "key": "R_2_4",
  29. "enemeyValue": 30,
  30. "weight": 30
  31. },
  32. {
  33. "key": "R_2_3",
  34. "enemeyValue": 30,
  35. "weight": 30
  36. }
  37. ]
  38. },
  39. {
  40. "Key": "NewRoom",
  41. "openLightPrecent": 100,
  42. "enemyIDList": [
  43. "Z001",
  44. "Z002",
  45. "Z003"
  46. ],
  47. "roomTagList":[
  48. {
  49. "key":"House",
  50. "weight": 30
  51. }
  52. ],
  53. "buildingTemplateList": [
  54. {
  55. "key": "T_New_1",
  56. "enemeyValue": 30,
  57. "weight": 50
  58. },
  59. {
  60. "key": "T_New_2",
  61. "enemeyValue": 30,
  62. "weight": 50
  63. }
  64. ]
  65. }
  66. ]
  67. }

解析

SceneList

SceneList下面是一个列表,里面每个元素都有一个key属性, 其内部指定的值 比如NewRoom,House_L1 和大地图随机表zome_templete_{x}.json的建筑类型一一对应

openLightPrecent

房间内灯有多大几率是好的,该值为百分比注意:不是权重值

enemyIDList

当前场景中可以出现的僵尸种类,比如Z001,Z002,Z003 表示该类型的房间只能出现ID为以上三种类型的僵尸. 具体僵尸如何产生 见随机僵尸逻辑

roomTagList

当前场景随机房间时候的可以使用的随机库,以及该库使用的概率

buildingTemplateList

当前场景,进行随机时候使用的模板,以及使用该模板的几率
比如:

  1. {
  2. "key": "T_New_1",
  3. "enemeyValue": 30,
  4. "weight": 50
  5. },
  6. {
  7. "key": "T_New_2",
  8. "enemeyValue": 30,
  9. "weight": 50
  10. }

表示,当前建筑物随机时候 会从模板T_New_1,T_New_2中根据权重选择一个使用,其中enemeyValue指定当前模板中怪物的难度系数,相关概念参见随机僵尸

建筑物随机

制作流程

在Unity中直接编辑: 在创建Prefab时候,同时需要指定

探索物品&尸体掉落 随机

制作流程(TBD)

  1. 编辑ItemDropConfigExcel文件
  2. 运行CEExcel2Json.jar导出Zombie_ItemDropConfig.json

Json Demo

  1. {
  2. "ItemDropList": [
  3. {
  4. "key": "House_L1_Box",
  5. "dropList": [
  6. {
  7. "num": 2,
  8. "dropItemType": [
  9. {
  10. "id": "I_001",
  11. "weight": 5
  12. },
  13. {
  14. "id": "I_003",
  15. "weight": 20
  16. }
  17. ]
  18. },
  19. {
  20. "num": 1,
  21. "dropItemType": [
  22. {
  23. "id": "I_001",
  24. "weight": 5
  25. },
  26. {
  27. "id": "NONE",
  28. "weight": 20
  29. }
  30. ]
  31. }
  32. ]
  33. }
  34. ]
  35. }

解析

ItemDropList

列表中罗列出,所有的可能产生的随机库

key

key中指定当前随机库的名称.比如House_L1_Box, 其中的House_L1为当前场景的Key名称.详情见地图随机配置, 后面的_Box中的Box为当前随机物品的类型. 该类型对应在Unity中创建Prefab时候指定.

dropList

该List指定,随机物品如何产生,其中List的大小 为需要执行的Random的次数. 内部的
- num:用来指定 该次Random会Random几个物品
- id & weight : 用来指定对应物品的ID和出现的几率,其中id为NONE表示不产生物品

比如

  1. "dropList": [
  2. {
  3. "num": 2,
  4. "dropItemType": [
  5. {
  6. "id": "I_001",
  7. "weight": 5
  8. },
  9. {
  10. "id": "I_003",
  11. "weight": 20
  12. }
  13. ]
  14. },
  15. {
  16. "num": 1,
  17. "dropItemType": [
  18. {
  19. "id": "I_001",
  20. "weight": 5
  21. },
  22. {
  23. "id": "NONE",
  24. "weight": 20
  25. }
  26. ]
  27. }
  28. ]

该dropList 会进行两次Random, 第一次Random 会产生两个物品, 每一次产生的物品库是

  1. {
  2. "id": "I_001",
  3. "weight": 5
  4. },
  5. {
  6. "id": "I_003",
  7. "weight": 20
  8. }

第二次Random会产生一个物品或者不产生物品(看是否Random到了为None的条目)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注