[博客翻译]论游戏引擎开发过程中制作游戏的重要性


原文地址:https://www.team-nutshell.dev/nutshellengine/articles/making-games-during-development.html


在游戏引擎的开发过程中,制作游戏的重要性不容小觑。制作游戏和开发游戏引擎是两项截然不同的任务,分别需要不同的技能和专长。

可以这么说,制作游戏更适合艺术性较强的人才,例如游戏设计师、纹理艺术家和音乐家。现代游戏引擎的便利性甚至允许开发者无需编写一行代码即可创造游戏。而开发游戏引擎则更适合技术型人才,因为它涉及到底层编程、数学、物理等领域。这一点在很大程度上是正确的,但作为一名游戏引擎开发者,特别是独立工作时,不忽视这些艺术性方面的知识能在编写游戏引擎时大有裨益。

显然,这一切都取决于您的游戏引擎的目的。您可能根本不打算用它制作游戏,只是对技术层面感兴趣,这完全没问题。但如果您希望有人使用您的游戏引擎来创造游戏,您就必须尝试在其上制作游戏。

3.png

这一点尤其适用于希望他人使用您的游戏引擎制作自己游戏的情况,但即使您计划成为唯一的用户,也同样适用。在游戏引擎的工作中有许多不同的事情要做,很容易忘记用它来制作游戏,尤其是新功能通常只通过简单的场景进行测试,因为更大的场景难以设置,并可能使任何问题更难以检测和调试。

如果您在游戏引擎的开发工作中已经走得很远,比如已经开发了很多年,但从未用它制作过游戏,那么可能您的游戏引擎……实际上无法制作游戏。创建简单场景以测试新功能与能够制作具有真实游戏性的东西,并且能够无问题地分发给其他用户之间有着巨大的差异。也许您的游戏引擎依赖于某些只有在您的开发环境中才有的文件或配置,或者它可能只能在您的机器上运行。能够创建一个可执行文件(如果需要的话,还有一些外部文件)并将其分享给朋友,这是确保您的游戏引擎实际上可以制作游戏的一个良好的第一步。显然,您可以辩称,可分发性并不是游戏的要求,这是事实,但如果您想分享它们,请确保您能够这么做。

那么,实际制作游戏的过程如何呢?您可能会意识到,使用您的游戏引擎制作游戏是一个巨大的痛苦,而且,即使您计划成为游戏引擎的唯一用户,对引擎的完美掌握也无法阻止您在实际使用过程中被许多方面所困扰。使用您的游戏引擎制作游戏应尽可能无痛。

在使用自己的游戏引擎制作游戏时,您应该关注许多方面,例如:

制作场景难吗?如果您还没有场景编辑器,实际放置场景中的对象可能非常棘手。旋转也应当关注,内部计算确实应当使用弧度或四元数,但在场景文件中以欧拉角度数指定它们,并在加载场景时进行转换,将使得旋转在制作场景时更易于使用。

脚本编写简单吗?很容易认为所有的合理性检查(例如:在销毁实体之前,我是否需要检查它是否仍然存在?)都应由编写脚本的用户完成,但实际上编写需要时刻检查一切的脚本会使过程非常痛苦。尝试将其中一些检查移到您的脚本API内部,并使用日志记录在出现问题时警告用户,这样他们就不必自己进行所有这些检查。显然,过多的检查可能会带来性能损失,因此要谨慎考虑哪些检查可以以较低成本添加到游戏引擎中,哪些应该由用户执行。

资产实际可用吗?您的资产可能不会打包在可执行文件内,因此请确保在导出游戏以供分发时路径正确。

bug在哪里?这个问题很明显,但创建比您过去做的更大的东西肯定会暴露出一些问题,如崩溃、性能问题、图形或声音故障等。

制作游戏时,记下所有困扰您的事情,那些不应重复的事情或您遇到的bug,以便能够修复所有这些问题,当您制作下一个游戏时能有更好的体验。制作游戏还将迫使您熟悉游戏开发者使用的工具。您不必成为Blender或Aseprite的专家,但能够制作简单的3D模型和纹理,或2D精灵,将在制作游戏引擎时大有帮助。

现在,问题来了:您应该什么时候开始用您的游戏引擎制作游戏呢?游戏引擎是一个庞大的项目,越早识别这些问题越好。每个系统不必完全准备好就开始制作游戏。只要您的游戏引擎具备基本的渲染和脚本功能,您应该能够做些什么。

显然,目标不是从一个AAA级的开放世界游戏开始,一个几天内就能完成的小游戏就足够了。游戏松(Game Jams)是制作这类游戏的绝佳机会,因为您不必找主题,这将由游戏松提供,并且您将被迫在短时间内完成工作,通常是一个周末或一周。因此,如果您没有游戏的想法,您可以通过参加游戏松开始,itch.io有一个游戏松计划,可以找到适合您的活动。

如果您有愿意使用您的游戏引擎的朋友(幸运的您!),您也可以组织一个游戏松,每个人都在您的游戏引擎上工作自己的游戏。请他们记录遇到的每一个问题,您可能会从不像您那样熟悉您的游戏引擎的人那里得到许多非常有用的反馈。

总之,在游戏引擎开发过程中制作游戏是很重要的,不要等它完全准备好再开始。如果您不这么做,您可能会意识到您的游戏引擎实际上无法制作游戏,而且可能已经太晚了,无法轻松修复。