在单人游戏中,当尝试使用外部脚本中指定的组件构建实体时,您认为在其中一个组件格式不正确时会发生什么更可取:
- 引擎是否应该跳过该组件,而仅使用编写良好的组件让实体生活在游戏世界中?
- 还是如果其中一个组件的格式不正确,它是否根本不应该将该实体添加到整个世界?
请注意,我不是在谈论记录错误-不用说-只是关于实体应该发生什么。
在单人游戏中,当尝试使用外部脚本中指定的组件构建实体时,您认为在其中一个组件格式不正确时会发生什么更可取:
请注意,我不是在谈论记录错误-不用说-只是关于实体应该发生什么。
Answers:
如果您在谈论一款可修改的游戏,那么您可能希望遵循上述建议之一。但是,如果您担心会遇到自己的错误,那就不要这样做。我已经成为失败的拥护者。如果这是您创建的错误,并且必须在释放之前解决,则应使该错误显而易见。Wiki页面底部的链接文章很好地说明了为什么快速失败是件好事,以及什么时候应该使用,不应该使用它。
用户和开发人员之间的区别在游戏开发中并不总是很清楚。像“快速失败”这样的标准编程技术并不总是有优势的,尤其是随着团队规模的扩大。
例如,也许您的技术美术师为目标轮廓固定了着色器-打破了后备,比如说,它仅在SM4系统上加载,而他并没有注意到,因为他拥有一流的系统。这导致某些动画无法加载。这些动画由您的战斗设计师编写的特定咒语引用。最终,您的关卡设计师试图将这些生成物放置在适当的位置,并且所有生成物都能够施放该咒语-但现在她无法将其中任何一个放置在世界上,因为它们的咒语无效,因为效果没有这是无效的,因为着色器将不会加载,因为设计人员总是拥有最差的计算机。
因此,您的演示在2PM之前还没有准备好,您的投资者想知道为什么您甚至无法在游戏中遇到一个敌人,而您的项目却被关闭了。
或者,您选择记录失败但继续尝试的选项,并且游戏正常进行,除了没有出现一些敌人的咒语效果-但投资者无论如何都不知道应该看起来像什么,所以他们不注意。
因此,我几乎总是提倡第一种选择-产生尽可能多的实体。在某些情况下会出现快速失败的情况-例如,除非应由能够进行构建的人员(例如,程序员和技术生产人员)对数据进行编辑,并且始终在加载时对其进行100%检查,或者您完全确定负责该操作的人员问题是使用编辑器的人-但那不是通常的情况,并且本身就需要很多技术基础架构,您可能不准备投资。
我建议在开发中,它应该对无效数据产生干扰。即将所有内容记录在将被读取的位置。但是,如果您的引擎可以忽略并继续运行,则应这样做。你可以有这样的逻辑
void setValue(int value) {
if (value < MIN_VALUE) {
log(value + " is too low, using " + MIN_VALUE);
value = MIN_VALUE;
}
if (value > MAX_VALUE) {
log(value + " is too high, using " + MAX_VALUE);
value = MAX_VALUE;
}
}
即使在多人游戏中,这也是可以接受的,除非您假设一个人试图欺骗系统。
发行软件后,假设玩家不会读取这些日志,则您可能希望默认情况下关闭此日志记录。