2D游戏引擎设计有哪些好资源?

时间:2008-10-07 18:25:04

标签: c++ directx

我在业余时间使用C ++和DirectX搞乱2D游戏开发。我发现企业问题领域建模方法没有像我想的那样有用;)

我或多或少地寻找与基本游戏引擎设计相当的“最佳实践”。实体应如何相互作用,动画和声音应如何在理想世界中表现,等等。

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

5 个答案:

答案 0 :(得分:15)

Gamedev.net通常是我想知道游戏开发社区中其他人正在做什么的。

那就是说,我担心你会发现游戏开发中“最佳实践”的概念比大多数人更不稳定。游戏往往是如此专业的应用程序,几乎不可能给出任何“一刀切”的答案。什么对俄罗斯方块有用的东西对于小行星来说是无用的,对于马洛来说,一个完美适用于Halo的模型很可能会失败。

您还会很快发现纹理,网格,水平,声音或动画格式没有“行业标准”。每个人都只是自己动手或使用平台上方便的任何东西。你偶尔会看到像COLLADA这样的东西,这很好,但它仍然只是一种中间格式,旨在使编写出口商更容易。

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

我向你保证,这会让你比任何“正确的方式”更快地进入网上寻找更快的速度(这来自于那些做过大量探索的人)。

最后一个想法:如果您觉得在更明确的空间中工作更舒服,请查看XNA或类似的图书馆。他们会预先定义一些“最佳”格式,并为您提供工具来处理它们,这需要进行一些初步的猜测。

祝你好运,最重要的是记住:游戏(及其开发)应该是有趣的!不要过于关注这些小东西!

答案 1 :(得分:6)

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

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

答案 2 :(得分:3)

几乎任何有Andre Lamothe作为贡献者之一的书。

GameDev也有很多文章。

答案 3 :(得分:1)

我不能同意你的观点:企业应用程序不会让你为游戏编程做好准备。

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

主循环:
handleInput()
updateGameLogic()
renderImages()

现在,对于单屏单线程游戏来说,这一切都很好,就像70年代或80年代的任何东西一样。但我发现这种结构并不适合多屏幕游戏(如RPG)或更具异国情调的东西。它没有很好的线程。由于您需要处理各种输入,因此代码非常时髦。它不能很好地扩展。

然而,在我过分夸大这个比喻之前,请注意这是一个很好的起点。我甚至建议学习Python / Pygame并开始使用该工具而不是C ++构建游戏,这使得设计和实现过程变得复杂。当你在python中进行原型化时,你会发现游戏的形成速度更快,并且会遇到与语言无关的问题。

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

最后,没有什么比开源更了解其他项目如何处理这个问题。 Westnoth之战是一款成熟的中型游戏。你可能想看看那里发生了什么。同样,python中的游戏经常使他们的源代码可用,所以你可以看看那里的数百个项目。你也可以反编译atari 2600 ROM,但这并不能告诉你今天的编程。旧的VCS是一种专用设备,可以以与系统相关的方式处理其应用程序。 :-D

最后,我也喜欢Andre LaMothe。我有他1993年的书,这本书有一百万页厚。虽然它仍然是一些通用游戏创意的一个很好的参考,但是当时不存在的免费可用库和框架的可用性避免了很多。

祝你的项目好运。

答案 4 :(得分:0)

由于尚未提及,为什么不首先查看已发布到社区的现有引擎?既然你正在谈论2D,我会回过头来推荐像Abuse这样的东西。是的,它很古老,而且大多数有趣的东西都在Lisp中 - 但游戏很受欢迎,这意味着它们正在做正确的事情。

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