Skip to content

Devlog #002: 游戏引擎的选择

上一节提到,我打算使用Python语言来开发游戏。

目前能够使用Python作为开发语言的游戏引擎其实并不多:

  • 如果要做简单的2D游戏Demo,PyGame基本是首选;
  • 如果要做3D游戏,目前比较成熟的就是Panda3D和其衍生引擎Ursina了。

经过一段时间的考察,我发现这两款引擎的GUI框架都很简陋,用起来都很不方便,和Unity这种成熟的商业引擎相比,相差甚远。

关于 PyGame

PyGame作为Python游戏开发的入门框架,是非常好用的,值得推荐。但是,如果要做一个真正的游戏项目,PyGame的基础设施可以当作没有。如果你需要添加GPU渲染支持,或者说你想用OpenGL进行渲染,那你就得自己用PyOpenGL库自己造轮子。

TIP

  • PyOpenGL相关文章我之前写过,博客里可以搜到。
  • 如果你是因为对PyGame和OpenGL感兴趣才搜到这篇文章的,推荐一个比较新的OpenGL绑定给你

关于 Panda3D

Panda3D的长处是3D支持比较完善,但是内置的2D GUI框架也是比较简陋的,开发调试界面还勉强够用,如果开发业务逻辑,效率就非常低了。

为了给Panda3D拓展GUI框架,我尝试修改Panda3D引擎源码,尝试把Kivy框架集成到Panda3D中,让Kivy能使用Panda3D的渲染后端进行渲染。虽然最后也成功完成了Demo渲染和测试,但是如果要使用这个方案进行后续业务开发,依然有大量的兼容性问题需要处理。

归宿:自研引擎

最终,还是回到了自研引擎这条路上。虽然,自研引擎要自己处理的事情比较多,但无论是从技术上还是从效率上来说,每件事解决方案都是比较清晰的。我可以选择用自己最熟悉的技术方案,仅实现游戏核心业务需要的部分,也不用额外学习其他成熟引擎的各种自定义设计。

视频展示