使用Cython进行游戏开发?

2024-04-29 13:47:31 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Cython作为游戏的主要编程语言有多实际?

我是一个经验丰富的Python程序员,我非常喜欢它,但我是一个公认的新手,尤其是在游戏编程方面。我知道通常Python被认为太慢,不能进行任何严肃的游戏编程,这就是Cython对我来说很有趣的原因。使用Cython,我可以以C的速度使用类似Python的语言

<>我知道我可能需要学习一点C/C++,但是看起来Cython会在比较中加快开发时间。

那么,它实用吗?我还能使用像OpenGL、OpenAL和子弹物理之类的C/C++库吗?


Tags: 语言游戏编程时间物理原因编程语言速度
3条回答

在这个日期(2011年4月12日),unixmab83是错误的。

Cython并不禁止使用线程,您只需要使用no-gil特殊语句。

在cython中,除了c++的绑定之外,现在也可以使用了。

我们用它来做一些接近gamedev的东西。所以,虽然我不能在这方面做最后决定,但赛顿是一个有效的候选人。

我是Ignifuga Game Engine的开发人员,它面向2D,基于Python/Cython/SDL。我通常做的是用Python开发代码,然后分析引擎,看看是否存在一些明显的瓶颈(主循环、呈现代码是很好的候选者),然后将这些模块转换为Cython。然后,我通过Cython运行所有代码(基于Python和Cython),并针对SDL进行静态编译。 Cython的另一个大“优点”是绑定到SDL或任何基于C的库几乎是微不足道的。 关于线程,引擎目前是单线程的,通过Greenlets协同执行多任务,尽管这来自于一个设计决策,以减轻未经经验的开发人员可能会陷入的潜在多线程陷阱,而不是对Cython部分的限制。

如果你正在使用这样的组合,并且你的目标是编写一个3D游戏,那么你可能会从一个现成的3D引擎中获得更好的里程数,该引擎具有成熟的物理和音频绑定,以及类似于OGRE 3DPython-OGRE)或Panda3D的Python API。即使你没有,这篇关于using Cython with Panda3D的文章可能会有帮助。

我现在还不确定,但是back in 2007,两者之间的取舍基本上是:

  • BANDA3D是从一个C++ C++加速的Python引擎中得到的更好的文档化和设计(很显然,他们做出了一些不为C++引擎项目所做的API设计决定),并且可以预见的是,有一个更成熟的Python API。
  • PyOgre建立在一个更先进的引擎之上,拥有一个更大、更充满活力的社区。

……不过,考虑到时间的推移,很有可能已经发生了变化,2007年,Panda3D仍持有GPL不兼容的许可证,这让很多人望而却步。(包括我自己)

相关问题 更多 >