Arcade:适合少儿Python入门的游戏框架
最近在教几个小学三年级孩子学Python,重新梳理了一下Python游戏框架和艺术/创意框架。(游戏部分主要参考top-python-game-engines。)主要有些Python游戏框架:
- Arcade,比Pygame更现代,适合Python入门,包括儿童
- 支持Python类型提示
- 面向对象的编程范式,简单应用也可以面向过程
- 精简的模板代码
- 优秀的社区,完善的教程、样例和文档,内置资源
- 使用OpenGL和Pyglet
- 更现代和完善的游戏架构
- 支持基于帧的动画精灵
- 有物理引擎
- 相机、粒子、GUI、视图(小窗)、瓷砖地图、寻路……
- Pygame,老派代表
- Pygame Zero,简单易用,适合儿童Python教育
- Wasabi2d,比Pygame更现代,但不太成熟
- Adventurelib,文字冒险游戏框架,以上三个库出自Daniel Pope
- Ren’Py,视觉小说游戏框架,可用来用来做教育应用
这次发现Arcade很好。以前粗粗看过,感觉比较复杂,不适合孩子入门。这次上手试了试,感觉各方面都不错,大人孩子都适合,强烈推荐。
模板代码简洁#
Arcade模版代码的简洁不亚于pgzero。比如在窗口上画一个圆:
1 2 3 4 5 6 7 8 9 10 |
|
让圆移动起来:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
面向对象编程#
刚才这种面向过程的样式,主要用来画图或简单动画。 游戏一般用面向对象的样式,也不繁杂。如同位置反复画一个圆:
1 2 3 4 5 6 7 8 9 |
|
简单的动画(为简明期间,暂不用on_update()和实例变量):
1 2 3 4 5 6 7 8 9 10 11 |
|
文档和教程完善#
Arcade官方的例子、教程很多。
- 各功能体验可以看 How-To Example Code
- 要获得整体概观,可以看一个比较完整的平台游戏platformer-tutorial
他们有一个面向初学者的教程,除了讲Arcade,还包括计算原理,开发环境准备,git,Python基础,等等,可供老师们参考,根据学生情况选用。
另推荐realpython.com的入门教程arcade-python-game-framework,有一些原理性的解释,适合教师和自学的成人
也可参考我的Arcade学习笔记。
开发和社区活跃#
相对于Pygame而言,Arcade是新秀,但社区已经比较成熟。比如代码库星标已有1.4k(Pygame是5.9k),开发活跃。
从官网和Discord社区看,Arcade主要面向Python教育场景。它还内置了一些多媒体资源,可能也是这个原因。命名多用完整的词语、规律的组合,不嫌长;而Pygame较多地用缩写,有极客范。
新框架的优势#
它还有新框架的优势。
比如支持Python类型提示,这一点对初学者很重要。Pygame Zero的一个重要问题就是需要预先导入很多对象,否则编辑器无法探测到它们(尽管运行时会自动导入)。
它的游戏架构也更现代,更完善,比如支持基于帧的动画精灵,有物理引擎,还有相机、粒子、GUI、视图(小窗)、瓷砖地图、寻路等,这些往往是成熟游戏框架才又有的。
在性能方面,它跟Pygame大概更有优劣。可参考Arcade官方所做的功能和性能对比(部分内容过时),第三方的性能测评(注意评论中有重要的更新信息)。
其他#
如果说对初学者有什么障碍的话,可能主要是类继承。类与实例,类成员与实例成员,实例的初始化,这些基础概念有些抽象。
另,p5系列的Python框架没有合用的,艺术、创意方向也可以直接用Arcade。详见常用软件、语言和框架数字艺术部分。