我是一名C#Web开发人员,我想扩展我的技能,在做这件事的时候有一些乐趣。 我知道一些C ++的基础知识,我很乐意使用C ++为自己编写一个简单的2D游戏/游戏引擎。 我还需要哪些其他库或SDK,以及在哪里可以find一些教程和信息资源来推进?
我已经用C#研究了XNA。 有很多的资源,但我宁愿使用非微软的产品。 这一点是要有一个有趣的,而成为一个更好的四舍五入程序员。
请注意,我并不是要求最好的地方开始。 我只是要求一个地方开始。
谢谢你的帮助!
C ++游戏开发的标准起点(以我的经验)是SDL 。 与XNA相比,你的手必须更加肮脏。
如果你想尝试一些更高的水平,那么我会建议SFML 。 它为你处理一些更琐碎的任务,但是你仍然需要留意你的内存使用情况等。
我会建议使用SDL 。 已经有很长一段时间了,所以文档和支持都非常好,而且我知道在屏幕上获取绘图表面是最简单的方法之一。 它会给你练习用C ++编写类(因为你可能想要包装很多的SDL C函数调用),也给你一些使用指针和引用的经验,并做一些基本的内存管理。 管理自己的内存是C ++和C#之间的主要区别之一。
就我个人而言,我会selectAllegro 5 ,原因如下:
它有一个基于CMake的构建系统。 这使得它比大多数构建系统在多平台上工作要容易得多。 这似乎是一个小问题,但总的来说非常重要。 它使建立图书馆变得更简单。
SFML仍然在显着的stream动。 2.0是一个非常重大的变化。 尽管Allegro已经在版本5中发生了重大变化,现在则是关于稳定性。
它以与SFML不同的方式涵盖模块化。 使用SFML,你需要特定的组件,但你得到了所有的组件。 如果你要求graphics组件,你会得到所有的graphics组件。 随着快板5,你总是得到graphics组件。 但是,如果你不想使用Allegro的位图加载器,你不必; 你可以使用你自己的。
它有很好的文档。 SFML使用Doxygen风格的文档,但即使这是相当斯巴达人。 而Allegro 5则更为全面,function按其涵盖的特定系统分组在一起。 这并不完美,但总体来说更好。
他们很聪明, 不会尝试穿线。 随着C ++ 11 / Boost.Threads的广泛使用或者即将到来,使用另一个线程包装器可能不仅仅是个问题:让代码正常工作可能是危险的。
我觉得LazyFoo是一个非常棒的地方。 这将使您以最快的速度运行SDL,比我见过的任何其他地方都快。 我建议尽快进入OpenGL(只要你能忍受它),因为你会得到更多的昂贵的编程美元 – 与硬件加速。 如果你走这条路线,我推荐本指南 。
如果您使用的是c ++,我会推荐使用SFML 。 它会让你迅速在屏幕上显示一些东西,并且在你的C ++游戏代码中使用它很简单。
考虑到OpenGL现在加快了2D的速度,访问Allegro和SDL(或早期版本)的快速软件渲染器并不重要。 然而,当我select一个图书馆时,我把注意力集中在项目成熟度,用户基础和文档上,而不仅仅是速度(只要速度合理),我会说SDL和Allegro在这些方面取得胜利。 SDL也已经发布了像Civ:Call to Power这样的三重AAA级游戏。