Config Files
Contents
Introduction
If a file called conf.lua
is present in your game folder (or .love file), it is run before the LÖVE modules are loaded. You can use this file to overwrite the love.conf
function, which is later called by the LÖVE 'boot' script. Using the love.conf
function, you can set some configuration options, and change things like the default size of the window, which modules are loaded, and other stuff.
love.conf
The love.conf
function takes one argument: a table filled with all the default values which you can overwrite to your liking. If you want to change the default window size, for instance, do:
function love.conf(t)
t.window.width = 1024 -- t.screen.width in 0.8.0 and earlier
t.window.height = 768 -- t.screen.height in 0.8.0 and earlier
end
If you don't need the physics module or joystick module, do the following.
function love.conf(t)
t.modules.joystick = false
t.modules.physics = false
end
Setting unused modules to false is encouraged when you release your game. It reduces startup time slightly (especially if the joystick module is disabled) and reduces memory usage (slightly).
Here is a full list of options and their default values for LÖVE 0.9.x:
function love.conf(t)
t.identity = nil -- The name of the save directory (string)
t.version = "0.9.1" -- The LÖVE version this game was made for (string)
t.console = false -- Attach a console (boolean, Windows only)
t.window.title = "Untitled" -- The window title (string)
t.window.icon = nil -- Filepath to an image to use as the window's icon (string)
t.window.width = 800 -- The window width (number)
t.window.height = 600 -- The window height (number)
t.window.borderless = false -- Remove all border visuals from the window (boolean)
t.window.resizable = false -- Let the window be user-resizable (boolean)
t.window.minwidth = 1 -- Minimum window width if the window is resizable (number)
t.window.minheight = 1 -- Minimum window height if the window is resizable (number)
t.window.fullscreen = false -- Enable fullscreen (boolean)
t.window.fullscreentype = "normal" -- Standard fullscreen or desktop fullscreen mode (string)
t.window.vsync = true -- Enable vertical sync (boolean)
t.window.fsaa = 0 -- The number of samples to use with multi-sampled antialiasing (number)
t.window.display = 1 -- Index of the monitor to show the window in (number)
t.window.highdpi = false -- Enable high-dpi mode for the window on a Retina display (boolean). Added in 0.9.1
t.window.srgb = false -- Enable sRGB gamma correction when drawing to the screen (boolean). Added in 0.9.1
t.modules.audio = true -- Enable the audio module (boolean)
t.modules.event = true -- Enable the event module (boolean)
t.modules.graphics = true -- Enable the graphics module (boolean)
t.modules.image = true -- Enable the image module (boolean)
t.modules.joystick = true -- Enable the joystick module (boolean)
t.modules.keyboard = true -- Enable the keyboard module (boolean)
t.modules.math = true -- Enable the math module (boolean)
t.modules.mouse = true -- Enable the mouse module (boolean)
t.modules.physics = true -- Enable the physics module (boolean)
t.modules.sound = true -- Enable the sound module (boolean)
t.modules.system = true -- Enable the system module (boolean)
t.modules.timer = true -- Enable the timer module (boolean)
t.modules.window = true -- Enable the window module (boolean)
end
Note that you can't disable love.filesystem; it's mandatory. The same goes for the love module itself. love.graphics needs love.window to be enabled.
highdpi
Available since LÖVE 0.9.1 |
This flag is not supported in earlier versions. |
See love.window.getPixelScale. It is recommended to keep this option disabled if you can't test your game on a Mac system with a Retina display, because code will need tweaking to make sure things look correct.
srgb
Available since LÖVE 0.9.1 |
This flag is not supported in earlier versions. |
Enabling this window flag will automatically convert the colors of everything drawn to the main screen from the linear RGB colorspace to the sRGB colorspace - the window's surface is treated as gamma-space sRGB. This is only one component of gamma-correct rendering, an advanced topic which is easy to mess up, so it's recommended to keep this option disabled if you're not sure about its implications.
Window
Available since LÖVE 0.9.0 |
These flags are not supported in earlier versions. |
It is possible to defer window creation until love.window.setMode is first called in your code. To do so, set t.window = nil
in love.conf (or t.screen = nil
in older versions.) If this is done, LÖVE may crash if any function from love.graphics is called before the first love.window.setMode in your code.
The t.window
table was named t.screen
in versions prior to 0.9.0. The t.screen
table doesn't exist in love.conf in 0.9.0, and the t.window
table doesn't exist in love.conf in 0.8.0. This means love.conf will fail to execute (therefore it will fall back to default values) if care is not taken to use the correct table for the LÖVE version being used.
The following code enables compatibility for conf.lua in both 0.9.0 and prior versions.
function love.conf(t)
t.window = t.window or t.screen
-- Set window/screen flags here.
t.window.width = 1024
t.window.height = 768
t.screen = t.screen or t.window
end
Version
Available since LÖVE 0.8.0 |
This flag is not supported in earlier versions. |
t.version
should be a string, representing the version of LÖVE for which your game was made. It should be formatted as "X.Y.Z"
where X
is the major release number, Y
the minor, and Z
the patch level. It allows LÖVE to display a warning if it isn't compatible. Its default is the version of LÖVE running.
Older Versions
Here is a full list of options and their default values for LÖVE 0.8.0:
function love.conf(t)
t.title = "Untitled" -- The title of the window the game is in (string)
t.author = "Unnamed" -- The author of the game (string)
t.url = nil -- The website of the game (string)
t.identity = nil -- The name of the save directory (string)
t.version = "0.8.0" -- The LÖVE version this game was made for (string)
t.console = false -- Attach a console (boolean, Windows only)
t.release = false -- Enable release mode (boolean)
t.screen.width = 800 -- The window width (number)
t.screen.height = 600 -- The window height (number)
t.screen.fullscreen = false -- Enable fullscreen (boolean)
t.screen.vsync = true -- Enable vertical sync (boolean)
t.screen.fsaa = 0 -- The number of FSAA-buffers (number)
t.modules.joystick = true -- Enable the joystick module (boolean)
t.modules.audio = true -- Enable the audio module (boolean)
t.modules.keyboard = true -- Enable the keyboard module (boolean)
t.modules.event = true -- Enable the event module (boolean)
t.modules.image = true -- Enable the image module (boolean)
t.modules.graphics = true -- Enable the graphics module (boolean)
t.modules.timer = true -- Enable the timer module (boolean)
t.modules.mouse = true -- Enable the mouse module (boolean)
t.modules.sound = true -- Enable the sound module (boolean)
t.modules.physics = true -- Enable the physics module (boolean)
end
Release Mode
Added in 0.8.0 and removed in 0.9.0.
If t.release
is enabled, LÖVE uses the release error handler (love.releaseerrhand), which is sparse on information by default, and can, of course, be overridden.
The default release mode error handler also outputs a message to the player informing them to contact the author using the values title, author and url as specified in conf.lua.
When a fused game in release mode is run it will not save in the love save dir, but rather one for itself, whereas previously it would be %APPDATA%\\LOVE\\game on Windows, it now is %APPDATA%\\game. This concept applies to other platforms as well.
Here is a full list of options and their default values for LÖVE 0.7.2 and earlier:
function love.conf(t)
t.title = "Untitled" -- The title of the window the game is in (string)
t.author = "Unnamed" -- The author of the game (string)
t.identity = nil -- The name of the save directory (string)
t.version = 0 -- The LÖVE version this game was made for (number)
t.console = false -- Attach a console (boolean, Windows only)
t.screen.width = 800 -- The window width (number)
t.screen.height = 600 -- The window height (number)
t.screen.fullscreen = false -- Enable fullscreen (boolean)
t.screen.vsync = true -- Enable vertical sync (boolean)
t.screen.fsaa = 0 -- The number of FSAA-buffers (number)
t.modules.joystick = true -- Enable the joystick module (boolean)
t.modules.audio = true -- Enable the audio module (boolean)
t.modules.keyboard = true -- Enable the keyboard module (boolean)
t.modules.event = true -- Enable the event module (boolean)
t.modules.image = true -- Enable the image module (boolean)
t.modules.graphics = true -- Enable the graphics module (boolean)
t.modules.timer = true -- Enable the timer module (boolean)
t.modules.mouse = true -- Enable the mouse module (boolean)
t.modules.sound = true -- Enable the sound module (boolean)
t.modules.physics = true -- Enable the physics module (boolean)
end
See Also
Other Languages
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info