如果要编写C ++ 2d游戏,该从哪里开始?[关闭]


17

我是C#Web开发人员,我想扩展自己的技能,并在此过程中玩得开心。我了解C ++的一些基础知识,我很想使用C ++为自己编写一个简单的2d游戏/游戏引擎。我还需要其他哪些库或SDK,在哪里可以找到一些教程和参考资源?

我已经使用C#研究了XNA。有很多资源,但是我宁愿使用非Microsoft产品。这样做的目的是在成为更好的全面程序员的同时获得一点乐趣。

请注意,我并不是在寻找最佳起点。我只是想找一个起点。

谢谢你的帮助!

Answers:


27

根据我的经验,C ++游戏开发人员的标准起点是SDL。与XNA相比,这样做必须使您的手更脏一点。

如果您想尝试更高级别的东西,那么我建议使用SFML。它可以为您处理一些更艰巨的任务,但您仍需要注意内存使用情况等。


1
我会研究这些。XNA的最大问题是,它是如此简单明了,以至于我没有感觉到我真的在学习我感兴趣的低级课程。
2011年

6
SFML的设计不错,但仍然存在很多问题,并且正在对API进行重大重新设计-在下一个版本经过精心设计之前,我不会将其用于更复杂的游戏。
Bitgarden 2011年

如果您想要比SDL更具挑战性的东西,请尝试ClanLib。像XNA一样,它支持硬件加速,但也可以在Linux和2D Exclusive上运行。
克里斯·C(ChrisC)2011年

2
您也可以直奔喉咙-OpenGL是我个人最喜欢的(您可以用SDL或SFML包装它)
ultifinitus 2011年

9

我建议使用SDL。已经有很长时间了,因此文档和支持都很好,这是我知道的在屏幕上显示绘图表面的最简单方法之一。它将为您提供使用C ++编写类的练习(因为您可能需要包装很多SDL C函数调用),并且还为您提供一些使用指针和引用以及进行一些基本内存管理的经验。管理您自己的内存是C ++和C#之间的主要区别之一。


9

我个人会选择 出于以下原因 Allegro 5

  1. 它具有基于CMake的构建系统。这比大多数在多个平台上工作的构建系统要容易得多。这似乎是一件小事,但总体而言非常重要。它使构建库变得更加简单。

  2. SFML仍在不断变化。2.0是一个相当大的变化。Allegro在版本5中已经进行了重大更改,而现在所有内容都与稳定性有关。

  3. 它以与SFML不同的方式介绍了模块化。使用SFML,您需要特定的组件,但要获得所有组件。如果要求图形组件,则可以获取所有图形组件。使用Allegro 5,您始终可以获得图形组件。但是,如果您不想使用Allegro的位图加载器,则不必使用;您可以使用自己的。

  4. 它有很好的文档。SFML使用Doxygen样式的文档,但是即使如此,它也是相当漂亮的Spartan。而Allegro 5更全面,其功能根据其涵盖的特定系统分组在一起。这不是完美的,但总体而言更好。

  5. 他们足够聪明,不会尝试执行线程。随着C ++ 11 / Boost.Threads广泛可用或指日可待,使用另一个线程包装器可能不仅会带来问题,而且可能会导致代码正常工作。


为什么比SDL或SFML更喜欢/建议使用Allegro?
Quazi Irfan

@iamcreasy:如果您坚持。
Nicol Bolas

您仍然不会提到SDL ...
工程师

@NickWiggill:SDL具有线程和特定于平台的构建系统。我觉得没有必要针对任何特定问题进行调用。
Nicol Bolas

@ nicol-bolas您没有提到Allegro的弊端。就像极少的教程比较。
Quazi Irfan

4

我认为LazyFoo是一个不错的起点。这将使您使用SDL的运行速度比我见过的任何其他地方都要快。我建议您尽快使用OpenGL(只要您能忍受它),因为随着硬件加速,您的编程费用将大大提高。如果您确实选择了该路线,建议您参阅本指南


2

如果您使用的是c ++,我建议使用SFML。它将迅速为您提供屏幕上的内容,并且直接将其与c ++游戏代码一起使用。


2
  • SFML-小组中的婴儿,但从我阅读的内容中可能最容易使用。
  • SDL-中间道路。非常成熟的图书馆,很明智,通常会简明扼要,如果时不时会有一点奥秘,这是非常普遍的选择。设置显示格式可能有点混蛋,我使用过lazyfoo的教程在这方面提供了帮助。
  • Allegro-老年人,自Atari ST时代起就存在。因此,许多2D渲染代码(我认为仅在Allegro 4中才是如此)非常快,因为该逻辑是为低规格系统构建的。我个人认为,即使考虑文档,也不是很直观。

考虑到OpenGL如今已加快了2D方面的发展,访问Allegro和SDL(或在较早版本中)拥有的快速软件渲染器并不重要。但是,当我选择一个库时,我将重点放在项目的成熟度,用户群和文档上,而不是速度(只要速度合理),我会说SDL和Allegro在这些方面胜出。SDL还一直在发布三重AAA称号,例如Civ:Call to Power。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.