Initialization Config - Gnzdream/RockChronicle GitHub Wiki

角色初始化的 JSON 数据格式说明

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
    无敌状态产生时的持续时间,单位:秒


其它模块参数

⚠️ **GitHub.com Fallback** ⚠️