当前课程知识点:游戏程序设计 >  第十章 《网络同步技术》 >  10.2 设计目标 >  10.2 设计目标

返回《游戏程序设计》慕课在线视频课程列表

10.2 设计目标在线视频

下一节:10.3 传输数据分析

返回《游戏程序设计》慕课在线视频列表

10.2 设计目标课程教案、知识点、字幕

所以

其实游戏同步算法核心

核心的一个目的就是把我本地的状态

同步给远程玩家的我的镜像

让我们双方在屏幕上

看到的一个呈现效果是一样的

这是它最核心的一个目标

但是这个目标其实它是一个最终目标

你要去工程上可执行的话

进行一定的分解

并且游戏同步呢

它是一个综合性的问题

它涉及的产品

技术

美术

用户体验各方面

它不像科研一样

我们一定只追求说

一定得对一定要对错或怎么样的

它往往需要把这东西结合在一起去分析

有可能会去

把大家理所当然觉得一定要同完全一致

这个东西作为一定牺牲

后面我会去重点给大家去介绍

怎么在这个过程中做这些优先级的一个筛选

以及有哪些因素是需要我们去考虑的

虽然从同步的一个词条解释来说

同步是指两个或两个以上

随时间变化的量在变化过程中

保持一定的相对关系

这里面其蕴含了

游戏同步算法的两个最核心的目标

相对关系

这是同步最关键的一个点了

就是刚刚大家所说的“看到一样”

所以它一个这种一定的相量关系

也都是一致性

是它最关键的一个目标

再大家看这是一个例子

这是假设

这是一个本地的一个状态

这是个远程镜像的状态

那我举个例子

如果在一定时间之后

这个走到了这个地方

他也走了这个地方

那如果能实现这个目标的话

他们是不是就能称之为同步呢

不能,为什么不能?

很明显,这是不能符合我们预期中的同步的

归结到一点

就是它这两个状态之间的关联性

它没有很及时

所以及时性和一致性是我们

同步算法设计的最核心的两个目标

但是这两个目标

其实也相对来说也是非常的泛

并且呢

往往工程和现实中

它们是鱼与熊掌的关系

很简单的例子

就是我这边做了一个行为

通过网络把这个操作行为和数据传到远端

网络会带来延时对吧

远方对面在没有收到这个数据之前

为了达到即时性的话

那我怎么办

我是不是只能去猜它的状态

预测它状态去先行做出一个表现

但这种猜想和预测和实际的传过来状态

往往是不一定能满足这个一致性的

所以它这种时候就是个很典型的案例

就说明两者

在工程中往往不是能同时实现的

因此我们需要一些优先级的方式

去思考这个问题

但是这两个东西

你单纯说谁优先

谁其次也是不合适

因为它太大了

所以我们接着我们希望在给大家

提出一些更细的粒度

我们会从公平体验开销三大维度里面

提出了七个子的设计要素

大家在设计自己的游戏同步算法时候

要结合你的玩法和业务特性

以及玩家的一些属性

去考虑你做出任何决策

在这七个方面

对用户对游戏的一个影响

然后我们接着公平性能很好理解

游戏是我们所谓的博弈

是在一定规则前提下进行的

无规则不成方圆

不公平无游戏

就是

公平性是所有游戏进行了一个大前提

然后体验玩游戏

我们不是单独说去按你的规则

我去执行你的指令就OK了

我的好玩我的玩的爽

所以体验这东西体验这个元素是我们

在设计时候也是非常注重的

而像前面提到体验和公平

所谓的确定性一致性时

它往往需要我们去权衡

有时候优先考虑这个

有时候优先考虑这边

另外一个因为这是一个工程问题

以及社实际的软件运行问题

它会设计一些开销的一些考虑

包括用户手机上它的流量计算量

这是对用户的一个开销

所有影响的

并且你做一个游戏业务

你要长线运营的话

你用这种同步方法对你后续

运营的投入研发成本到底有多大

也是我们需要考虑的

接着

我们来去针对每一点去提出一些例子

给大家去直观的了解一下

就这个例子是比较滑稽的案例

就是当你在游戏里面

你捡了一个枪

它50%的概率是对你造成伤害的话

那其实这种体验

我觉得不是大家想去玩cs

或者是这种吃鸡之类的游戏

所希望的得到体验的

因此就说确定性也都是玩家做出模型为

做出某些操作

它必须对这种行为带来什么后果

是有个明确的后果的预期

一个反向例子

这是个影视作品例子另外一个呢

就是大家玩FPS游戏的时候

是不是会遇到一些情况

我拿狙击枪我开镜了

瞄准远方一个敌人开枪

但是没有打中

结果因网络延时

它卡了

突然网络延时好了它变到其他地方

这种其实就是个很现实的问题

它虽然大家可理解为什么会这样

但其本质上来说它是

对这种规则的确定性是有影响的

规则确定性的就说

一方面它体现着游戏规则性

你有一定规则

你知道他后果

你才能进行有效的博弈

因此有这种符合这种性质的话

你这个玩家才可能玩下去

因此才会才会更多玩家来参与

否则这个游戏可能

就爽一两局之后没人玩了

因为大家不知道玩这东西

该怎么玩

有什么后果

这个是一个安全性相关的个例子

这个其实是一个moba类游戏

里面经常出现的一些视野挂

它就是把那个对手的一个位置和状态

在本地本身本来应该是看不到的

但它因为使用帧同步的技术

在本地维护了全局状态

它用外挂去把这个状态给显示出来了

这就破坏他们这个数据隐私和公平性

这也是一个例子

这是一个吃鸡的一个外挂了一个例子

还个外挂

就是利用了一些渲染的方式

把那个玩家的一些那个边轮廓

和线条渲染它做一些变化

让不管自己还是敌人都能

在地图上进行显示出来

可以看到其它能看到他在门口那里蹲着

等到前后那个玩家

在开始喝饮料补体力时候

就冲进去把对方给击毙了

这种也是非常

影响游戏安全性

公平性的体验

这两个是在PC端游方面

以及手游方面

经常用到的修改游戏数据的工具

游戏公平性

它对于安全性

它对游戏公平的一个破坏 主要体现在 一是

前面提到它会破数据隐私性

我能看到我不应该看到的东西

另外个是我能篡改数据

我把我本地的内存数据改了

可能会受到一些收益

或者是其他一些就不合法的利益

延迟的一个案例

这是守望先锋

在流畅网络情况下的体验

可以看到

虽然玩家在左右移动

但是操作玩家

能够通过一些预判许去进行攻击

最后能够达到正常击杀的结果

然后呢

他们再给出

几百毫秒延迟情况下的一个表现

远程玩家移动已经是非常诡异了

而且他看起来应该是命中了

但实际上是没有命中

这也是延时对体验造成的一个非常大的影响

然后还有一个就是王者荣耀的例子

大家看他一直在操作

他操作孙悟空现在开始动了

就这种情况

相信大家也会遇到

就在网络延迟情况下

我操作到我实际本地发生变化

它是有受到网络波动影响

会导致非常大的一个延迟

这种情况也是基本是没法去继续游玩的

延迟对体验的影响

它其主要包含包括两部分

一个是对输入延迟的影响

还有一个是状态延迟影响

输入延迟的影响的很关键

一点是它影响手感

对于一些有格斗游戏或者说一些竞速类的

一些由于速度很快

我输入稍微延迟零点几秒

可能就是两个状态完全不一样

有可能是正常

我是漂移过弯了

但你一波动

我输入延迟了

我可能就撞撞墙了

这些问题呢

就是对于一些QTE竞速以格斗这些

对手感输入非常敏感的游戏来说

这方面影响是比较大的

另外一个就是状态的延迟

状态主要是指远程玩家

它的状态在我本地显示的

状态的延迟表现

其实前面提到的FPS里面瞄准射击

这个例子就是一种状态延迟的一个表现

然后

网络稳定性

最终团战的时候他掉线了

虽然王者荣耀

项目组也是投了很多精力

去做断线重连

但是在这种时间点上

你断线了

即使能重新回来

那游戏已经结束了

所以本身由于网络的这种波动的影响

断线重连

以及怎么去重连

以及怎样对玩家影响最小的

也是我们经常需要去考虑的

而这个UP主最厉害的一点

就是遇到这种情况

一句脏话都没说

网络其实最常见的一个就是抖动

以及它的网络断连抖动和丢包

其实由前面例子看到

它各种卡顿拉扯

断线的话就涉及到

我们所提的重连的问题了

开销方面

一方面是我们对流量的开销

流量开销其说白就是

它会影响用户的流量话费对吧

虽然后面的话流量越来越值钱了

但是在我们常常见的一些情况下

你流量大

对你的延时各方面还是会有一定影响

因此

即使流量免费

我们也会尽量去控制

我们同步算法的一些流量问题

流量主要考虑因素是两方面

一个是数据结构以及发送频率

这两个决定了同步算法的流量开销

它又会引申出来一些

包括丢包率

话费以及运维部署的

运营的成本

一般就游戏来说

这个是整个游戏运营成本的

运维成本的一个图

带宽来说

它往往占了17%

甚至更高都有

所以这方面其实不管是从用户

还是项目自己的层面来考虑

它都是对成本有很大影响的

另外是一个开销量问题

计算量问题

大家玩游戏都会去关注

这游戏优化的好不好

优化的好和不好的一个区别就是

你优化的好的话

可能在这个档次手机就能玩了

你优化的不好的游戏

可能得这档才能玩

所以这直接影响了你的用户群体

以及这些低配用户的体验

另外

电池消耗量、发热

都是这块会议产生了一些连带的问题

再一个就是,前面提到是用户成本吧

现在我们提到调研发成本不同的同步算法

它所需要的技术门槛

以及需要的维护成本是不一样的

我们提了七个核心设计要素

那我们怎么去做一个优先级的选择呢

我们做任何同步相关的决策的时候

首先我们先要从用户的角度

去看这个决策是不是合理的

哪些方面呢

一个是你这个改动对游戏的乐趣有没影响

因为有些游戏的同步算法

它可能会需要产品层面配合

去修改游戏规则

举个例子

大家玩个三国杀吧应该

线下三国杀

当你是要去放一个无懈可击时候

你是不是直接喊出来就可以了

大家玩线上的三国杀时候

可以触发无懈可击的时候

会有什么表现

它会有一个倒计时

并且是只要你场上有一个玩家

持有无懈可击的话

它所有玩家都会表现那个等待

等待使用无懈可击的一个

交互的时间

因为你没有这个交互的话

你连出一张

南蛮入侵

你根本没有时间等,你放不出来

所以本身它是从游戏交互和规则层面

为了同步去做一些改变

另外就是基础体验

基础体验往往是在于有些时候

我们需要照顾到用户的手感

用户表现的连续性,需要牺牲一些

一致性和正确性

这个在后面会重点介绍

另外一个是

做任何同步算法的决策的时候

我们要去考虑做这个事情

对用户核心利益的一个损失

是有损还说有益的

并且这种有损的情况下

对于单局各个玩家之间

它的受损程度是不是相同等的

如不同等的话

我们应该牺牲哪一部分玩家的利益

这都是我们需要去考虑的

综合来说

我们做的事情对于玩家在单局里面

它的核心关系优势劣势的关系

我们一定要拿捏的非常清楚

游戏程序设计课程列表:

第一章 《游戏开发导论》

-1. 1什么是游戏(上)

--1.1 什么是游戏(上)

--选择题

-1.2 什么是游戏(下)

--1.2 什么是游戏(下)

--选择题

-1.3 游戏是如何开发出来的

--1.3 游戏是如何开发出来的

-1.4 游戏引擎(上)

--1.4 游戏引擎(上)

-1.5 游戏引擎(下)

--1.5 游戏引擎(下)

--单选题

-1.6 如何成为一个游戏开发者

--1.6 如何成为一个游戏开发者

--多选题

第二章 《游戏服务器概述 》

-2.1 什么是游戏服务器

--2.1 什么是游戏服务器

--单选题

-2.2 游戏服务器的和分类发展

--2.2 游戏服务器的和分类发展

--单选题

-2.3 核心技术和实现难点

--2.3 核心技术和实现难点

--单选题

-2.4 设计原理与方法论

--2.4 设计原理与方法论

--单选题

第三章 《《三维几何学基础》 》

-3.1 三维坐标系统

--3.1 三维坐标系统

--多选题

-3.2 向量与运算

--3.2 向量与运算

--单选题

-3.3 矩阵与线性变换

--3.3 矩阵与线性变换

--双选题

-3.4 四元数

--3.4 四元数

--多选题

第四章 《游戏循环及实时模拟》

-4.1 游戏循环概述(上)

--4.1 游戏循环概述(上)

--多选题

-4.2 游戏循环概述(下)

--4.2 游戏循环概述(下)

--单选题

-4.3 《无尽之路》的实现

--4.3 《无尽之路》的实现

--单选题

-4.4 支撑游戏的功能

--4.4 支撑游戏的功能

--选择题

-4.5 支撑游戏的机制与系统

--4.5 支撑游戏的机制与系统

--多选题

第五章 《随机数在游戏中的应用》

-5.1 基本介绍

--5.1 基本介绍

--单选题

-5.2 随机数生成器

--5.2 随机数生成器

--单选题

-5.3 随机数分布与应用

--5.3 随机数分布与应用

--单选题

第六章 《游戏性系统》

-6.1 什么是游戏玩法开发

--6.1 什么是游戏玩法开发

--单选题

-6.2 建立愿景 Vision

--6.2 建立愿景 Vision

--单选题

-6.3 划定边界 Scope

--6.3 划定边界 Scope

-6.4 迭代 Iteration

--6.4 迭代 Iteration

--单选题

-6.5 迭代 Iteration+抛光Polish

--6.5 迭代 Iteration+抛光Polish

--单选题

第七章 《实时图形渲染管道》

-7.1实时图形渲染管道 宏观渲染系统

--7.1实时图形渲染管道 宏观渲染系统

--单选题

-7.2实时图形渲染管道 应用阶段

--7.2实时图形渲染管道 应用阶段

--单选题

-7.3实时图形渲染管道 几何阶段

--7.3实时图形渲染管道 几何阶段

--单选题

-7.4实时图形渲染管道 光栅化阶段

--7.4实时图形渲染管道 光栅化阶段

--单选题

-7.5实时图形渲染管道 总结 参考

--7.5实时图形渲染管道 总结 参考

第八章 《材质着色与光照》

-8.1 物理回顾1

--8.1 物理回顾1

--单选题

-8.2 物理回顾2

--8.2 物理回顾2

--单选题

-8.3 材质 1

--8.3 材质 1

-8.4 材质 2

--8.4 材质 2

-8.5 材质3

--8.5 材质3

-8.6局部光照

--8.6局部光照

--单选题

-8.7 全局光照

--8.7 全局光照

--单选题

第九章 《游戏动画》

-9.1 动画介绍

--9.1 动画介绍

--多选题

-9.2 游戏动画介绍

--9.2 游戏动画介绍

-9.3 动画技术类型

--9.3 动画技术类型

--多选题

-9.4 骨骼蒙皮动画

--9.4 骨骼蒙皮动画

--多选题

-9.5 动画流水线

--9.5 动画流水线

--多选题

-9.6 动画前沿趋势

--9.6 动画前沿趋势

--多选题

第十章 《网络同步技术》

-10.1 .基本概念

--10.1 .基本概念

--多选题

-10.2 设计目标

--10.2 设计目标

--多选题

-10.3 传输数据分析

--10.3 传输数据分析

--多选题

-10.4 常用同步方案 1

--10.4 常用同步方案 1

-10.4 常用同步方案 2

--10.4 常用同步方案 2

-10.4 常用同步方案 3

--10.4 常用同步方案 3

-10.4 常用同步方案 4

--10.4 常用同步方案 4

--多选题

-10.5 方案对比

--10.5 方案对比

--多选题

第十一章 《游戏常用几何学》

-11.1 基本图元

--11.1 基本图元

--单选题

-11.2 图元距离(上)

--11.2 图元距离(上)

--单选题

-11.2 图元距离(下)

--11.2 图元距离(下)

--单选题

-11.3 图元相交测试+ 其他几何方法

--11.3 图元相交测试+ 其他几何方法

--单选题

第十二章 《游戏物理模拟》

-12.1 著名物理引擎介绍

--12.1 著名物理引擎介绍

--单选题

-12.2 物理引擎原理(上)

--12.2 物理引擎原理(上)

--单选题

-12.3 物理引擎原理(下)

--12.3 物理引擎原理(下)

--单选题

-12.4 游戏中的物理体

--12.4 游戏中的物理体

--单选题

-12.5 物理引擎使用入门

--12.5 物理引擎使用入门

--单选题

第十三章 《开发工具 》

-13.1开发语言

--13.1开发语言

--单选题

-13.2 开发环境

--13.2 开发环境

--单选题

-13.3 腾讯开发组件介绍

--13.3 腾讯开发组件介绍

--单选题

-13.4 网络通信+业务框架介绍

--13.4 网络通信+业务框架介绍

--多选题

第十四章 《分布式系统设计 》

-14.1 进程间通信(上)

--14.1 进程间通信(上)

-14.2 进程间通信(下)

--14.2 进程间通信(下)

-14.3 通信格式

--14.3 通信格式

-14.4 并发模型

--14.4 并发模型

-14.5 超时处理

--14.5 超时处理

-14.6 大系统小做(上)

--14.6 大系统小做(上)

--多选题

-14.7 大系统小做(下)

--14.7 大系统小做(下)

-14.8 架构层面的技术支持(上)

--14.8 架构层面的技术支持(上)

--单选题

-14.9 架构层面的技术支持(下)

--14.9 架构层面的技术支持(下)

-14.10 分布系统的关键能力

--14.10 分布系统的关键能力

--多选题

第十五章 《游戏人工智能》

-15.1 游戏人工智能综述

--15.1 游戏人工智能综述

-15.2 人工智能在游戏中主要方法 上

--15.2 人工智能在游戏中主要方法 上

--多选题

-15.3人工智能在游戏中主要方法 (下)

--15.3人工智能在游戏中主要方法 (下)

-15.4 人工智能在游戏制作中的应用领域1

--15.4 人工智能在游戏制作中的应用领域1

--多选题

-15.5 人工智能在游戏制作中的应用领域2

--15.5 人工智能在游戏制作中的应用领域2

-15.6 人工智能在游戏制作中的应用领域3

--15.6 人工智能在游戏制作中的应用领域3

--多选题

-15.7 人工智能在游戏运营中的应用实践(上)

--15.7 人工智能在游戏运营中的应用实践(上)

-15.8 人工智能在游戏运营中的应用实践(下)

--15.8 人工智能在游戏运营中的应用实践(下)

--多选题

第十六章 《游戏支撑系统 》

-16.1 游戏支撑系统(1)

--16.1 游戏支撑系统(1)

--单选题

-16.2 游戏支撑系统(2)

--16.2 游戏支撑系统(2)

--单选题

-16.3 游戏支撑系统(3)

--16.3 游戏支撑系统(3)

--单选题

-16.4 游戏支撑系统(4)

--16.4 游戏支撑系统(4)

--单选题

-16.5 游戏支撑系统(5)

--16.5 游戏支撑系统(5)

第十七章 《游戏逻辑服务器和反外挂》

-17.1 游戏逻辑服务器(上)

--17.1 游戏逻辑服务器(上)

--单选题

-17.1 游戏逻辑服务器(下)

--17.1 游戏逻辑服务器(下)

-17.2 外挂与反外挂(上)

--17.2 外挂与反外挂(上)

-17.2 外挂与反外挂(下)

--17.2 外挂与反外挂(下)

--多选题

第十八章 《运行环境和运维 》

-18.1运行环境

--18.1运行环境

--多选题

-18.2物理部署

--18.2物理部署

--多选题

-18.3系统的可运维性

--18.3系统的可运维性

--多选题

-18.4运维案列分析

--18.4运维案列分析

--多选题

10.2 设计目标笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。