猎鹰解剖


最近,我们宣布了“ 猎鹰时代”游戏的开发,该游戏的内容是从猎鹰幼鸟中抚养成年鸟类,并共同对抗试图殖民这个星球的部队。 《猎鹰时代》将于2019年在PS4和PS VR上发布。

上周,我们在PAX上展示了这款游戏,并获得了好评,特别是关于猎鹰本身。 让我们仔细看看它的设计,调整动画和装备,AI和导航,羽化技术和掠食者声音。

猎鹰设计


告诉Chandan Ekanayake和Darran Herlbat。


猎鹰的设计结合了不同类型的猛禽。 我们的猎鹰,像金鹰一样大,像鹰一样战斗,看起来像鹰和鹰,有像猫头鹰一样的冠,并且像猎鹰一样进行照料。 她是她在我们世界中外貌的最后代表之一,我们希望使她的外貌独特并适合该情节。 同时,在游戏过程中,它应在天空和沙漠中脱颖而出。


创造“猎鹰时代”的最早灵感来源之一是金鹰狩猎大型山羊的视频。 我们开始对猎鹰进行研究,我们想到驯服猎鹰并在此基础上创造机制和游戏玩法。 在开发的早期阶段,我们创建了一个原始的原型来测试我们的概念。 当我们第一次呼唤带有VR口哨的小鸟,并看到它的规模如何变化,接近我们并坐在手边时,我们很清楚这可以成为独特游戏的基础。

动画和装备


告诉昂佐乌。


猎鹰爪子追踪

设置动画的方法很多,但没有一个可以解决我们以简单方式跟踪猎鹰腿的任务。 如果我们有更大的团队和足够的时间,则具有反向运动学,根运动和其他复杂插件的系统将使我们能够应对这项工作。 我们希望获得更可预测的结果,因此我们基于3dsmax中创建的许多姿势选择了一个解决方案。

但是,放弃IK的最重要原因是这是我几天来发现的最佳解决方案。 在项目开始时,我们是如此迅速地组装了原型,以至于我们没有时间考虑其他可用的解决方案。 这是我发现的最可靠,最不尴尬的方法,因此我们从那以后一直坚持下去。 无需修复未损坏的部件。

这就是我想象的在现实生活中混合鸟爪运动的方式。 球是附着在VR运动控制设备上的拳头。 此方法有局限性。 爪子应该能够弯曲大部分拳头,并且拳头的姿势应尽可能球形。



请注意,头和腿在骨盆中处于同一层次结构级别。 这样可以更容易掩盖骨骼并创建单独的混合树。 忽略标题中的“鹰”一词。 在我们决定设计这只鸟之前,它只是一种临时资产的名称。


这样做的简短说明:拳头是球,并且爪子围绕球旋转,使用30个姿势进行混合和动画处理,当球(移动臂)旋转得太远时,爪子回到中心。


球上的30个混合姿势


交叉动画可让您将爪子放回中心

从新的转手进行短暂的过渡动画后,混音再次开始。 根据我们的程序员贾斯汀(Justin)的说法,他使用四元数和线性代数的常用公式来实现这一点。 然后我使用他给我的三个float值,并将它们传递给这些动画混合状态。

在小鸡中,食指的第二关节被视为球。


下图所示的唯一情况是,当球朝下时,球的想法不起作用。


我们可以通过各种方式处理此案。 一种解决方案:在对撞机前臂的手套部分上添加对撞机,以使鸟类在与撞机碰撞时起飞。 但是最后他们决定保留一切。 这对玩家更友好:您可以划伤左大腿,而VR中的鸟不会飞走。 另外,大多数人在比赛中从来不会像那样低下双臂。

仅出于某种原因,他们不玩,站在头上。

在倒立时,所有动画将看起来不正确或损坏。



猎鹰头部追踪


我将简要描述我们如何实现这一目标; 头部(bone_Head)是鸟类(bone_Root)骨骼层次中最顶层对象的第一个孩子。

Bone_Root的位置(而非旋转)跟随运动控制器的位置,而bone_Head抵消了该运动。 这实质上是一个两个对象的层次结构,其中位置混合用于抵消父级的运动以保留子级的全局位置。 鸟的其余部分采用27种姿势混合在一起,以保持鸟的最自然姿势。


鉴于成年鸟类的大小,沿所有轴移动12厘米(24x24x24立方体)非常适合稳定而不会过度拉伸脖子。 头部将在此范围的边界移动,当跟踪臂停止移动时,新位置将被视为新的中心,围绕该中心将创建另一个边长为24 cm的立方体。为了限制速度,过渡的开始和结束,当稳定点离身体太远并且鸟仍在该区域中时,将其移动。


导航和AI鸟


由贾斯汀·拉隆(Justin Lalone)讲述。

当鸟无聊时

猎鹰通常会遵守Ara(游戏的主要角色)的命令并跟随她。 如果您在某个区域停留的时间过长而鸟类只是盘旋飞行,或者如果您没有发出命令就放开它,那么它将开始寻找在该区域中可以做的事情-通常是在救济的不同重点上狩猎或着陆。 当她坐在Are上并且有人试图抓住她时,她也很主动,并且喜欢在打闪电高尔夫时表现出Are下一个洞。

阳光使受害者蒙蔽

一些猎物(例如兔子)非常害羞,当他们看到猎鹰在空中跳来跳去试图抓住它们时,它们跑到了最近的洞。 当他们从阳光明媚的一侧靠近时,他们很难注意到Ara的鸟,因此,如果您注意光线的来源并从该方向发送鸟,则可以简化捕获猎物的过程。 另一方面,从高处俯冲很简单,因为这只鸟将能够在被注意到之前获得更高的速度,从而使受害者更少的逃生时间。


我们迅速从太阳的侧面走,以准确捕获猎物。



3D猎鹰导航

通常,在游戏引擎的标准配置中,没有机制可以在3D空间中可靠地移动飞行中的动物,这种情况下看起来很自然。 我们大约有三个级别的鸟类导航逻辑,可以将鸟类从A点移动到B点,这使我们不必使系统复杂化,也不会陷入困境。


为了使您可以查找世界各地的路线的高级导航,我们构建了3D导航图并使用A *算法来查找路径。 在此实现中,非常独特的是,为了使用A *算法执行所有操作以找到路径,我们使用了相当新的Unity任务系统。 它提供了不加载主流的快速搜索,从而为AI,物理和其他方面留出了更多时间。 大部分图形是自动生成的,并且为了通过狭窄的开口(例如,通过窗户)飞行,手动设置连接,因为它们很小或需要以直角接近。


紫罗兰色的线是在中间的大型岩石周围飞行的近似路径,猎鹰开始在此飞行,而Ara站立。 鸟并没有特别努力地追随这条线。 如果是这样,她会非常奇怪且急转弯,因此,如果您可以不受干扰地到达路径的下一部分,那么她会去那里。


有时,在途中她可能会遇到小的物体或移动的物体。 猎鹰向前看,飞过或靠近这些物体。 岩石足够大,可以使用通常的A *算法浏览,但是我现在让他忘记了。 在这里,为了绕过岩石,小鸟向左转-红线显示了最近几帧的视线。 通常我不尝试这样做,但是A *导航可以使鸟儿在拱门或桥梁下飞翔。

鸟类飞行的最后逻辑是操纵自身的逻辑,鸟类决定飞行的速度,它需要上升或下降多少,如何快速转弯,如何施加物理加速度,对到达终点的动作施加了哪些限制的选择。 该数据被传输到动画系统,通知鸟类如何工作,应该以哪种姿势,是否弯曲等。 逃避对象与该系统有很强的联系,但是所有A *导航都是完全分开进行的。 它使用大量的数学和逻辑。

羽毛和渲染


告诉本·格洛斯。

身体上的小羽毛或鸟的轮廓羽毛在风中摇曳,对玩家的手产生反应,使它们平滑,从而增加了更深的触觉互动感。 在PAX演示中实现羽毛的方法是一种破解,因此我希望在游戏发布之前将其替换。 (当然,这意味着该解决方案将在完成的游戏中实施。)简而言之,鸟的每条小羽毛被视为草或植物的多个着色器。 为了计算羽毛振动的简单噪声,需要计算多个重叠的正弦曲线,从而使羽毛看起来自然。 对于每支笔,它们的临时变化被移动到一个随机值,以顶点的颜色存储,并且摆动的运动也根据顶点的颜色缩放。 这意味着与末端不同,羽毛的根部不会移动。 这也意味着长羽毛比短羽毛运动更多。


我们希望羽毛不像大多数草着色器那样沿随机方向移动,因此您不能使用世界或局部空间的方向。 此外,它们在带有蒙皮的网格物体上,从而使方向更加动态。 因此,我使用了羽毛的法线和切线顶点的组合,以使羽毛向内和向外摇摆以及相对于其方向朝不同的方向摇摆。 该系统不是很准确,但是由于移动量很小,几乎不会发现错误。

为了处理玩家手中的手部互动,有一个脚本可以跟踪骨骼,并按照每个手指的形状创建胶囊列表,并使用一个球体作为手掌。 如果手在范围内,则顶点着色器将围绕胶囊列表,并找到与其中一个胶囊之间的最小距离,然后如果胶囊穿过胶囊,则平滑缩放摆动。 另外,羽毛被压在身上。 胶囊过大是因为重叠检查很软,也就是说,它们不会突然切换,但过渡平稳。 所有这些都经过大致配置,以便当可见的手指触摸笔时,它将完全停止并垂下。


这是对该系统早期版本的测试。 您甚至可以在未接触到羽毛的情况下看到它们对球的反应,但它们之间的相互作用仍然令人信服。



在游戏的最终版本中,我想创建一个带有几何或计算着色器的系统,该系统将解决仅触摸羽毛的一个顶点时出现的一些问题,并消除以下事实:触摸羽毛时法线不变。

猎鹰伤口信息

我们想以某种方式表明那只鸟受伤的时间,同时不要使用健康带或类似的机械装置。 为了显示这只鸟累了或受伤,我们使用了动画,但是我们仍然无法清楚地告诉用户它受到了伤害。 为了清楚地传达她的病情,我们决定通过血液和蓬乱的羽毛来展示她的身体伤害。 一个明显的解决方案是更换材料。 但是,我们希望显示出伤害的逐渐增加,而不仅仅是硬“吃/不”,并且不想创建许多不同的牌。 我们还存在一个问题,即大多数羽毛使用相同的UV坐标,即整只鸟将被血斑覆盖。

结果,我们得出了一个分为两部分的解决方案。 首先是羽毛损坏和衣衫dish。 每支笔的Alpha通道都以特殊的方式进行了调整,因此损坏和未损坏的版本都具有不同的透明度。 要在两种状态的羽毛之间切换,请使用Alpha值检查(实际上,它是覆盖率的Alpha)。 50%的不透明度表示正常健康,而25%的不透明度表示伤口。


对于血迹,鸟具有血液纹理的第二个UV坐标,因此我们无需重复使用笔纹理的UV坐标。 血液在基本纹理上混合。 结果,我们只需要一套基本的纹理,一套血液的纹理,这足以使伤口受到不同的影响。




捕食者的声音


由Rob Piersall讲述。


我们不希望这只鸟与世界上任何其他鸟都不同(例如,未来派或魔术师),而只是将几种飞行掠食者的不同特征结合在一起(只需在上面加一顶帽子即可)。 因此,为她创造一个听起来“具有电影般的品质”的声音是没有意义的,足以使其发挥作用并令人相信。

换句话说,我可以“借用”任何掠食者的尖叫声,这些掠食者会将有关鸟的不同情绪,感觉和反应的信息传递给玩家。 我听了掠食者发出的声音。 令我惊讶的是,就声音而言,最大和最令人印象深刻的捕食者-鹰-是它们中最差的。 事实证明,它是“更好用”列表中的第一个。

霍克总是一个不错的选择。 每个人都喜欢鹰的尖叫。 我曾经以为所有声音工程师都有一个鹰尖叫的记录,而且所有电影中所有鹰都有相同的声音。 但是事实并非如此。 事实证明,所有这些鹰派听起来都是一样的。 几乎没有区别。 不要误会我的意思,声音很棒,所以...是的,对于我们的鸟,我们也使用了它。 但这还不是全部。

最重要的是,我不必将自己局限于一种特定的猎鹰。 这些物种很多。 因此,我可以选择任何猎鹰发出的合适声音,就像我对鸟的情感表达那样。

限制情绪范围非常方便。 我称它们为鸟语:

  • 一切都安静,一切都很好
  • 听说你在打电话给我
  • 进攻
  • 我受伤了,但还是飞
  • 好痛

录制恼人的捕食者的声音非常简单; 它足以用录音设备出现在其领土上,他已经很生气。 因此,有许多材料使捕食者听起来愤怒和邪恶。 它们适合于“痛苦”的声音。 鹰的声音适合于飞行中的反馈和攻击报告。 声音听起来“一切都很安静”,这有困难。 出现了几种类型的Twitter,但是后来我不得不编辑许多不同类型的消息,以获得与Twitter相对应的部分,短暂的尖叫声,然后它们出现在游戏中。

通过声音跟踪游戏中的鸟类与另一篇文章完全不同。

Source: https://habr.com/ru/post/zh-CN438138/


All Articles