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

    网络同步(同步)

    同步小记 刚问了公司另一个写服务器的大牛,赶紧记录下。 首先我们的游戏是强联网的格斗游戏。网络同步采用是同步技术。 同步的背景介绍:就是一个对于一个f(x) 函数,对于同一输入,输出结果一定相同。 依然接上个例子,服务器从某0时刻算起,到33ms 算第一 ,这个区间中间a玩家上传的挥刀 ,b玩家上传下蹲,服务器收到之后,在33ms这个点上就同步信息给玩家(这里所谓的同步具体代码层度上就是广播信息给玩家啦 上面说的这些就是同步核心的思想玩法,听完也没那么神秘的。回到这里的问题,就是指这个模块(或者说是函数),只负责这个同步消息的操作。 另外还有延迟的考虑,就是客户端一般收到的会有俩的延迟,作为服务器是收集输入信息到点就下发同步的。

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

    音频、视频及其同步

    今天介绍下音频、视频的主要参数和分析方法,以及音视频的同步等,主要内容如下: 音频 视频 PTS与DTS 音视频同步 音频 音频的概念没有视频那么清晰,几乎所有视频编码格式都可以简单的认为一就是编码后的一副图像 可知,Layer Ⅰ 的填充位是 4 字节,Layer Ⅱ 和 Layer Ⅲ 的填充位是 1 字节,当读取 MPEG 文件时必须计算该值以便找到相邻的长度的计算公式如下: 1// Layer I 3FrameLengthInBytes = 48 * BitRate / SampleRate + Padding * 4 4// Layer II & III(SampleSize = 1152) 单位 上图中显示的顺序为: 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的时序和丢包问题 同步如何同步 ; (3) next_frame_opt:每服务器将采集来的客户端的操作,都存放在这里:frameid = self.frameid, {有操作玩家的操作,有操作玩家的操作,有操作玩家的操作} (4) (14)如果上一的操作不为null,那么这个时候,我们处理下一之前一定要先同步上一的结果; 确保处理下一之前也都是同步的:在播放动画的之间,我们会出现时间的差异,会导致位置等不同步;logic_pos : 66ms —>迭代计算出新的位置和结果;同一都以66ms来迭代; 同步:每同步,处理下一之前,每都要同步;—>同样的输入—》同样的输出; (15)跳帧:快速的同步完过时的(即直接进行逻辑计算 ,等待一下的触发—–> Goto到逻辑4; 如何克服UDP的时序和丢包问题 客户端:丢包,服务器会补发丢掉和没有到的

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

    同步游戏开发基础指南

    什么游戏适合同步这种技术? 在现代多人游戏中,多个客户端之间的通讯,多以同步多方状态为主要目标。 同步的技术要点 同步游戏中,由于需要“每一”都要广播数据,所以广播的频率非常高,这就要求每次广播的数据要足够的小。最好每一个网络,能在一个MTU以下,这样才能有效降低底层网络的延迟。 你可以大概计算一下,如果我们的游戏有4个玩家,我们的冗余是3,那么一个下行的网络帧数据包大小会到128x4x3=1536字节,而每秒我们发15个网络,那么占用的带宽会到1536x15=23,040字节 我们使用的游戏引擎,特别是3D游戏引擎,里面使用的位置数据,大多数是浮点数,大家知道,一个浮点数需要占用8个字节,这可比简单的整数4个字节大了足足一倍。 我们做同步的目标是各个客户端都能看到一致的显示。

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

    游戏同步的基础概念

    两种同步方式 1.状态同步:客户端发送游戏到服务器,服务器计算游戏行为的结果,然后通过广播下发各种状态,客户端收到状态后进行显示。 两种方式的比较: 同步方式广播的数据量比同步状态要小很多,当游戏中的对象特别多的时候,这种方式优势比较明显。相反状态同步能得到更多安全性上的好处,比较容易防止外挂。 同步 一般的同步系统中,有一个RelayServer负责广播(转发 )所有客户端的数据。为了让客户端持续运行,需要定时下发“网络”来驱动客户端。 同步技术要点 1.由于每一都要进行广播,广播效率要高,这样要求广播数据足够的小。最好每一个网络能在一个MTU以下,这样才能有效降低底层网络延迟。 4.网络情况不一致,或者玩家在中途加入游戏,发生临时拥堵,称之为 “ 网络抖动 ” ,客户端要有处理堆积的网络数据的能力。

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

    基于同步的游戏框架说明

    基于同步的游戏框架说明 一,关于同步和状态同步的比较 同步 状态同步 安全性 比较差,计算都在客户端,服务器只做转发;有服务器校验的方案,比较繁琐 计算都在服务器 可以将重要的判定都由服务器决定 网络流量 比较小,每一同步玩家的操作指令 如果单位数量多,需要同步的数据量会比较大 技能实现 比较容易,只用客户端实现即可,开发周期短 需要服务器和客户端实现相同的运算逻辑,如果是不同的语言相当于要开发两次 没有要求 二,实际项目《战争XX》同步方案分析 1,整体架构: 2,游戏类型是一款在moba游戏上加入rts元素的实时对战游戏,支持1v1,2v2的模式。 ,那么经过相同的指令计算后,状态也应该是一致的;这就是同步的核心原理。 4,模块说明 loginserver:  登录服务器,负责接入第三方账户系统登录 logicserver:大厅服务器,负责养成逻辑,可以横向扩展多个;基于skynet gamecenter: 中心服务器

    3.7K12编辑于 2022-11-01
  • 来自专栏txp玩Linux

    音视频基础知识(4):I、P、B、GOP

    一、H264类型定义: 在H264的编码中,通常以三种不同类型的来表示传输的画面,分别是I、P、B。 P:P指的是前向参考,它需要参考前一的图片才能够正确把数据解码出来。 B:B指的是双向参考,它需要参考前一数据和后一数据才能够正常把数据解码出来。 但是它也有自身的缺点,那就是I的体积比较大,假设在传输视频中全部采用I去传输,那整个网络链路都承受着巨大的压力。所以,I就要配合P、B等进行数据的传输。 P:P又称之为前向参考,此的特点是需要参考前一的图像信息才可以正确把图像解码出来。P指的是这一和前一的差别,并通过将图像序列中已经编码后的冗余信息充分去除来压缩传输数据量的编码图像。 B:B也称之为双向参考,B的特点是以前面的(I或者P)或者后面的(也是I、P)作为参考找出B的预测值,并且取预测差值和预测矢量进行传送。

    8.9K32编辑于 2022-11-28
  • 来自专栏韩伟的专栏

    格斗类同步游戏的优化

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

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

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

    4、如果从确认字符里面发现某个数据包有丢失,把它留给应用程序来编写一个包含丢失数据的新的数据包,必要的话,这个包还会用一个新的序列号发送。 2、Lockstep—同步 同步可以说是通过帧率延伸过来的,你可以把一个游戏看成一个巨大的状态机,所有的参与者都采用同一个逻辑帧率来不断的向前推进。 使用Lockstep同步机制的游戏中,每个玩家的延迟都等于延迟最高的那个人。 4、由于大家的turn一致,以及输入固定,所以每一步所有客户端的计算结果都一致的。 我们来看看具体的执行流程: 上图中我们可以明显看到,这种囚徒模式的同步,在第二的时候,因为玩家1有延迟,而导致第二同步时间发生延迟,从而导致所有玩家都在等待,出现卡顿现象。 不过这个还是无法解决同步的问题,因为严格的同步,是要等到所有玩家都输入之后,再去通知广播client更新,如果A服务器一直没有输入同步过来,大家是要等着的,那么如何解决这个问题?

    1.5K10编辑于 2024-12-19
  • 来自专栏VNF

    MPEG4视频中,I、p、B的判定(转载) By HKL,

    mpeg4的每一开头是固定的:00 00 01 b6,那么我们如何判断当前属于什么呢?在接下来的2bit,将会告诉我们答案。 注意:是2bit,不是byte,下面是各类型与2bit的对应关系:   00: I Frame   01: P Frame   10: B Frame  为了更好地说明,我们举几个例子,以下是16 进制显示的视频编码:   00 00 01 b6 10 34 78 97 09 87 06 57 87 …… I   00 00 01 b6 98 …… B 下面我们来分析一下为什么他们分别是I、P、B   0x10 = 0001 0000   0x50 = 0101 0000   0x96 = 1001 0100  大家看红色的2bit,再对照开头说的与2bit的对应关系,是不是符合了呢?

    2K10发布于 2020-07-22
  • 来自专栏韩曙亮的移动开发专栏

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

    ; ② 以以视频为基准进行同步 : 控制视频按照指定的帧率 ( FPS ) 播放 , 音频与视频同步 ; ③ 以一个外部时钟为基准 : 定义一个外部的开始时间 t , 音频 和 视频 都基于该时间进行同步 I / P 举例 : 在一个房间内 , 人在动 , 房间背景不懂 , I 是完整的画面 , 其后面的 P 只包含了相对于 I 改变的画面内容 , 大部分房间背景都需要从 I 提取 ; 4 . * extra_delay = repeat_pict / (2*fps) */ int repeat_pict; 4 . . */ int64_t best_effort_timestamp; 4 . 计算视频与音频的间隔 : 将从视频中获取的播放时间 与 音频中获取的播放时间进行对比 , 计算出一个差值 ; 4 .

    3.3K20编辑于 2023-03-27
  • 来自专栏全栈程序员必看

    PotPlayer+SVP4视频补简易教程

    要用到的软件: Potplayer – 依照你系統位数(现在基本都是64位的) SVP 4官方正版 (和Potplayer安裝版本对应进行安裝(即potplayer装的64位,svp4就装64位的) 并且现在视频绝大多数都是24或25,所以没办法实现补后达到60的效果(翻倍也才48,还是不够流畅,并且亲测体验效果糟糕)。不过就其傻瓜式操作,一键补的快捷简单,也值得每个人一试。 4.选中 ffdshow raw video filter,点击強制使用(重要),别忘了点击应用,然后再点击确定。此時已經完成基本設置。 上述的方法二在设置完基本参数后,就可以用potplayer+svp4组合来看视频了,方法如下: 1.开启PotPlayer播放视频前一定記得先开启SVP4,否则不能补(一般这个软件不会形成快捷图标,可以在 对SVP4的设置 点击如图所示的部分可以进行一些简单设置 1.视频处理选项按下图进行设置。

    16.3K10编辑于 2022-09-14
  • 来自专栏twowinter

    LoRaWAN协议解析 第4章 MAC格式

    本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/ 2 梳理解析 LoRaWAN第4章,主要讲述了MAC格式,对所有涉及的字段都做了解释。 ,完成整个MAC层的数据组。 MACPayload的组处理,在大流程上是对join和数据两种类型的分别处理,用两个case分开。 为了方便阅览,我把函数代码框架提炼了出来。 数据的组处理则稍微复杂些,尤其是FHDR,下面逐个字段讲解下FHDR。 4.FHDR中的FOpts 把MAC命令放入F0pts中,并且更新F0ptsLen。MAC命令,要么使用非零的FPort来和数据一起传输,要么使用FPort0来单独传输。

    1.3K30发布于 2020-04-17
  • 来自专栏腾讯游戏云 

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

    一、游戏同步 1.简介 ·现代多人游戏中,多个客户端之间的通讯大多以同步多方状态为主要目标,为了实现这一目标,主要有两个技术方向:状态同步同步。 5.同步 ·终于来到这一步了,如果玩家已经成功加入房间,就可以通过同步功能进行游戏对战。 5.1.开启同步 ·使用 room.startFrameSync 接口就可以开启广播。 该接口会修改房间同步状态为“已开始同步”。 该接口会修改房间同步状态为“已停止同步”。 ·在Mgobe中,玩家的网络状态分以下4种,但玩家的网络状态发生变化时均会触发。

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

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

    1 什么是错同步? 一般 Android 系统相机的最高帧率在 30 FPS 左右,当帧率低于 20 FPS 时,用户可以明显感觉到相机画面卡顿和延迟。 我们在做相机预览和视频流处理时,对每图像处理时间过长(超过 30 ms)就很容易造成画面卡顿,这个场景就需要用到错同步方法去提升画面的流畅度。 错同步,简单来说就是把当前的几缓冲到子线程中处理,主线程直接返回子线程之前的处理结果,属于典型的以空间换时间策略。 错同步策略也有不足之处,它不能在子线程中缓冲太多的,否则造成画面延迟。 错同步的原理 错同步的原理如上图所示,我们开启三个线程:一个主线程,两个工作线程,每一图像的处理任务分为 2 步,第一个工作线程完成第一步处理,第二个工作线程完成第二步处理,每一都要经过这两步的处理 2 错同步的简单实现 错同步在实现上类似于“生产者-消费者”模式,我们借助于 C 语言信号量 #include <semaphore.h> 可以很方便的实现错同步模型。

    1.8K30发布于 2020-05-26
  • 来自专栏音视频技术修炼手册

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

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

    2.8K11编辑于 2024-11-14
  • 来自专栏iOS逆向与安全

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

    2、英雄的设计包括整个技能的感觉 3、一些非常有特色的英雄,它的技能、反馈、体验上面都是做的不错(这是基于同步技术方案的优势) 1.1 术语 打击感:(反馈、特效、音效、准确性) PVP 指玩家对战玩家 比如30/s,你所看到的画面就比较流畅了。而帧率越高你所看到的越流畅。 这也就是为什么电影胶片是一格一格拍摄出来,然后快速播放的 游戏中的所有动画也是采用这种方式来渲染,只不过帧率是由GPU来控制,一地渲染 同步 同步可以说是通过帧率延伸过来的,你可以把一个游戏看成一个巨大的状态机 在两三周你就可以做出 Demo,易上手是一个非常大的优势 1.2 涉及的技术(游戏同步方案) 同步的本质是一致性的问题,目的是:在同一局多人游戏的过程中,玩家A看到玩家B的状态,应该跟玩家B自身看到自己的状态相一致 造成不一致的本质原因:延迟 假设理想情况下双方的网络时延都为0,那两者应该是同步的,但是在现实情况中,往往是不可能的, 1.2.1 同步机制:cs状态同步 1.2.1.1 什么是状态同步

    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
  • 来自专栏腾讯IMWeb前端团队

    视频中的 I ,P ,B

    由于压缩处理的方式不同,视频中的画面就分为了不同的类别,其中包括:I 、P 、B 。I 是内部编码(也称为关键),P 是前向预测(前向参考),B 是双向内插(双向参考)。 简单地讲,I 是一个完整的画面,而 P 和 B 记录的是相对于 I 的变化。如果没有 I ,P 和 B 就无法解码。 I I (Intra coded frames):I 图像采用内编码方式,即只利用了单图像内的空间相关性,而没有利用时间相关性。 由于 I 不依赖其它,所以是随机存取的入点,同时是解码的基准。 I 主要用于视频播放的初始化,I 图像的压缩倍数相对较低。I 图像是周期性出现在图像序列中的,出现频率可由编码器选择。 P 是差别,P 没有完整画面数据,只有与前一的画面差别的数据。 若 P 丢失了,则视频画面会出现花屏、马赛克等现象。

    5.2K20编辑于 2022-06-29
  • 来自专栏宇宙之_一粟

    线程同步4种方式

    4. 线程同步的方式✭✭✩✩✩ 想想线程的特点,因为不同线程会共享资源。比如:同一个账户,A线程读,B线程取,这样可能会发生冲突,所以需要同步来避免麻烦。 竞争的方式有两种:代码竞争和数据竞争。 线程同步是两个或多个共享关键资源的线程的并发执行。同步的作用就是避免关键资源的使用冲突。 同步的方式:(4种) 临界区(Critical section):通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。

    2.3K31发布于 2020-10-26
领券