我是Ignifuga Game Engine的开发人员,它面向2D,基于Python/Cython/SDL。我通常做的是用Python开发代码,然后分析引擎,看看是否存在一些明显的瓶颈(主循环、呈现代码是很好的候选者),然后将这些模块转换为Cython。然后,我通过Cython运行所有代码(基于Python和Cython),并针对SDL进行静态编译。
Cython的另一个大“优点”是绑定到SDL或任何基于C的库几乎是微不足道的。
关于线程,引擎目前是单线程的,通过Greenlets协同执行多任务,尽管这来自于一个设计决策,以减轻未经经验的开发人员可能会陷入的潜在多线程陷阱,而不是对Cython部分的限制。
在这个日期(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 3D(Python-OGRE)或Panda3D的Python API。即使你没有,这篇关于using Cython with Panda3D的文章可能会有帮助。
我现在还不确定,但是back in 2007,两者之间的取舍基本上是:
……不过,考虑到时间的推移,很有可能已经发生了变化,2007年,Panda3D仍持有GPL不兼容的许可证,这让很多人望而却步。(包括我自己)
相关问题 更多 >
编程相关推荐