如果我想写一个C ++ 2D游戏,我该从哪里开始?

我是一名C#Web开发人员,我想扩展我的技能,在做这件事的时候有一些乐趣。 我知道一些C ++的基础知识,我很乐意使用C ++为自己编写一个简单的2D游戏/游戏引擎。 我还需要哪些其他库或SDK,以及在哪里可以find一些教程和信息资源来推进?

我已经用C#研究了XNA。 有很多的资源,但我宁愿使用非微软的产品。 这一点是要有一个有趣的,而成为一个更好的四舍五入程序员。

请注意,我并不是要求最好的地方开始。 我只是要求一个地方开始。

谢谢你的帮助!

C ++游戏开发的标准起点(以我的经验)是SDL 。 与XNA相比,你的手必须更加肮脏。

如果你想尝试一些更高的水平,那么我会建议SFML 。 它为你处理一些更琐碎的任务,但是你仍然需要留意你的内存使用情况等。

我会建议使用SDL 。 已经有很长一段时间了,所以文档和支持都非常好,而且我知道在屏幕上获取绘图表面是最简单的方法之一。 它会给你练习用C ++编写类(因为你可能想要包装很多的SDL C函数调用),也给你一些使用指针和引用的经验,并做一些基本的内存管理。 管理自己的内存是C ++和C#之间的主要区别之一。

就我个人而言,我会selectAllegro 5 ,原因如下:

  1. 它有一个基于CMake的构建系统。 这使得它比大多数构建系统在多平台上工作要容易得多。 这似乎是一个小问题,但总的来说非常重要。 它使建立图书馆变得更简单。

  2. SFML仍然在显着的stream动。 2.0是一个非常重大的变化。 尽管Allegro已经在版本5中发生了重大变化,现在则是关于稳定性。

  3. 它以与SFML不同的方式涵盖模块化。 使用SFML,你需要特定的组件,但你得到了所有的组件。 如果你要求graphics组件,你会得到所有的graphics组件。 随着快板5,你总是得到graphics组件。 但是,如果你不想使用Allegro的位图加载器,你不必; 你可以使用你自己的。

  4. 它有很好的文档。 SFML使用Doxygen风格的文档,但即使这是相当斯巴达人。 而Allegro 5则更为全面,function按其涵盖的特定系统分组在一起。 这并不完美,但总体来说更好。

  5. 他们很聪明, 不会尝试穿线。 随着C ++ 11 / Boost.Threads的广泛使用或者即将到来,使用另一个线程包装器可能不仅仅是个问题:让代码正常工作可能是危险的。

我觉得LazyFoo是一个非常棒的地方。 这将使您以最快的速度运行SDL,比我见过的任何其他地方都快。 我建议尽快进入OpenGL(只要你能忍受它),因为你会得到更多的昂贵的编程美元 – 与硬件加速。 如果你走这条路线,我推荐本指南 。

如果您使用的是c ++,我会推荐使用SFML 。 它会让你迅速在屏幕上显示一些东西,并且在你的C ++游戏代码中使用它很简单。

  • SFML – 小组中的孩子,但是从我读过的内容中看,可能是最容易使用的。
  • SDL – 中间道路。 非常成熟的图书馆,明智的,如果有点神秘不时,一般简洁,一个非常普遍的select。 设置显示格式可以是一个混蛋,我已经使用lazyfoo的教程来帮助在这方面。
  • 快板 – 老年病学,从Atari ST时代开始就一直存在。 出于这个原因,很多二维渲染代码(我认为只有在Allegro 4中)很快就会变得很快,因为逻辑是为了更低规格的系统而构建的。 即使考虑到文档,我个人也不觉得它非常直观。

考虑到OpenGL现在加快了2D的速度,访问Allegro和SDL(或早期版本)的快速软件渲染器并不重要。 然而,当我select一个图书馆时,我把注意力集中在项目成熟度,用户基础和文档上,而不仅仅是速度(只要速度合理),我会说SDL和Allegro在这些方面取得胜利。 SDL也已经发布了像Civ:Call to Power这样的三重AAA级游戏。