面试 消息

Wargaming使用Rider for Unreal Engine开发新的游戏

在过去的一年半,我们一直在运行早期的访问计划虚幻引擎骑士-我们新的IDE开发游戏在c++使用虚幻引擎。该项目吸引了成千上万的独立游戏开发者以及众多游戏开发工作室和各种规模的公司。我们很想知道他们最看重产品的什么,他们喜欢它的什么,以及他们可能会错过什么。我们决定与Viacheslav Dubikovsky进行交谈,他是Wargaming RED的技术总监,这是一家最近在俄罗斯莫斯科成立的游戏开发工作室,是Wargaming Group Limited的一部分。采访由。net和c++工具的产品营销经理Anastasia Kazakova和Unreal Engine的Rider项目经理Alexander Pirogov进行。

Viacheslav Dubikovsky

Wargaming Red技术总监

嗨Viacheslav!你能告诉我们你正在努力的项目吗?它是什么样的游戏?

我们还没有宣布标题,所以我不能告诉你太多关于它,因为保密协议。我只能说这是一款科幻,基于回合的第三人称射击游戏。

你们使用Unreal作为游戏引擎?

恩,那就对了。我们正在C ++中开发游戏,现在使用虚幻引擎4.26,但逐渐迁移到4.27。我不认为我们会将这个项目移动到虚幻引擎5,因为该版本有不同的渲染,并且迁移到它可能导致我们必须重做我们已经创建的所有游戏艺术。

WG团队

项目如何组织?您使用的是什么技术?

就像我说的,这个项目是用c++编写的,基于虚幻引擎。我们大量使用了虚幻引擎反射机制,以及c++模板元编程。我们有两个单声道库,一个用于游戏本身,另一个用于引擎。主要的游戏逻辑存储在共享模块中。

当使用代码编辑器时,UE反射机制通常呈现最大的挑战。与用这么多宏定义包裹的代码合作很难,从语言本身的角度来看,这几乎毫无意义。很少有开发人员可以处理这一点。这就是虚幻引擎的骑手节省了一天!

有多少开发商参与了这个项目?他们使用的主要工具是什么?

我们的团队大约有25名程序员。其中三分之一的人在使用Rider for UE,其他的人在Visual Studio的不同版本中工作。在采用Rider之前,我们使用Visual Studio,或者是香草的,或者是Visual Assist的,或者是ReSharper c++的。但是无论有没有插件,VS编辑器都会经常遇到性能问题。有了Visual Assist,语言特性对我们来说还不够精确(尽管我认为现在情况可能有所不同)。相反,虚幻引擎的Rider表现出了出色的性能,至少在处理UE代码时是这样。

对于你来说,迁移到虚幻引擎的Rider是否容易?

我的第一印象是:“哇,它支持VS键盘快捷方式!我所有的与技能都将派上而分。“当涉及到用户界面时,Visual Studio的UI在某些方面似乎更用户友好,如调试,可能是因为我有更多的经验。但骑手的UI视觉上很有吸引力,我会给它。

尽管如此,从一个已经使用多年的工具中迁移出来是很棘手的,所以我们的一些同事仍然坚持使用Visual Studio。

到目前为止,在你的项目中,虚幻引擎的Rider的哪些功能是最有用的?

这将是导航,查找用法,跳转到符号声明,转到派生和基本符号 - 我们在我们自己的代码和虚幻引擎代码中使用这些时间(因为引擎代码是开发人员文档的主要来源)。使用虚幻引擎有效地使用虚幻引擎的另一个关键是快速查找与字段和功能的链接,并通过代码和骑手导航,并且用于虚幻引擎的rigel。

然后是静态代码分析——检查代码中的错误。当您在编辑器中看到错误时,甚至在编译之前,这将节省大量时间。如果这样的错误到达编译阶段,可能意味着编译器和开发人员之间要“乒乓”数小时。当然,我们不能通过这种方式发现所有的错误,特别是在模板代码中。但虚幻引擎本身几乎不使用模板,所以只有一小部分错误需要查找和修复。建议自动添加缺失的检查包括指令也有助于节省时间:借助骑手,您不必遵循包含哪些头文件,哪些不是。

同样令人惊讶的是,Rider知道在虚幻引擎中实现的反射机制,并提供了反射标识符和宏的自动完成。你通常不会记住这些东西,所以莱德的提示可以加快你的编码速度。

我还必须提到解析资产和与c++源代码绑定蓝图。这个特性并不是经常使用,但是当它被使用时,它是非常有价值的。特别是当你在重构c++源代码时,看到蓝图中的用法是非常有用的。配置INI文件和类属性的默认值也一样:您经常可以在代码中看到这些值,而不需要在INI文件中搜索。

最后但并非最不重要的是,与虚幻编辑器的集成,意味着RiderLink/ unallink插件。通常,我们从Rider调试器中启动虚幻编辑器,然后在其中进行实时编码。在不离开Rider的情况下,我们可以在暂停和恢复游戏时查看日志,这有时会起到很大的推动作用。例如,如果我们使用第三方插件(与Steam或外部聊天,构建游戏管道等),我们甚至不需要切换到编辑器——查看日志和暂停/恢复编辑器就足够了。

说到这里,我有一些关于如何增强Unreal日志的建议:

  • 添加更多过滤选项。有大量的日志,有时数百甚至更多,所以很难选择正确的类别。
  • 同时突出显示日志中的多个匹配 - 这是一个非常常见的用例。

谢谢这些想法!骑手的调试器怎么样,你用吗?

当然。没有调试器,没有编辑器可以称为真正的开发工具!好吧,早些时候我们确实遇到了骑手的调试器没有停止在断点的一些问题,但看起来他们已经修复了。我们最常使用的调试功能绝对逐步通过代码。有时我们使用条件断点。我们喜欢调试器如何显示虚幻引擎对象的内容。

你主要在桌面上调试吗?

到目前为止,是的。我们计划在将来与游戏机合作,但我们还没有那里。

注意:不幸的是,Rider还不允许在控制台上进行调试。我们正在和主要的主机制造商讨论这个问题。这些过程可能需要很长时间,有时需要跨越许多官僚障碍。

WG品牌

我们还想谈谈版本控制系统。你用哪一种?

我们主要使用git,具有在树枝上积极开发的新功能。我们使用Git与Rider集成。然而,为了重新装备,我们使用乌龟客户,因为它让我们更好地看到更大的画面。rebase可能是最复杂的git操作。我们尝试了自动化并使其易于使用,但到目前为止我们没有运气。

在我的其他项目中,我也与Perforce和PlasticSCM合作过。

你是否剖析你的代码?如果有,您是否使用第三方分析工具?

是的,我们分析了我们的代码不真实的见解。谈到收集分析信息时,本机UE工具很难击败。但谈论可视化,改善肯定是可能的。我们使用自己的工具来绘制CPU使用图。虚幻的洞察力对于检查框架内容很好,但它没有帮助您看到所有动态,这就是我们决定制作自己的工具的原因。

谢谢你的采访,Viacheslav!祝你的游戏项目好运!

我们期待着听取您为不真实发动机加强骑手的想法。

发现更多

Baidu