LÖVE (also called Love2D) is an open-source 2D game framework for making games in Lua available for Windows, Mac and Linux. It's built on top of SDL and makes use of LuaJIT for impressive scripting language performance. Recently support for creating Android and iOS games was added.


  • Easy to use, sane API.
  • LuaJIT for crazy fast Lua performance and its FFI library which allows you to create and call C functions and data structures. The latter can massively improve performance compared to large Lua tables.
  • Lua itself is a very easy to learn language and has some cool features.
  • Sprite/texture based drawing has good performance that becomes great performance if you correctly batch and use texture atlas.
  • Networking is super easy.
  • Friendly, helpful, open-source community. (Compare to Unity or UE where everyone wants to make a buck.)
  • Actively developed, although big updates don't come at the quickest pace.
  • Tons of community libraries.
  • Pretty robust controller support.
  • Optional Box2D physics built-in.
  • Open source (zlib license).
  • Little to no work to support cross-platform.

Be Aware

  • LÖVE is not a game engine, despite what the official site may tell you. There's no IDE, level editor, sprite editor, or anything like that. Your environment is whatever text editor or IDE you prefer, although most popular ones have plugins to let you run your active folder/project with a keyboard shortcut.
  • Unless you do extra legwork your released game's source can easily be accessed and edited. This can be a pro or con depending on your point of view.
  • Your write access is sand-boxed.
  • You'll need to add Steamworks yourself to the LÖVE source if you want to publish on Steam and support those features. Or privately contact a developer that has done it already and see if they'll share their changes.
  • If Lua is your first language it can teach you some bad habits.
  • Poor performance and battery life on certain mobile platforms due to JIT compilation being unavailable.


  • Lua can be overly verbose and has quirks that are annoying such as being 1-index based.
  • Lua doesn't have classes, but there are libraries that mimic them with minimal overhead.
  • Shape drawing performance isn't great. (Can be alleviated somewhat by creating a mesh once then using that for drawing.) - Note: As of Version 11.0 primitives are now automatically batched, greatly improving performance when drawing many at once.
  • Some questionable exclusions such as cameras, animation and entities. It can be more accurate to think of LÖVE as Lua bindings for SDL sometimes, with some added functionality thrown in.
  • No official executable creation/batch script. There's community made ones but they've been buggy in the past.
  • Community can be a bit of an echo chamber.
  • Frustratingly long standing issue of no built in TLS/SSL support. If you need authentication you'll probably need to include binaries for something like OpenSSL and use bindings for them.


Website: https://love2d.org
Wiki: https://love2d.org/wiki/Main_Page
Repository: https://bitbucket.org/rude/love

Getting Started

Must have libraries:

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License