基于Python的游戏 - 它们是如何制作的?

时间:2013-11-20 21:30:01

标签: c++ python

根据这个清单---> http://en.wikipedia.org/wiki/List_of_Python_software#Video_games有几个用python编写的游戏,但看起来有些是商业游戏,所以源代码无法显示给用户,游戏甚至应该在没有安装python的计算机上运行。所以我的问题是:它们是如何制作的?它们是与C ++代码结合使用还是内置于C ++程序中?

3 个答案:

答案 0 :(得分:2)

很多人使用PyGame或在PyGame之上构建自己的库。从理论上讲,是的,其中一些与C ++接口。例如,Mount和Blade的modding系统(被亲切地称为模块)完全用Python编程,使用主引擎的钩子。

我还没有看到在Python上开发的大量游戏,这可能是由于缺乏令人惊叹的GUI包。现有一些体面的2和3D图形包,但与Java,C#,C ++等语言相比,它们仍然非常有限。

最值得注意的是,Python是您链接到它的页面中列出的许多游戏的补充,它不是主要引擎。

答案 1 :(得分:1)

让我们先解决这个问题:

  

游戏应该在没有安装python的计算机上运行。所以我的问题是:他们是如何制作的

通常情况下,用Python(全部或部分)构建的游戏不依赖于用户的Python安装,而是捆绑自己的游戏。即使对于纯Python游戏,使用pyInstallerpy2apppy2execx_Freeze等工具也很容易。


  

源代码无法向用户显示

运输已编译的代码而非源代码几乎不能防止盗版,骗子,竞争对手窃取您的想法等。这对于任何商业游戏都不是一个问题。

其中一些类似文明IV明确地希望用户看到(某些)源代码,作为模型的示例代码和/或API文档。


最后:

  

它们是与C ++代码结合使用还是内置于C ++程序中?

嗯,首先,并非每个本机程序都是用C ++构建的。 OS X和iOS期望在Objective C中完成复杂的GUI工作.Gtk +期望它在C(或Vala,或......)中完成。 Android需要Java。只有Windows才真正需要C ++。

但除此之外,你的问题没有一个答案。在游戏中有多种使用Python的方法,几乎​​所有这些方式都被列表中的不同游戏使用。例如:

在像Eve Online这样的在线游戏中,服务器可以用纯Python(或用其他语言编写的Web服务器后面的Python应用程序)编写,即使客户端是完全写入的不同的语言。 (在网页游戏的情况下,客户端显然是用JavaScript + HTML + CSS或ActionScript / Flash编写的。)游戏逻辑的难点主要在服务器上,这就是你想要轻松实现的部分。写。

即使在本地游戏中,您也可以将游戏分为界面和引擎。同样,这意味着游戏逻辑的难点在于引擎,您可以使用Python编写它以使其易于编写,而必须具有闪电响应并使用特定于平台的功能的部分可以是C ++或ObjC或任何适合该平台的东西。

即使在引擎中,您也可以通过为要使用的Python代码构建自定义C扩展,或者通过在C app中嵌入Python解释器来组合C(或C ++,甚至Java或.NET)和Python代码,或者两者。

当然你也可以在Python中编写接口本身,最常见的是使用PyGame。

如果你真的想要用C语言实现的引擎写一个PyGame接口,你可以向后转动所有内容,这个引擎与用JavaScript编写的服务器通信。这并不像对面那样普遍,但没有什么可以阻止你做这件事。

所以,Eve Online有一个纯Python服务器。 Civilization IV在其引擎中嵌入了Python解释器。使用PyGame时,Frets on Fire就是所有Python。等等。

答案 2 :(得分:0)

这些程序中的大部分主要是用C或C ++编写的,然后Python解释器就是embedded。本机代码提供了Python代码可以检查和操作的模块和对象,以便影响本机结构。