csgo吧 关注:3,898,565贴子:64,823,456
  • 11回复贴,共1

从游戏开发者的角度预测下subtick的实现原理

取消只看楼主收藏回复

虽然这波大家都在看饰品,但是相信subtick的更新也是很多人关注的。楼主是搞游戏引擎的,所以这次就来不负责任预测下subtick是怎么实现的,以及会带来什么影响
当然,由于现在cs2还是没更新,肯定会有不准确的地方,大家看一乐就行了。镇楼是自己的爱心红线


IP属地:广东1楼2023-03-23 20:32回复
    首先要知道起源1的tick是怎么运行的。
    在起源1的游戏里面,tick数就代表游戏计算的速度,64tick就是每秒计算64次。
    也就是说客户端每隔 1/64 秒会告诉服务器自己这时候按了什么键,服务器收到之后根据玩家的按键结算一次玩家的位置、朝向、是否开火等等。
    服务器结算完之后,把当前房间内所有人的状态发给客户端,客户端再渲染出来给我们看。


    IP属地:广东8楼2023-03-23 20:39
    收起回复
      2026-04-18 10:13:14
      广告
      不感兴趣
      开通SVIP免广告
      这种情况下,如果我在上一次发包和下一次发包之间,快速按了一下w键又松手,按键时间小于1/64秒,那我这次操作就是无效的,在服务器和其他人看来我根本就没有动。
      当然1/64秒也就0.015625秒,这个间隔已经很小了,所以我们察觉不出来。


      IP属地:广东10楼2023-03-23 20:45
      收起回复
        但是这个操作会影响到投掷物,尤其是跳投
        在64tick和128tick的服务器看来,我们跳+投的这个时间点是不一样的
        同样是松开鼠标,128tick服务器要比64tick服务器先检测到投掷物出手,这样投掷物的起始位置会有细小差异,导致落点对不上


        IP属地:广东13楼2023-03-23 20:50
        收起回复
          那这个subtick是啥意思呢,前面说了,起源1的tick是只有客户端在tick那一下按的输入才有效,你在两个tick之间做的操作是无效的。
          subtick,我猜测就是每个tick客户端发送的包会包含从上一次tick到现在这一个时间段内的全部输入,发到服务器之后,服务器再根据你的输入数据进行结算。
          这么说有点抽象,通俗一点就是,表面上tick数还是64,但是每个tick内部可能又分成四个subtick,每次发送带四次输入的包给服务器,服务器再结算四次,这样等效tick就是256。


          IP属地:广东21楼2023-03-23 20:58
          收起回复
            可能有人会说,那你这不是脱裤子放屁吗,跟直接用128tick或者256tick有什么区别?
            但是实际上来说,这么做是相当于局部可变tick。比如我每个包包括四个subtick,但是服务器检测到我瞄准的范围内(大概没有敌人),然后我也没有捏烟雾弹之类的,这时就可以直接忽视掉我这个人的subtick,等到下一个大tick再来检查我的状态。


            IP属地:广东26楼2023-03-23 21:01
            收起回复
              也就是说他这个subtick可能是类似一个大tick后面跟三个小tick。每个大tick还是跟原来的框架一样,只不过会多判断一下玩家在该tick有没有做敏感操作。如果没有,小tick就可以无视该玩家,此时相当于64tick,如果有,则对玩家执行三个subtick,此时等效于256tick。
              这么做的代价是每次发包会多发三个帧的键盘鼠标输入,实际上影响很小。对服务器来说,因为不是一直保持高tick,那么CPU运算量平均下来会比全局128小(大家可以想一下,全场10个人,多人同时开火或者丢投掷物的时间不会很久),但是等效作用相当于256tick。


              IP属地:广东30楼2023-03-23 21:08
              收起回复
                然后最终实现下来,V社既不用出钱把他的官匹升级到128tick,又实现了官匹道具轨迹跟平台统一是不是一举多得的好事


                IP属地:广东32楼2023-03-23 21:11
                收起回复
                  2026-04-18 10:07:14
                  广告
                  不感兴趣
                  开通SVIP免广告
                  为啥我要这样预测呢因为计算机从底层上来说就是离散的,不可能真正连续,不停tick已经是终极方案了。而且现在这个情况下,直接官匹全上128tick就是简单粗暴一了百了。V社迟迟不愿官匹上128,只能推测他们要搞一个既不会提高官匹服务器负载,又解决投掷物轨迹问题的投机取巧方案,那么也只能是这种可变tick数的方案了


                  IP属地:广东35楼2023-03-23 21:24
                  回复
                    这种方案对玩家有什么影响?
                    最明显的应该就是以后不用再学两套投掷物了,除此之外就是可能在低tick服务器上的体验变好。
                    然后对于开服的人来说,服务器负载会比原来64tick更大一点,但平均消耗应该小于128tick,而且这个subtick应该一如既往可以用控制台关掉


                    IP属地:广东38楼2023-03-23 21:36
                    回复
                      好了讲完了,剩下发点自己收藏的饰品希望起源2能更好看点


                      IP属地:广东39楼2023-03-23 21:46
                      收起回复
                        生命值贴纸天下第一


                        IP属地:广东40楼2023-03-23 21:47
                        收起回复