3

我正在考虑我的游戏引擎选项。我做了Twin Stick Shooter 教程。最让我感到沮丧的是,大部分编程都是在蓝图中完成的,这是一种丑陋的(在这里是主观的,但不会太久)图形编程。游戏的整个逻辑都是用盒子完成的……我觉得这太可怕了!我什至逃离了 Qt Designer 并使用纯编码和布局来设计我的 GUI。

回到客观,问题在于“双棒射手”是一款非常非常简单的游戏。然而,这些图表最终非常复杂和庞大。我发现这在没有问题的情况下很难维护,例如使用 git 或任何其他版本控制工具跟踪随时间的变化。与 C++ 不同,在 C++ 中,维护大型代码是一个非常古老的问题,可以通过多种方式解决,并且版本控制系统可以很好地解决这个问题。

我的问题是:教程中的同一个游戏(或任何一般游戏)是否可以使用 C++ 中部署的所有逻辑(或者可能少于 5% 的蓝图)来完成,而不是全部部署在蓝图图表中(如 Twin Stick Shooter )? 鉴于我不是虚幻引擎方面的专家,我认为专家可以很好地回答这个问题,他可以解释纯粹用 C++ 可以做什么和不可以做什么,以及为什么这样做是好是坏那。

4

2 回答 2

3

根据我使用 UE4 的经验,我会回答:是的。

主要蓝图节点和对象由 C++ 制作,通常可通过 C++ 引擎 API 访问。事实上,BP 节点的 C++ 版本通常使用起来更复杂(即有更多可能的参数)。

我个人发现,网络、UI、游戏逻辑和关卡转换等游戏的任何重要方面都可以在 C++ 中完成。

(...)以及为什么这样做是好是坏。

UE4 创作者表示,蓝图系统的开发是为了帮助艺术家和非开发者使用引擎。蓝图系统在游戏逻辑原型设计中也很有帮助。

由于蓝图的弹性和创建时间,当您在 C++ 中创建低级、复杂或昂贵的代码并将其 API 公开给蓝图系统时,许多开发人员(包括我自己)决定使用混合方法。它有助于将核心代码与需要大量更改和调整的高级函数分开(好处:BP 更容易调试,编译时间更快)。

我发现混合 BP 和 C++ 的一个困难是在此处更详细讨论的 C++ 代码中使用 BP 类的问题。

我发现这在没有问题的情况下很难维护,例如使用 git 或任何其他版本控制工具跟踪随时间的变化。

UE4 有蓝图合并工具,但我从未使用过它。

于 2017-04-07T20:35:56.657 回答
3

从一个拥有 20 年 C++ 经验但只有几个月的 UE4 实践经验的程序员的角度来看……我会说是,但不是。

关于蓝图,我同意你的看法——需要一两行代码的简单操作需要五六个蓝图节点,而作为程序员,阅读起来要困难得多。您可以使用 Unreal 在 C++ 中做任何事情。但是你必须学习和使用现有的引擎代码语料库,而虚幻引擎是一个复杂而强大的野兽。即使有多年的 C++ 经验,我发现做简单的事情真的很困难,因为引擎要求它们以某种方式完成。

老实说,对于双杆射击游戏,我完全推荐 Unity。

于 2018-02-14T12:04:18.200 回答