客户端发送消息,统一在服务器端触发战斗
服务器端驱动战斗过程
客户端端接收用户输入向服务器发送消息
客户端接收服务器消息显示客户端表现
 
1. 服务器--客户端交互(战斗流程)
整战斗流程分为4个状态:战斗准备,战斗开始,战斗进行,战斗结束。其中战斗进行状态时服务器客户端可以进行两种交互,一种是服务器端定时器触发战斗循环,另一种是客户端玩家发送战斗操作。具体如下:
a. 战斗准备
 
b. 战斗开始
· 初始化战斗相关信息,即从基础信息模块中获得角色、阵型、属性,从战斗中获得战场
· 启动战斗实例的定时器,一个战斗实例用一个定时器。
· 在初始化战斗,特别是定时器的数据步骤中,需要根据属性建立战斗对象的出招队列。战斗对象可以在战斗实例定时器下排成队列一个接一个地调用。看策划需求,相较而言ARPG的野怪可以实现为每个野怪在该心跳下的一个定时器而非队列。
 
c. 战斗循环
· buff发生改变的情况包括:
1. buff定时失效 ,根据buff到达失效时间发送消息
2. buff定时扣血,根据扣血间隔发送buff改变消息
· 客户端接收到buff改变的消息后要在相应操作:
buff扣血 ,客户端播放扣血与buff的动画特效
buff失效,客户端停止播放buff的动画特效
· 获得出招队列首位角色的仇恨对象,如果该角色没有仇恨对象,就直线向前移动,并结束该次心跳
仇恨角色的选取:
1. 玩家指定(我自己设计)
2. 系统指派,系统以一定半径搜索角色周围
· 通过与仇恨对象的距离判断是否攻击
与仇恨对象距离过远,则朝向仇恨对象移动,并结束该次心跳
与仇恨对象距离可以发动攻击,检查攻击间隔
攻击间隔已到则朝对象发动攻击
攻击间隔未到则结束该次心跳
· 如果发动攻击,计算扣血
如果仇恨对象被攻击死亡,清空进攻角色的仇恨对象
 
d. 战斗操作
我自己设计了玩家在场景中拖拽部队选择其攻击对象的功能。
战斗操作只是更改战斗对象的一些数据,这些数据不会即时影响战斗循环,故不需要与战斗循环的心跳做同步。
 
e. 战斗结束
 
2. 服务器端战斗系统结构
CWarMgr是服务器的一个单例组件,负责管理服务器所有的战斗,包括创建战斗、向战斗实例派发消息、维持战斗心跳、结束战斗。
 
IWar是战斗实例的接口,派生出CWarPve,CWarPvpOnline,CWarPvpOffline三种实现类去处理三种不同的战斗。
IWar的创建应用了抽象工厂模式,由IWarCreator接口派生的实现类创建。
IWar包含了战斗双方的数据,由于服务器战斗循环以及客户端发起战斗操作(在更改战斗双方的数据时需要考虑多线程数据的同步,固客户端更改数据需要加锁?)
 
3. 客户端战斗系统结构
相较服务器而言,客户端增加了一个CWarScene战斗场景类负责管理战斗场景,它将包含一些IWarEffect战斗特效类(战斗特效的更新与播放)。IWarEffect主要派生出四种具体特效实现类,包括操作特效(仅变化模型着色以提示玩家)、粒子特效(特效只包含粒子)、动画特效(特效包含粒子和动画)、跳字特效(用于扣血等属性数值的增减)。这些特效都在OnUpdate中查询对于的SBuffInfo结构体,以确定特效是否和如何播放。
 
4. 如何应对策划修改
多数情况下都是策划攻,程序受,一起来探讨一下逆天的策划会有什么逆天的设计,如何留好接口进行扩展去应对这些设计。
a. 世界boss,多个玩家挑战同一个超级boss 
b. 大乱斗,玩家中途参战 
c. 帮派战,前军中军后军3vs3 
d. 自动战斗,中途加入操作

我所理解的网络游戏<?>:战斗逻辑设计的更多相关文章

  1. 深入理解计算机系统(4.2)------逻辑设计和硬件控制语言HCL

    上一篇博客我们简单介绍了Y86指令集体系,而这篇博客我们将介绍指令集体系的逻辑设计和硬件控制语言HCL,为后面去实现Y86打下基础. 在硬件设计中,用电子电路来计算对位进行运算的函数,以及在各种存储器 ...

  2. 我所理解的RESTful Web API [设计篇]

    <我所理解的RESTful Web API [Web标准篇]>Web服务已经成为了异质系统之间的互联与集成的主要手段,在过去一段不短的时间里,Web服务几乎清一水地采用SOAP来构建.构建 ...

  3. MySQL 数据库设计 笔记与总结(2)逻辑设计

    [实例演示 —— 实体之间的关系] [逻辑设计的工作] ① 将需求转化为数据库的逻辑模型 ② 通过 ER 图的形式对逻辑模型进行展示 ③ 同所选用的具体的 DBMS 系统无关 [名词解释] 候选码可以 ...

  4. 小梅哥FPGA数字逻辑设计教程——基于线性序列机的TLC5620型DAC驱动设计

    基于线性序列机的TLC5620型DAC驱动设计 目录 TLC5620型DAC芯片概述:    2 TLC5620型DAC芯片引脚说明:    2 TLC5620型DAC芯片详细介绍:    3 TLC ...

  5. 图解 CSS: 理解样式表的逻辑(转载)

    原文:http://www.cnblogs.com/del/archive/2009/02/01/1382141.html 样式表可以是外部的.内联的或嵌入的; 链接外部样式文件一般是:<lin ...

  6. 数据库设计理论与实践·<二>概念设计与逻辑设计

    2一.概念设计 1.1 概念设计关键知识 1.2 辨析 实体与属性的区别: ①实体能进一步用多个属性来描述,属性却不能,属性是不可再细分/分割的原子项. ②实体内部或者多个实体之间存在联系,而属性无. ...

  7. project开发的程序设计与逻辑设计

    非常多时候我们要做庞大project, 就像一棵大树, 方方面面都有自己的细枝末节,而作为开发员的我们,无法时时刻刻去保持对程序的全面认知,所以我们要把程序设计与逻辑设计区分开来. 那么什么是程序设计 ...

  8. ASP.NET中登录功能的简单逻辑设计

     ASP.NET中登录功能的简单逻辑设计                               概述                               逻辑设计             ...

  9. Mysql业务设计(逻辑设计)

    逻辑设计 数据库设计三大范式 数据库设计第一大范式 数据库表中所有的字段都只具有单一属性 单一属性的列是由基本数据类型所构成 设计出来的表都是简单的二维表 数据库设计的第二大范式 要求表中只有一个业务 ...

  10. 理解RESTful架构——Restful API设计指南

    理解RESTful架构 Restful API设计指南 理解RESTful架构 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式 ...

随机推荐

  1. VS代码页到设计页传值

    代码页  public string titleZRclass = "";   根据条件设置其值 设计页  <%=titleZRclass %>

  2. nginx 反向代理 502 Bad Gateway

    查看nginx的error.log日志文件发现如下信息: upstream sent too big header while reading response header from upstrea ...

  3. wcf服务契约的重载

    a. 服务端 .服务端 契约用OperationContract的Name实现重载 using System; using System.Collections.Generic; using Syst ...

  4. 8.14 右键自定义菜单 更加iframe 内容高度调整 iframe高度 js定时

    <div class="main_contain" id="z_div" style="position: relative;"> ...

  5. ST3 插件和技巧

    Emmet插件: 快速生成HTML文档结构, 快速编写跨浏览器的CSS并自动帮助你同时编辑, 强大! 语法技巧 简单实用, 值得掌握! SideBar Enhancements插件:  改进了侧边栏, ...

  6. [转载红鱼儿]Delphi实现微信开发(3)如何使用multipart/form-data格式上传文件

    开始前,先看下要实现的微信接口,上传多媒体文件,这个接口是用Form表单形式上传的文件.对我来说,对http的Form表单一知半解,还好,查到这个资料,如果你也和我一样,必须看看这篇文章. 在xali ...

  7. 2018.10.09 NOIP模拟 世界杯(图论+set优化)

    传送门 貌似是防akakak题? 不是很清楚. 事实上如果两个人没有严格的大小关系,我们给他们两个连一条边. 这样可以构成很多连通块. 而且对于连通块a,ba,ba,b,aia_iai​和bjb_jb ...

  8. 2018.09.24 bzoj1816: [Cqoi2010]扑克牌(二分答案)

    传送门 简单二分答案. 我们二分最终有k个牌堆. 这样joker被选择的张数≤min(k,m)\le min(k,m)≤min(k,m) 并且joker需要被选择的张数应该是∑i−1nmax(0,k− ...

  9. RESTful Web API 实践

    REST 概念来源 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备...). 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通 ...

  10. T4系列文章之2:T4工具简介、调试以及T4运行原理(转)

    出处:http://www.cnblogs.com/damonlan/archive/2012/01/12/2320429.html 一.前言 经过第一篇,我想大家现在对T4有了基本的印象,应该对T4 ...