当前位置:  开发笔记 > 编程语言 > 正文

是否有可能在纯Python中编写像魔兽世界一样大的3D游戏?

如何解决《是否有可能在纯Python中编写像魔兽世界一样大的3D游戏?》经验,为你挑选了8个好方法。

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

如果没有,那么用Python做这样一个项目最大的阻碍是什么?我知道游戏往往属于C和C++领域,但有时候人们会习惯做事!

任何信息都有助于满足我的好奇心.

编辑:

GIL会发布关于3d客户端性能的重大问题吗?使用say,OpenGL或DirectX绑定与本机使用库的一般性能损失是什么?



1> nosklo..:

是.它将如何表现是另一个问题.

一个好的开发模式是在纯python中开发它,然后对它进行分析,并重写性能关键的瓶颈,无论是在C/C++/Cython中,还是在python本身,而是使用更高效的代码.


实际上,这将是一个糟糕的发展模式.没有一个像这样的成功游戏.关于什么表现良好而不是在游戏中有很多科学,没有达到主要重写的开发成本.例如,您不会在python中编写网络,冲突或图形模块.
我会.到目前为止,它对我来说效果很好.

2> Robert S...:

虽然我不知道魔兽世界的所有技术细节,但我会说,它的大小的MMO可以用Stackless Python构建.

EVE Online使用它,他们有一个服务器,可以容纳200,000个用户.



3> Karl..:

从技术上讲,任何Turing Complete编程语言都可以实现.

实际上,你会遇到很难用高级语言制作网络堆栈的问题,因为服务器必须非常快速地处理这么多玩家.

在客户端的游戏方面,应该没有问题,因为没有什么太复杂的GUI或任务或键盘输入和你有什么.

问题将出在服务器上计算密集的任何问题上.像登录一样在人工时间发生的任何事情可能都会很好,但如果某些东西需要瞬间超过一万用户,你可能想要用C完成的外部库.

现在,一些Python大师将从木制品中走出来并撕掉我的头,因为正如我在顶部所说的那样,从技术上讲,任何事情都可以通过足够的努力来完成.


"从技术上讲,任何Turing Complete编程语言都有可能实现." 好吧,至少在通用车床上可能做到的任何事情.:)

4> Tim Sullivan..:

游戏Minions of Mirth在魔兽世界的规模上或多或少是一个完整的MMO,主要是用Python完成的.客户端使用Torque Game Engine,它是用C++编写的,但服务器代码和行为都是Python.



5> Malfist..:

是的,你可以用汇编语言,Java语言,Python语言或者脑袋来编写它.这是你愿意投入多少时间.语言性能不再是主要问题,它更多地是关于您使用哪种算法,而不是您使用的语言.


有人从未试图在phython中编写详细的物理模拟,或者在MATLAB中运行复杂的计算机视觉算法.我们还没有达到所有语言在性能方面都具有可比性的阶段,相信我!
+1提及脑袋,因为我是相反的

6> Sasha Chedyg..:

由于您的主要问题已经得到了很好的回答,我将回答您的后续问题:

GIL会发布关于3d客户端性能的重大问题吗?

在Python 2.6中,引入了多处理库,因此您可以利用多个处理器内核而无需担心GIL.Stackless Python也有一些非常酷的相关内容.

使用say,OpenGL或DirectX绑定与本机使用库的一般性能损失是什么?

我没有任何基准来支持它,但使用绑定与本机库的惩罚足够小,你不必担心它.



7> sean riley..:

除了Eve Online之外,还有一些其他真实的行业示例.90年代后期在Origin的Ultima Online 2项目上的服务器后端主要是基于C++服务器基础架构的Python,而来自NCSoft的晚期Tablua Rasa游戏(与大多数相同的开发团队)具有相同的架构.

在扭曲的矩阵蟒蛇服务器架构与此完全相同的目标最初创建-实际上是从当时的UO2项目的开发,并有一个叫做Ninjaneering公司,试图通过MMO项目的代码基商业化.

作为脚本引擎(例如EQ2)已经朝着lua迈进,因为它更容易嵌入和实例.

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

从90年代中期看出这篇论文:

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



8> gman..:

我认为您的具体问题的答案是"......纯粹的Python ......"答案是否定的.

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

像许多其他人一样回答,鉴于一些高级框架工作,可以使用Python具有脚本语言,但至少你需要某种用C++等其他语言编写的图形系统来处理图形.对于网络,假设WoW不是一个动作游戏,你可能能够逃脱纯Python,但很可能那部分也需要是一些非python库.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有