在Linux上编写小游戏需要什么?

15

我想制作一个简单的游戏:2D,单人玩家,没有大量动画和特效。 我不感兴趣使用现成的游戏引擎,我想学习使用一种通用语言编写代码。我 使用Linux(AMD64) 并寻找易于使用、具有良好游戏库的东西。 我不想混合几种语言,事实上它们中的大多数对我的需求来说都足够快。跨平台将是一个优势,但我只需要很好的Linux支持。

我考虑了几个解决方案。

Ruby
+ 语言看起来非常好。
+ 我将学习Ruby。
- 我担心我可能会在使用附加库时遇到问题。
- 这个关于Ruby游戏库的线程可能会更长。

SDL + C
+ 它被用于游戏。
+ 很容易设置。
+ 有很多附加库。
+ 跨平台
- 解决方案相当低级。
- 有时语言难以理解。

QT + C++
+ 很容易设置。
+ 标准QT库支持我可能需要的一切。
+ 跨平台
+ 文档很好。
- 编译速度慢。
- 语言看起来很糟糕。
- 标准QT库的大小过于庞大,难以理解。

Web浏览器环境
+ 我将学习更多关于这个环境的知识。
+ 它在某种程度上用于游戏。
+ 跨平台
- 这将是太过实验性的。

Java
+ 它被用于游戏。
+ 标准Java库支持我可能需要的一切。
+ 跨平台
- 配置相当困难。
- 标准Java库的大小过于庞大,难以理解。
- Java的源代码看起来可以更好一些。
- 我觉得我不想学Java。

Google Go
+ 我要开始学习Google Go了。
- 库方面存在很大的问题。
- 解决方案可能会比较底层。

Python
+ 根据这个帖子,似乎有些人用Python写游戏。
+ 与Ruby相比,Python可能有更多的库。
- Ruby语言看起来更好一些。
- 我觉得我不想学Python。

C++ + 其他
+ 它被用于游戏。
+ 它可能是跨平台的。
+ 有很多库。
- 我不需要C++扩展C。
- 编译可能会很慢,对于C来说有快速的编译器,但没有针对C++的。

Haskell
+ 我要开始学习Haskell了。
- 许多关于编程电脑游戏的问题看起来太过于命令式。
- 看起来我可能会遇到一些库方面的问题。
- 编译(GHC)看起来很慢。

可能还有其他需要考虑的因素。有没有人在非主流方案中为Linux制作小游戏的经验?有没有人给我一些建议?


3
关于不同语言有很多先入为主的观念。选择一种你感觉舒适的语言,对于写一个小游戏来说这比语言的技术优劣更加重要。请跟随你的感觉去做。 - Daniel Dimovski
我已经使用Ruby和Rubygame有一段时间了。对于小型的业余项目来说,它已经足够好了。 - Michas
9个回答

14

这可能不完全符合您的期望,但我想说的是:最重要的是“停止规划,开始构建”。

你试图比较A、B、C和D,但显然你并不像你想象中那样了解它们。

首先选择你想要了解的其中一个(假设是Ruby,因为它在你的列表中排在最前面),然后开始尝试做你想做的事情。你会有部分成功,也会有部分失败,这些结果都将为你提供编程知识,而且你要么完成你的游戏,要么获得足够的知识,以便能够明智地选择转向另一个平台。


2
听起来效率不高,但从长远来看会节省你的时间,相信我(和Beska)。 - Ricket

8

以下是一些关于Python的建议(考虑到你的需求,我认为选择这种语言是不会后悔的):

Pygame非常适合编写小型游戏(尤其是2D游戏)。它有良好的社区支持、文档、示例以及免费的跨平台性。

如果你想制作3D游戏,可以看看Ogre3D


但是这些建议都不符合他的要求。他不想要游戏引擎或3D。 - Beska

2

Python + PyGame.


1

好的。总体而言,C语言(包括Visual C#,C ++,C,Objective C等)具有许多优点。它非常快,我是指非常快。然而,开发简单的东西需要一段时间。Java介于C和Python之间(C很难学习并需要一段时间来开发某些东西,而Python则轻巧且功能强大)。在我看来,你应该学习Python。它易于学习。它功能强大。它轻便。它跨平台兼容。它灵活。它有很多库可供使用,你不应该有找到正确工具的困难。这是我的意见。


0
有快速的C编译器,但没有快速的C++编译器。这并不完全正确。实际上,C++的某些特性会导致编译速度变慢。如果你写类似于C的C++代码,那么你的编译速度就和写纯C代码一样快。这是C++的优势之一。虽然我不建议这样做,但是严肃的C++程序员听到这种做法也会感到不适。

有 Tiny C 编译器和 Clang。 - Michas

0

在浏览器中使用Javascript和HTML5实际上并不是实验性的!自从引入了canvas元素,您可以使用它来绘制到浏览器中。通过Javascript计时器可以实现游戏循环。

使用Javascript和HTML5,您可以构建跨平台游戏,而无需任何框架(尽管您可能想要使用jQuery或类似工具以获得方便)。

关于canvas元素:

http://diveintohtml5.ep.io/canvas.html#divingin


画布非常稳定。本地存储(文件访问)、硬件加速、声音等则不太稳定。 - Michas
很有道理。 但是简单的带有声音的2D游戏是完全可行的(我自己做过)。 但是没错,<audio>在所有浏览器中的支持不够好(Firefox和Safari表现良好,Chrome有问题),而且<embed>也有它自己的限制。但是正如Quake2 Javascript移植所指出的那样,Javascript有着美好的未来。http://code.google.com/p/quake2-gwt-port/ - hendrik

0

我认为Java是制作简单程序的最佳选择,因为它易于学习并且有很多支持。Eclipse是一个编译和编写Java代码的好程序。我不喜欢C++或C,Java非常好,因为它可以在任何操作系统上运行,并且可以制作像Minecraft这样复杂的游戏或像Pac-Man这样简单的游戏。


0

我会使用Python和pygame。Python非常强大,相对容易学习。有很多令人惊叹的资源,而且非常灵活。我建议使用pygame模块进行图形处理。pygame.org提供非常详尽的文档。


0

有很多游戏看起来和感觉都不同,而且有很多方法可以编写它们。我认为如果没有对游戏进行彻底的解释,就不可能知道你心中所想。

我认为更好的方法是假设你想要(一般而言)制作类似于你最喜欢的游戏之一的游戏。如果是这样,请找出用于创建这些游戏的工具,并使用相同的工具。


这将是一种非常老的技术。 - Michas

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