游戏开发论坛

 找回密码
 立即注册
搜索
楼主: molrw

[讨论] 如何用物理量、物理公式做一个模拟现实战斗的战斗系统?

[复制链接]

23

主题

3388

帖子

6440

积分

论坛元老

Rank: 8Rank: 8

积分
6440
发表于 2016-7-16 17:55:09 | 显示全部楼层
molrw 发表于 2016-7-16 17:14
。。。。单位都没搞懂,还装逼,你家用g计算啊?

好吧,是搞错单位了

那么都是50J的动能转化为内能,为啥一个造成了彻底的破坏,另一个没有?

你解释下?

8

主题

48

帖子

233

积分

中级会员

Rank: 3Rank: 3

积分
233
 楼主| 发表于 2016-7-16 18:00:42 来自手机 | 显示全部楼层
卡特铁角 发表于 2016-7-16 17:55
好吧,是搞错单位了

那么都是50J的动能转化为内能,为啥一个造成了彻底的破坏,另一个没有?

关键词 速度差 加速度  相对位移。但愿你有能力理解这几个关键词

0

主题

58

帖子

834

积分

高级会员

Rank: 4

积分
834
发表于 2016-7-16 18:38:30 | 显示全部楼层
看得出来你在建立模型的时候犯了3个比较严重的根本性错误
1、并不是先以一个情景为标准模型(比如劈砍)分析其各要素,再扩展到其他类型,而是直接想囊括所以类型
2、在建立模型的过程中,没有分析模型的组成object和它们之间的关系线,而是想当然的对模型进行整体的模拟
3、为了解决问题,不是添加object的固有属性,然后根据objec的固有属性利用现实的规律去推导,而是自行添加了各种定义
以拿武器劈砍为例
这个模型中有几个object?攻击者、武器、受击者?
想实现劈砍这一过程,各个object是如果运作的?攻击者如何发力,武器为何运动,受击者为何受伤?
object的属性变化,会如何影响结果?比如大力士使用轻武器不能使出全力,真的是被武器限制了吗?一个超出臂力的武器,是不是真的就无法使用了?砍到石头和砍到棉花结果是否一样?
想模拟现实的规律,就不能想当然,而是要严格严谨的按照规律去推导。

23

主题

3388

帖子

6440

积分

论坛元老

Rank: 8Rank: 8

积分
6440
发表于 2016-7-16 19:05:12 | 显示全部楼层
molrw 发表于 2016-7-16 18:00
关键词 速度差 加速度  相对位移。但愿你有能力理解这几个关键词

呵呵,自以为是……

爱思考是好事,但不要自以为是,更不要想当然

这个现象跟你说的这几个词有点关系,但还不是重点。

枕头是固定在墙壁上的,铁球以这个速度撞击枕头到停止(撞到墙壁)所移动的距离和子弹基本相同,只是这个过程中铁球用了更长的时间来减速。

可以用这个减速所用的时间来计算撞击过程中枕头表面的布料受到了多大的正面作用的外力。

当然正面的力多半无法导致布料破裂,因为布料纤维在径向上的抗压能力非常强,所以应该计算形变过程中布料受冲击的点周围布料纤维所承受的最大张力(越靠近受击中点这个张力越强,称为应力集中效应)。

但由于枕头密度很小,在铁球这么长时间的减速过程中,发生形变所需要的张力很小,远达不到布料纤维的拉伸极限。所以铁球消耗完了动能也无法对枕头造成伤害。

子弹的情况,你自己想吧……

总之,要模拟真实的物理破坏过程很复杂。上面只是个简化的例子,实际上还有撞击角度,对于不同的武器还有撞击物形状,摩擦力,受击物应力分布……等等因素要考虑。你基本上找不到一个通用的计算方式。要通用,那就搞一个包含了上面这些因素计算的物理引擎吧!但愿你们能搞出来。

如果你想做简化,做抽象……那就不得不让玩家去学习理解你这些出于简化的目的而抽象出来的概念。抽象的不够彻底,那么这个伤害计算规则就非常诡异,还难以理解。

PS:抽象得足够彻底的例子就是攻击、防御、生命……

8

主题

48

帖子

233

积分

中级会员

Rank: 3Rank: 3

积分
233
 楼主| 发表于 2016-7-16 21:30:57 来自手机 | 显示全部楼层
卡特铁角 发表于 2016-7-16 19:05
呵呵,自以为是……

爱思考是好事,但不要自以为是,更不要想当然

子弹的问题该怎么计算我爱你清楚,通过你的分析反而我觉得你不是很懂。第一,即使你的枕头是固定,但也不能说两种情况下的位移是一样的,或者说形变量,单位长度形变量,你既然说到应力集中,这个概念估计你懂;第二,你没有计算布料在这个过程中的应力;第三,你以整个减速时间来计算,实际上子弹与布料接触后很短的时间就穿透了。给你出道题吧,一个质量均匀的弹簧,一端固定,置于一个引力从0开始不断增强的引力场中,弹簧最大承受的应力为f,求引力增加到多少时弹簧会断裂?再举一反三,把引力替换成顶点加速你再考虑考虑子弹的问题

8

主题

48

帖子

233

积分

中级会员

Rank: 3Rank: 3

积分
233
 楼主| 发表于 2016-7-16 21:39:06 来自手机 | 显示全部楼层
sanwurenyuan 发表于 2016-7-16 18:38
看得出来你在建立模型的时候犯了3个比较严重的根本性错误
1、并不是先以一个情景为标准模型(比如劈砍)分 ...

不好意思,我只是把分析的结果发出来了,至于那些定义也是分析完后暂时先选用的,能否用能量来定义血量还需要推敲。就好比写论文,分析过程都在正文里,这里只是摘要。另外,国内发行的游戏不准出现英文,这个习惯得养好啊。比较严重、根本性。。。语文老师估计会吐血

23

主题

3388

帖子

6440

积分

论坛元老

Rank: 8Rank: 8

积分
6440
发表于 2016-7-16 23:37:37 | 显示全部楼层
molrw 发表于 2016-7-16 21:30
子弹的问题该怎么计算我爱你清楚,通过你的分析反而我觉得你不是很懂。第一,即使你的枕头是固定,但也不 ...

我当然知道子弹不会把枕头压到底了才穿透布料,没看我说枕头密度小,缓慢变形时布料承受的应力很小么?非得我反过来再说一遍?

11年的时候我小小验证了一下。用BOX2D做了一个炮打城墙的demo。其中主要涉及到3个额外的概念:城墙建材(砖块)的硬度(BOX2D本身把碰撞抽象成瞬间,只从动量守恒角度看待碰撞)、最大形变容忍(决定砖块是否在撞击产生的形变中受到损坏)、耐疲劳系数(决定每次损害或不造成损害的撞击对砖块硬度及最大形变容忍的影响)。

但结果是几乎所有人都觉得这规则带来的体验很诡异,难以琢磨。他们特别不理解,为什么同样威力(炮口动能)的大炮,发射更重的炮弹反而不如发射轻的有杀伤力。以及在选择建材时,那个诡异的耐疲劳系数让所有人都感到迷惑。

现在回想起来,跟你这里所犯的错误是一样的——没有明确到底要给玩家带来怎样的体验,所以才会搞出那3个不好理解的属性。

总之,如果你们是要搞物理引擎,我忠心佩服。但你们现在这种抽象的方法除了会搞出一堆生造的概念来徒增理解成本之外,我真心觉得没有太大意义。你到底是想玩家在面对各种武器/防具的“类物理”属性(什么伤害转移率,吸收率之类的)时挠头,还是希望玩家关注战斗本身的乐趣?

0

主题

58

帖子

834

积分

高级会员

Rank: 4

积分
834
发表于 2016-7-17 11:28:04 | 显示全部楼层
molrw 发表于 2016-7-16 21:39
不好意思,我只是把分析的结果发出来了,至于那些定义也是分析完后暂时先选用的,能否用能量来定义血量还 ...

正是从你的结果和你的定义反推出你的分析过程
我的回复表达了我的思考方式,如果你觉得的有问题或者我对你的思考方式有误解,应该用干货来反驳,而不是使用这种没有营养的回复。
如果你再回复的时候还是这种,我只能认为你并不是为了讨论才发帖,那么我就默默的匿了。
至于使用英文object,是因为没有中文能够准确表达这个词的涵义,或多或少都会产生歧义,并不是为了装逼。

8

主题

48

帖子

233

积分

中级会员

Rank: 3Rank: 3

积分
233
 楼主| 发表于 2016-7-17 13:17:05 来自手机 | 显示全部楼层
sanwurenyuan 发表于 2016-7-17 11:28
正是从你的结果和你的定义反推出你的分析过程
我的回复表达了我的思考方式,如果你觉得的有问题或者我对 ...

子非爹,焉知爹之义。我都懒得回你

0

主题

144

帖子

694

积分

高级会员

Rank: 4

积分
694
发表于 2016-8-15 19:30:56 | 显示全部楼层
没法删除,只能编辑了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-27 00:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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