首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏葵花宝典007

    网络同步(同步)

    同步小记 刚问了公司另一个写服务器的大牛,赶紧记录下。 首先我们的游戏是强联网的格斗游戏。网络同步采用是同步技术。 同步的背景介绍:就是一个对于一个f(x) 函数,对于同一输入,输出结果一定相同。 拿格斗游戏举例,a挥刀,b下蹲作为输入的参数,x1,x2 ,函数f(x1,x2) 输出固定的一个结果(相对俩个对战玩家来说,叫同一个输出结果这样才比较好理解吧) 原来经常说的30意思就是,一秒30, 上面说的这些就是同步核心的思想玩法,听完也没那么神秘的。回到这里的问题,就是指这个模块(或者说是函数),只负责这个同步消息的操作。 另外还有延迟的考虑,就是客户端一般收到的会有俩的延迟,作为服务器是收集输入信息到点就下发同步的。

    2.1K40编辑于 2022-07-17
  • 来自专栏人人都是极客

    音频、视频及其同步

    今天介绍下音频、视频的主要参数和分析方法,以及音视频的同步等,主要内容如下: 音频 视频 PTS与DTS 音视频同步 音频 音频的概念没有视频那么清晰,几乎所有视频编码格式都可以简单的认为一就是编码后的一副图像 Bitrate 针对表格中的说明: V1:MPEG Version 1 V2:MPEG Version 2 and Version 2.5 L1:Layer Ⅰ L2:Layer Ⅱ L3:Layer 上图中显示的顺序为: 1I1、B2、B3、B4、P5、B6、B7、B8、P9、B10、B11、B12、I13 编解码顺序为: 1I1、P5、B2、B3、B4、P9、B6、B7、B8、I13、B10、B11 ,则音视频可以看做是同步的。 实际情况是因为各种原因导致音视频不同步,如每解码和渲染的时长有差别,色彩丰富的视频可能就比色彩单一的视频解码渲染更慢以及计算的误差等,音视频同步方式主要有三种: 视频同步到音频 音频同步到视频 音视频同步到外部时钟

    5.3K10发布于 2021-02-08
  • 来自专栏U3D技术分享

    UDP同步核心原理

    本博客总结自网络公开课 开发工具:Unity/服务器 开发语言C#/(C++ Lua) ---- 目录 同步如何同步 同步使用TCP还是UDP 同步的流程详解 如何克服UDP的时序和丢包问题 同步如何同步 2、客户端:收到服务器操作,计算游戏逻辑,上报下一操作给服务器 同步:服务器每隔多少时间,向客户端发送一次操作比较合适? 带宽承受能力如何计算:假设为一个5V5对战游戏 1秒—->平均每,每人6个字节,摇杆—>角度(0, 360,2个字节),1个字节(256种不同技能) 16* 10* 15 * 500 = 1,200,000 同步的流程详解 服务器: —>比赛对象—>房间内; (1)服务器上每个比赛对象,都又一个成员frameid,保存了当前比赛,下一要进的id; frameid = 1; (2)我们在服务器上定一一个数据结构 : 66ms —>迭代计算出新的位置和结果;同一都以66ms来迭代; 同步:每同步,处理下一之前,每都要同步;—>同样的输入—》同样的输出; (15)跳帧:快速的同步完过时的(即直接进行逻辑计算

    2.2K10编辑于 2022-10-28
  • 来自专栏韩伟的专栏

    同步游戏开发基础指南

    什么游戏适合同步这种技术? 在现代多人游戏中,多个客户端之间的通讯,多以同步多方状态为主要目标。 最早的mud,以及后来大量的国产网游,特别是回合制游戏,都是这种方式; 另外一种叫同步:客户端发送游戏动作到服务器,服务器广播转发所有客户端的动作(或者客户端直接通过P2P技术发送),客户端根据收到的所有游戏动作来做游戏运算和显示 同步这种同步方式,主要依靠客户端的能力,服务器仅仅是做一个转发,甚至客户端可以无需服务器,仅仅通过P2P方式来转发数据。 同步的技术要点 同步游戏中,由于需要“每一”都要广播数据,所以广播的频率非常高,这就要求每次广播的数据要足够的小。最好每一个网络,能在一个MTU以下,这样才能有效降低底层网络的延迟。 因此我们常常会以冗余的方式——比如每个帧数据包,实际上是包含了过去2的数据,也就是每次发3的数据,来对抗丢包。也就是说三个包里面只要有一个包没丢,就不影响游戏。

    3.4K72发布于 2018-03-05
  • 来自专栏Unity游戏开发

    游戏同步的基础概念

    两种同步方式 1.状态同步:客户端发送游戏到服务器,服务器计算游戏行为的结果,然后通过广播下发各种状态,客户端收到状态后进行显示。 2.同步:客户端发送游戏动作到服务器,服务器广播转发所有客户端的动作(或者客户端通过P2P转发),客户端根据收到的游戏动作来做游戏运算与显示。 两种方式的比较: 同步方式广播的数据量比同步状态要小很多,当游戏中的对象特别多的时候,这种方式优势比较明显。相反状态同步能得到更多安全性上的好处,比较容易防止外挂。 同步 一般的同步系统中,有一个RelayServer负责广播(转发 )所有客户端的数据。为了让客户端持续运行,需要定时下发“网络”来驱动客户端。 每次发送数据128Byte,8个玩家,冗余2,一个网络帧数据包大小12882 = 2048字节,每秒发15个网络,占用带宽2KB * 15 = 30KB/S 3.降低广播数据量的方法: 多数游戏引擎位置数据采用浮点数

    3.5K40发布于 2019-06-15
  • 来自专栏格物致知

    基于同步的游戏框架说明

    基于同步的游戏框架说明 一,关于同步和状态同步的比较 同步 状态同步 安全性 比较差,计算都在客户端,服务器只做转发;有服务器校验的方案,比较繁琐 计算都在服务器 可以将重要的判定都由服务器决定 2,代码要求比较高,如果出现异常就会出现玩家之间数据不一致,导致战斗结果无效。 没有要求 二,实际项目《战争XX》同步方案分析 1,整体架构: 2,游戏类型是一款在moba游戏上加入rts元素的实时对战游戏,支持1v1,2v2的模式。 ,那么经过相同的指令计算后,状态也应该是一致的;这就是同步的核心原理。 6,关于作弊检查 客户端每一会将关键状态序列化计算md5发送给战斗服务器,战斗服务器每一会收集到每个客户端的md5;如果md5不一致即可知道有客户端状态不一致; 如果是2v2,我们可以用其中三个md5

    3.7K12编辑于 2022-11-01
  • 来自专栏韩伟的专栏

    格斗类同步游戏的优化

    由于现在4g手机网络越来越普及,绝大多数用户的时延都可以在150ms以内,所以一些快节奏的同步网络游戏开始大行其道,现在最火的同步游戏无疑是某农药了。 同步技术除了可以用来做MOBA类游戏,同样可以用来做需要大量快速操作的格斗类游戏,本文就是尝试提出一些解决同步方案下格斗游戏的优化措施。 “逻辑角色”动画由同步服务器收包得到的数据驱动 Update()事件每秒60个调用,而从同步服务器收包操作,一般每秒15-30个调用,所以,每次“逻辑角色”动画或位置更新,都要以x4 – x2的倍速来运行 [1510297241073_8858_1510297285746.jpg] 总结 使用预渲染技术的最重要策略,还是坚持同步的原则:相同的输入,得到相同的输出。 而预渲染的方案,是把那些严格同步的游戏逻辑、与其表现区分开来,这样可以专门的去让画面看起来更流畅,同时不影响同步游戏的“一致性”。

    4.4K00发布于 2017-11-13
  • 来自专栏云计算linux

    从王者荣耀聊聊游戏的同步

    1、​​像《王者荣耀》一样红过​​ 2、从《王者荣耀》来聊聊游戏的同步 3、游戏服务器的架构演进 农药自从上线以来,依靠着强大的产品力以及腾讯的运营能力,在游戏市场上表现可谓是风生水起,根据第三方的调研数据显示 2、Lockstep—同步 同步可以说是通过帧率延伸过来的,你可以把一个游戏看成一个巨大的状态机,所有的参与者都采用同一个逻辑帧率来不断的向前推进。 我们看如下2个图: 图中是A、B、C三个玩家的时间轴,这个时间轴不是电脑上的本地时间,而是A、B、C联机时定义的一个时间轴。虚线分隔出来时间片称为turn,可以理解成一2、每一只有当服务器集齐了所有玩家的操作指令,也就是输入确定了之后,才可以进行计算,进入下一个turn,否则就要等待最慢的玩家。之后再广播给所有的玩家。如此才能保证一致。 我们来看看具体的执行流程: 上图中我们可以明显看到,这种囚徒模式的同步,在第二的时候,因为玩家1有延迟,而导致第二同步时间发生延迟,从而导致所有玩家都在等待,出现卡顿现象。

    1.5K10编辑于 2024-12-19
  • 来自专栏三流程序员的挣扎

    Android 动画总结(2) - 动画

    Frame Animation,也叫 Drawable Animation,原理就类似视频快速播放一的图片。 其中一个 <item> 代表一。 <?xml version="1.0" encoding="utf-8"? drawable="@color/color1" android:duration="200" /> <item android:drawable="@color/color<em>2</em>" > <resources> <color name="color1">#FF3030</color> <color name="color<em>2</em>">#FF4500</color> < 动画

    1.4K20发布于 2018-09-11
  • 来自专栏全栈程序员必看

    CAN总线学习笔记(2)- CAN协议数据与遥控

    2 数据与遥控 在CAN协议中,数据和遥控有着诸多相同之处,所以,在这里,我们将数据和遥控放在一起来讲。 比如:在某一个时刻,节点Node_A向总线发送了一个ID号为ID_2的遥控,那么就意味着Node_A请求总线上的其他节点发送ID号为ID_2的数据。 节点Node_B能够发出ID号为ID_2的数据,那么Node_B就会在收到Node_A发出的遥控之后,立刻向总线上发送ID号为ID_2的数据。 比如:在某一时刻t,节点Node_A发出了ID号为ID_2遥控报文来请求总线上的其它节点发出ID号为ID_2的数据报文。但是就在同一时刻t,节点Node_B发出了ID号为ID_2的数据报文。 2)SRR位 Substitutes for Remote Requests Bit(替代远程请求位),在扩展(数据或遥控)中,SRR恒为隐性位1,并且可以发现,扩展的隐性SRR位正好对应标准的显性

    4.8K10编辑于 2022-09-14
  • 来自专栏韩曙亮的移动开发专栏

    【Android FFMPEG 开发】FFMPEG 音视频同步 ( 音视频同步方案 | 视频 FPS 控制 | H.264 编码 I P B | PTS | 音视频同步 )

    FFMPEG 音视频同步流程总结 II . FFMPEG 音视频同步方案选择 III . FFMPEG 以音频播放时间线为基准进行音视频同步 IV . 视频绘制的间隔 XIV . 获取视频当前播放时间 XV . 视频绘制的间隔控制 XVI . 视频丢弃方案 XVII . 音视频同步代码示例 I . ; ② 以以视频为基准进行同步 : 控制视频按照指定的帧率 ( FPS ) 播放 , 音频与视频同步 ; ③ 以一个外部时钟为基准 : 定义一个外部的开始时间 t , 音频 和 视频 都基于该时间进行同步 获取音视频 同步校准的 PTS 的 time_base 单位 AVRational time_base = stream->time_base; //2 . 获取音视频 同步校准的 PTS 的 time_base 单位 AVRational time_base = stream->time_base; //2 .

    3.3K20编辑于 2023-03-27
  • 来自专栏逍遥剑客的游戏开发

    MD2关键动画

    只是把它的原理弄明白一些了,但是,我弱小的意志在DirectX SDK那个1000多行的SkinedMesh例子面前顺利地崩溃了,心想,还是先从最基本的关键动画开始做吧-_-! MD2是基于关键动画的,关键插值的数学公式为: p(t) = p(0) + t ( p1 - p0 ) 其中: t — 当前时间。 MD2共有16个关键: start:0 end:39 name:stand start:40 end:45 name:run start:46 end:53 name:attack start:54 ,每由很多三角形组成一个网络,每个三角形由三个顶点组成,每个顶点由x,y,z三个坐标组成,每个……(再说就欠揍了) 那么怎么让它动呢? 就是一地画就行了!

    97560发布于 2018-05-21
  • 来自专栏腾讯游戏云 

    纯前端如何利用同步做一款联机游戏?

    一、游戏同步 1.简介 ·现代多人游戏中,多个客户端之间的通讯大多以同步多方状态为主要目标,为了实现这一目标,主要有两个技术方向:状态同步同步。 ·同步主要依赖客户端的能力,服务器仅仅是做一个转发,甚至客户端可以无需服务器,通过P2P方式来转发数据。由于只是转发游戏的行为,所以广播的数据量比状态同步要小很多。 本文将以同步技术为主来介绍如何实现一款联机游戏。 2.小游戏案例 ·本次我们在《街霸小游戏》中利用腾讯云的游戏联机对战引擎实现了玩家之间的PVP玩法。 该接口会修改房间同步状态为“已开始同步”。 该接口会修改房间同步状态为“已停止同步”。

    3.3K22发布于 2020-11-13
  • 来自专栏进击的多媒体开发

    视频图像处理中的错同步是怎么实现的?

    同步,简单来说就是把当前的几缓冲到子线程中处理,主线程直接返回子线程之前的处理结果,属于典型的以空间换时间策略。 错同步策略也有不足之处,它不能在子线程中缓冲太多的,否则造成画面延迟。 错同步的原理 错同步的原理如上图所示,我们开启三个线程:一个主线程,两个工作线程,每一图像的处理任务分为 2 步,第一个工作线程完成第一步处理,第二个工作线程完成第二步处理,每一都要经过这两步的处理 这些步骤下来,可以看成第 n+1 和第 n 2 个工作线程中同时处理,若忽略 CPU 线程调度时间,2 线程错可以提升一倍的性能(性能提升情况,下面会给出实测数据)。 2同步的简单实现 错同步在实现上类似于“生产者-消费者”模式,我们借助于 C 语言信号量 #include <semaphore.h> 可以很方便的实现错同步模型。 主线程打印的处理结果 我们设定视频2 步处理一共耗时 400 ms (各休眠 200 ms),由于采用错同步方式,主线程耗时只有 200 ms 左右,性能提升一倍。 ? 主线程耗时

    1.8K30发布于 2020-05-26
  • 来自专栏我和未来有约会

    Silverlight制作逐动画 v2 - part2

    Silverlight制作逐动画 v2 - part2 在这里完善了一下算法,加入了fps的机制进去。 private string[] shippics = new string[] { "Ship1/1.png", "Ship1/2.png", "Ship1/3.png", "Ship1/4.png"

    75160发布于 2018-01-16
  • 来自专栏音视频技术修炼手册

    视频里的I、P、B是什么?

    1)什么是I、P、B2)什么是IDR?与普通I有何区别?3)什么是GOP?gop_size值如何设置画质会更好?4)OpenGOP & CloseGOP表示什么? I特点:1)I是一个全压缩编码2)解码时仅用I的数据就可重构完整图像;3)I描述了图像背景和运动主体的详情;4)I不需要参考其他画面而生成;5)I是P和B的参考(其质量直接影响到同组中以后各的质量 P特点:1)P采用运动补偿的方法传送它与前面的I或P的差值及运动矢量(预测误差);2)解码时必须将I中的预测值与预测误差求和后才能重构完整的P图像;3)P属于前向预测的间编码,它只参考前面最靠近它的 比如在对同一个视频进行多码率转码时,如果指定 IDR 对齐(IDR Frame Alignment),则意味着所有输出视频的 IDR 在时间点、内容方面都保持精确同步,此时播放器便可实现多码率视频平滑切换 PTS主要用于解码阶段进行视频的同步和输出,全称是Presentation Time Stamp,为显示时间戳。在没有B的情况下,DTS和PTS的输出顺序是一样的。

    2.8K11编辑于 2024-11-14
  • 来自专栏全栈程序员必看

    HTML高级标签(2)————窗体分2)————后台管理页面

    使用frameset进行窗体分。构建简易的后台页面。这篇博客就作为一个简易后台管理页面的实战演练。 1 首先,须要一个页面,使用<frameset>按比例划分为适合的三个区域:头部。菜单。 我们须要在三个中指定不同的URL,须要编写几个html文件:head.html; menu.html; menu1.html; menu2.html; menu3.html; menu4.html

    后台管理页面头部


    第一项 <a href="menu<em>2</em>.html <center><h<em>2</em>>菜单部分</h<em>2</em>></center> menu1.html: <center><h<em>2</em>>菜单部分1</h<em>2</em>></center> <a href="" target="right" html:
    <h2>菜单部分2</h2>
    第一页
    <a href="" target="right

    82030编辑于 2022-07-08
  • 来自专栏全栈程序员必看

    cv2.fitline_pr自动抽

    < distance = |x1-x2| + |y1-y2| DIST_L2 = 2, //! < distance = max(|x1-x2|,|y1-y2|) DIST_L12 = 4, //! < L1-L2 metric: distance = 2(sqrt(1+x*x/2) - 1)) DIST_FAIR = 5, //! < distance = c^2/2(1-exp(-(x/c)^2)), c = 2.9846 DIST_HUBER = 7 //!< distance = |x|<c ? (1, 2); input_pts.emplace_back(2, 3); cv::Vec4f calc_line; cv::fitLine(input_pts, calc_line, cv::DIST_L2

    80420编辑于 2022-11-15
  • 来自专栏iOS逆向与安全

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

    2、英雄的设计包括整个技能的感觉 3、一些非常有特色的英雄,它的技能、反馈、体验上面都是做的不错(这是基于同步技术方案的优势) 1.1 术语 打击感:(反馈、特效、音效、准确性) PVP 指玩家对战玩家 比如30/s,你所看到的画面就比较流畅了。而帧率越高你所看到的越流畅。 这也就是为什么电影胶片是一格一格拍摄出来,然后快速播放的 游戏中的所有动画也是采用这种方式来渲染,只不过帧率是由GPU来控制,一地渲染 同步 同步可以说是通过帧率延伸过来的,你可以把一个游戏看成一个巨大的状态机 造成不一致的本质原因:延迟 假设理想情况下双方的网络时延都为0,那两者应该是同步的,但是在现实情况中,往往是不可能的, 1.2.1 同步机制:cs状态同步 1.2.1.1 什么是状态同步? 1、核心逻辑计算都在服务器端进行,客户端主要负责上传操作动作等请求数据; 2、一般回合制游戏主要采用这种方式

    1.2K21发布于 2021-03-08
  • 来自专栏Visual Codex

    视频编码的三种:I,B,P

    在视频压缩编码中,所有的被分成了三个种类,I,B和P,其实就是Intra-Prediction,Bi-prediction和Prediction。 顾名思义,就是内预测,双向预测以及(单向)预测。 (inter prediction),内预测的话就是在找参照块的时候,只在当前内寻找;而间预测的话,找参照块的时候会在相邻的之间去找相似块。 因此,基于上述所说, 如果说当前是只在当前内寻找参照块的话,那么该就是I 如果在已经编码的里面寻找参照块的话,那么它是P 如果既在已编码的里去寻找参照块,又在未来将要被编码的里去寻找参照块的话 ,那么该就是B

    2.9K20发布于 2021-02-24
领券