第17章 love项目的web编译

本章介绍如何将love项目编译到web并发布

love项目的web编译

love在不同平台的编译并不像其他引擎那么方便,android和ios系统是从个人编译项目上合并到官方里的,在web上同样,是个人项目,它是利用Emscripten将love的源码转到了等价的js端口,然后运行时实际仍然是在使用lua的机制但是翻译成了js,而且没有jit了。项目的git,https://github.com/TannerRogalsky/love.js,如果你英文没啥问题,看一眼就不用看我下面写的了。

安装love.js

使用git工具来安装love.js到本地

1
git clone https://github.com/TannerRogalsky/love.js.git

这时,由于项目中有外接的子模块emscripten,单纯克隆项目不会下载外接子模块,因此需要再次使用git命令把项目下载全。

1
git submodule update --init --recursive

同时,这个项目还需要你安装python2.7。记住py2和py3不是一个东西,不兼容!下载地址自己任意选一个吧,安装好。

编译love项目到web

首先准备好你的游戏项目目录,注意,不需要打包成.love文件,而是源码文件夹。
把当前的文件目录(cd命令)设置为love.js/debug。别跟我说不会打这个命令或者不知道目录为何物哈。
使用命令行来打包项目

1
python ../emscripten/tools/file_packager.py game.data --preload [path-to-game]@/ --js-output=game.js

其中 [path-to-game]是你的love源文件目录,同时目录中不能有非ascii码(经常提的不能用中文目录,但是如果目录上加双引号应该就不会报错了)
目录名后面要紧接着@/,这是必要的
命令执行后,应该会在你的cd(debug目录)中产生两个文件:game.data,game.js.

本地测试

本地测试必须在服务器环境下才可以,仅仅打开目录下的index.html是不行的
运行下面命令来使用py搭建一个简易本地服务器

1
python -m SimpleHTTPServer 8000

运行窗体不要关,否则服务器也关闭了。
在浏览器中打开localhost:8000地址,就是一个文件服务器啦,你可以选择到debug下来运行相应页面。
如果在debug中没有问题,你就可以把game.data,game.js复制到发布文件夹下了。
注意,你能变动的只是这两个文件,其他的不要动。当然如果你懂如何写页面的话可以自己修改,但是跟游戏相关的只有上面两个文件。其他的文件是不通用的。
发布目录,有一个兼容性的和一个性能的,实际测试中后者经常出现各种问题。

发布到服务器

仅仅需要将你的release整个文件夹上传到服务器的指定目录就可以啦。你就可以在远端测试你的项目了。

https://alexarjing.github.io/demo/wave
笔者自己上传的一个love.js转码项目;注意第一次除了下载项目俩文件外,还要下载love.js文件,比较慢,需要等待一下。

实际测试中,项目的表现可能与你在本地.love运行的有一定差异,需要你自己进行调整,同时web端还不支持shader。