网络游戏同步法则

网络游戏中移动同步问题的解决方案 网络游戏网络方面的算法 立即下载

网路的硬件也有限,而人的创造也无限,在公网平均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) 现在解决同步问题已经很紧迫,而同时所需要的环境也已经成熟,只要有所关注,半年之内可以得出较成熟的结论


那么具体怎么解决呢?再下一步怎么办?
这就得自己去实践了,我只说这么多了,哈哈,不然又教懒了那些成天再网上搜方案的人。

skywind http://www.joynb.net/
原帖参考:http://blog.youkuaiyun.com/skywind/

Jetson Nano官方镜像下载&烧录 在NVIDIA Jetson Nano开发者套件上安装NVIDIA官方Ubuntu镜像 阅读详情

相关推荐

74hc595驱动模块的Verilog设计(线性状态机)

module hc595_driver( input clk, //50Mhz input rst_n, //复位信号 input [15:0] data, //数码管待显示数据,8位段选数据,8位位选数据 input en, //使能 o...

qq_41294540的博客 3740

“游戏数据同步方案”

“游戏数据同步方案” 首先我们介绍实时对战手游中最难解决的技术问题——弱网络下的同步问题。 通过对玩家的游戏数据进行观察,发现玩家的游戏环境存在很大差异,不同玩家会使用不同的2G/3G/4G/Wifi网络,不同网络之间的延迟相差很大。另外移动网络质量不稳定,且都是按流量收费,这些都是需要考虑的问题。手机在网络间的切换,又会造成底层网络断线、地址变化等问题,都是常

linuxheik的专栏 5648

UE4/5项目GPU崩溃?可能是Windows的TDR机制在搞鬼!深入浅出聊聊TdrDelay与显卡超时

本文深入探讨了UE4/5项目中GPU崩溃的常见原因,揭示了Windows TDR机制的工作原理及其对渲染进程的影响。通过调整TdrDelay参数和优化GPU负载,提供了解决显卡超时问题的实用方案,帮助开发者提升项目稳定性。

weixin_30691649的博客 410

网络游戏知识——【同步算法】

同步是网络游戏的一大难题,不同类型的游戏对同步有着不同程度的要求,如何解决好同步产生的问题?同步方案(帧同步,状态同步,状态帧同步)的区别和联系?网络传输协议(TCP,UDP,可靠UDP)的区别和联系?下面就让我们一起来学习下吧。

qq_53045580的博客 1941

将3DMax编辑的动画,导入给已经绑定蒙皮好的模型给Unity使用

现在程序猿想做独立游戏,即容易,也难。 说容易,引擎越来越傻瓜化。 说难,到哪去找靠谱的美术? 好在伟大的AssetStore(还有淘宝上)有大批不赖的资源可以用。 现成的模型,是好,但是,没有配套的动作,却是一件让人头疼的事情,即使用IK动画,也不能完美的弥补这一缺陷。 虽然Unity具备 retargeting 功能,但是,也不是万能的,很多情况下,非标准的骨骼会导致

正经的时候都在打游戏 1万+

simulink可控励磁同步电机模型分析

他励同步电机模型分析

qq_26681609的博客 5551

游戏同步+游戏中的网络模块

很多情况下,有一些并非非常重要的逻辑最好放到客户端执行,可以减小服务器压力,而且服务器的内存,CPU性能都要比一般的玩家机器要强的多。我们所熟知的“王者荣耀”采用的就是帧同步的方法,只不过他是在服务器同步架构下,采用的是乐观帧以及各个细节的逐步优化来完成的,后面简单讲解。前面提到我们可以在网络中传递一个对象,但是客户端上的A对象(如玩家A)与服务器上的A对象(也是玩家A)在内存地址上肯定是不一样的,我们怎么知道客户端传递过来的A对象就是服务器上的?二者在不同的游戏里面都有广泛的应用,没有绝对好坏之分。

zaizai1007的博客 1603

rknn-toolkit推理yolov5-face.rknn模型--python代码

import os import urllib import traceback import time import sys import numpy as np import cv2 from rknn.api import RKNN ONNX_MODEL = 'yolov5s.onnx' RKNN_MODEL = 'yolov5s.rknn' IMG_PATH = './bus.jpg' DATASET = './dataset.txt' QUANTIZE_ON = True BOX_THR.

C/C++、嵌入式开发、深度学习算法、模型部署与推理优化 3079

联机游戏中 多个玩家的状态同步

联机游戏中 多个玩家的状态同步

qq_37106501的博客 1367

PCL 均匀采样【2026最新版】

根据输入点云数据创建一个微小的三维立方体集合,然后计算每个三维立方体的重心;由于该重心点不一定是原始点云中的点,直接用该点来表示立方体内所有的点会丢失原始点云的细小特征;所以使用k最近邻搜索寻找距离重心点最近的原始点来代替重心点。

点云侠的博客 41万+

使用C/C++复制图像

要使用上述代码,需要将输入图像和输出图像的文件名替换为实际的图像文件名。当程序执行完毕后,将会在当前目录下生成一个名为"output.jpg"的图像文件,其中包含与输入图像完全相同的图像数据。要使用上述代码,需要将输入图像和输出图像的文件名替换为实际的图像文件名。当程序执行完毕后,将会在当前目录下生成一个名为"output.jpg"的图像文件,其中包含与输入图像完全相同的图像数据。函数将输出图像保存到文件中。在这个示例中,我们假设输入图像是一个常见的JPEG图像,文件名为"input.jpg"。

CyberWarpX的博客 729

游戏中同步机制的一致性问题

游戏中的同步机制一致性问题是一个复杂而重要的挑战,涉及到网络延迟、数据传输、客户端处理等多个因素。通过合理的设计和技术手段,开发者可以有效地解决这些问题,提升玩家的游戏体验。在不同类型的游戏中,开发者采用了多种技术和策略来解决同步机制的一致性问题。这些案例展示了如何通过服务器主导模型、事件队列、时间戳、预测和插值等方法,确保玩家在游戏中的体验尽可能一致。通过合理的设计和技术手段,开发者能够有效地处理同步问题,提升玩家的游戏体验。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 1796

图文教程本地部署开源扣子Coze Studio工作流并接入 Gemini 大模型(windows亲测) Coze Studio 本地部署、Gemini 模型接入、开源 AI 工具平台、大模型工作流搭建

本文介绍了在Windows系统本地部署开源AI工具平台Coze Studio并接入Google Gemini大模型的完整教程。主要内容包括:1) 环境准备要求(Docker等);2) 获取源码和配置Gemini模型(需API密钥);3) 通过Docker Compose部署服务;4) 浏览器访问验证。文章指出该平台适合私有化部署,支持智能体和工作流搭建,但也存在插件系统不完善等局限。最后提供了相关资源链接,为开发者实现本地AI解决方案提供了实用指南。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2780

FreeRTOS + LWIP项目避坑:你的tcpip_thread优先级真的比ethernet_input高吗?

本文深入分析了FreeRTOS与LWIP在STM32H743平台上实现百兆网速传输时常见的'pbuf_free: p->ref > 0'断言错误。通过揭示线程优先级配置的关键原则,指出必须确保tcpip_thread优先级高于ethernet_input,并提供详细的配置建议和优化策略,帮助开发者避免网络数据传输中的调度陷阱。

weixin_30770783的博客 370

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: 网络游戏南北互通问题分析
下一篇: 关于“面向显示器编程”
skywind
博客等级 码龄26年 479粉丝 70原创
评论 14
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值