LÖVR projects can be exported to standalone executables or WebVR projects. This guide will teach you how to export and distribute a project.
Creating an Archive
The first step is to create an archive of your project, which is a zipped up version of its
contents. On Windows you can select all the files in a project (not the project folder), right
click them, and choose "Send to" -> "Compressed (zip) folder". On Unix systems, the
can be used:
$ zip -9qr .
A zip archive can be run with LÖVR but isn't a standalone executable yet.
Creating an Executable
Once you have a project archive, it can be appended to the LÖVR binary to create a standalone executable. On Windows, this can be done using the command prompt:
$ copy /b lovr.exe+MyProject.zip MyProject.exe
On Unix systems, the
cat utility can be used to concatenate the two files.
Once you have an executable, be sure to distribute it with all the
.dllfiles that came with the original LÖVR download.
To create a .app on macOS, first get the stock LÖVR.app, either by downloading it
here or by setting the
-DLOVR_BUILD_BUNDLE=ON flag when building
Then, to get the .app to run a custom project instead of the nogame screen, put a .lovr archive in
LÖVR.app/Contents/Resources folder (right click and use "Show Package Contents" to get to the
Contents/Info.plist should be modified. The
CFBundleName entry should be changed from
"LÖVR" to the name of the project, and the
CFBundleIdentifier should also be changed to a unique
ID for the project/studio name. The
Resources/lovr.icns file can be replaced with a custom icon
LÖVR.app can be renamed to
Awesome VR Project.app and distributed as a zip.
To package a game for use in a browser, you can use the
file_packager script that comes with the
$ python "$EMSCRIPTEN/tools/file_packager.py" game.data --no-heap-copy --preload /path/to/game@/ --js-output=game.js
This will output two files:
game.data (note that the
@/ suffix is important). The
game.js file downloads the
game.data contents and mounts it into the Emscripten filesystem,
which LÖVR will then run at startup.