3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 3235|回复: 10
打印 上一主题 下一主题

[讨论] 《战地3》之神奇的死法 [非GB因素]:掩体背后死,见面死,一枪死,敌人打不死,打中没掉血... 【原因分析讨论贴】Netcode or Tickrate 等

  [复制链接]

11

主题

272

帖子

257

积分

高级玩家

Rank: 4

贡献度
12
金元
2087
积分
257
精华
0
注册时间
2011-11-17
跳转到指定楼层
主题
发表于 2014-3-28 21:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 JAYZMRT 于 2014-3-28 22:09 编辑

首先,我非正版战地3玩家,我下面要说到的一些问题在战地3中曾经存在过,但由于战地3在发行的两年时间里一直在出补丁及修复,所以可能有的问题已经解决但我由于条件限制无法得到完整的体验,我在玩盗版的过程中遇到了这样的问题,因此想要找一下原因,所以欢迎大家来讨论,给予指正,提供有效信息。

好的,我们先来定义战地3的神奇死法:掩体背后死,见面死,一枪死,敌人打不死,打中没掉血等。这些都是玩家从自己电脑屏幕上获得的主观感受,然而,玩家在游戏中死不死,打没打中敌人,是根据游戏的“击杀判断系统”(Hit Detection)来决定的,而这个系统和玩家的网络和硬件配置,游戏的服务器以及游戏自身系统设定密切相关。
---------------------------------------------------------------------------------------------------------------------

那么出现这种神奇死亡的原因都有哪些,经过我查找的一些资料,我找到的有这么几种吧:

1. 对手是挂,你怎么死都正常(不在本帖的讨论之列,高调挂容易识别,低调挂呵呵) - 解决办法:BAN掉他,或换服务器

2. 你和游戏服务器的网络连接不好,如PING太高,丢包(或者对手和服务器的网络连接也不好) - 解决办法:换网络连接正常的服务器,或者换网络

3. 游戏服务器机能有限,网络带宽不够(大家都会延迟变高,甚至丢包) - 解决办法:换给力点的服务器

4. 你自己的电脑机能限制,所谓渲染延迟(敌人显示在你的屏幕上由电脑硬件所带来的延迟) - 解决办法:降低画面配置,或者换给力的电脑

5. 游戏本身“击杀判定系统” “网络传输系统”的问题,很多玩家所说的 Netcode(Tickrate)问题(本帖主要讨论的东西) - 解决办法:只能等Dev解决

----------------------------------------------------------------------------------------------------------------------------
战地3游戏自身系统设定导致的问题在一两年前估计还是讨论的热点,比如这个战地3神奇死法的演示视频(时间点:2012年6月):U2B视频: Hit detection / Netcode tests - BF3

战地3这个视频显然有点过时了,那么我们看看玩家关于男友4类似问题的一个视频(内含详细原因分析):U2B视频:男友4 - Why its broken & current state of the gaming industry

以及DICE关于男友4这种神奇死法的一个官方说法:http://blogs.battlefield.com/2014/03/addressing-netcode-in-bf4/
-----------------------------------------------------------------------------------------------------------------------------

现在,来讨论一下游戏的 “击杀判断系统”(Hit Detection),神奇的死亡是“击杀判断系统”给出来的,而“击杀判断系统”和 Netcode(Tickrate)是密切相关的。
详细的资料可以参考这篇博客: 战地3击杀认定系统 - BF3 Hit Detection Investigated


我自己的理解大概可以概括如下:

玩家在玩游戏的时候,某个时刻所在的位置是可以由一个四维坐标表示的,四维坐标如下:(t, x, y, z),t是某个时刻,x, y, z是玩家在该时刻在地图上的位置,玩游戏的时候每个玩家的电脑上都会记录这样的坐标,把某一个时间段所有这样的坐标连成一条空间曲线,就组成了玩家在该时间段的完整运动路径。一个服务器内所有玩家记录的这些坐标是会上传回游戏服务器然后由服务器传回给所有玩家进行运动路径同步,上传的数据还包括每个人的弹道路径等,弹道路径类似于玩家运动路径。那么只有敌人某个时刻的弹道路径和你该时刻所在的位置相交才会判定敌人击中目标。这里的问题在于玩家的运动路径是否足够精细,也就是隔多久取一个位置坐标,因为坐标取得太稀疏,会导致在判断击杀的时候你一直在打空气。

比如每一秒记录多少次这样的坐标,这就是Netcode(Tickrate)所决定的,记录的坐标越多,运动路径越精细(后面有图为证),但是坐标记录越多对于玩家和服务器的网络以及硬件要求变高了。(有人说:由于战地3归根结底是为主机开发的游戏,所以这里就出现了问题)而且玩家运动路径和时刻点 t 相关,时刻点 t 由于每个玩家的PING不同,所以击杀判断必须要进行延迟补偿,这里没做好就出现了掩体后面死,一枪死这样神奇的死法。

关于 Tickrate 的一篇详细讨论的帖子:Tickrate and Netspeed
运动路径图示及说明:
Tickrate 15 - 每秒记录15个坐标构成的运动轨迹



Tickrate 100 - 每秒记录100个坐标构成的运动轨迹(代表游戏:CS)



据说战地3的Tickrate比较低,有人说战地3 Tickrate只有5-10左右,远远比不上CS,如果是真的,那么就是大约100ms 记录一个坐标,而每100ms 内的运动距离都是空气。在Tickrate 15的情况下想要打中运动的目标就需要一些运气了,这也是为什么屏幕上显示打中敌人但打不死。当然我们会问,Tickrate太低的话,人物不是应该会跳跃的移动吗,这样人眼就能看得出来了,但这个我想是可以通过游戏引擎来渲染欺骗你的眼睛,游戏运动视觉平顺要素之类的(猜测)。掩体背后死,一枪死这种主观感受也是受Tickrate影响的,你以为自己已经跑到掩体背后,但由于运动坐标尚未上传至服务器同步,所以敌人看到的是你大约 200ms 之前还在跑路的状态,你还没有躲进掩体就被射死了,一枪死也是因为同步的关系,其实对方已经打了你好几下了,但这些状态并没有全部同步下来。这些主观感受在PING比较高以及和对手PING差距较大时感觉更加明显。

以上内容,主要部分来自他人分析,附加上个人粗浅认识,非黑战地系列,仅因为在游戏中死得不明不白,甚至怀疑对手开挂,欢迎讨论。


评分

1

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2026-3-20 10:34 , Processed in 0.034480 second(s), 23 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表