【番外#001】Python开发游戏如何选择引擎?
1.介绍
使用Python开发游戏,大多数情况下都会直接想起 PyGame 这个库。但是,PyGame本身是基于SDL的,没有3D支持,并不是一个完整的游戏引擎库。可以当作一个新手入门的玩具,不适合正式项目的开发。
Panda3D 是一款3D游戏引擎库,带有完整的3D游戏引擎模块,支持Python和C++,官方也在一直持续更新迭代。
Panda3D的Python绑定是自动生成的,核心库使用C++开发,这对我们日后可能需要使用C++重构项目提供了非常可靠的基础。不过,稍微有点遗憾的是Panda3D没有官方的移动端支持,但是我们目前没有移动端计划,所以最终决定使用Panda3D来开发。
Panda3D 能实现什么效果?
这里给大家看下 Github 上一位大佬的技术作品,用Panda3d Python版本实现的 PBR(基于物理渲染)延迟渲染管线 效果。
传送门: PBR RenderPipeline
森林
材质 Demo
屏幕空间反射
汽车渲染
插件和时间编辑器
地形和体积云
视频展示
2.Panda3D
最新版本: 1.10.10
官方支持: Windows, macOS, Ubuntu
3.安装与使用
- Panda3D SDK for Windows: 带有MakeNSIS
- Python: 3.8
- OS: Windows 10
- Panda3D: 1.10.10
shell
pip install panda3d==1.10.10
4.First App
代码
main.py
python
# -*- encoding: utf-8 -*-
import sys
from direct.showbase.ShowBase import ShowBase
class MyApp(ShowBase):
def __init__(self):
ShowBase.__init__(self)
self.accept("space", self.updateKeyboard, ["space"])
self.accept("w", self.updateKeyboard, ["w"])
self.accept("q", self.updateKeyboard, ["q"])
def updateKeyboard(self, keycode):
if keycode == 'q':
sys.exit()
print('Pressed', keycode)
if __name__ == '__main__':
app = MyApp()
app.run()
setup.py
python
# -*- encoding: utf-8 -*-
from setuptools import setup
setup(
name="Demo",
options = {
'build_apps': {
'gui_apps': {'Demo': 'main.py'},
'platforms': [
'win_amd64'
],
'plugins': [
'pandagl',
],
},
'bdist_apps': {
'installers': {
'win_amd64': 'nsis'
}
}
}
)
运行结果
5.发布
Windows平台使用NSIS打包需要将SDK中的MakeNSIS目录添加到Path中。
shell
pip freeze > requirements.txt
python setup.py build_apps
python setup.py bdist_apps