- UID
- 65565
- UCC
-
- 声望
-
- 好评
-
- 贡献
-
- 最后登录
- 1970-1-1
|
发表于 2015-1-8 17:57:10
|
显示全部楼层
本帖最后由 TankNya 于 2015-1-9 19:42 编辑
请了解清楚这种客户端判定服务器结算的混合判定模式方式再发牢骚吧
Demize99 Core Gameplay Designer dice
We don't use a pure client side hit detection, we use a hybrid hit detection system where client hits are verified on the server. In order to do this correctly the server maintains a history list of player positions. Even when we used a server side hit detection system we did this. When a player fires the server rolls back in history to view the shot based on the position of the two players from the perspective of the shooter. The game rolls back based on the shooters ping, within a reasonable amount. This sometimes results in the victim taking a hit from a position behind a wall.
我们用的不是纯粹客户端的命中判定,而是混合的。服务器会保存玩家之前所处的位置——即使是服务器端判定我们也会这么做。当玩家开火时,服务器会查看历史中在开火一方看来的两方位置。游戏会稍微根据玩家的ping倒退一定的程度。这有时会导致你在掩体后面被击中。
Hybrid hit detectiongives us far better hit detection for the shooter than we ever had on a purely server based system. Long time players know just how frustrating it would be to get a big blood splatter and a clear hit and have the server disagree. Hybrid hit detection actually fixes that problem without any change to th victim experience.
混合的命中判定比单纯的服务器端判定好很多。长久以来困扰玩家的明明打中了敌人溅血了却没造成伤害的问题得到很好的解决。而这对被打的一方没有任何影响。
Finally, the biggest issue we have in battlefield is actually on net code. Without going into details, the amount of updates we need to send to support all the gameplay details would throttle most bandwidth connections if we sent every frame. Therefor we send at a lower rate and use client prediction to interpolate between those updates. I'm not happy that means we have a longer than ideal delay for sending hits and damage to the victim from the server. The reality is that it's not trivial to fix, which isn't a great excuse, but it's definitely on our radar. Frankly, the benefits of being able to support the vast battlefields and variety of game play technically is worth the trade offs to me.
最后,最大的问题实际上是网络代码。总之就是流量太大了,如果每帧都发送的话就足以把带宽占尽。所以我们以更低的频率更新数据,并在中间插入客户端预判。这样对被打的一方来说会造成过长的延迟,我对此并不满意。现实是,这不是容易解决的问题——虽然这也不是什么好借口,但我们一直在努力。老实说,我对这份工作很满意。
总的来说这种判定模式带来的延迟补偿,减弱ping对玩家造成的直接影响,对网络延迟较高,本地服务较少地区的玩家是有利(国人应当庆幸延迟补偿的存在),但这并不意味ping低带来的优势不存在,只是表现的不那么极端罢了(因为你能更早看到对方,更早开火,这是不变的事实)
当然如果你是在日本、美国等本地服务器较多网络条件较好的玩家的话,那么他们的"既得利益"确实是稍微受到了损害,那尽管可无视此回复,每天写邮件给DICE吧,总有一天DICE会被打动 然后取消延迟补偿,让大多数服务较少地区的玩家变成二等玩家吧,这是喜闻乐见的事情 |
|