Compiling LÖVR

Compiling the LÖVR code yourself lets you create a custom LÖVR build so you can add your own features or run it on other operating systems. Below is a guide for setting up all the dependencies and compiling the code on various types of systems.

Dependencies

LÖVR depends on the following libraries. They are included as submodules in the deps directory of the repository, so make sure you clone with the --recursive flag or run git submodule update --init in an existing repository.

Windows

From the lovr folder, run these commands to create a build folder and compile the project using CMake:

$ mkdir build
$ cd build
$ cmake ..
$ cmake --build .

The executable will then exist at /path/to/lovr/build/Debug/lovr.exe. A LÖVR project (a folder containing a main.lua script) can then be dropped onto lovr.exe to run it, or it can be run via the command line as lovr.exe path/to/project.

macOS

Install the dependencies using your package manager of choice:

$ brew install assimp glfw3 luajit physfs openal-soft ode libccd

Next, build using CMake, as above:

$ mkdir build
$ cd build
$ cmake ..
$ cmake --build .

The lovr executable should exist in lovr/build now. It's recommended to set up an alias or symlink so that this executable can be found in your PATH environment variable. Once that's done, you can run a project like this:

$ lovr /path/to/myGame

You may need to set the PKG_CONFIG_PATH environment variable for OpenAL to be located properly. If you run into this, see Troubleshooting below for more info.

Linux

First, install the dependencies using your package manager of choice.

Arch Linux

$ pacman -S assimp glfw-x11 luajit physfs openal ode

Debian/Ubuntu

$ sudo apt-get install build-essential cmake libassimp-dev libglfw3-dev libluajit-5.1-dev libphysfs-dev libopenal-dev libode-dev

Then, build with CMake:

$ mkdir build
$ cd build
$ cmake ..
$ cmake --build .

On Linux, LÖVR needs to run within the Steam Runtime. To do this, first install Steam. Next, install the Steam udev rules. Then, run LÖVR within the Steam runtime:

$ ~/.steam/steam/ubuntu12_32/steam-runtime/run.sh lovr

If you receive errors related to libstdc++, set the LD_PRELOAD environment variable when running the command:

$ LD_PRELOAD='/usr/$LIB/libstdc++.so.6 /usr/$LIB/libgcc_s.so.1' ~/.steam/steam/ubuntu12_32/steam-runtime/run.sh lovr

WebVR

First, install the Emscripten SDK.

Unix:

$ mkdir build
$ cd build
$ emcmake cmake ..
$ emmake make -j2

Windows (from a Visual Studio Command Prompt, make sure the Emscripten SDK is on PATH):

$ mkdir build
$ cd build
$ emcmake cmake -G "NMake Makefiles" ..
$ emmake nmake

The above commands will output lovr.js, lovr.wasm, and lovr.html. The easiest way to run LÖVR from here is to use emrun:

$ emrun --browser firefox lovr.html

To package a game, run:

$ python "$EMSCRIPTEN/tools/file_packager.py" game.data --no-heap-copy --preload /path/to/game@/ --js-output=game.js

Which will output game.js and game.data. You can then include the game.js script on the HTML page (before the lovr.js script tag) to run the project.

For an improved WebVR workflow with live-reloading, check out lovr-webvr-server.

Troubleshooting