植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/xjvbb
游戏关卡数据文件定义了游戏中每一个关卡的数据,包括游戏类型、关卡通关奖励的金币数量、僵尸出现的波数、每一波出现僵尸数量、每一波僵尸出现的类型等。根据不同的游戏类型,定义了不同的通关要求,例如最多使用小车的数量、不可种植的位置、最多使用的植物数量等。
关卡数据文件位置
关卡数据文件在资源文件的Text文件夹中。位置如下图所示。
GAMEWORLD_1DATAS.reanim.compiled 简单模式的关卡数据已加密文件
GAMEWORLD_1DATAS.reanim1.compiled 简单模式的关卡数据未加密文件GAMEWORLD_1DATAS_DIF.reanim.compiled 困难模式的关卡数据已加密文件
GAMEWORLD_1DATAS_DIF.reanim1.compiled 困难模式的关卡数据已加密文件
文件有已加密和未加密两个版本,游戏中可以选择加载不同的版本,关于加载代码请看上一篇教程有详细讲解。
数据解释
打开未加密的关卡数据文件如下图所示。文件是一个json格式文件,定义了关卡中的相关数据。
"Level_1": {
"IsEncryption": false,
"UserLose": 430,
"CoinNumbers": 50,
"Frequency": 5,
"ZombiesType": [ 1 ],
"MunchZombiesFrequency": [],
"FirstFrequencyTime": 18,
"GameType": [ 3 ],
"CarNumbers": 5,
"UserPlantsNumbers": 10,
"ZombiesNumbers": [ 1, 3, 3, 3, 10 ],
"ZombiesTypeProbability": [
[ 100, 0, 0 ],
[ 100, 0, 0 ],
[ 100, 0, 0 ],
[ 100, 0, 0 ],
[ 100, 0, 0 ]
]
},
"IsEncryption": false
表示是否加密,该字段在游戏未使用,可以忽略。
"UserLose": 430
表示当僵尸在地图上向左移动小于430像素的位置就表示玩家失败。
"CoinNumbers": 50
表示玩家成功通关后金币奖励的基数。关卡金币奖励数量不是定值,奖励金币数量会根据该基数值进行计算。
"Frequency": 5
表示这一关卡总的僵尸波数。这里表示这一关会有5波僵尸出现。
"ZombiesType": [ 1 ]
表示僵尸类型,它是一个数组。僵尸的类型定义在Zombies.h代码文件中。
/* 僵尸类型 */ enum class ZombiesType { None = 0, CommonZombies, ConeZombies, BucketZombies, CommonDoorZombies, ConeDoorZombies, BucketDoorZombies, LmpZombies, CommonFlagZombies, ConeFlagZombies, BucketFlagZombies, CommonDoorFlagZombies, ConeDoorFlagZombies, BucketDoorFlagZombies, SnowZombies };
"MunchZombiesFrequency": []
表示大波僵尸的波数,它是一个数组,可以为空,如果值定义为 [1,5] 就表示在第1波和第5波会出现大量僵尸,定义后会在关卡的进度条上显示一个小旗子。
"FirstFrequencyTime": 18
表示从进入关卡开始到僵尸第一波出现的时间,单位为秒。时间到达就会刷新第一波僵尸,并播放僵尸出现音效。
"ZombiesNumbers": [ 1, 3, 3, 3, 10 ]
表示每一波僵尸的数量,它是一个数组,数组里面的数量与"Frequency"定义的值是对应的。
"ZombiesTypeProbability": [
[ 100, 0, 0 ],
[ 100, 0, 0 ],
[ 100, 0, 0 ],
[ 100, 0, 0 ],
[ 100, 0, 0 ]
]表示每一波种每一类僵尸出现的概率。它是一个二维数组。
"GameType": [ 3 ]
表示定义的游戏类型。它是一个数组。定义不同的游戏类型需要额外的数据信息。数组中的值类型定义如下。
enum class GameTypes { None = -1, CreateWall, AtLeastSunNumbers, FlowerPosition, CarNumbers, UserPlantsNumbers, ZombiesInvisible, SmallZombies, BigZombies, NoPlants, UserLose };
"CarNumbers": 5
这是游戏类型的一种,表示游戏通关结束,需要至少保留的小车数量。
"UserPlantsNumbers": 10
这是游戏类型的一种,表示这一关卡最多使用的植物数量。
"FlowerPosition": 5
表示花坛的位置,数值表示所在列。游戏类型的一种。
"AtLeastSunNumbers":1000
表示在通关结束之前至少产生的阳光数量。游戏类型的一种。
"NoPlants": [
[ 4, 2 ],
[ 4, 3 ],
[ 2, 4 ],
[ 0, 2 ],
[ 0, 3 ],
[ 1, 1 ],
[ 2, 0 ],
[ 3, 1 ]
]表示不可种植区域,是一个二维数组,存放多个位置坐标。游戏类型的一种。
后续
下一篇将讲解读取关卡数据的详细代码细节。