Initialization Config - Gnzdream/RockChronicle GitHub Wiki
Character Initialization JSON Data Format Description
@since v0.0.1
@date 2019-05-05 (create)
相关类
-
zdream.rockchronicle.core.character.CharacterBuilder
用于从文件系统中扫描 JSON 文件,并预加载。
当出现了产生新的角色的需求时,将取出相关数据,并引导角色实例的初始化工作。 这部分工作包含重建角色初始化数据
,并配置添加模块。 -
zdream.rockchronicle.core.character.CharacterEntry
角色父类。相关的敌人、主控角色、子弹、陷阱、场等均由该类继承。
需要利用角色初始化数据
进行初始化。
角色初始化数据
- 格式: Json Object
下面描述数据格式
-
name
string, 必需
角色名称 -
class
string, 必需
全类名 -
type
string
角色类型. 包括但不限于:- 重要角色 "leader": 含玩家控制角色、重要官邸 BOSS 以及有分量的 NPC
- 小怪 "foe": 含敌方小怪以及我方、敌方、中立方等召唤的喽啰
- 子弹 "bullet": 含小怪以及重要角色释放的具有攻击或触发效果的物体角色
- 陷阱 "trap": 除了静态地形以外的机关等
- 道具 "mass": 含掉落物、购买商品以及其它可拾取物品,怪物或角色死后的收尾画面及图像
- 场 "field": 虚拟区域,当目标角色接触后则激活的虚拟角色
- 贴图 "texture": 也包括剑气等传统意义的近战武器释放的物体,以及其它没有实际意义的物体
-
modules
object{key : string}
模块声明
key 为模块属性(比如 "motion" 为动作模块,"sprite" 为绘制模块等),value 为模板类名称。 每个模板类都有一个名称,而没一类属性里的所有模板类的名称都是唯一的,可作为唯一标识符 -
box
object
该角色的碰撞盒子的描述 -
box.inTerrain
boolean, 默认 true
描述该角色是否受地形的约束。一般能够自由穿墙的角色将不受地形的约束,设置为 false。
另外注意,不受地形约束的角色可能受场
的约束。 -
box.anchor
object
描述该角色的锚点位置。一个角色的位置可以看做一系列点的运动,而锚点是这些点中比较突出、容易计算的点。 比如,洛克人的锚点在其底边的中点上。锚点之所以设置在这里时,当其从直立状态转变为滑铲状态时,锚点基本没有变化, 计算起来比较容易。
由于大多数情况配置文件不清楚角色的固定位置,而这些位置要在游戏运行中才能确定, 因此该值通常由后期补充的,文件中将不会注明。 -
box.anchor.x
double
角色锚点横坐标 -
box.anchor.y
double
角色锚点纵坐标 -
box.rect
object
角色的碰撞盒子相对于锚点的位置数据。
box.rect.def 存在或 box.rect.x、box.rect.y、box.rect.width、box.rect.height 同时存在即可。 如果 box.rect.def 存在且 box.rect.x、box.rect.y、box.rect.width、box.rect.height 四项中最少一项存在, 则后者中四项的存在项以后者为准,后者中四项的不存在项以 box.rect.def 为准。 -
box.rect.x
double
角色的碰撞盒子左下角点相对于锚点的横坐标。 -
box.rect.y
double
角色的碰撞盒子左下角点相对于锚点的纵坐标。 -
box.rect.width
double
角色的碰撞盒子的宽度。 -
box.rect.height
double
角色的碰撞盒子的高度。 -
box.rect.def
string
角色的碰撞盒子的参数定位符。
适用于存在不同形状的角色。洛克人拥有直立和滑铲(以及更多)状态,而每种状态的形状并不同, 因此可以在 motion.state 中定义每个状态的碰撞盒子, 并使用 box.rect.def 等于 motion.state 中的任意一个状态的名称(motion.state[?].name)。 -
jump
object
跳跃模块 -
jump.param
object
跳跃模块原始参数 -
jump.param.impulse
double
跳跃的向上的冲量,即跳跃的第一帧,每步向上的格子数。单位:格子 / 秒 -
jump.param.decay
double
在跳跃时,向上的速度会逐渐降下来。(负数)
每过一步的时间,每步向上的格子数。单位:格子 / (秒^2) -
jump.param.maxDropVelocity
double
最大的掉落速度(负数)。单位:格子 / 秒 -
camp
object
阵营模块 -
camp.camp
integer
角色所在的阵营 -
camp.attackAccepted
object {integer : boolean}
角色作为攻击方,攻击其它阵营是否被接受。如果该 object 没有写明的,默认为 true -
camp.defenseAccepted
object {integer : boolean}
角色作为防御方,是否接受其它阵营的攻击。如果该 object 没有写明的,默认为 true -
collision
object
碰撞模块 -
collision.damage
double | undefined
碰撞伤害量,非负数,默认为 0。
如果为正数则说明碰撞对其它能够攻击且生效的角色产生伤害,负数则不产生伤害。 比如一般的加生命值的道具的碰撞不会产生伤害(但也不设置为负数) -
collision.level
integer
碰撞等级,默认为 9。
如果角色自己与其它角色发生碰撞或重合时,如果能够产生伤害或施加效果, 则下面就需要判断碰撞等级了。攻击方有碰撞等级,而防御方有屏蔽等级。 除去特殊情况,当攻击方的碰撞等级大于等于防御方的屏蔽等级,碰撞伤害或效果的施加将生效。
下面罗列了一些较为常用的等级数:- 洛克人(初始状态):屏蔽等级 0,无碰撞模块(无碰撞等级)
- 大多数子弹:无生命模块(无屏蔽等级),碰撞等级 6
- 含碰撞伤害的小怪,以及大多数人形 BOSS:屏蔽等级 0,碰撞等级 1
- 大多数道具、陷阱、场:无生命模块(无屏蔽等级),碰撞等级 9
-
collision.properties
array{object} | undefined 说明碰撞的属性。一般角色属于子弹类的话,这里会有数据。数据的格式与内容将在以后补充。TODO -
collision.execute
string
默认 "repeat"。- repeat:碰撞判断每帧进行判断,每次可同时对多个碰撞的目标产生伤害或效果
- once:碰撞判断到第一个目标,产生伤害或效果,之后并不再进行判断,并在该帧结束后删除该角色
-
sprite
object
绘画模块 -
sprite.stroke
string
类似于 "#FF5620E7" 的字符串,指出绘画时碰撞盒子外框的颜色。只在绘画模块为“shape”时启用。 -
health
object
健康模块 -
health.hp
double
显示血量。在系统中计算的血量实际值为显示血量 * 256 向下取整。
BaseHealthModule 模块中使用。 -
health.hpMax
double
显示血量最大值。在系统中计算的血量实际值为显示血量最大值 * 256 向下取整。
BaseHealthModule 模块中使用。 -
health.ref
string
生命值取值参数定位符。如果是特殊角色,该值将引导模块重定向角色生命值的位置。
ReferenceHealthModule 模块中使用。 -
state
object
其它状态记录模块 -
state.param
object
其它状态记录模块原始参数 -
state.param.stiffness
double
硬直状态产生时的持续时间,单位:秒 -
state.param.immune
double
无敌状态产生时的持续时间,单位:秒