《Multiplayer RPG Template》说明文档

这是一份Multiplayer RPG Template的说明文档,内容包含其中主要系统的配置和制作方法

此案例是基于UE4的ListerServer建立的局域网联机游戏demo,参考作品WOW

基于UE4版本4.25

demo尚且有未完善的地方,后续会跟进优化和修复

技能系统

如上图所示,此图为技能表的配置信息,下面简述其中重要的参数

  • Action: 这个变量代表这个行为的唯一ID,原则上跟表格的RowName相同,很多逻辑中需要通过这个ID查找关于这个技能的所有信息,或者通过这个ID执行这个技能等
  • Display(struct):3个参数用来显示这个技能一般信息,比如名字或者说明还有图标的显示,在UMG上有相关的体现,当然你也可以用来自定义
  • CastData(struct):这个是一个施法的结构体,主要设置的是施法的方式和条件
    • Type:比如默认的读条施法,持续施法,攻击叠加类的施法等方式
    • Time:施法所需要的时长,0意味着瞬发
    • Duration:如果是持续施法,那么这个参数意味着引导时间
    • KeepAttackStat:施法完以后会继续进行普通攻击
    • MotionCast:移动施法,设置为否的话必须站立施法,一旦移动就打断施法
    • NotTargetCast:不需要目标的施法,一般用于范围技能比如火雨之类
  • Mp:消耗魔法值,战士为怒气值
  • CD:冷却时间
  • MaxRange:最大释放范围,按照虚幻单位计算,0意味着无限制
  • LearnGold/Level:学习该技能的前置条件,0意味着无要求
  • RangeSelectRange:如果是范围选择的技能,此参数表示作用的半径
  • TargetType:目标类型,作用地方还是友方等
  • SkillClass:技能实例的类,无需手动创建
SkillRef

这个是通过表格配置的SkillClass创建的,无需手动创建,你只需要制作这个类的逻辑和效果

这个类是继承自BP_BaseSkill,里面有一些乱七八糟的蓝图逻辑,不过并不是全部都是必须使用的,这个类很多情况下你可以自由发挥,反正技能释放了以后就通过这个类来控制这个技能实例的运行

下面就通过IceBullet这个技能类来说明一下

IceBullet继承于ProjectileBase,如上图所示,这是这个类的基本参数类型

  • speed:飞行速度,依赖ProjectileComponent
  • StopDistance:停止的距离,因为这个类是追踪目标飞行的,所以会总有接近并且到达目标的时候,到达目标并停止以后会产生一段逻辑
  • Duration:持续时间,如果没有命中到达时间以后也会摧毁自己
  • Sound/FX:相关的特效配置,Start可以用于产生的时候播放,Hit可以用于打中目标以后播放,但都需要手动释放,
    • ProjectileBase已经实现了BeginPlay以后调用Start的效果
    • 在打中目标后已经实现播放Hit的效果
  • BuffData:如果这个技能有buff/debuff可以设置这个类,需要手动调用方法来创建并运行buff类,如下图

BuffRef

这是Buff的实例类,通过SkillRef内部调用CreateBuff方法创建

通过重写BuffInitBuffEnd方法来实现自定义的逻辑,如果是拥有持续效果,那么你可以重写BuffDelta 方法来制作持续调用的逻辑

装备系统

如上图所示,这个是装备信息的配置表,下面简单介绍其中主要参数的作用

  • BodyPart:装备对应的位置
  • Mesh/Mat:用于显示这个装备实体的模型,装备在人物上或者丢弃到世界中的显示
  • Property:如字面意思就是2种属性,其中Adv属性会随着Base的更改而变化

道具系统

道具系统类似于装备系统

  • EffectType:作用类型,本案例只制作了治疗效果和增加魔法的效果
  • Value: 可以设置作用效果的范围值,当然这个不是必须的,具体是下面的道具类内部实现
  • CanBeStacked:如果是否那么一个道具占据背包栏的一格,否则么可以堆放到一起
  • ActionClass:道具类实现逻辑的类,参考Skill的实例实现,具体逻辑可以写到这个类里面

掉落系统

如上图所示,掉落系统的配置放在DataSystem 这个类里面,为什么没有配置表格呢?O(∩_∩)O

当然也可以,你可以自己创建一个类似的表格然后替换其中的逻辑,这个很简单

这个配置信息是一个Map键值对,键对应的是角色的类,值即是掉落信息数组

  • Action:选择装备/道具等的Action名称
  • Type:选择是装备/道具,当然你要是想掉落技能的话理论上也可以,请自由发挥
  • Amount:掉落数量
  • Probability:概率,这个概率计算是在角色创建的时候就完成的,非击杀的时候

任务系统

如上图所示,这是任务表格的配置信息

  • Titile:任务的标题,会显示在任务栏内的抬头标题部分
  • Target:任务的目标
  • DynamicTargetStat:这个会动态的刷新,具体实现的逻辑在下面的TaskClass内
  • Descripion:任务描述
  • Reward:奖励
TaskRef

如上图所示,每接受一个任务以后就会产生一个任务类来作为该任务的观察者(代理)

具体这个任务是干什么的你可以通过实现这个类内的逻辑来管理,同时设置任务目标里的动态信息

其他

怪物刷新

怪物刷新是在场景里放置一个BP_AIGenerator管理类来完成的

  • MaxNum:刷新的最大数量
  • AIClass:设置刷新角色的类,超过1个的时候就随机从中刷新
  • Range:以该管理类的位置为中心的半径内刷新怪物