游戏思考06:游戏核心逻辑设计—战斗系统基础及进阶(未完待续,12/14)

文章目录

    • 一、【第一章】游戏战斗系统核心抽象模型
      • 1)技能过程定义
      • 2)技能阶段(可以叫状态机,但这是时间驱动的各个阶段)
      • 3)不同技能分类
      • 4)简单实现方式(定时器驱动不同阶段的状态机)
    • 二、【第二章】核心框架
      • 1)战斗框架子系统(buff,也叫aura)
      • 2)简单实现示例
    • 三、【第三章】逻辑内容
    • 四、【第四章】网络问题
    • 五、【第五章】性能问题
    • 六、【第六章】可维护性问题

客户端:负责接收玩家战斗指令,根据服务器的驱动进行表现
服务器:负责逻辑驱动

一、【第一章】游戏战斗系统核心抽象模型

1)技能过程定义

1)技能实体在生命过程中,可通过抽象划分为一系列的阶段
2)不同的技能类型即为这些阶段组合而成的过程

2)技能阶段(可以叫状态机,但这是时间驱动的各个阶段)

1)start 技能开始
2)Cost 消耗处理
3)reading 吟唱(读条)
4)channeling 引导(比如说持续性的对一个目标造成伤害或者一定的效果)
5)OnCast 出手(起手的时候通知客户端做预表现,做表现的期间掩盖网络延迟)
6)Project 弹道飞行中(飞镖做物理碰检测,战斗中引入物理碰撞是比较困难的事情)
7)OnHit 击中(打中的一些效果,实际上就是执行了一段lua脚本)
8)FInish 技能结束

补充:
技能在服务器就是一段数据+逻辑,也就是游戏编程精粹第一本的数据驱动的系统,也就是行为树
  • 自述
    在我的项目中,用的阶段是:
StageBegin技能开始->StagePrapare技能准备->StageGuide技能引导
->StageEffect技能作用->StatePost技能作用后->StageEnd技能作用结束

3)不同技能分类

  • 瞬发技能
    start-》cost-》oncast-》project-》onhit-》finish
  • 吟唱技能
    start-》reading->cost->oncast->project->onhit->finish
  • 引导技能
    start->cost->channel->oncast->project->onhit->effect->timeout? channel:finishi(时间没结束就回到channel)
  • combo技能(连击技能,大部分技能都是连招的技能)
    ①都是由很多个技能组合起来的
    ②与特殊引导技能的区别:combo技能需要玩家不停的点击
  • 特殊引导技的技能 (实际上在一个时间轴上是连续释放的,但是在中间会被各种事件打断)
    玩家只需要按一个技能,就可以连续的放很多技能

4)简单实现方式(定时器驱动不同阶段的状态机)

  • 可配置的阶段内容
    出手表现时间T1 ---->
    飞行时间T2=distance/project_speed ---->
    击中表现时间T3

游戏思考06:游戏核心逻辑设计—战斗系统基础及进阶(未完待续,12/14)_第1张图片

二、【第二章】核心框架

1)战斗框架子系统(buff,也叫aura)

  • 定义
    依附于实体数据上持续一段时间的可交互对象
数据
逻辑
相关实体:event_source(时间产生的来源),event_target(技能打中的目标),deco_source(给技能上buff的这个目标,可以简单理解为施法者)
交互点:skillout、skillin

2)简单实现示例

三、【第三章】逻辑内容

四、【第四章】网络问题

五、【第五章】性能问题

六、【第六章】可维护性问题

你可能感兴趣的:(游戏开发专栏,游戏战斗逻辑)