Jon*_*Jon 1 python pygame pyglet game-engine
我想在Python中制作一个2D侧滚动游戏,但是我不确定要使用哪个库.我知道PyGame(3年内没有更新),Pyglet和PyOpenGL.我的问题是我找不到任何用Python制作的实际游戏,更不用说这些库 - 所以我不知道它们在现实世界中的表现如何,或者即使它们中的任何一个适合用于实际的比赛,而不是比赛.
任何人都可以对这些图书馆有所了解吗?PyGame是否仍然有效使用?Pyglet值得吗?他们中的任何一个都被用来制作游戏吗?还有其他我忘了的图书馆吗?
老实说,我甚至不确定我是否想要使用Python,它似乎太慢,未经证实(对于仅用Python编写的游戏)等等......我还没有找到任何主要用Python制作的游戏,当然,那个已售出.如果我最终没有使用Python,那么第二个/更好的选择是什么?Java的?LUA?
Pygame只是SDL的一个包装器,所以在技术上很多游戏都是使用它制作的,大部分工作都是在C端完成的.这有点慢,但如果你正在进行2D游戏,那就足够了.Frets-on-Fire是用PyGame用纯python编写的,而FoFiX是用带有C扩展的python编写的,这些游戏都非常棒,而且在较慢的计算机上,FoFiX可能无法运行4个播放器.
Pyglet也很不错,虽然我只用它来模拟器开发,绘制单层,所以我不知道它对游戏开发的实际效果如何.我发现使用Pyglet直接使用OpenGL要比使用SDL/PyGame更容易,所以如果你正在做一个3D游戏,它可能比使用SDL更好.此外,由于它是用python编写的,因此扩展类以更改函数的处理方式非常容易.例如,我试图通过pyglet Texture类将数据加载到openGL纹理中,但是类无法以我想要的格式加载数据,所以我扩展了该类并更改了获得纹理类型的函数(来了)从一个字符串)包括我想要的纹理,快速和无痛.
我没有看到的一个库是SFML.2.0 API(目前处于测试版)非常出色且易于使用,如果我没记错的话,运行速度比SDL快一点.它也比SDL更"面向对象",如果您使用的是像Python这样的OO语言,这非常好.它有一些很好的Python绑定,由Bastien Leonard在Cython中编写,非常易于使用(或者如果你不想使用最新的版本,你可以使用旧的C绑定).我曾经用过一段时间,这是一次非常愉快的经历.
之所以没有很多使用Python的游戏很简单:你无法关闭Python源代码.即使你使用Py2Exe将python"编译"成可执行文件,它实际上只是将解释器和python源打包成exe文件,只需在十六进制编辑器中打开exe即可获得源代码.
虽然我是"用Python编写它,在C中编写时间关键部分"的支持者,如果你觉得python太慢了,我可能建议使用C或者最好是C++作为前进的方式,因为你没有在Java中获得那么多的可用性优势,而且C语言的运行速度比Java快得多,而Lua只会消除Python的一些可用性,而不会给你带来任何明显的性能提升.SFML和SDL都可以直接从C(++)中使用.
建议如果你决定使用python:使用它,因为它应该被用作脚本语言.不要试图玩弄位或纯Python加载图像,或者使用可用的接口库您选择(它们都有那些各种各样的东西很好的接口),或者写一个扩展模块来为你做的.使用python进行逻辑控制并从库中获取数据.如果你遵循这个简单的规则,你真的不应该遇到任何性能问题.
| 归档时间: |
|
| 查看次数: |
5875 次 |
| 最近记录: |