网络游戏同步法则

网路的硬件也有限,而人的创造也无限,在公网平均130ms的Latency下,是不存在“完全的”的同步情况。如何通过消除/隐藏延时,将用户带入快速的交互式实时游戏中,体验完美的互动娱乐呢?

以下六点,将助你分清楚哪些我们可以努力,哪些我们不值得努力,弄明白实时游戏中同步问题关键之所在,巧妙的化解与规避游戏,最终在适合普遍用户网络环境中(200ms),实现实时快速互动游戏:

1. 基本情况:
(A) 网络性能指标一:带宽,限制了实时游戏的人数容量
(B) 网络性能指标二:延时,决定了实时游戏的最低反应时间

2. 两个基本原则:
(A) 让所有的用户屏幕上面表现出完全不同的表象是完全没有问题的。
(B) 把这些完全不同表象完全柔和在一个统一的逻辑中也是完全没有问题的。

3. 同步的十二条应对策略:
(A) 最大可能减少游戏中的数据传输
(B) 将阻塞通信放到线程池中实现
(C) 永远不要为了等待某个数据而不让游戏进行下去
(D) 利用预测和插值改进游戏的效果
(E) 当使用预测插值的时候传送的数据不仅包括坐标,还需要速度和加速度
(F) 将输入数据枷锁或者队列化(例如键盘消息队列),直到下次发送数据的时刻,传统的方法是在固定的时间(发送数据前)检测键盘,在游戏的原理上隐藏延时
(G) 使用事件调度表,将需要在所有用户客户端同时发生的事件,提前广播到所有用户
(H) 使用多次攻击来杀死一个精灵,尽量减少一次性的、确定性的、延时敏感的事件
(I) 延长子弹或者火箭在空中飞行的时间(在其飞行的同时,在所有客户端进行预测插值)
(J) 所有物体从一个地方移动到另外一个地方都需要时间,避免诸如“瞬间移动”的设计
(K) 尽量使游戏中所有精灵,飞船或者其他物体,都按照可预测的轨迹运行,比如在移动中增加惯性
(L) 充分发挥创造力,尽最大可能的合并游戏中前后相关的事件,合并游戏中存在的延时此问题,需要在技术上改进的同时也需要策划有所重视,规避一些影响较大的设计,巧妙的隐藏”延时”

4. 同步问题现状:
(A) 重视程度不够:很多人尚未意识到此问题的存在,曾有公司花半年时间打算做一款“松鼠大战”的网络版。
(B) 技术上无彻底解决方案:对于多数程序员,单机游戏技术善未成熟就匆匆步入网络时代。
(C) 研究这个技术需要条件:需要有实力的公司才能提供,无此条件,即便有能力的程序员也无法成功。

5. 目前网游的三大技术难题:
(A) 服务器的响应问题:如何使服务器在支持越来越多的人数的情况下提供最高的响应。
(B) 同步问题:如何在有限的网络响应情况下,实现快速实时类游戏,提供最完美的交互。
(C) 服务器分布式问题:如何在统一用户数据的情况下,利用分部式将各个分散的“世界”统一到一个“世界”中。
谁能真正解决好以上三个问题,配合策划在设计上的突破,将使其他人在至少两年内无法超越。

6. 相关补充:
(A) 网格技术现在还是抄作,真正用到游戏中,还有很多技术难点需要突破(比如:目前网格的单位计算时间是以秒计算).
(B) 其实与很多人想法相反的是现在3D技术早已不是主要的矛盾。而现在国内外对于以上三个问题可以说处于同一个起跑线上,完全有机会取得先机。
(C) 现在解决同步问题已经很紧迫,而同时所需要的环境也已经成熟,只要有所关注,半年之内可以得出较成熟的

原文地址:https://www.cnblogs.com/huwenya/p/10599203.html

时间: 2024-10-21 07:55:16

网络游戏同步法则的相关文章

[转载自CSDN] 网络游戏同步法则

出处 http://blog.csdn.net/skywind/article/details/392461 ----------------------------- 网路的硬件也有限,而人的创造也无限,在公网平均130ms的Latency下,是不存在“完全的”的同步情况.如何通过消除/隐藏延时,将用户带入快速的交互式实时游戏中,体验完美的互动娱乐呢? 以下六点,将助你分清楚哪些我们可以努力,哪些我们不值得努力,弄明白实时游戏中同步问题关键之所在,巧妙的化解与规避游戏,最终在适合普遍用户网络环

网络游戏同步的算法

转自:https://blog.csdn.net/lovemysea/article/details/78888739 不知道大家是否碰到过这种情况,当某个玩家发出一个火球,这个火球有自己的运动轨迹,那么如何来判断火球是否打中了人呢?大部分情况,当策划提出这个要求的时候,一般会被程序否认,原因是:太麻烦了,呵呵.复杂点的还有包括两个火球相撞之类的事情发生. 那么网络游戏中,是否真的无法模拟实现这种模拟呢? 首先我们来看看模拟此种操作会带来什么样的麻烦: 1,服务器必须trace火球的运行轨迹,乍

[转载]小谈网络游戏同步

小谈网络游戏同步 同步在网络游戏中是非常重要的,它保证了每个玩家在屏幕上看到的东西大体是一样的.其实呢,解决同步问题的最简单的方法就是把每个玩家的动作都向其他玩家广播一遍,这里其实就存在两个问题:1,向哪些玩家广播,广播哪些消息.2,如果网络延迟怎么办.事实上呢,第一个问题是个非常简单的问题,不过之所以我提出这个问题来,是提醒大家在设计自己的消息结构的时候,需要把这个因素考虑进去.而对于第二个问题,则是一个挺麻烦的问题,大家可以来看这么个例子: 比如有一个玩家A向服务器发了条指令,说我现在在P1

网络游戏同步问题综述

http://blog.csdn.net/yxriyin/article/details/23377271 最近看了比较多的网络同步问题因为我只做过回合制,没做过arpg,所以稍微去看看大致是怎么实现的.基本上可以归为两个问题:玩家位置同步和战斗指令同步.玩家位置同步的情况要比战斗指令同步的情况简单,不过正因为如此,你为了更好的同步,就会采取复杂的同步策略.另外,这两种同步其实是息息相关的,战斗肯定会涉及到位置判断.所以我打算一起思考这两个问题. 首先我们要知道在arpg游戏中,是需要对时协议的

(转) 网络游戏实时动作同步方案手记

和MMORPG不同,实时动作型网络游戏 追求操作的响应要求极高(<150ms).动作型网络游戏的制作人希望做到单机游戏的体验,网络游戏的服务.    网络指令在多客户端间的同步算法,从原理上来说,围绕两种特性的取舍而定:  * 牺牲局部实时性:某程度的互等待,保证各客户端间指令集在指定时间段一致.  * 牺牲局部一致性:容许客户端本机先行模拟,等待后续指令到达纠正.(DR) 网络的存在导致鱼与熊掌不可兼得,所以现在市面上的动作网络游戏都有如下的妥协和折衷实现:  * 在客户端本机上算大量关键运算

[转载] 网络游戏实时动作同步方案手记(1)

出处 http://blog.csdn.net/akara/article/details/5885037 --------------------- 和MMORPG不同,实时动作型网络游戏 追求操作的响应要求极高(<150ms).动作型网络游戏的制作人希望做到单机游戏的体验,网络游戏的服务.    网络指令在多客户端间的同步算法,从原理上来说,围绕两种特性的取舍而定:  * 牺牲局部实时性:某程度的互等待,保证各客户端间指令集在指定时间段一致.  * 牺牲局部一致性:容许客户端本机先行模拟,等

如何解决FPS/RTS/赛车类游戏的同步问题

算法简述 动作类游戏如何在高延迟下实现同步?不同的客户端网络情况,如何实现延迟补偿?十年前开始关注该问题,转眼十年已过,看到大家还在问这类问题,旧文一篇,略作补充(关于游戏同步相关问题还可以见我写于2005年的另外两篇文章,帧锁定算法 和 网游同步法则): 影子跟随算法由普通DR(dead reckoning)算法发展而来,我将其称为"影子跟随"意再表示算法同步策略的主要思想: 1. 屏幕上现实的实体(entity)只是不停的追逐它的"影子"(shadow). 2.

关于游戏的网络同步探索

找了些资料,以后慢慢更新 著名游戏网络同步方案汇总 下表为本人汇总的各著名游戏的网络同步方案,已尽力添加引用来源.通过该表,读者可尝试思考:为什么他们会采取这样的方案?找找看有否什么规律?相信看完下文,应该可以找出答案.注,本文的锁步同步(Lockstep)特指只同步操作的确定性锁步同步(Deterministic Lockstep).本文不讨论快照同步(Snapshot Synchronization.Snapshot Interpolation),认为其等同于状态同步(State Synch

影子跟随算法

动作类游戏如何在高延迟下实现同步?不同的客户端网络情况,如何实现延迟补偿?十年前开始关注该问题,转眼十年已过,看到大家还在问这类问题,旧文一篇,略作补充(关于游戏同步相关问题还可以见我写于2005年的另外两篇文章,帧锁定算法 和 网游同步法则): 影子跟随算法由普通DR(dead reckoning)算法发展而来,我将其称为“影子跟随”意再表示算法同步策略的主要思想: 1. 屏幕上现实的实体(entity)只是不停的追逐它的“影子”(shadow). 2. 服务器向各客户端发送各个影子的状态改变