简单可执行的 Love2D 文件,或者,你可以在一个 Zip 文件的开头塞入随机数据,基本上没什么问题

主要观点:介绍使用 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文件设置为可执行权限。
阅读 13
0 条评论