Cosmonious High包含6个物种,共计18个角色,全部由一个没有专门动画师的团队创作。这意味着需要大量的代码来创建逼真的行为和Owlchemy质量的交互!Cosmonious High中的“角色系统”是一个由大约150个脚本组成的群体,共同解决与角色相关的设计和动画问题。无论是它们如何移动、观察事物、与物体互动还是对玩家的反应,它们都是高度模块化和几乎完全程序化的。
这种模块化使得一个内容设计团队能够在游戏中创建和动画化每一句对话,并且让角色在没有对话时也能感到生动活泼并吸引人。以下是它的工作原理。
Sean Flanagan和Emma Atkinson撰写的客座文章
Cosmonious High是一款由经验丰富的虚拟现实工作室Owlchemy Labs开发的游戏,讲述了在一所绝对没有故障的外星高中学校就读的故事!Owlchemy的技术艺术家之一Sean Flanagan在许多其他工作中创建了Cosmonious High的核心角色系统。Emma Atkinson是内容工程团队的一员,负责实施游戏中出现的每一个叙事片段。
代码方面
角色系统中的几乎所有代码都是可重复使用的,可以在所有物种之间共享。Cosmonious High中的角色有点像模块化的傀儡,即在下面使用了许多相同的部件,但在上面使用了独特的艺术和内容来个性化它们。
从最顶层开始,角色系统代码可以分解为模块和驱动器。
模块
Cosmonious High中的每个角色都会通过一组角色模块来确定其行为。每个角色模块负责解决特定领域的问题,比如移动或说话。在代码中,这意味着每种类型的角色由我们分配给它的模块来定义。角色并不要求以相同方式或根本不实现每个模块(例如,对讲机无法挥手)。
我们最常用的一些模块包括:
CharacterLocomotion – 负责角色的移动。它指定了所有角色共同的高级移动行为。实际的移动是由每个实现来完成的。所有“接地”角色(Bipid和Flan)都使用CharacterNavLocomotion,在场景导航网格上移动。
CharacterPersonality – 负责角色对玩家的反应。这个模块在内容设计方面有很大作用,其主要责任是存储角色对玩家招手时的反应,以及与对话选项相关的内容。它还包含一些整个角色组的常见“自动”反应,比如自动接收(接住你扔的东西)和自动凝视(回应目光对视)。
CharacterEmotion – 跟踪角色当前的情绪。其他组件可以向内部堆栈添加和删除情绪请求。
CharacterVision – 跟踪角色当前的视觉目标。其他组件可以向内部堆栈添加和删除视觉请求。
CharacterSpeech – 角色的说话方式。该模块直接与我们的内部对话工具“Seret”接口,用于排队和播放语音音频片段,包括任何相关字幕。它还提供了一些用于语音播放、中断、完成等的事件。需要注意的是,动画是一个独立的问题。情绪模块不能让角色微笑,视觉模块不能转动角色的头部,它们只是存储角色当前的情绪和视觉目标。动画脚本引用这些模块,并负责将它们的数据转化为可见的表演效果。
驱动器
角色使用的模块共同概述了该角色的功能,如果这种行为足够通用(比如说话和个性),甚至可以实现这种行为。然而,大部分角色行为并不适用于这种高层次的捕获。这些繁重的任务需要交给其他脚本,统称为驱动器,它们构成了角色系统的核心部分。尽管驱动器的功能有限,但它们承担着真正的“内核”工作。重点:驱动程序仍然被编写成尽可能可重复使用。一些最重要的驱动程序——如CharacterHead和CharacterLimb——以不可见的方式表示角色的某个部分,与任何特定的角色类型分离开来。当你用意念力抓取一个角色的头部,让一个角色扔东西,或告诉一个角色播放动作捕捉剪辑时,这两个脚本会根据需要在每一帧移动和旋转。
驱动程序可以宽泛地分为逻辑驱动和动画驱动。
逻辑驱动就像头部和肢体一样——它们本身并不进行任何可见操作,但它们捕捉和执行角色行为的一些可重复使用的部分,并公开任何重要信息。动画驱动引用逻辑驱动并使用它们的数据创建角色动画,如移动骨骼、交换网格、解决IK等等。
动画驱动也往往更具体针对每个角色类型。例如,每个拥有眼睛的角色都使用几个CharacterEye实例(逻辑驱动),但双足生物实际上使用BipedAnimationEyes来为其眼睛着色,Flan使用FlanAnimationEyes等等。通过将“眼睛”这个工作分成两个部分,可以为每个种族提供独特的动画,而所有这些动画都由相同的逻辑驱动支持。
继续阅读第2页:内容方面 »
内容方面
拥有这些模块和驱动程序使内容团队拥有了多种交互工具来创建CH的许多互动。我们的团队无需为每个互动创建一个新脚本,而是可以像操纵人偶一样使用提供的代码“串”。
首先,我们的后端结构要求每个“串”(模块或驱动程序)单独接收内容。对话行、情感、角色的凝视等等都被分别排列在一个列表中,并按顺序触发。
没有时间好玩
这种方式的工作方式限制了进行精确计时的能力。从对话行开始到更改角色表情需要多少(毫)秒的时间定时计算是琐碎而困难的。此外,对行的更改或更新音频会破坏精确的时序,然后需要以相同方式重新执行。
开发后期,我们创建了角色序列工具,可以在灵活的时间轴上同时操纵所有这些元素。这意味着情感、凝视目标和手势都可以与对话一致地控制。
这足以使游戏中的大部分角色内容充满活力和响应。然而,某些时刻需要更多的戏剧效果。
动作捕捉工作室
在情感高涨的时刻,我们使用了动作捕捉工作室。动作捕捉工作室被构建为一种工具,可以让团队中的任何人制作更复杂的动画,它可以跟踪和记录头戴式显示器和控制器的位置,并将它们映射到我们的角色上。这让我们能够为特定的对话行进行动作捕捉。
通过动作捕捉工作室,Owlchemy的任何人都可以访问脚本,播放任何音频片段,表演并捕捉他们的演出,然后直接保存到音频数据和角色序列中。
最好的朋友
开发具有表现力的角色对于Cosmonious High学校的感觉非常重要。在限制我们定制动画范围的同时达到这种效果,意味着创建强大的系统并将它们叠加在一起。将所有这些工具与一个可用的界面结合在角色序列中,使其对工作室中的任何人都可用,并使我们的太空孩子们焕发生机。
0