PVP与PVE

PVE是Player VS Enviroment的缩写,也即玩家vs环境,和PVP(玩家与玩家对战

最大的区别就是战斗核心逻辑写在哪,状态同步的战斗逻辑在服务端,帧同步的战斗逻辑在客户端。战斗逻辑是包括技能逻辑、普攻、属性、伤害、移动、AI、检测、碰撞等等的一系列内容,这常常也被视为游戏开发过程中最难的部分。由于核心逻辑必须知道一个场景中的所有实体情况,所以MMO游戏(例如魔兽世界)就必须把战斗逻辑写在服务端,所以MMO游戏必须是状态同步的,因为MMO游戏的客户端承载有限,并不能把整张地图的实体全部展现出来(例如100米以外的NPC和玩家就不显示了),所以客户端没有足够的信息计算全图的人的所有行为。

具体到客户端和服务端通信上,在状态同步下,客户端更像是一个服务端数据的表现层,举个例子,一个英雄的几乎所有属性(例如血量、攻击、防御、攻速、魔法值等等)都是服务端传给客户端的,而且在属性发生改变的时候,服务端需要实时告诉客户端哪些属性改变了,客户端并不能改变这些属性,而是服务端传来多少属性就显示多少属性(虽然可以改变客户端数值达到表现上的效果,例如无限血量,但是服务端那边的血量属性为0时,一样要死)。再举个例子,一个英雄要释放一个非指向性技能(例如伊泽瑞尔的Q),具体的过程就是,客户端通知服务端“我要释放一个技能”-》服务端通知客户端“在某地以什么方向释放某技能”-》客户端根据这些信息创建一个特效放在某地,然后以某个方向飞行-》服务端根据碰撞检测逻辑判断到某个时刻,这个技能碰到了敌方英雄,通知客户端-》客户端根据服务端信息,删除特效,被打的英雄减血同时播放受击特效。

而在帧同步下,通信就比较简单了,服务端只转发操作,不做任何逻辑处理。以下图为例:

现在同一局里有4个玩家,也就是4个客户端,这时客户端A释放了一个技能x,此时将操作传递给服务端,服务端不做任何判断,直接把A的操作全部分发给ABCD,则ABCD同时让客户端A控制的英雄释放技能x。

三、流量

状态同步比帧同步流量消耗大,例如一个复杂游戏的英雄属性可能有100多条,每次改变都要同步一次属性,这个消耗是巨大的,而帧同步不需要同步属性;例如释放一个技能,服务端需要通知客户端很多条消息(必须是分步的,不然功能做不了),而帧同步就只需要转发一次操作就行了。

四、回放&观战

帧同步的回放&观战比状态同步好做得多,因为只需要保存每局所有人的操作就好了,而状态同步的回放&观战,需要有一个回放&观战服务器,当一局战斗打响,战斗服务器在给客户端发送消息的同时,还需要把这些消息发给放&观战服务器,回放&观战服务器做储存,如果有其他客户端请求回放或者观战,则回放&观战服务器把储存起来的消息按时间发给客户端。

五、安全性

状态同步的安全性比帧同步高很多,因为状态同步的所有逻辑和数值都是在服务端的,如果想作弊,就必须攻击服务器,而攻击服务器的难度比更改自己客户端数据的难度高得多,而且更容易被追踪,被追踪到了还会有极高的法律风险。而帧同步因为所有数据全部在客户端,所以解析客户端的数据之后,就可以轻松达到自己想要的效果,例如moba类游戏的全图挂,吃鸡游戏的透视挂,都是没办法防止的,而更改数据达到胜利的作弊方式(例如更改自己的英雄攻击力)可以通过服务器比对同局其他人的战斗结果来预防。

六、服务器压力

状态同步服务器压力比较大,因为要做更多运算。

七、开发效率

首先要说,状态同步的游戏占主流,其次就是状态同步开发起来比较难。而帧同步服务器开发难度低,同一套方案可以给很多不同类型的游戏使用,反正都是转发操作;减少了服务端客户端沟通,老实说,没有扯皮的时间,开发效率最起码提高20%,状态同步的方案下,同一个功能至少需要一个客户端和服务端共同完成;PVP和PVE基本用的是同一套代码,做完PVP很容易就可以做单机的PVE。

八、使用帧同步的知名游戏

王者荣耀、魔兽争霸3、所有格斗类游戏

九、断线重连

状态同步的断线重连很好做,无非就是把整个场景和人物全部重新生成一遍,各种数值根据服务端提供加到人物身上而已。帧同步的断线重连就比较麻烦了,例如客户端在战场开始的第10秒短线了,第15秒连回来了,就需要服务端把第10秒到第15秒之间5秒内的所有消息一次性发给客户端,然后客户端加速整个游戏的核心逻辑运行速度(例如加速成10倍),直到追上现有进度。

状态同步和帧同步 PVP与PVE相关推荐

  1. 王者荣耀PVP网络游戏 之【 百里守约指南】:引申话题#游戏同步机制(cs状态同步、帧同步)

    文章目录 前言 I.王者荣耀的背景 1.1 术语 1.2 涉及的技术(游戏同步方案) 1.2.1 同步机制:cs状态同步 1.2.1.1 什么是状态同步? 1.2.1.2 状态同步的优缺点 1.2.2 ...

  2. 服务器解决了什么问题、状态同步和帧同步

    文章目录 一.服务器架构 二.两种同步模式:状态同步和帧同步 1.同步 2.状态同步和帧同步的区别 三.流量 四.回放&观战 七.开发效率 八.使用帧同步的知名游戏 九.断线重连 十.注意点 ...

  3. 游戏网络同步:帧同步和状态同步

    游戏网络同步机制分为帧同步和状态同步. 帧同步是将客户端的操作通过服务端转发给所有客户端,其他玩家同步当前其他玩家的操作,具体执行逻辑写在客户端,再根据处理逻辑后的状态显示,以迁移一致性为主.具体游戏 ...

  4. 游戏后台状态同步与帧同步

    最近开始学习一下游戏后台的一些知识,一直很好奇多个玩家之间的数据是如何同步的,查了一下,目前使用的比较多的是状态同步和帧同步. 状态同步 同步的是游戏中的各种状态. 一般的流程是客户端上传操作到服务器 ...

  5. 网络游戏数据同步的实现 一:状态同步、帧同步的基本原理概述

    什么是游戏的数据同步 数据同步是指使用某种方式让同在一局游戏中的多个客户端保持游戏进程同步. 什么游戏需要数据同步? 联机游戏(cs.饥荒.dead4ife2等) 网游(魔兽.天堂.传奇) 需要快照. ...

  6. 状态同步和帧同步的优缺点

    很多人都在问关于状态同步和帧同步的优缺点,我试着总结了几点,希望能够为提问者提供一些思路和建议.有更好的观点欢迎指点. 状态同步 - 优点 1.它的安全性非常高,外挂基本上没有什么能力从中收益. 2. ...

  7. 状态同步 和 帧同步

    有幸参与一个rpg格斗类型的游戏,在联网匹配成功的情况下,玩家可以进行1v1或者2v2对战. 在战斗中玩家之间的同步方式使用到的就是帧同步.这里说的帧同步的意思就是玩家的每一次操作,例如移动,攻击,防 ...

  8. 游戏同步方案——帧同步

    游戏同步方案--帧同步 帧同步(Lockstep)和状态同步(State Synchronization) 状态同步 帧同步 适用的游戏类型和代表作 帧同步的关键 运行环境一致 显示与逻辑分离 举个简 ...

  9. 帧同步_帧同步和状态同步该怎么选(上)

    这是一篇拖延了2年多的文章-2017年10月份开始写的,直到这次过年才写完... 前言 随着王者荣耀的崛起,使用帧同步(Lockstep)的游戏也越来越多,关于帧同步和状态同步的讨论争论也有不少,那么 ...

最新文章

  1. 流行学习、流形学习家族、局部线性嵌入LLE、随机投影(Random Projection)、t-SNE降维及可视化
  2. 五条强化 SSH 安全的建议
  3. request.getAttribute()和 request.getParameter()有何区别?
  4. 神经网络波动方程∂f(x)/ ∂x=f(-x)f(x)的另一组玻色子解
  5. 通过实例理解word2vec之Skip-gram
  6. 使用 Tye 辅助开发 k8s 应用竟如此简单(四)
  7. Ubuntu18.04 关于使用vnc的踩坑
  8. ab plc软件_【原创】AB上位机FactoryTalk View的使用教程(上)
  9. Window 的版本号管理策略
  10. topcoder srm 440 div1
  11. chromedriver 与 chrome 版本对照表
  12. 各种手机处理器排行榜_手机处理器性能排行榜和代表机型介绍
  13. react 下载 excel 文件
  14. WebView 入坑
  15. 高3老师给大一学生的一封信
  16. APP逆向分析之XX音乐客户端下载歌曲权限绕过
  17. 基于51单片机的故障灯检测
  18. Records of Reinfocement Learning Experiments
  19. 模仿360安全卫士项目笔记9
  20. [Python]ctypes+struct实现类c的结构化数据串行处理

热门文章

  1. @Inject与InjectionToken的使用
  2. 网易青媒第11期 | 第9节课笔记(如何策划和执行一个完整的活动)
  3. Linux中挂载到底什么意思!!!为你解答
  4. 硬肝4.4w字为你写成Java开发手册
  5. Mac上微信可以收发信息,但是无法上网问题解决方式
  6. php排序数组排序_php简单实现多维数组排序的方法
  7. 基于Java+selenium+opencv模拟网页滑动验证
  8. 100层楼丢玻璃球问题
  9. BP神经网络算法学习---基础理论1
  10. 崩坏3九游服务器稳定吗,《崩坏3》卡级真的有必要吗 高级区红莲是什么样子