有可能用纯Python编写一个像魔兽世界一样大的3D游戏吗?

有可能用纯Python编写一个像魔兽世界一样大的3D游戏吗?,python,3d,direct3d,Python,3d,Direct3d,有可能用纯Python编写一个像魔兽世界一样大的3D游戏吗? 假设使用DirectX/D3D绑定或OpenGL绑定 如果不是,用Python做这样一个项目最大的障碍是什么?我知道游戏往往落入C和C++的领域,但有时人们习惯性地做事情!p> 任何信息都有助于满足我的好奇心 编辑: GIL是否会发布3d客户端性能的主要问题?使用OpenGL或DirectX绑定与本机使用这些库相比,一般的性能损失是什么。它将如何表现是另一个问题 一个好的开发模式是用纯python开发它,然后对它进行概要分析,并重写性

有可能用纯Python编写一个像魔兽世界一样大的3D游戏吗? 假设使用DirectX/D3D绑定或OpenGL绑定

如果不是,用Python做这样一个项目最大的障碍是什么?我知道游戏往往落入C和C++的领域,但有时人们习惯性地做事情!p> 任何信息都有助于满足我的好奇心

编辑:
GIL是否会发布3d客户端性能的主要问题?使用OpenGL或DirectX绑定与本机使用这些库相比,一般的性能损失是什么。它将如何表现是另一个问题


一个好的开发模式是用纯python开发它,然后对它进行概要分析,并重写性能关键瓶颈,或者用C/C++/Cython,甚至是python本身,但使用更高效的代码。

因为python是解释的,所以性能会受到影响,而不是C/C++,但是,不过,为了在更多的操作系统上运行,您可能需要使用类似PyOpenGL的东西,而不是DirectX


但是,我不明白为什么不能用Python编写这样一个游戏。

从技术上讲,任何图灵完整编程语言都是可能的


实际上,如果使用高级语言创建网络堆栈,您将遇到麻烦,因为服务器必须非常快才能处理这么多玩家

在客户端的游戏方面,应该没有问题,因为GUI、任务或键盘输入以及您拥有的一切都不太复杂

问题将出现在服务器上计算密集型的内容中。在人类时间内发生的任何事情,比如登录,可能都会很好,但是如果有什么事情需要超过一万个用户,那么您可能需要一个用C编写的外部库


现在,一些Python大师将从木构件中走出来,把我的头扯下来,因为正如我在顶部所说的,从技术上讲,任何事情都可以通过足够的努力来完成。

是的,你可以用汇编、Java、Python或brainfuck来编写它。这只是你愿意投入多少时间。语言性能不再是一个主要问题,更多的是关于你使用哪种算法,而不是你使用哪种语言。

虽然我不知道魔兽世界的所有技术细节,但我想说的是,它的大小可以内置MMO


EVE Online使用它,他们有一台可容纳200000用户的服务器。

这个游戏或多或少是一个完全的MMO,在魔兽世界的规模上,已经完成了。客户端使用了C++编写的扭矩游戏引擎,但是服务器代码和行为都是Python。

< P>因为你的主要问题已经得到了很好的回答,我将回答你的后几个问题:

GIL是否会发布3d客户端性能的主要问题

在Python2.6中,引入了该库,因此您可以利用多处理器内核,而不用担心GIL。还有一些很酷的相关东西

使用OpenGL或DirectX绑定与本机使用这些库相比,一般的性能损失是什么


我没有任何基准来支持它,但是使用绑定和本机库的代价很小,您不必担心它。

仅仅因为它可能提供有趣的阅读,文明部分是使用Python编写的。
谷歌会返回有趣的阅读材料。

除了Eve Online之外,还有一些真实的行业示例。在90年底的Ortha在线2项目上的服务器后端主要是Python在C++服务器基础结构之上,而来自NCSFoT(大多数同一DEV团队)的后期Tablua Rasa游戏具有相同的架构。 python服务器框架最初就是为了这个目标而创建的——实际上是当时UO2项目的开发人员创建的,有一家名为Ninjanering的公司试图通过MMO项目将代码库商业化

lua作为一个脚本引擎(如EQ2)已经得到了发展,因为它更易于嵌入和实现

在这种环境中,python的问题往往是语言之间的接口。当您不可避免地将一些高性能系统从python迁移到C/C++时,跨语言边界来回推送数据和跨语言边界调用函数就成了一个问题。如果做得不好,序列化的成本可能会很高。例如,使用早期版本的SWIG会将指针序列化为其字符串表示形式,然后将字符串解析回另一端的指针

查看90年代中期的论文:


但是,从长远来看,我认为这是可能的。

Python没有被解释——它被标记化了/“即时”字节码“解释”,并且不像Java那样有VM。这意味着,在英语中,它可以是daaaaaamnfast。虽然并非总是如此,这取决于问题和库,但python并不慢,这是一个常见的误解,即使是在知识渊博的人中也是如此(包括那些还没有尝试过python的深入java引擎的人)。

我认为您的具体问题的答案是,“…在纯python中…”答案是否定的

Python的速度不够快,无法有效地调用OpenGL或DirectX,无法以极高的帧速率重新创建魔兽世界

就像许多其他人所回答的那样,给定一些高级框架,可以使用Python有脚本语言,但至少需要使用C++之类的另一种语言编写的图形系统来处理图形。对于网络,考虑到魔兽世界不是一个动作游戏,你也许可以不使用纯python,但很可能这部分也需要一些非python库。