当前位置:主页 > 社会 > 正文

Survios经验分享:为什么要为每款VR游戏构建不同

时间:2019-12-02 20:03 来源:未知 www.dgfsl.com

核心提示

查看引用/信息源请点击:gamasutra Survios工作室 ( 映维网 2019年11月04日 )Survios涉足VR游戏开发已有多年时间。在日前举行的XRDC大会中,工作室联合创始人亚历克斯·西尔金(Alex Silkin)...

查看引用/信息源请点击:gamasutra

Survios工作室

映维网 2019年11月04日)Survios涉足VR游戏开发已有多年时间。在日前举行的XRDC大会中,工作室联合创始人亚历克斯·西尔金(Alex Silkin)介绍了他们为什么要为每款游戏构建不同的机制。

他在演讲中提到的核心内容是,VR开发者应该尽可能尝试构建灵活的,可扩展的代码库,从而令多平台VR游戏开发变得更加容易。如果你计划开发多款VR游戏,你可以首先假设你会重复利用核心系统和迭代。

尽管将所有一切整合起来十分诱人,但西尔金表示Survios已经学会了将它们分解为模块化组件,并由团队自行决定是否需要修改。

Survios已经为PSVR,Oculus Rift,HTC Vive和其他平台上发行了多款VR游戏,但西尔金主要强调了最近发行的多人海盗游戏《Battlewake》。

他说道:“我们开发的最基本的技术之一就是交互系统。这是你与世界交互的基础……这是我们在玩家与世界交互时建立关联的方式。”

1. 循环利用你的游戏系统

从《Raw Data》到《Battlewake》,团队最初开发的交互系统已经以一种或另一种形式出现在不同的Survios游戏之中。另一个例子是他们为《Raw Data》创建的武器系统。这个系统构建成模块化,可用于所有游戏枪支及自动炮塔。

Survios的武器系统包括射击模式(自动步枪和冲锋枪等)和伤害性武器(炸弹和火焰喷射器等)之类的组件,而它们在首次诞生后依然能够在诸如《Battlewake》等新游戏中得到沿用。

同样,自《Raw Data》首次发行以来,Survios为其构建的伤害系统已经得到了大幅的扩展。西尔金表示,所述最初是为了游戏能够根据肢体来计算血条或触发击打反应而创建,但后者团队对其进行了扩展,并使其变得更加模块化。

团队同时为《Raw Data》中的近战战斗提供了支持,所以在开发VR拳击模拟游戏《Creed:Rise to Glory》的时候,他们已经拥有了坚实的基础。

西尔金解释说:“我们在《Raw Data》中实现了一定的进展战斗,但非常简单,你的双手实际上会穿过敌人。所以我们希望进一步打磨,尤其是拳头的冲击力,以及双手的碰撞检测。”

所以他们沿用了《Raw Data》的近战武器系统,将碰撞球体构建到玩家手中,并使用逆运动学来适当地移动角色肢体。

他指出:“如果你摆出格挡姿势,然后敌人尝试攻击你,这是它将会击中碰撞球体,然后你运动学系统会进行响应。这会战斗增添了一定的物理性。”

团队曾为《Raw Data》设计了一种会冲向玩家并会因冲力摔倒的机器人。为了令拳击感更加真实,更加沉浸,他们在这一系统之上为《Creed》构建了类似的机制。

西尔金解释说:“如果你用力过猛,你会因为冲力会摔倒。同样,团队利用了《Sprint Vector》的移动系统并打造出独特的功能。

2. 尽可能令系统变得模块化

但让《Sprint Vector》和《Creed》使用太多的相同代码会成为一个问题,因为大多数代码都捆绑在一个Survios插件中。要抽出并修改组件,你需要花费大量额外的精力,并且由于团队成员需要来回寻找最佳方法,这会造成一定的时间浪费。

西尔金说道:“我们意识到所有这些假设经常都会被打破,所以团队一直在争论什么是正确的做法。所以,我们将其分解成有着抽象层的独立插件。”

另外,团队创建了一种介绍如何为游戏配置所述系统的模板,这样工作室中的任何人在开始新项目时都可以予以使用。

他说道:“成员可以自由进行调整。这时我们开始了我们的Great Pluginification(插件化)。”

为了阐明Great Pluginification的情况,西尔金介绍了他们是如何将一个原有的Survios组件插件分解为37个单独的插件(如SVRDamage,SVRAnimation,SVRLoadScreen等),并在其中添加了更多内容。

他指出:“它们都存在于各自独立的模块中,所以从理论上讲,如果团队需要,这些子系统完全可以替换掉。”

作为Survios的最新作品之一,《Battlewake》正是建立在所述系统之上,并且结合了工作室迄今为止所积累的经验教训。这款作品同时已经在影响未来的项目。

西尔金最后说道:“当我们选择项目时,我们会尝试选择能够在未来项目中派上用场的内容。一定要尝试将你的系统分解模块化……这可能意味着需要更多的维护和样板代码,但从长远来看,它能够支持你更轻松地进行管理。”