主要观点:介绍使用 LÖVE(写作love
)编写图像查看器,探讨多种打包和分发 love 项目的方式,包括创建.love
文件并在其中包含源代码和资源,还尝试将.love
文件放入PATH
以便直接运行,如myprogram path/to/image.png
,并进一步研究在.love
文件中设置环境变量以及处理 zip 格式相关问题。
关键信息:
- LÖVE 主要用于用 lua 写游戏,可创建包含代码和资源的
.love
文件,运行时使用love path/to/myprogram.love
。 - 想将
.love
文件放入PATH
以便直接运行,尝试将.love
文件与 shell 脚本结合,发现不能用#!/usr/bin/env
设置环境变量。 - 研究发现使这种方式生效的关键是 zip 文件目录在文件末尾,而不是开头,导致偏移量错误,但仍可通过修改偏移量使其成为有效 zip 文件。
- 编写了一个脚本来生成 zip 文件,正确写入偏移量,可将 lua 文件和 png 放入其中,使用时需安装 zlib、cffi-lua 和 luaposix 库,且需 lua5.3 的
string.pack()
。
重要细节: - 示例中通过
zip
命令创建.love
文件,先将目录压缩为kaleidoscope.zip
,再在新文件kaleidoscope.love
中添加 shebang 和压缩文件内容,并设置可执行权限。 - 生成 zip 文件的脚本
create_zip
函数,通过遍历指定目录获取文件列表,计算文件的 crc32、压缩大小和未压缩大小等信息,正确写入 zip 文件的各个部分,包括本地头、中央目录条目和结束目录等。 - 脚本最后将生成的
.love
文件设置为可执行权限。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。