- 关于射击游戏中【相杀】现象的一些叨逼叨
- Netcode / 网络代码
一般现有的大部分pvp射击游戏都采用了一个粗暴的解决方式:玩家A射出的子弹击中敌人时,如果【服务器端】玩家A已经死亡,则这枚子弹不造成伤害。
这在hitscan时代的射击游戏且TTK很短的游戏比如CS其实影响不大,虽然CS:GO / CS2 在自己网络不够好的时候还是可能会出现都看见对面头盔被自己手里AK打出蓝光了,但是突然自己死亡的情况。(像 血雾 / CS爆头的蓝色闪光 都是玩家客户端 本地计算的,而玩家已死亡信息从服务器传过来也需要时间)
放在类PUBG里这类子弹有飞行时间会进行物理模拟的情况下,稍微交战距离拉远一些 看到子弹飞到敌人身上了因为自己被击倒然后对面身上腾起一篇血雾但啥事没有也是挺崩溃的。
为啥要取消死亡玩家的子弹呢?
我模糊记得2008~2009年看到过一篇CoD开发者的采访,大意是如果玩家频繁遇到自己和对手同时死亡的情况挫败感会很强,还不如根据网络延迟 让延迟高的玩家死亡。考虑到CoD网战全是近距离战斗+TTK短+服务器帧率不高+有霰弹/狙击这类秒杀武器,确实很可能频繁出现相杀的情况。
但是其实放在战地系列 可能瑞典人轴 觉得游戏要符合现实逻辑,如果子弹飞在空中了就会继续飞行不会消失。于是乎【相杀】几乎成了寒霜引擎的一个标志性特征了。
OW法老之鹰的火箭 / 76的火箭 等非Hitscan的投射物也都是能相杀的。
V社家的CS应该是不能相杀的。
PUBG是不行的。
这么看来比较好的3种解决方案
1.弹道Hitscan + 击中特效本地计算 + 允许相杀
2.弹道Hitscan + 无击中特效 + 有击杀特效提升打击感 + 短TTK + 不允许相杀
3.物理模拟弹道 + 有击中特效 + 允许相杀
*现代CoD 多采用复合弹道 即一个较短距离内(20m~50m)枪械采用Hitscan计算弹道,大于这个距离后子弹开始物理模拟。
**还和有无延迟补偿算法 / 游戏采用何种方式同步玩家状态 等都有关系。
食品经营许可证 JY11105052461621
©2024 GAMECORES
评论区
共 条评论热门最新