The lovr.conf callback lets you configure default settings for LÖVR. It is called once right before the game starts. Make sure you put lovr.conf in a file called conf.lua, a special file that's loaded before the rest of the framework initializes.

function lovr.conf(t)
  -- your code here


ttableThe table to edit the configuration settings on.
.versionstringThe version of LÖVR this project targets (not used yet).
.identitystringA unique label for this project.
.saveprecedencebooleanWhether the files in the save directory should have precedence over files in the source archive.
.modulestableThe set of enabled modules to use.
.audiobooleanWhether the audio module should be enabled.
.databooleanWhether the data module should be enabled.
.eventbooleanWhether the event module should be enabled.
.filesystembooleanWhether the filesystem module should be enabled.
.graphicsbooleanWhether the graphics module should be enabled.
.headsetbooleanWhether the headset module should be enabled.
.mathbooleanWhether the math module should be enabled.
.physicsbooleanWhether the physics module should be enabled.
.systembooleanWhether the system module should be enabled.
.threadbooleanWhether the thread module should be enabled.
.timerbooleanWhether the timer module should be enabled.
.audiotableConfiguration for the audio module.
.spatializerstringAn audio spatializer to use (simple, oculus, or phonon). If nil, all of them are attempted.
.startbooleanWhether the playback device should be automatically started.
.graphicstableConfiguration for the graphics module.
.debugbooleanWhether debug messages from the GPU should get sent to lovr.log.
.headsettableConfiguration for the headset.
.driverstableAn ordered list of preferred headset drivers.
.supersamplenumberA scaling factor to apply to the headset texture. Improves visual quality but reduces performance. Can also be a boolean.
.offsetnumberThe vertical offset for seated experiences.
.msaanumberThe amount of antialiasing to use when rendering to the headset.
.mathtableConfiguration for the math module.
.globalsbooleanWhether vector object functions should be added to the global scope.
.windowtableConfiguration for the window.
.widthnumberThe width of the window.
.heightnumberThe height of the window.
.fullscreenbooleanWhether the window is fullscreen.
.resizablebooleanWhether the window is fullscreen.
.msaanumberThe number of antialiasing samples to use.
.titlestringThe window title.
.iconstringThe path to the window icon file.
.vsyncnumber0 to disable vsync, 1 to enable.




Disabling the headset module can improve startup time a lot if you aren't intending to use lovr.headset.

You can set t.window to nil to avoid creating the window. You can do it yourself later by using lovr.graphics.createWindow.

If the lovr.graphics module is disabled or the window isn't created, attempting to use any functionality requiring graphics may cause a crash.

Enabling the t.graphics.debug flag will add additional error checks and will send messages from the GPU driver to the lovr.log callback. This will decrease performance but can help provide information on performance problems or other bugs.

The headset.offset field is a vertical offset applied to the scene for headsets that do not center their tracking origin on the floor. This can be thought of as a "default user height". Setting this offset makes it easier to design experiences that work in both seated and standing VR configurations.


A noop conf.lua that sets all configuration settings to their defaults:

function lovr.conf(t)

  -- Set the project version and identity
  t.version = '0.15.0'
  t.identity = 'default'

  -- Set save directory precedence
  t.saveprecedence = true

  -- Enable or disable different modules
  t.modules.audio = true
  t.modules.data = true
  t.modules.event = true
  t.modules.graphics = true
  t.modules.headset = true
  t.modules.math = true
  t.modules.physics = true
  t.modules.system = true
  t.modules.thread = true
  t.modules.timer = true

  -- Audio
  t.audio.spatializer = nil
  t.audio.start = true

  -- Graphics
  t.graphics.debug = false

  -- Headset settings
  t.headset.drivers = { 'openxr', 'oculus', 'vrapi', 'pico', 'openvr', 'webxr', 'desktop' }
  t.headset.supersample = false
  t.headset.offset = 1.7
  t.headset.msaa = 4

  -- Math settings
  t.math.globals = true

  -- Configure the desktop window
  t.window.width = 1080
  t.window.height = 600
  t.window.fullscreen = false
  t.window.msaa = 0
  t.window.vsync = 1
  t.window.title = 'LÖVR'
  t.window.icon = nil

See also