找回密码
 立即注册
搜索
查看: 2630|回复: 27

[其他] (数学老师走的早系列)VR游戏冷兵器伤害计算的一个脑洞

[复制链接]
     
发表于 2018-2-9 17:04 | 显示全部楼层 |阅读模式
本帖最后由 dumplingpro 于 2018-3-5 11:44 编辑

以前的一个脑洞,之前玩一个叫zomday的VR游戏,打僵尸游戏,可以加点,僵尸也有血量,算是ARPG?

手感优化好,各种爆头跳暴击红字、连爆出子弹时间贼爽,并且除了常规的**之外,也可以玩冷兵器近战流,玩成僵尸无双。

这个游戏有个设定,近战攻击伤害除了跟打击部位和武器方向(比如斧刃方向)有关外,也跟击中瞬间的瞬时速度挂钩,力度控制好了,中低难度下砸狗头一下一个。

但到了最高的战神难度,怪的血量大增,近战兵器伤害不够只能攻速补,打怪打得像拿着两把菜刀剁肉馅一样,虽然游戏里也有一个隐藏的长柄重兵器,但由于伤害只跟瞬时速度有关,而人挥舞手柄的速度始终有限(如果不想手柄飞出去的话),抡圆了砍也不可能提高伤害,根本体现不了重兵器招大力沉的特性。

----------------------------




现在VR或者体感类的冷兵器格斗游戏都很容易遇到这个问题,因为手柄的重量是固定的,哪怕在游戏世界里玩家拿的是一把重兵器,玩家也可以用挥舞小刀的速度乱挥巨斧巨锤,如果设置触碰即出伤害的话,王八剑乱砍一通伤害是最高的。


所以个人脑洞了一下:冷兵器攻击力和动能是挂钩的,而与动能相关的公式,除了一个和质量速度相关的1/2mv^2,还有一个力和距离相关的FS。

所以我想,能不能把玩家对手柄施力看做是一个固定值,虚拟世界里武器的动能,与手柄的移动距离(或者说划过轨迹的长度)挂钩呢?



比如这个例子,A手持一把菜刀,用剁肉的方法上下晃动,尽管攻速非常快,但因为挥舞的行程(或者说划过的轨迹)短,实际力度低,导致伤害不足,不破防。

而B手持巨斧,论圆了从上到下砍下去,尽巨斧划过的轨迹很长,一下的伤害非常高,而玩家要做出这种大动作也快不到哪里去,从而在物理上限制了攻速。

类似一般动作游戏蓄力提高伤害的设定,在VR游戏中可以采用划过的距离来代替蓄力,根据不同的武器设置一个蓄力上限。轻兵器蓄力上限低,所以短行程高攻速输出更高,而重兵器蓄力上限高,所以论圆了砍更有利。


----------------------------------

关于实现的方法,个人是这样想的。

首先,必须限制玩家不能乱挥,抖手乱挥划过的轨迹也很长,但显然乱挥不可能提高冷兵器的打击力度,必须符合某种特定的规则才行。

对于刺杀类武器来说,以长矛为例,就是矛尖划过的轨迹,应该尽可能在一条直线上。

对于挥砍类武器来说,以斧头为例,就是斧刃划过的轨迹,应该是一条弧线,或者说一个扇面。

-------------------------------------------------





个人的想法,刺击武器轨迹规则如上图,假设玩家手持长矛刺击,矛尖划过的轨迹,依次经过P1 P2 P3 三个点,P2->P3的方向,应该不偏移P1->P2的方向太多。

(以我还给数学老师的解析几何姿势)用数学的方法来描述的话就是:

P1->P2的模M12=开平方[(P2.x-P1.x)^2+(P2.y-P1.y)^2+(P2.z-P1.z)^2]
P2->P3的模M23=开平方[(P3.x-P2.x)^2+(P3.y-P2.y)^2+(P3.z-P2.z)^2]

偏移率=开平方{ [(P3.x-P2.x)/M23-(P2.x-P1.x)/M12]^2+[(P3.y-P2.y)/M23-(P2.y-P1.y)/M12]^2+[(P3.z-P2.z)/M23-(P2.z-P1.z)/M12]^2}

这个偏移率小于一定值那么认为轨迹近似为直线。


----------------------------------




而对于砍这个动作,划过的轨迹应该是一个弧线,这就比较复杂了。

个人的想法是,如果是砍的动作,弧线应该近似在同一个扇面/平面内,至少不偏离太远(比如左右横扫的动作,不能上下偏移太多,或者从上到下砍的动作,不能左右偏太多).

那么假设玩家用一把单手斧砍,可以通过检查斧刃部位划过的轨迹,是否近似在同一个扇面/平面上,来判断这个砍的动作标不标准。


假设玩家依次经过P1 P2 P3 P4 四个点,用数学来描述就是:

//P1,P2,P3为之前三个坐标
//通过P1,P2,P3三点,可以确定一个平面,这个平面的平面方程ax+by+cz+d=0,那么有


a=(P2.y-P1.y)*(P3.z-P1.z)-(P2.z-P1.z)*(P3.y-P1.y);
b=(P2.z-P1.z)*(P3.x-P1.x)-(P2.x-P1.x)*(P3.z-P1.z);
c=(P2.x-P1.x)*(P3.y-P1.y)-(P2.y-P1.y)*(P3.x-P1.x);
d=0-(a*P1.x+b*P1.y+c*P1.z);

//P4是现在经过的坐标
//R=点面距离,P4与P1,P2,P3三点所在平面的点面距离,取绝对值
R=|(P4.x*a+P4.y*b+P4.z*c+d)/开平方(a^2+b^2+c^2)|;

//rate=相对平面的偏移率,点面距离/P4和P3之间的距离
rate=R/开平方[(P4.x-P3.x)^2+(P4.y-P3.y)^2+(P4.z-P3.z)^2];

偏移率小于一定值就认为没有左右偏离。


-----------------------------------------------------

如果玩家的动作符合规则,那么就可以计算伤害了。

最简单的,自然是按照矛尖/斧刃划过的轨迹长度来计算伤害了。

但这可能会导致一个问题就是,假设玩家拿着一把斧头,因为斧头没有足够的真实重量,只靠动手腕砍下去(类似菜刀剁肉馅的发力方式),斧刃划过的轨迹就可以跟大幅身体动作差不多。

所以个人的想法,是用玩家双手划过轨迹的距离来计算伤害,矛尖/斧刃划过的轨迹只用来判断动作是否标准,这样只用手腕发力,尽管斧刃划过的轨迹符合规则,但因为手的移动距离短,所以伤害并不高。



假设一个人臂长60-70,人高举过头再劈下,手柄划过的轨迹大概大概100,手臂直刺的轨迹大概是60-70,向前一步直刺是100左右。
这么长的轨迹,玩家需要相当大的动作幅度,付出较大的体力消耗和较多的“蓄力”时间,换来更高的伤害,从而攻速限制(物理)和体力条(物理),并且如果玩家高举手柄的话,抬高自己的手臂也需要消耗一定体力,可以用来计算武器重力势能加成。

---------------------------------

所以个人的想法就是,每隔一段时间,记录一下玩家手的位置,然后判断玩家的动作是否符合规则,如果符合的话,蓄力条增加一定值(根据玩家手臂实际移动距离),不符合的话则减少一定值或者清零,最后用击中敌人时,蓄力条的值来计算伤害。
总结一下,就是通过斧刃划过的轨迹,判断玩家的动作是否标准,然后根据玩家做出动作时,双手的移动距离计算力度,动作标准,双手动作大,伤害才高。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

     
发表于 2018-2-9 18:06 来自手机 | 显示全部楼层
嫌电视坏得不够快么,前两天switch砸电视的帖子历历在目
回复

使用道具 举报

     
 楼主| 发表于 2018-2-9 21:36 | 显示全部楼层
haiwen417 发表于 2018-2-9 18:06
嫌电视坏得不够快么,前两天switch砸电视的帖子历历在目

VR只坏手柄……
回复

使用道具 举报

头像被屏蔽
     
发表于 2018-2-10 01:23 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
 楼主| 发表于 2018-2-10 14:42 | 显示全部楼层
osborn 发表于 2018-2-10 01:23
手柄的手感跟真实兵器毕竟不同,即便按你这样算,最终也是打羽毛球的手感而不是挥舞斧头的手感。如果为了体 ...

对模拟类的冷兵器格斗游戏来说,目的是为了模拟真实的世界,所以模拟手感很重要。

但VR不但可以模拟真实世界,也可以是模拟一个RPG式的世界。

我们平常玩RPG、打LOL、甚至打各种无双割草,我们知道这是游戏不真实的,但我们依然会觉得爽。“爽”的反馈是来自于暴击跳红字、AOE红字漫天飞,技能一下一大格血,各种连杀奖励,各种小兵被打到飞起来。

上面这个zomday就是典型,一群僵尸冲过来,凭感觉连续爆头,爆头双倍伤害,连续爆头奖励子弹时间,虽然大脑知道那是不真实的,但那确实很爽。

这种算法固然没有买把真剑装定位器拟真,没法模拟真实格斗的爽,但只是为了模拟拿着门板大的巨剑横扫一片的爽那是足够了。



回复

使用道具 举报

     
发表于 2018-2-10 15:17 | 显示全部楼层
这游戏玩起来好累……
回复

使用道具 举报

     
发表于 2018-2-10 16:47 来自手机 | 显示全部楼层
结论就是VR玩冷兵器战斗游戏巨TM累,不如想想怎么拟真黄游更好
回复

使用道具 举报

     
发表于 2018-2-10 16:58 | 显示全部楼层
猫坤 发表于 2018-2-10 16:47
结论就是VR玩冷兵器战斗游戏巨TM累,不如想想怎么拟真黄游更好

拿着手柄当假叼用?
回复

使用道具 举报

     
 楼主| 发表于 2018-2-10 19:19 | 显示全部楼层
猫坤 发表于 2018-2-10 16:47
结论就是VR玩冷兵器战斗游戏巨TM累,不如想想怎么拟真黄游更好


只恨日系厂商,对新技术太不敏感了,到现在还没把联动飞机杯开发出来

游戏支持的也少,自己动手试过的只有一个,用手柄代替定位器,绑在带骨架的大屁股法器上,然后自由模式女主定位到手柄上,那就就随动了。(猫にゃんのお部屋 VR ~Cat Girl Playroom~,同人小黄油)
回复

使用道具 举报

     
 楼主| 发表于 2018-2-10 19:22 | 显示全部楼层
厨厨光波 发表于 2018-2-10 16:58
拿着手柄当假叼用?

要是有联动的黄油的话,在带骨架的大屁股法器上,装一个799的定位器就行了……(自己用手柄当定位器DIY过)

然而,看那蛋疼的作品,果然式日系的老古董吧?要知耻,要知耻。
回复

使用道具 举报

     
发表于 2018-2-11 10:00 | 显示全部楼层
实际上我玩老滚5vr的时候,经常一边对话一边左手刀就把对面的人划了...
回复

使用道具 举报

     
 楼主| 发表于 2018-2-12 09:07 | 显示全部楼层
天然冷无缺 发表于 2018-2-11 10:00
实际上我玩老滚5vr的时候,经常一边对话一边左手刀就把对面的人划了... ...

主要是挥舞力度和伤害挂钩的问题。

同公司的辐射VR就是这样,轻砍重砍威力都一样,只要砍上去了就是固定伤害,然后内置CD,砍一下要等一下再砍才有伤害。

但是无论捅一下还是用力砍伤害都一样,还是内置CD太反直觉了,拿把大斧轻轻一划怪就飞了……

相对其他一些VR游戏,比如之前提的,用打击瞬间的瞬时速度以及部位方向来决定伤害,重砍轻砍就有区别了,手感好了一大截。

回复

使用道具 举报

头像被屏蔽
     
发表于 2018-2-12 09:17 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
     
 楼主| 发表于 2018-2-12 09:36 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
回复

使用道具 举报

     
发表于 2018-2-12 10:40 来自手机 | 显示全部楼层
还真有联动飞机杯的黄油,セクサロイドな彼女,啪啪啪操作很细腻,可惜我没有vive
回复

使用道具 举报

头像被屏蔽
     
发表于 2018-2-12 10:59 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
 楼主| 发表于 2018-2-12 11:32 | 显示全部楼层
haiwen417 发表于 2018-2-12 10:40
还真有联动飞机杯的黄油,セクサロイドな彼女,啪啪啪操作很细腻,可惜我没有vive ...

这个杯子没有最重要的定位器……
回复

使用道具 举报

     
发表于 2018-2-12 11:36 来自手机 | 显示全部楼层
同觉得暂时只有外骨骼比较好实现物理限制。
若单纯为了解决挥动重武器如纸片的问题,则只需要让轨迹指令根据武器附带参数的限制滞后执行即可,武器本身根据加速度和最高速限制逐渐接近轨迹指令,且只在执行完成前设定时段接受新指令预输入。
这样不够“跟手”,但能有效体现大质量带来的笨重,应用的是现有限制机制,不破坏速度对攻击力的加成,也不像主楼方案会带来重定位和加大操作力度幅度造成危险的问题。
回复

使用道具 举报

     
发表于 2018-2-12 11:36 | 显示全部楼层
我觉得在体感本身不达标的情况下强行要求玩家做特定的动作只会更糟糕

哪怕你让玩家随意砍,然后游戏内动画按照真实速度播放,都比要求玩家假装强
回复

使用道具 举报

     
发表于 2018-2-12 11:39 | 显示全部楼层
老滚五VR里可以当叶问。
回复

使用道具 举报

     
 楼主| 发表于 2018-2-12 11:39 | 显示全部楼层
本帖最后由 dumplingpro 于 2018-2-12 11:40 编辑
mimochaos 发表于 2018-2-12 10:59
拿重兵器,玩家挥舞动作再快,在游戏里也是程序限定的那个轨迹和速度,没必要刻意要玩家去拟合真实动作。 ...

这就在说如何判断挥舞的轨迹是否符合规则,砍杀必须近似于一条(在同一个扇面的)弧线,刺击必须近似于一条直线,并且要求通过玩家动作大小来判断力度/伤害。

毕竟手柄在玩家手里,想怎么甩怎么甩,除非是外骨骼控制器,否则游戏没法限制。

所以只能退而其次,让玩家用贴近现实的动作可以获得更高的伤害(或者把敌人打飞之类的效果),鼓励玩家以贴合实际的动作进行攻击,而不是手腕甩甩甩或者打王八拳乱砍一气,从而提高沉浸感。




回复

使用道具 举报

     
 楼主| 发表于 2018-2-12 11:42 | 显示全部楼层
本帖最后由 dumplingpro 于 2018-2-12 11:49 编辑
pgain2004 发表于 2018-2-12 11:36
同觉得暂时只有外骨骼比较好实现物理限制。
若单纯为了解决挥动重武器如纸片的问题,则只需要让轨迹指令根 ...

这样的有,gorn 就是这样,结果锤子的杆子有种柔软充满弹性的感觉……大概就像拿着充气锤子的手感把。
回复

使用道具 举报

     
 楼主| 发表于 2018-2-12 11:46 | 显示全部楼层
本帖最后由 dumplingpro 于 2018-2-12 11:48 编辑
tenco 发表于 2018-2-12 11:36
我觉得在体感本身不达标的情况下强行要求玩家做特定的动作只会更糟糕

哪怕你让玩家随意砍,然后游戏内动画 ...

实际上个人感觉现在VR体感挺达标的,越是贴合实际的动作,沉浸感越强。

实际上大多数人都是下意识用真实的动作(所以才那么多打激动了砍墙爆手柄、砍电视爆屏幕之类的悲剧)。

比如之前提的zomday,因为伤害和速度相关,玩近战流,在低难度下用拿家里锤子砸东西的方法砸狗头,一下一个沉浸感很足,但到了高难度僵尸血量上去了,为了提高伤害只能用菜刀剁肉的那种方法(不符合实际的)提高攻速,沉浸感立即就下去了。
回复

使用道具 举报

     
 楼主| 发表于 2018-2-13 15:48 | 显示全部楼层
Alaaddin1013 发表于 2018-2-12 11:39
老滚五VR里可以当叶问。

老滚因为现在PSVR定位能力限制(可见光图像识别,貌似是通过陀螺仪预测移动方向,并且每隔一段时间通过摄像头拍摄图像,然后根据头显和手柄上面发出的可见光定位),太精确复杂的动作,现在定位也跟不上,打打王八拳也无所谓。

PC VR头显定位强很多(未来PSVR估计也会改善),甚至有跟踪到手指的手套,复杂精确的动作有了实际意义,还打王八拳就有点浪费了。
回复

使用道具 举报

     
发表于 2018-2-13 16:01 | 显示全部楼层
本帖最后由 rinkzea 于 2018-2-13 16:05 编辑

LZ说的这个在Gorn里基本实现了吧?不过那个游戏里不管是人还是武器都是橡皮型的,还要更夸张一些
感觉VR里的冷兵器战斗主要的问题还是没有力反馈,造成沉浸感下降

回复

使用道具 举报

     
 楼主| 发表于 2018-2-13 16:09 | 显示全部楼层
rinkzea 发表于 2018-2-13 16:01
LZ说的这个在Gorn里基本实现了吧?不过那个游戏里不管是人还是武器都是橡皮型的,还要更夸张一些 ...

gorn打击力度还是纯粹速度相关的,就像前面有人回帖说的,实际上是“让轨迹指令根据武器附带参数的限制滞后执行即可,武器本身根据加速度和最高速限制逐渐接近轨迹指令”,所以充气锤子的手感。

不过gorn这些要模拟现实物理特性(比如格挡、打飞,不能穿模之类的),没有办法。

zomday那种是ARPG,用游戏化的HP和伤害代替现实物理规则,机打瞬间武器速度和伤害挂钩,通过跳大红字之类的游戏化手段带来手感。
回复

使用道具 举报

     
发表于 2018-2-13 16:30 | 显示全部楼层
dumplingpro 发表于 2018-2-13 16:09
gorn打击力度还是纯粹速度相关的,就像前面有人回帖说的,实际上是“让轨迹指令根据武器附带参数的限制滞 ...

是吗?从我实际玩gorn的体验上,感觉按你的第一个例子里那种,拿着武器快速但小幅度的晃动,破甲的效果就是不如大幅度的挥击
不过我也好几个月没玩了,有可能记忆有误吧
回复

使用道具 举报

     
 楼主| 发表于 2018-2-13 16:48 | 显示全部楼层
rinkzea 发表于 2018-2-13 16:30
是吗?从我实际玩gorn的体验上,感觉按你的第一个例子里那种,拿着武器快速但小幅度的晃动,破甲的效果就 ...

这就是通过橡皮锤的方式,要求玩家必须动作大,否则速度加不起来,速度不够伤害也就不够,也确实有效果,但橡皮锤的手感会变得很差。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-8-20 23:47 , Processed in 0.116544 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表