根据这个清单---> http://en.wikipedia.org/wiki/List_of_Python_software#Video_games有几个用python编写的游戏,但看起来有些是商业游戏,所以源代码无法显示给用户,游戏甚至应该在没有安装python的计算机上运行。所以我的问题是:它们是如何制作的?它们是与C ++代码结合使用还是内置于C ++程序中?
答案 0 :(得分:2)
很多人使用PyGame或在PyGame之上构建自己的库。从理论上讲,是的,其中一些与C ++接口。例如,Mount和Blade的modding系统(被亲切地称为模块)完全用Python编程,使用主引擎的钩子。
我还没有看到在Python上开发的大量游戏,这可能是由于缺乏令人惊叹的GUI包。现有一些体面的2和3D图形包,但与Java,C#,C ++等语言相比,它们仍然非常有限。
最值得注意的是,Python是您链接到它的页面中列出的许多游戏的补充,它不是主要引擎。
答案 1 :(得分:1)
让我们先解决这个问题:
游戏应该在没有安装python的计算机上运行。所以我的问题是:他们是如何制作的
通常情况下,用Python(全部或部分)构建的游戏不依赖于用户的Python安装,而是捆绑自己的游戏。即使对于纯Python游戏,使用pyInstaller
,py2app
,py2exe
,cx_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代码可以检查和操作的模块和对象,以便影响本机结构。