-
就这个问题进行一个抛砖引玉的回答。
- 当子关卡调整后,相关联的文件是肯定会发生变动的,diff 出来并加载这个子关卡。
- 仅就静态的 actor 来说,加个简单的蓝图组件或者在 c++ 里面的 BeginPlay 时通过 GetWorld() 获取子关卡对应的 ULevel,然后再遍历这个 ULevel 下的 AActor。
- 获取 Name,Transform(location, rotator) 等想要的信息,ue 提供的接口还是非常丰富的。
- 按一定的格式输出到本地, 再和之前的记录进行 diff。
-
个人理解的对于属性和技能伤害的方面的一些参考:
- 英雄属性 (属性大概由攻,防,血,和一些其他 (命中、暴击,闪避等) 组成)
- 基础属性,一般按英雄定位 (dps,tank, ...) 和稀有度等因素设计
- 成长类属性,由玩家本身或英雄养成属性,可能会分局内和局外,具体会是等级,阶段,段位等
- 额外类属性,由装备或其他额外带来的属性
- 属性公式,战斗时如何计算上述属性,一般来说成长类属性是放大基础属性,额外类就是修正基础属性
- 技能类型 (按技能类型分伤害类, 治疗类)
- 伤害类公式 (一般就是攻/防/增伤/减伤等属性)
- 技能本身的伤害系数,技能伤害类型 (物理,魔法,影响取具体的攻击/防御属性)
- 攻击方属性
- 攻击 (由英雄属性计算获得)
- 伤害加成 (属性类 buff 里面)
- 受击方属性
- 其他影响因素
- 是否暴击, 取暴击值
- 是否存在伤害浮动 (测试时,为了追求数值准确,最好能关闭该数值,实际上线前也需要检测该数值是否开启)
- 战斗类型 (PVP/PVE,可能会影响数值计算)
- 是否存在数值限制 (当双方数值差距过大时, 是否限制最高或最低伤害)
- 如果攻击小于防御时的处理方式
- 参考 (乘法公式),技能系数 *(攻击 - 防御)*(1+(伤害加成 - 伤害减免))*(是否暴击?(1+ 暴击 - 抗暴):1)*(伤害浮动)
- 治疗类公式,类似伤害公式,可能取的属性不一样,还要考虑治疗加成,治疗衰减,治疗增益,治疗限制等因素
- 对属性
- 基础属性一般没有问题
- 需要防止战斗中属性与面板属性不一致(如果存在差异还要考虑告知玩家)
- 也要防止一些属性未带入战斗,或重复带入战斗
- 对技能伤害
- 实际伤害还受到其他因素的影响,也需要考虑
- 主要看伤害是否合理,与数值设计是否一致
- 对于技能来说,与其关注数值,更需要关注机制逻辑方面的问题,很多时候数值错误主要来自属性类 buff(攻/防/增伤/减伤等) 多加了或没加上
- 也可以分析战斗模块的代码,或者 dump 出战斗日志,看看属性变化 (局内成长), 伤害数值是否符合预期
- 还要考虑, 特殊场景,特殊玩法生效时对英雄属性和战斗数值的影响 (一般也是通过 buff 实现)