Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 游戏交叉编译与打包_Python_C_Cross Platform_Packaging_Cross Compiling - Fatal编程技术网

Python 游戏交叉编译与打包

Python 游戏交叉编译与打包,python,c,cross-platform,packaging,cross-compiling,Python,C,Cross Platform,Packaging,Cross Compiling,我和一些朋友想开发一款游戏。任何语言都可以。我已经用C语言编程多年了,但以前从未写过游戏。我们中有一个人对SDL略知一二。这也是学习Python+pygame的一个很好的借口 我们希望我们的游戏是“独立的”。所谓单机版,我的意思是大多数用户(至少Linux、Mac和Windows)不需要手动下载和安装软件包之外的任何东西。如果安装自动处理缺少的依赖项,则可以。如果包中包含二进制文件,我们希望能够使用Linux的交叉编译生成它们 我们应该如何包装和组织项目,以及哪种语言最适合?看看;是手电筒灯后面

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

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

我们应该如何包装和组织项目,以及哪种语言最适合?看看;是手电筒灯后面的引擎。它支持Windows、Ubuntu、MacOS和iPhone


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

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

OpenGL基本上是内置在每个平台上的,所以您只需要启动一个全屏窗口,让OpenGL处理图形。对于交叉编译,我建议C++。它将允许您为在每个平台上编译的应用程序的窗口初始化编写单个代码


如果您决定使用python,那么wxWidgets也有一个功能。在这种情况下,您也需要使用python。

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

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

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

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


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

对于休闲游戏,我推荐Flash

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

使用Pygame,您几乎不用花时间编写“胶水”或处理诸如窗口管理和声音设置之类的普通低级细节-您几乎可以立即编写游戏逻辑,并且在任何时间内您都可以左右移动
blit
。更重要的是,这将是非常容易得到一个原型,你的游戏运行,这样你就可以开始实验的机制-我已经编写了一个简单的小侧滚动平台在几个小时内

演出 Python和Pygame的性能对于简单的游戏来说通常是不错的,尽管“平滑滚动”游戏的性能可能很差,特别是在Linux上(根据我的经验,至少-
Pygame.display.update()
在Linux上每帧需要15-30毫秒,在Windows上每帧需要4-5毫秒,使用cheapo Intel图形,尽管这是两年前的事了,Linux Intel驱动程序最近有所改进)。此外,如果你有物理/数学方面的知识,重代码可以给你巨大的加速(在某些情况下是20%-200%),尽管在x86计算机上你只能使用32位Python

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

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

跨平台考虑事项
就跨平台而言-(对于Windows)和(对于Mac)允许您构建包含依赖项的单个可执行文件(包括Python解释器和Pygame);但是,我认为您无法从Linux环境构建可执行文件(您可能需要借用Windows/Mac计算机几分钟)。对于Linux,您可能只需要分发一个.deb,其中将Pygame列为依赖项(如有必要,将Psyco列为推荐项或建议项)。

我建议您在QT上开发它。。。QT将自行处理大多数可移植性问题。。。因此,您不必担心它,而且它支持大多数平台