有无大佬知道王国之泪的究极手和余料建造是怎么实现的?

雨宫Amamiya
发布于

等待王国之泪的又一天

3
评论 6
收藏
  • 龙谷源治
    龙谷源治
    等待加一
  • 抛砖引玉 猜测一下 余料建造(Fuse): 不同的武器、背包材料、科技装置、野外石头之类的 除了真实的模型之外还有一个缩小版的“余料模型”,也就是配件 每次进行融合的时候,其实就是在武器上对应的插槽上加配件,不同配件有不同功能,简单点的就是加距离加攻击力,复杂点的就可以是喷火发射炮弹之类的 究极手: 其实和上一部的磁吸功能差别不大,核心是优秀的物理引擎;吸取一个物品,相当于把一个物理object提起来; 然后类似于胶水的东西,也是在利用物理引擎 塞尔达的物理引擎确实优秀 ↑只是思路拆解 做起来肯定很复杂+难
    5
  • 雪比蓝
    提供一个另外的视角: 余料建造和究极手在实现上很可能用的是同一个系统,都是一个基于链接的底层系统进行拓展。 美术将模型创建出来后,进到引擎中需要添加每个模型的链接点,连接点是一个新的简模,引擎中大部分物体的连接点生成是通过生成BoundingBox程序化自动生成的,提供给余料建造的也是通过计算物体重心的方式得到的。 在此基础上,策划/美术会对链接点进行精修,保证不同模型之间两个点的链接不会造成穿模(这一步也可以在runtime增加判断来实现)。 相互结合的两个物品依旧是不同的物品,仅仅是依赖链接点结合在一起,在背包中表现为一个物体,而在逻辑系统中大概率依旧是两个物体。例如油桶和盾牌结合时,油桶被戳中爆炸,而林克没有事情是因为盾牌挡住了爆炸带来的伤害。但是两个物体结合在一起可以拥有一些共有的属性,例如弓箭和眼球结合的追踪效果和两个物品合并在一起的攻击力的增幅关系,这个需要单独写。而攻击距离,油桶爆炸等物体本身的属性则不需要单独编写,在系统中单独模拟即可。 物体之间的链接就很简单了,一个常见的思路:单独存储物体间的bond关系,里面存有两个物体如何结合的相关信息,然后解算时将拥有bond的两个物体看作同一个actor传递进入物理模拟空间中。
    3
    展开1条回复
  • 雪比蓝
    塞尔达里面有不少经典物理bug,特别有意思。 上次研究skew的时候,猜测荒野之息应该就用了存储人物倾斜状态的优化来减少检测次数,结果被玩家靠那一帧存下的数据用来让模型错位实现穿墙。 利用离散更新本身缺陷和动画本身的非物理性质来卡穿墙就更常见了,比较经典的就是靠着墙推箱子,推箱子的动画本身是有非物理成分的,但是箱子的移动是物理的,第一步进入动画利用非物理属性到达穿墙状态。第二步让箱子移动使得人物彻底弹出墙的碰撞检测范围。诸如此类的。
    1
    展开1条回复