第十六期 稼动

 
发布日期:2018年1月14日




大家好,这里是深夜文档节目肥猫池塘第十六期
我是在寒风中蛋疼不已的旅行者Ursula Ezvengard


dnf作为一个2d游戏,但是却模拟出了3d的感觉,这得功于dnf那出色的浮空系统
dnf是一个非常强调浮空的2d游戏,在原本的x和y轴的基础上还添予了一个"z轴",显得角色很像在一个三维的环境中战斗,所以有些人也因此把dnf称为3d游戏
但到底这个z轴到底是什么一回事,这个“z轴”真的是我们理解中的z轴吗?下面就以dnf的“判定”为主题对dnf的一些基本的运作原理进行讲解


首先要判断一个游戏到底是3d还是2d的,不能单单看画面还有能不能转换视觉去判定

例如,伊苏起源就是一个典型的3d游戏,但它无法自由变换视觉,连角色也是2d连续图像生成的动画,从各种角度来看都可以说成是传统的2d的45度视觉act
但实际上它是一个真3d游戏
lol这个游戏正常游戏中是固定视觉的,也好像没有所谓的z轴判定,因此很多人把它叫做2d游戏或者2.5d游戏,但实际上它是一个真3d游戏
甚至胧村正这个游戏虽然一直都说是2d横版的典范,实际上严格来说它也是一个3d游戏,这个游戏里面有着真正的xyz轴,只是锁定了视觉


要判断一个游戏是不是3d的,就要看这个环境里面的环境到底是不是3d的,也就是说,3d游戏是比2d游戏多一个轴的,这个轴就是我们所说的z轴
有了z轴就意味着有了高度差,判定也可以从传统的xy框判定变成立体感的xyz框判定,加大了游戏的可能性
伊苏起源那些落穴和移动跳台关卡在2d环境里面是非常难制作的


在这些前提下看回dnf,毫无疑问,dnf是一个纯正的2d环境下的游戏
2d环境就是意味着游戏内的图像显示永远只有两个轴:X和Y
和大部分玩家理解的不同,浮空跳起来的那个轴,才是真正意义上的Y轴
既然这个才是Y轴,那么玩家上下走的那个轴叫什么呢?没错,这个也是Y轴

可以这样说,换句通俗点的说法,dnf里面使用了一些手段,保留了原来的X轴
然后把Y轴(左右)拆解成实际上并不成立的“y轴”(上下)和“z轴”(高低),这样三条轴就这样出来了




y轴和z轴的移动实际上都是在Y轴这个轴上面进行真位移
角色输入上指令键后,角色往上移动了一个身位,这样我们可以说我们的角色往y轴负数真位移了40个单位(游戏坐标轴以上为负以下为正,但不影响理解)
角色输入跳跃指令键后,角色往上移动了一个身高的位置,我们可以说角色往y轴负数真位移了50个单位
那问题就来了


假如跳跃和上走都是进行了y轴的真位移
那么发生了下图这个情况到底会怎么样?
右会攻击到左吗?
这里就要讲到dnf这种伪3d的判定机制了


传统的2d游戏就是类似这种横版,画面只有表示横向移动的x轴和表示高度的y轴这种游戏的判定也非常明确,角色本身是一个xy判定框,敌人也是一个xy判定框,角色发动攻击会产生一个额外的xy判定框,只要判定框摸到了敌人的判定框就会判定敌人受到伤害

也有这种没有高度概念的45度视觉八向,xy表达了平面地图坐标的横和列,大部分的老rpg游戏都是以这种视觉来制作的,也有一些不服输的act采取了这个视觉做,判定的原理其实和上面的差不多
很多没有做跳跃动作,因为做了的话判定的制作就会非常麻烦,所以很多都会出现这种情况,地形高低差实际上是没有区别的,隔着一个山头揍到敌人是很正常的情况

实际上早期的fps游戏也是没有z轴这个概念的,他们也只是类似dnf那样模拟了z轴而已,例如毁灭战士里面枪理论上可以攻击到同一个朝向上面的所有敌人,无论敌人的高度在哪


要在只有xy的2d环境里面模拟z轴,就需要使用额外的判定框来进行辅助判定例如dnf里面使用的办法就是这样:

白色框是角色本体的xz判定框,而红色框是角色本体的xy判定框
红色表达的意思是角色在假的地面轴上面所占据的地面位置
白色就是类似上面的横版游戏那样进行判定了
两个框相交起来就模拟出一个基本的立方体判定框了,类似下图



如果没有红色的地面判断框,出现上面的情况时候,就会按照横版游戏的那一套进行判断
也就是两个人压根不在同一条x轴上面,但是剑气摸到了也造成了判定

加入红色判定框的话,角色的攻击就会按照这个地面框所定义的位置进行判定
敌人发射的剑气摸到了角色,但是红色的地面框并不在同一条x轴上,就算两个白框进行了碰撞,也无法产生判定
使用额外的判断条件来判定就是dnf里面的“z轴”的基础原理,必须要同时满足两种判定框的判定条件,才会反馈正确的碰撞判定


使用这个方法模拟了z轴之后,接下来就是dnf里面最精髓的系统:浮空
角色的浮空有两个最基本的数值:击退以及浮空,这两个值是角色在浮空时不断地进行变动的函数值,模拟出重力加速度这一个物理系统出来(dnf是没有物理引擎的)
浮空值就是角色确定地面判定后,离开地面的高度值,实际上,这个值就是所谓的“z轴”
角色浮空值为50的话,就是在z轴的位置以-50为开始了,这时候角色没有了-49到0这一段“z轴”上面的判断,也就是说角色“离地”了

角色原地跳跃,y轴进行了50个单位的真位移,这时候角色的状态是这样的:
浮空值0,击退值0
起动速度20然后逐渐变小,模拟角色起跳后因为重力而变慢,角色的浮空值在2秒内的变化依次是这样的:20、35、45、50(速度逐渐变小)
浮空值50,击退值0,这时候角色达到跳跃高度极限,然后开始进行下落
浮空值在2秒内分别变为45、35、20、0,模拟角色因为重力加速度而加速落下

而击退值就是控制角色浮空系统的x轴的位移了
击退值为正数的话,在浮空的过程中会往身后移动
击退值为负数的话,在浮空的过程中会往前位移
角色的前跳实际上就是在上面的基础上加入了负数的击退值
鬼剑士的上挑实际上就是赋予了敌人浮空值的前提下同时赋予敌人正数的击退值
这个击退值也可以加入一个函数来让它的衰减率变得更加真实

在上面的基础上移动角色的地面判定红框的话,就形成了斜向浮空
这里面的假Y和假Z的显示进行了复杂的换算后模拟出角色的最终y轴位置,是浮空系统里面最难的地方
有心细的玩家可以观察到dnf里面没有任何可以将敌人斜向击飞的攻击
相信很多玩家已经得到答案了,这种斜向击飞非常难做,做出来也容易出bug,所以大部分都是直线击飞,这就是2d游戏的极限了


dnf就是使用这种方法去制造伪立体的判定的,所以由此可见,限制非常大
第一就是地形高低差,这个是2d游戏的通病,看着是有高低差的地图实际上是没有高低差的,例如魔界的地轨中心的大拔刀打中了楼上的敌人

第二就是跳台,这个要使用上面提到的仿真系统做出来简直是难上加难(主要是遮挡和判定)
第三就是高度,这个高度永远都不是真的,所以类似这种y轴扯视觉的图非常难做出来
兰总1图的下坠实际上也只是把y轴用回原先的用途,要在实际游戏里面用到这个简直不可能
5图的下坠实际上也只是使用了特殊事件去模拟,按原理来讲白手大拔刀之类的技能是可以在下面打到上面的(貌似他们在悬崖那加了个限制让下面的无法干涉到上面,实际上下面和桥上是同一高度的)



▲在传统的2d游戏中,角色进行这样的攻击的话是可以攻击到敌人的

3d从技术层面来讲,的确是比2d更加优越的,但这句话并不意味着3d美术风格就一定优越于2d美术风格
我非常期待3d版的dnf,但并不是很多人想象中的那种变成第一人称视觉的那种3d,而是继续使用2d美术风格,但游戏转到了一个真3d的环境中
转到了真3d环境中意味着跳台、落穴甚至在boss身上战斗一系列在2d游戏中匪夷所思的东西都可以实现了
目前的dnf已经将2d游戏能够挖掘的东西都基本上挖掘完毕了,np他们制作的3d手游实际上也是在尝试找出路
抛弃了像素风格的dnf遇到失败是理所当然的,np他们能不能审视一下自己的错路总结一下过失然后找到一条正确的道路呢?


动作快感!地牢与战斗机

 

回到目录