csol灾变吧 关注:20,998贴子:769,463

【科研OL】教你如何找到灾变墙体的天降点

只看楼主收藏回复


写在前面
这个文章,实际上本来我是打算做一个视频的,只是简单的写一下提纲,但是我因为实在没时间了,所以视频我也不打算做了,所以就整理了一下稿子,直接发文字版了。我可能也知道这个帖子发出来以后没什么人会看吧,估计还会有一些人会来笑话我为了一个苟延残喘的游戏浪费如此多的时间精力。但是对于这个问题我是这样想的,抛开本身天降的事情不谈,我将这个游戏本身的一些东西量化,把它变成一个纯粹的数学问题,然后再来着手解决它,这就变得很有意思——也算是给这个死到临头的游戏带来的一些额外的乐趣吧。这个帖子发出来以后呢,哪怕有一个人能把它看完并且能学到点什么东西,那我都觉得我写这个东西花费的精力没有白费。
天降正义,17年随匹配系统同时入驻CSOL的一款4号位武器。曾创下单发最高伤害记录的它在如今在各种神仙武器面前就其伤害本身而言已经不再显眼。但是它凭借着自己的一些特殊的机制,在灾变单通以及竞速中仍然起着尤为重要的作用。本帖旨在向大家介绍寻找灾变天降炸墙引导点位的方法。
☆本帖分为以下几个部分:
〇、预储备知识
一、天降基础数据
二、天降基础机制讲解
三、使用数学方法解出精准的天降点


IP属地:广东1楼2020-11-03 21:23回复
    ☆〇、预储备知识
    首先,本视频涉及的找天降点位的方法需要运用到“拆包”的方法。我们需要用外部程序打开游戏的地图,然后得到我们需要的一切精确的数据,再用简单的数学方法找出我们需要炸的墙体具体应该拉天降的参考点位。
    这里,我们需要用到的软件有如下几个:
    1. nartool;

    nartool是一个解压缩软件,它负责解压CSOL使用的压缩包“NAR”文件,这些压缩包文件在你安装CSOL的游戏目录根目录下的Data文件夹里,我们需要的地图还有贴图等文件全都封装在这一类型文件里

    我们先把每一个nar都解压。
    2. BSPViewer;
    BSPViewer是一个BSP文件查看器。
    ※“BSP文件”其实它就是我们平时玩游戏看见的地图的主体,它实际上也是一个封包文件,它里面封包了大部分游戏中我们能看见的和一些不可见的实体,还有一部分实体被外挂在了“cso文件”中,在执行游戏时“cso文件”被作为外部文件调用。但是这一格式的文件应该是N社做的加密文件,暂时除了内部人员没有人能打开它。

    它可以直接查看我们平时所见的地图包。你也可以随意点击地图上的物体来查看这些物体的参数,非常方便。
    它的缺点是无法直接加载CSOL的贴图,且得到我们需要的精确坐标也不容易。但是我们可以利用这个软件去反编译地图,输出一个“map格式”的文件,再用其他编辑软件打开,这样我们可以想办法去给它贴上贴图。


    这里的选项Bevel Brushes斜面刷,如果不勾选它我们可以较为完整的反编译文件,但是也会编译出很多错误的东西,非常不利于观看;而勾选则会丢失少量信息,但错误的反编译也会明显少很多。我个人的建议是,输出两次,两个文件结合查看。
    ※在这里,值得一提的是,在反编译文件时,最好先找到一个名为worldspawn的实体

    找到对应项“wad”,直接移除这个项,如果不移除这个项,反编译出来的map文件可能会报错。


    IP属地:广东2楼2020-11-03 21:26
    回复
      接上一楼
      3.Vavle Hammer Editor;

      Hammer其实是半条命继承下来的地图制作工具。为了使本帖不过于冗长,具体软件设置请自行百度,本视频讲解内容仅涉及获取点坐标。
      在hammer中,基本视图分为可以随意调整的四大板块,左上角一般设置为camera,使用者可以自由移动视角,也可以直接在这个窗口选定任何物体。这里以蝗虫一图为例,选定火葬场中的红门(这个软件年代久远优化十分垃圾,可能选定物体和移动视图需要耐心等待),然后按Ctrl+E将三视图中红门移动至最中央。

      然后我们缩小网格至最小,再移动鼠标至三视图中任意点上,即可获取该点的精确坐标。

      而如果我们想得到具体到某一个纹理所对应的坐标,那我们则需要使用到视角工具。
      还是以炸这个红门为例,我们找到顶楼的参考起点。

      这个十字交叉的中心就是我们需要找的点,我们可以先选定包含了这个点的贴图,然后隐藏掉其他所有实体以便于我们来观察。然后我们选择左侧的camera工具,再按住Shift键,左键点击除camera视图外任意视图的任一点,任意拖动一下,以添加一个视角,此时camera界面已经转变为你最新添加的视角。


      然后再结合直接调整camera视角已经手动微调三视图上视角,将视角十字中心对准你想要的纹理之上。

      之后就可以在三视图上得到它的精确坐标了。


      IP属地:广东3楼2020-11-03 21:30
      回复
        ☆一、 天降基础数据
        以下内容来自csol专业评测团吧,只列出原贴数据,不做具体讲解。
        1.基本属性
        进入瞄准时间(开镜时间):1s
        锁定目标耗时:2.3s
        呼叫完毕至轰炸时间:4.7s
        投放炸弹间隔:0.5s
        火焰堆燃烧频率:2次/s
        火焰堆存在时间:12s
        两枚炸弹爆炸中心间隔:8m
        个人冷却时间:240s
        全房冷却时间:180
        购买价格:$9000
        地速:260unit/s,进入瞄准220unit/s
        2.伤害属性


        IP属地:广东本楼含有高级字体4楼2020-11-03 21:31
        回复
          二、天降基础机制讲解
          本节内容我将用到解析几何类教学演示软件GeoGebra经典版。
          1.天降的伤害范围
          我们首先将天降的伤害范围抽象到一个平面上,它所呈现出来的图像应该是一系列共7个不连续的圆,相邻两个圆的圆心之间的间隔是320units(即是8m),而每一个圆的半径为132units(即为3.3m)。例如这里以点K为起点,以点F为终点,则KF连线的方向即是天降基准方向,点K到点K6则是天降的7个落点(K0到K6是基准方向与6个同心圆的交点)。

          但是如果我们想炸的墙体正好在某两个天降落点之间的位置,那显然我们就无法对此墙体造成任何伤害。

          回到三维空间,实际上天降每一个落点的伤害范围都是一个球体,所以天降有时候也可以炸到离开地面的一些墙体。例如,在蝗虫2图中,天降可以通过这个斜坡炸到怪口的油表。

          利用这个斜面,我们可以使天降的落地距离墙体距离更加近,显然,此处将天降的落点安置在斜面较上的位置即可炸到这个油表。

          2.天降对墙体的穿透
          天降的核弹能自上而下对与基准点xy坐标相同的每一层造成独立的伤害。

          但是实际上天降的每一个爆点本身的伤害范围并不能穿透绝大部分墙体。

          例如这个栅栏,墙体类型为“func_wall”,功能性墙体。天降落点就在人物旁边,但是天降范围无法穿越护栏。
          实际上任何小的墙体都会直接阻挡天降的伤害范围,这一点在天降炸一些门的时候体现得尤为明显,例如蝗虫一图火葬场最后的红门,虽然这个门的宽度实际上是比天降的盲区宽的

          但是,因为门框的阻挡,如果你想用两发天降去分别命中这个门框一次,这个基本是不可能的。


          IP属地:广东本楼含有高级字体5楼2020-11-03 21:34
          回复
            我崩溃了


            IP属地:广东6楼2020-11-03 21:43
            回复


              但是我们计算得出了一个这里的落点在楼梯上。

              而凑巧的是,这个楼梯是由func_illusionary类型实体+clip制成的,而且,这个楼梯下方还有一个看不见的平台:

              于是,这一个基准点,锁定了台阶上的clip,又锁定了底下这一个不可见的平台,所以这一发天降对墙体造成了两次伤害,而第六发天降也对墙体造成一次伤害,所以总共命中三次。
              当然func_illusionary类型实体也不总是那么友好的。因为这一类型实体,直接给它贴上贴图就可以阻止玩家通过,用这个原理做出来的一些铁丝网一类就能阻止玩家通过但是子弹可以任意穿过。但是这个类型的实体本身却并不能被天降锁定,因为它本身是空的,这一点在它的参数中已经写得很明白。


              IP属地:广东7楼2020-11-03 21:47
              回复
                4.一些不明类型的实体也能被天降穿透
                除了func_illusionary类型实体以外,还有一些实体也能被天降锁定且穿透。这一类实体可能是属于外挂在cso格式的外部文件里,用hammer直接打开地图包看不见,所以我们不清楚它的具体类型。但是这一类实体很有可能也是属于覆盖了一层clip的func_illusionary,因为它们的一些特征高度相似。

                而游戏中,火葬场中除了有很多火焰等特效,还有不少垃圾堆。

                有趣的是,这个垃圾堆还可以被天降锁定

                而且它也可以同异形的斜坡一样,造成两次判定,甚至,判定地面的一次的伤害范围还可以穿透这个垃圾堆而覆盖到门上。

                这也就是平时我们蝗虫图放天降能一发带走这个门的原理。
                此外还有不少其他地方也存在这种判定。
                5.天降瞄点的bug
                这一点是拉天降时应该考虑的问题,这游戏有一些实体似乎存在判定问题,比如说各种BOSS房专用空气墙,这些东西当你用天降锁定它时,它会将你锁定的点自动转移到一个固定的点上。例如蝗虫图中,在BOSS放大时拉的天降,如果你瞄点是BOSS房周围的墙上,那么系统总是会判定你瞄点终点是每一面墙的中心的位置。


                IP属地:广东8楼2020-11-03 21:49
                收起回复
                  三、使用数学方法解出精准的天降点
                  当你下定决心去寻找一个炸墙天降点的时候,你一定要相信这会耗费你很久时间,所以你在找的时候一定要耐烦,而且最重要的是,要有条理。因此我推荐你按照以下几个步骤来确定一个天降点位。
                  这一节我将用鲨鱼一图的塔做演示。

                  这个点一般野房会选择去穿但是其实它完全可以被一发天降就炸爆。

                  下面来演示具体计算过程
                  1.获取该墙体以及该墙体周围可能阻挡天降的障碍物的精确横纵坐标
                  这一点的具体操作方法我已经在第一节中介绍过了,这里不再赘述。我直接将我测量得到的数据记录在geogebra上。

                  关于障碍物,因为这个墙体的外框与该墙体平齐,而这个塔本身经过验证它属于上一节我们讲过的那一类不明类型的实体,它实际上只是一个墩子,你可以很容易用尖端跳上去站在上面,并且它可以被天降锁定同时也可以被天降范围穿过,因此这个墙体附近障碍物无需记录。
                  2.判断该墙体能否被天降击中,以及能否被多次击中
                  该墙体以一发天降伤害一次只有从竖直方向或者斜着的才可能炸到两次

                  其实这里因为这个墙体离地高度不小,实际上要从竖直方向轰炸这个墙炸两次几乎不可能,因此只能采用斜着炸的方法。
                  而前面已经提及这个塔可以造成命中多次的判定,因此此墙体天降基本方案有两个:只安排一个落点在这个墩子上或者安排两个落点在附近。
                  3.计算落点
                  落点实际上是一个可行域,这个根据我给出的数据都可以算出来,但是涉及的数学运算较为复杂,我个人运用的方法是使用参数方程加平移变换等数形结合的方法计算的,读者有兴趣可以自己尝试计算。但是因为我们这里需要得到的只是一个能用的参考点,所以我们可以只算一个大致,然后找到距离你选取的点最近的一个有标志性的点,最后再去实测。
                  方案一:在门口楼梯放天降
                  这种只用确定一个落点的方案非常简单,只需将此落点录入至geogebra中,然后作若干同心圆即可。

                  这些圆上的任一点都可以作为天降的起点,容易想到,如果把天降的瞄准起点设在楼梯上是比较合适的,于是我们过O点(也就是我们希望的天降落点)作水平线,此时得到与第二道圆的交点K

                  此时我们再利用点K的坐标再返回去hammer,找到距离这个点最近的具有标志性的纹理。此图因为楼梯也被隐藏,所以可以采用先利用地标再对应到具体楼梯的方法。

                  显然,这个点选定起点后只要直着向前拉就能达到目的地。


                  IP属地:广东本楼含有高级字体9楼2020-11-03 21:52
                  回复
                    但是这里要注意一个问题,就是天降在哪里拉其实是一个很重要的问题,例如这张图在开局拆掉升降机六个方块以后有一段等待时间,在这段等待时间去放这一个天降绝对不失为一个非常好的选择。所以这里引出一个小问题:
                    确定一个天降的收益最大化
                    通常,天降方案能够改进的有五点:
                    (1)更改为一个等待时间去放
                    (2)一个天降炸多个墙
                    (3)配合永恒封路
                    (4)炸小boss
                    (5)遮挡队友视线(手动狗头)
                    所以这里还有方案二:在升降机前的卡车上放天降
                    这里数学计算过程省略掉,只给出结果:

                    当然我们还可以选择一个天降炸多墙因此有
                    方案三:将天降起点安排在房子里,同时削三个墙体耐久

                    这里数学运算只提一点,就是我们要安排两个落点到桥箱两侧,因此最内层同心圆,选取的半径应该是4m而不是8m。
                    以下是结果:


                    IP属地:广东10楼2020-11-03 21:53
                    回复
                      另外这里提及一个小技巧,在选取天降结束点的时候我们可以选择一些墙体,因为墙体在数学运算中与圆找交点就可以找到一个确定的比例。你找到了这些参考点以后,就可以进入游戏中去利用弹孔找到一个更加容易参考的点。


                      IP属地:广东11楼2020-11-03 21:54
                      回复
                        好了,这个文章到这里就写完了,文章内容比较多,即使我已经反复检查几次,可能还是会有一些错误或者没讲清楚的地方。如果你坚持看到了这里,前面又有什么地方看不懂的,可以直接问我,私信或者直接在底下跟帖都行,我都会一一认真详细的回复。
                        Mr丿Toad


                        IP属地:广东12楼2020-11-03 21:54
                        回复
                          太硬核了吧...


                          IP属地:陕西13楼2020-11-03 22:00
                          收起回复
                            牛逼,虽然看不懂


                            IP属地:河南来自iPhone客户端14楼2020-11-03 22:06
                            回复