关于2D游戏引擎设计有哪些很好的资源

What are some good resources on 2D game engine design?

本文关键字:很好 资源 2D 游戏 引擎 关于      更新时间:2023-10-16

我在业余时间使用C++和DirectX进行2D游戏开发。我发现企业问题域建模方法并没有我想要的那么多帮助;)

我或多或少在寻找相当于基本游戏引擎设计的"最佳实践"。实体应该如何相互交互,动画和声音应该如何在理想世界中表示,等等。

有人有可以推荐的好资源吗?

Gamedev.net 通常是我了解游戏开发社区中其他人在做什么的地方。

也就是说,恐怕你会发现游戏开发中的"最佳实践"概念比大多数人更不稳定。游戏往往是如此专业的应用程序,几乎不可能给出任何"一刀切"的答案。对俄罗斯方块有用的东西对小行星来说将毫无用处,而一个对《光环》完美有效的模型对马里奥来说可能会惨败。

您还会很快发现,纹理、网格、级别、声音或动画格式没有所谓的"行业标准"。每个人都只是自己滚动或使用平台方便的任何内容。你偶尔会看到像 COLLADA,这很好,但它仍然只是一种中间格式,旨在使写作导出器更容易。

如果你是游戏开发的新手,我的建议是:不要在第一次尝试时就因为你的代码结构而自杀。尝试一个简单的游戏,比如小行星,然后破解直到它起作用,无论代码多么"丑陋"。使用您熟悉的简单格式,而不必担心它们在大型项目中的承受能力如何。不要担心插件、皮肤、编辑器或任何其他绒毛。只要让它工作!然后,当你完成第一个,所有重要的游戏时,选择另一个,这一次清理代码的一个或两个方面(但不要过火!从那里开始迭代!

我向你保证,这将使你比任何数量的在线"正确方式"都更快地走得更远(这来自一个做了很多戳的人)。

最后一个想法是:如果你觉得在更明确的空间里工作更舒服,看看XNA或类似的库。他们将预定义一些要使用的"最佳"格式,并为您提供使用它们的工具,从而消除了一些最初的猜测。

祝你好运,最重要的是记住:游戏(及其开发)应该是有趣的!不要太纠结于小事!

做一个游戏。完成后,再做一个。看看你喜欢什么,不喜欢什么,然后做另一个。

说真的,你可以阅读所有你想要的游戏设计的"最佳实践"指南,但最终归结为经验。获得经验的唯一方法是坐下来写一个游戏。在你这样做几次之后,你会对如何编写游戏有更好的了解。

几乎所有以

安德烈·拉莫斯(Andre Lamothe)为贡献者的书。

GameDev也有很多文章。

我完全

同意你的看法:企业应用程序不会让你为游戏编程做好准备。

我用python,java,html/php和perl创建了一些小型游戏。 您可能知道,游戏的基本结构是:

主循环 :
  handleInput()
  updateGameLogic()
  渲染图像()

现在,这一切都很好,适合单

屏单线程游戏,就像 70 年代或 80 年代的任何东西一样。 但我不觉得这种结构特别适合多屏游戏(如RPG)或任何更奇特的游戏。 它不能很好地线程。 代码变得非常时髦,因为您需要处理各种输入。 它不能很好地扩展。

但是,在我过多地抨击这个比喻之前,请注意,这是一个很好的起点。 我甚至建议学习Python/Pygame,并开始用该工具而不是C++工具构建游戏,这使设计和实现过程复杂化。 当你在python中制作原型时,你会看到游戏更快地成型,并遇到与语言无关的问题。

对我来说,游戏编程中最困难、最耗时的方面是图形和声音资产。 虽然我是一个音频书和业余音乐家,但创作可信和适当的音乐和 SFX 本身就是一个项目。 我没有图形天赋,所以我必须依靠修改现有图像或使用免费提供的图像。 幸运的是,有一种广泛使用的免费字体可用于游戏(别无他法,因为它们几乎普遍不好)。

最后,没有什么比开源更能看到其他项目如何处理这个问题了。韦斯特诺斯战役是一款成熟的中型游戏。 你可能想看看那里发生了什么。 同样,python中的游戏经常提供其源代码,因此您可以查看那里的数百个项目。 您也可以反编译 atari 2600 ROM,但这并不能告诉您有关当今编程的信息。 旧的VCS是一种专用设备,以非常依赖系统的方式处理其应用程序。:-D

最后,我也喜欢安德烈·拉莫特。 我有他1993年的老书,有一百万页厚。 虽然它仍然是一些通用游戏创意的一个很好的参考,但其中很多都被当时不存在的免费库和框架所消除。

祝你的项目好运。

既然还没有提到,为什么不从查看已发布到社区的现有引擎开始呢?既然你说的是2D,我会回去推荐类似Abuse的东西。是的,它很古老,大多数有趣的部分都是Lisp - 但是这个游戏在一段时间内变得非常流行,这意味着他们正在做正确的事情。

碰巧的是,我认为原始游戏的大部分内容都是用Lisp编写的,这是一个非常有用的教训。选择最强大的语言/工具,不要担心性能。您以后始终可以在 C 中优化慢速部分。