使用 PICO-8 开发迷宫小游戏
PICO-8 是一个虚构游戏平台(Fantasy Console),可用于开发、运行一些复古的像素风格的小游戏。它有很多限制,比如输出只有固定的 128*128 的分辨率,只能使用 16 种颜色等等,这些限制让 PICO-8 保持足够简单,迫使开发者将精力集中在游戏的创意本身,从而快速开发出一些小游戏或者游戏原型,快速验证一些想法是否可行。
PICO-8 使用 Lua 作为编程语言,但并不是标准 Lua,而是一个精简过同时添加了一些新内置函数的 Lua。基本语法与标准 Lua 一致,可用的方法基本上看下面总结出的 Cheat sheet 就可以:
完整的文档见:https://www.lexaloffle.com/pico8_manual.txt 。
看过文档介绍之后,我决定试用一下,便尝试着将以前用 JavaScript 开发的迷宫游戏移植到 PICO-8 平台。
关于迷宫的生成算法就不多介绍了,大致原理可见这篇文章以及这篇文章。下面记录一下主要开发过程。
开发
首先启动 PICO-8,可以看到类似下面的画面:
看起来很像一个命令行终端,在这儿也的确可以输入一些命令,比如 ls
列出当前目录下的所有文件等。
但与普通终端不同的是,按 ESC
键可以在终端以及编辑器之间切换。编辑器界面类似下图:
在这个界面可以输入代码,进行游戏编辑。不过这个分辨率实在太低,字母看起来实在费眼,还好 PICO-8 也支持使用外部编辑器。
再按 ESC
键退出编辑器,在命令行界面输入 save [filename]
命令可将文件保存到硬盘,比如输入 save maze
,刚才编辑的文件就会被保存为 maze.p8 文件,输入 ls
命令可查看当前工作目录下的所有文件。然后,一个很重要的命令来了,输入 folder
命令,即可使用系统的资源管理器打开 PICO-8 的当前工作目录。
PICO-8 生成的文件后缀名是 .p8
,其实就是纯文本文件,其中一部分是 Lua 源码,一部分是精灵、地图等文件。你可以用你习惯的编辑器打开刚才生成的 maze.p8 文件进行编辑。如果你使用 Visual Studio Code,还可以在插件市场找到 PICO-8 对应的插件。
然后就可以愉快地编写 Lua 代码了。注意 PICO-8 的代码有几个特殊方法,分别是:
_init()
会在初始化时调用一次。_update()
每秒调用 30 次,可以将各种状态更新的方法放在这里。对应的还有一个_update60()
方法,每秒调用 60 次。_draw()
绘制每一帧时调用,可以在这个方法中调用各种绘制方法。
完整代码可见:https://gist.github.com/oldj/5a0a302a42a251bfb930e692bbd7376a 。
效果
最终,迷宫游戏的运行效果如下:
PICO-8 的作品可以非常方便地导出多种格式,比如本地原生可执行文件(支持 Windows/macOS/Linux),也可以导出为 HTML。所有的导出都只需在 PICO-8 命令行中使用 export
命令即可完成。
这个迷宫游戏的 HTML 版本在线地址为:https://oldj.net/static/pico-8/maze/index.html 。
小结
PICO-8 是一个很容易上手的小游戏开发平台,可以用于快速试验一些想法。同时,由于上手简单,或许也可以作为儿童编程教育的一个选择。
简单是 PICO-8 的优点,同时也是它的缺点,经过一两天的折腾,我觉得主要有两个缺点:
- 调试比较困难。目前只能通过
printh()
方法将日志打印出来进行查看,没有断点调试之类的功能支持; - 对 Lua 的支持有限,比如不支持标准库里的
table.xxx
方法,导致很多网上优秀的基于标准 Lua 写的第三方库无法使用。
总体来说,如果你喜欢复古的像素风格的游戏,PICO-8 值得玩一下。
评论: