纯Python能否编写像《魔兽世界》这样大型的3D游戏?假设使用DirectX/D3D绑定或OpenGL绑定。
如果不能,那么在Python中完成这样的项目最大的障碍是什么?我知道游戏通常属于C和C++领域,但有时人们会出于习惯而选择其他语言!
任何信息都将有助于满足我的好奇心。
编辑:
GIL对3D客户端性能是否会造成重大影响?使用OpenGL或DirectX绑定相对于本地使用库的一般性能惩罚是多少?
纯Python能否编写像《魔兽世界》这样大型的3D游戏?假设使用DirectX/D3D绑定或OpenGL绑定。
如果不能,那么在Python中完成这样的项目最大的障碍是什么?我知道游戏通常属于C和C++领域,但有时人们会出于习惯而选择其他语言!
任何信息都将有助于满足我的好奇心。
GIL对3D客户端性能是否会造成重大影响?使用OpenGL或DirectX绑定相对于本地使用库的一般性能惩罚是多少?
是的,但它的性能如何还有待观察。
一个好的开发模式是先用纯Python开发,然后进行性能分析,将性能关键瓶颈重写为C/C++/Cython甚至更高效的Python代码。
虽然我不知道《魔兽世界》的所有技术细节,但我认为像它这样规模的大型 MMO 游戏可以使用Stackless Python来构建。
EVE Online 使用了它,他们只有一个服务器,支持 20 万用户。
从技术上讲,在任何图灵完备的编程语言中都可以实现任何功能。
但在实际应用中,如果使用高级语言构建网络堆栈,服务器需要非常快才能处理如此多的玩家,这将会遇到麻烦。
客户端的游戏部分应该没有问题,因为GUI、任务或键盘输入等内容并不太复杂。
问题将出现在服务器上需要进行的计算密集型操作上。如果某些操作需要立即完成且涉及到一万个用户以上,最好使用C语言编写的外部库。
现在可能会有一些Python大师出来反驳我的话,因为正如我在开头所说,从技术上讲,只要付出足够的努力,任何事情都是可以做到的。
游戏Minions of Mirth是一个完整的MMO,与魔兽世界差不多规模,并且主要使用Python语言进行开发。客户端使用了Torque游戏引擎,该引擎由C++编写,但服务器代码和行为都是用Python实现的。
是的,你可以使用汇编、Java、Python或brainfuck来编写它。这只取决于你愿意花多少时间去做它。语言性能已经不再是一个主要问题了,更重要的是你使用哪些算法,而不是你使用什么语言。
针对你的具体问题,“...用纯Python实现...” 答案是否定的。
Python的速度不足以有效地调用OpenGL或DirectX以在可接受的帧速率下重新创建《魔兽世界》。
像许多其他人已经回答的那样,假如有一些高级框架,使用Python作为脚本语言是可能的,但至少需要另一种语言(比如C++)编写的某种图形系统来处理图形。对于网络部分,考虑到WoW不是动作游戏,你可能可以使用纯Python,但最有可能需要一些非Python库。