求生玩家必备知识之

您所在的位置:网站首页 net头像 求生玩家必备知识之

求生玩家必备知识之

2023-12-31 14:59| 来源: 网络整理| 查看: 265

求生玩家必备知识之——net_graph

内容目录(由[TOC]自动生成)

一、net_graph的概念二、Network Graph命令参数三、Network Graph面板详解四、拓展内容

一、net_graph的概念

net_graph是source引擎的一个命令,使用它可以打开一个面板用于查看网络性能相关参数。通过它,我们可以直观地了解当前客户端与服务端之间的网络通信情况与服务器运行的一些信息。

这是它的样子:

net graph面板

具体Valve开发者文档中没有单独设立页面,但是有一篇跳转的页面是TF2 Network Graph,即军团要塞2的net_graph讲解,两者使用同样的引擎,应该是一致的:

https://developer.valvesoftware.com/wiki/TF2_Network_Graph

有兴趣可以去仔细阅读一下文档,下面我详细介绍一下net graph:

二、Network Graph命令参数

懒得看解释直接抄作业版(我的配置是net graph面板刚好在右下角人物头像左边):

net_graph

用于配置net_graph显示方式的基本命令:

0 = 不显示(默认)1 = 绘制基本网图(仅文本)[区域 3、4、6 和 7]2 = 绘制有效负载数据以及延迟和插值图 [区域 8 和 9]3 = 绘制有效负载图例 [区域 1] 以及数据包丢失百分比和阻塞数据包百分比 [区域 4]4 = 绘制服务器性能统计区域 [区域 5]

net_graphpos

图形的位置。它始终位于屏幕底部。

0 = 左边缘1 = 右边缘2 = 居中3 或更高指定图形左边缘的 X 坐标

net_graphproportionalfont

确定网图字体是否成比例(即,在以更高分辨率运行时是否尝试使用较大的字体)

net_scale

改变net_graph的有效负载部分的比例

三、Network Graph面板详解

文档中有一张图将面板标记为了9个区域:

面板分区

一共可以划分为九个区域,不过其中并不是全部都需要了解是什么作用。

区域 5 [服务器性能参考]

此区域显示客户端连接到的服务器的性能。“sv”标记显示截至交付给客户端的最新网络更新时服务器的 fps。“var”显示服务器在服务器记录的最后 1 帧中的帧时间(其中服务器 fps = 0.50 / 帧时间)的标准偏差。如果服务器的帧速率低于 20 fps,则此线将以黄色绘制。如果服务器的帧速率低于 10 fps,则此行将绘制为红色。

区域 6 [Lerp设置]

“lerp”指示器显示客户端使用的插值毫秒数。其值由cl_interp值控制。

区域 7 [Tick设置]

此区域显示用户的当前cl_updaterate设置、每秒从服务器实际接收的实际更新数、每秒发送到服务器的实际数据包数以及用户的cl_cmdrate设置(即用户每秒希望发送到服务器的数据包)。

cl_updaterate客户端每秒向服务器请求更新的频率,即世界快照服务器下行Tick客户端上行Tick [ 该值会受客户端本身fps影响,他等于每秒向服务器发送的本地世界变化的快照 ]cl_cmdrate客户端每秒向服务器发送的命令频率,即操作数据

另外服主需要额外注意的部分:

区域 8 [网络连接质量]

当net_graphshowlatency为 1 时,此区域显示连接延迟的历史视图。高度(由标记“d”表示)对应于net_graphmsecs时间(实际上,在顶部net_graphmsecs后有一点净空,以便文本字段适合)。红色垂直线表示从服务器向下到客户端的丢弃数据包。如果图形显示黄色标记(例如标记“c”处),则表示服务器在向客户端发送更新之前必须阻塞一个或多个数据包。

至此,Network Graph的功能你已基本了解,下面是一些拓展内容。

四、拓展内容

source引擎多人游戏的的网络设计

在Vavle的开发者文档中,有这么一篇关于source引擎多人游戏网络的页面:

为了应对网络通信引入的问题,source引擎采用了客户端不可见的数据压缩和滞后补偿等技术。通过执行预测和插值以进一步改善体验。

注意这其中的关键信息:“滞后补偿”、“插值”。

这其中引入的技术需要我们了解的是“实体插值”和“滞后补偿”。

"实体插值"

默认情况,客户端每秒接收大约20个快照,如果说游戏中的实体仅在服务器接收的位置渲染,即等待玩家的数据包到达服务器之后才进行渲染,就会导致服务器和客户端的实体位置无法匹配,导致断断续续和抖动,丢弃的数据包也会导致同样的故障。为了解决此问题,诀窍是回到过去进行渲染,当然我们无法回到过去,所以引入了实体插值的方法。具体实现方法就位置和动画可以在两个最近收到的快照之间连续插值。每秒20个快照,则大约50ms就会到达一次更新,因此我们将客户端的渲染时间向后偏移50ms,也就是说让客户端看见的画面延迟50ms,换言之就是客户端看到的画面实际上是50ms前渲染的世界,这样就有机会在两次世界快照之间进行插值,以解决画面断断续续和抖动的问题。

注意,source引擎默认使用100ms进行插值,这样即使丢失了一个快照,也有两个有效的快照用于在其中进行插值。这张图就展示了source引擎插值的工作原理:

source引擎实体插值原理

在这一篇文章中,找到关于cl_interp的设置:“https://developer.valvesoftware.com/wiki/Interpolation”,其中有一句话说:“Players should set , as this will ensure that the lerp is the precise length needed to accommodate the current server update rate. Raising the update rate will reduce lerp further.cl_interp 0”,即玩家最好将lerp设置为0,从而自动匹配Cl updaterate。

注意!如果服务器的nb_update_freqency值不够低,即Next bot的值不够低的话,会导致刷新普通感染者的路径频率过慢,从而导致普通感染者的断断续续和抖动,即所谓的小僵尸闪现。

"滞后补偿" [用就行了,好东西]

这个概念就是服务器会保存1秒以内所有玩家的位置信息,然后当玩家的操作数据包到达服务器之后,将其操作还原到历史时间数据中,这样可以解决不同玩家之间延迟不一样带来的误差,保证玩家之间的操作是在公平的条件下。也正是因为有这个机制,不同延迟的玩家因此得到平衡。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3