Linux、OSX和Windows平台上的2D游戏编程 - C++/Python/OpenGL?

3
我的一个朋友正在从平面设计师转变为游戏开发人员,我已经决定在空闲时间和他一起工作。我们都没有太多开发经验,但我对学习Python非常感兴趣,我的朋友想学习C ++。
我读到C ++是游戏编程中的共同点,但在这里,相关问题建议新用户避免像C ++这样更难的语言。我最关心的是创建可以在操作系统之间移植的游戏。我将使用Linux来开发和测试游戏,但我们也希望它能在OSX和Windows上运行。我们对3D游戏开发不感兴趣,因为我们没有任何3D图形的经验。我会非常满意类似VVVVVV这样的游戏的图形 - 非常简单的2D图形,几乎没有(或零)纹理。
此外,是否有必要使用OpenGL进行2D图形呢?还是说C ++ / Python有一些图形库可以产生适合游戏的图形呢?请记住,通过具有游戏价值性,我指的是像Minecraft或VVVVVV这样的简单像素化图形。
我们有一些关于Python,C ++和OpenGL的书籍,如果这是入门的正确方式,我们可以深入研究。大家有什么推荐的吗?

无论你选择哪种语言,Python都有很好的C绑定,可以让你调用与C/C++相同的OpenGL函数。你想要学习低级别的图形编程,还是只是使用预制库来完成2D图形呢? - flumpb
如果你想让它具有可移植性并且在实现时投入最少的精力,使用Java(Minecraft正在使用Java)。但是,如果性能是开发中的关键,请使用C ++。我建议使用的一个好的2D库是Allegro。而且,你可以使用Boost.Python很容易地将Python绑定到C ++中。 - Gasim
6个回答

5
实际上,对于Python有一套非常方便的库和模块pygame,它非常有用,文档详细,并且有大量社区支持,很多有趣的游戏都使用它构建。最好的部分是,回答您的问题的一部分,它不需要OpenGL。
另外,由于它基于Python,所以具有高度的可移植性。当然,这样的项目面临许多挑战,但要耐心并坚持下去,您可以学到很多知识,也会感到很有趣。
C ++是一种非常强大的语言,您可以用它做很多事情,有经验的C ++开发人员会告诉你应该学习它,他们是正确的,因为它不会很快消失,但您推迟了一点也是正确的。如果您最终喜欢使用Python进行开发,则没有任何阻止您在以后学习C ++并同时享受它们的乐趣。
最重要的是,阅读、实践并享受您的工作。

2
我已经用C++和Python编写了几个小程序和游戏,对于初学者,我建议先使用Python,直到你学会如何构建游戏为止。
当然,我不知道你想创建什么类型的游戏,但对于许多小型2D游戏来说,Python的效率足够了,因此你不必处理C++的复杂性。
我可以推荐的Python库是Pygame(正如我们已经听说的那样),以及更好的(在我看来)pyglet,它是一个更复杂的2D图形工具(它在后台使用OpenGL)。
对于用C++编写的2D游戏,我强烈推荐ClanLib,这是一个开源游戏引擎,拥有庞大而活跃的社区、巨大的代码库和许多示例。它支持软件和OpenGL渲染,并可编译为Windows/Linux/MacOSX。你一定要试试!
祝你好运 :)

1

我同意newlymintedcocoaguy的观点,像Pygame这样的工具是你目前情况下的最佳选择。但是回答你的第二个问题,你可以在不使用OpenGL/DirectX的情况下使用C++制作2D游戏。我以前就是用Windows库中的位图、RECTS等功能实现的。我想Linux也会有类似的功能。不过如果你希望你的游戏跨平台运行,那么OpenGL可能是更好的选择。


1
我会推荐C++。许多人说它很难,从某种程度上来说是正确的,但你可以在C++中制作一个好的2D游戏,而不需要探究其中“困难”的部分。为此,你需要像SDL、SFML等库。 如果你学习C++,它值得你的时间,至少你永远不会遇到性能问题。

0

作为一个熟悉“我是新手,我想做X,我应该学什么?”的人,最近也曾经历过这个阶段,我建议现在先专注于Python。正如其他人所提到的,有一些不错的库,比如PyGame,而C++则稍微有点复杂。

如果你既要学习如何将各个部分组合起来制作游戏,又要与语言打交道,那么很难区分哪一个实际上导致了你特定的问题。一旦你对自己正在做的事情有了良好的感觉,就可以通过学习C++来掌握新的方法。


0
对于初学者而言,如果要开发便携式的 C++ 游戏,我会选择 SDL。它可以访问 OpenGL,可以查看tutorials!你甚至可以使用前面提到的 Python 到 C 绑定库来使用它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接