6

我和一些朋友想开发一款游戏。任何语言都可以。我已经用 C 编程多年,但以前从未写过游戏。我们中的一个人对 SDL 略知一二。这也是学习 Python+pygame 的一个很好的借口。

我们希望我们的游戏是“独立的”。所谓独立,我的意思是大多数用户(至少 Linux、Mac 和 Windows)不需要手动下载和安装除软件包之外的任何其他东西。如果安装自动处理缺少的依赖项,则可以。如果包包含二进制文件,我们希望能够使用 Linux 的交叉编译来生成它们。

我们应该如何打包和构建项目,什么语言最适合?

4

6 回答 6

9

如果您以前没有编写过游戏,我建议您从 Python 和 Pygame 开始。如果您已经是一名程序员,那么 Python 本身非常容易学习,所以这对您来说不会有太大的飞跃。

使用 Pygame,您几乎不需要花时间编写“胶水”或处理诸如窗口管理和声音设置之类的普通低级细节 - 您几乎可以立即编写游戏逻辑,并且很快就会blit左右操作。更重要的是,让你的游戏原型运行起来非常容易,这样你就可以开始试验这些机制了——我在几个小时内就编写了一个简单的小型横向滚动平台游戏。

表现

Python 与 Pygame 的性能通常对于简单的游戏来说是不错的,尽管“平滑滚动”游戏可能会表现出很差的性能,尤其是在 Linux 上(根据我的经验,至少 -pygame.display.update()在 Linux 上每帧需要 15-30 毫秒,而在 Linux 上每帧需要 4-5 毫秒)在 Windows 上使用便宜的 Intel 显卡,尽管这是两年前的事了,Linux Intel 驱动程序最近有所改进)。此外,如果您有大量物理/数学代码,Psyco 可以为您提供巨大的加速(在某些情况下为 20% - 200%),但您将被限制为在 x86 计算机上使用 32 位 Python。

一旦你完成了大部分游戏逻辑,如果性能仍然不能令人满意,你可以切换到 C 和 SDL。由于您已经编写了游戏逻辑,因此您只需专注于直接处理 SDL。即使这样也应该相当容易——Pygame 内部使用 SDL,所以翻译应该相对简单。

OpenGL

不幸的是,上述情况仅在您编写 2D 游戏时才成立——Pygame 对 OpenGL 基本上没有帮助。但是,我建议使用 OpenGL 开始游戏编程。一开始可能很难理解,所以你会同时遇到两个问题 - 首先,你试图弄清楚如何获得游戏逻辑/物理/人工智能/等。工作,然后你很难理解 OpenGL。最终学习 OpenGL 是值得的,但不是从头开始——最好从基础开始,然后从那里开始。

跨平台注意事项

至于跨平台问题 - py2exe(适用于 Windows)和py2app(适用于 Mac)允许您构建包含您的依赖项(包括 Python 解释器和 Pygame)的单个可执行文件;但是,我认为您无法从 Linux 环境构建可执行文件(您可能必须能够借用 Windows/Mac 计算机几分钟)。对于 Linux,您可能只需分发一个 .deb,将 Pygame 列为依赖项(必要时将 Psyco 列为 Recommends 或 Suggests)。

于 2010-03-18T09:17:01.680 回答
4

看看食人魔它是Torchlight背后的引擎。它支持 Windows、Ubuntu、MacOS 和 iPhone。

您可能还想阅读Gamasutra:他们的文章、访谈、深入分析和事后分析为游戏开发过程提供了非常有趣的见解。

于 2010-03-08T13:51:08.967 回答
3

这在很大程度上取决于您是要构建包括引擎在内的整个游戏,还是仅在已建立的游戏引擎上构建。尽管构建一个完整的引擎需要更多的开销和艰苦的工作,但它会给你带来大量的经验。

现在如果你想创建一个游戏引擎,工作的语言是C++(C也可以工作,我只是更喜欢C++)

对于构建管理工具,我发现使用CMake是一个不错的选择,它可以在多个不同平台上为您管理构建,它甚至还可以创建安装程序,并安装任何所需的库。

至于库,您的大部分问题将由 SDL 解决,使用起来并不是特别愉快,但它管理了与视频(OpenGL)、窗口、输入和音频的跨平台接口的头痛。您仍然需要学习 OpenGL 才能在游戏中使用它,SDL 只处理初始化和设置。

现在对于使用 Python,我不推荐它,除非你的游戏很简单(2D,或没有大量物理使用的简单 3D),因为 Python 产生的开销会开始消耗你的帧率。对于轻量级的脚本语言,Lua绝对是最好的,它简单、灵活、快速。要集成它,如果您想要一个简单的解决方案,请使用LuaBind,但要小心!在你使用它的地方非常有选择性,因为它可以完全杀死你的编译时间!

于 2010-03-17T20:41:58.137 回答
1

我建议您在 QT 上开发它... QT 将自行处理大部分可移植性问题...所以您不必担心它,而且它支持大多数平台,包括手机...和 ​​QT对游戏有很好的原生支持(图形、UI、声音控制..)

请参阅应用程序内置 QT

于 2010-03-19T12:40:24.657 回答
0

我认为您的游戏是 3D 游戏。如果是,那么您需要 OpenGL。它是 C,所以你会熟悉语法,但方法有点不同,因为 OpenGL 是一个有限状态机。更多关于这个主题的信息

OpenGL 基本上是在每个平台上都内置的,因此您只需要启动一个全屏窗口并让 OpenGL 处理绘图。对于交叉编译,我推荐使用C++ 的wxWidgets。它将允许您为在每个平台上编译的应用程序的窗口初始化编写单个代码。

如果您决定使用 python,wxWidgets 也有一个python 绑定,在这种情况下,您还需要PyOpenGL

于 2010-03-16T22:12:52.690 回答
0

对于休闲游戏,我会推荐 Flash

于 2010-03-18T03:01:45.233 回答