Skip to content

Framework

LÖVE

LÖVE is a tiny 2D framework where you write Lua, define a main loop, and get exactly the game you build and nothing you didn't ask for.

LÖVE is a 2D game framework you drive entirely from Lua. There is no editor, no scene tree, no inspector panel — you write code, it runs, and the whole thing is small enough that you can hold most of it in your head. That last part is the pitch: it is about as direct as making a game gets.

You write three functions — load, update, draw — and you have a game running. Everything after that is you deciding what to add.

What it is good at

Starting fast. From an empty folder to a window drawing a sprite is minutes, not an afternoon of project setup wizards. For a game jam, where the clock is the whole point, this is the entire value proposition.

Teaching you how games actually work. Because nothing is hidden behind an editor, you see the loop, the delta time, the draw order, all of it. When your character moves too fast you learn why, instead of ticking a box in a physics panel and hoping. People who learn on LÖVE tend to come out understanding the machinery underneath, which transfers to every other engine you touch later.

Lua. It is a small language you can learn in a weekend and a fast one at runtime. There is very little ceremony between an idea and the code that expresses it, and the language mostly stays out of your way. Hot-swapping code and iterating quickly is a genuine pleasure here.

Staying out of your way generally. LÖVE gives you graphics, audio, input, windowing and physics bindings, and then stops. It does not have opinions about how you structure entities, load levels, or manage state. If you like architecting your own project, this is freedom. It ships under the zlib licence, which is about as permissive and unencumbered as licences come, so what you make is yours with no strings.

Desktop and mobile packaging. It exports to Windows, macOS and Linux, and to Android and iOS, so a small game genuinely can go from your laptop to a phone.

What it is not good at

Handing you a workflow. There is no visual editor, no asset pipeline, no built-in level designer. If you want to place platforms by looking at them rather than typing coordinates, you build that tool yourself or find a community one and wire it in. For some people that is a fun project. For others it is three days they wanted to spend making the actual game.

The browser. There is no official web export. Community projects exist to get LÖVE games running in a browser, but that is not a first-party, guaranteed path, and if "plays on itch in a browser tab" is a requirement you are signing up for extra work and extra uncertainty. Plan around that early, not the week before launch.

3D. It is a 2D framework. You can technically fake some pseudo-3D or reach for lower-level graphics calls, but if your game is genuinely three-dimensional you are fighting the tool the entire way and should be using something else.

Holding your hand on a big project. The freedom that feels great in week one starts asking questions in month six. Every large LÖVE project eventually grows its own bespoke framework on top of the framework — an entity system, a scene manager, a save system — and that layer is now yours to maintain. There is no standard way to do any of it, so you cannot lift a solution off a shelf as easily as you can in editor-based engines with big asset stores.

Team collaboration across disciplines. A non-programmer cannot really contribute to a LÖVE project the way an artist can poke around a visual editor. Everything lives in code, which means everything routes through the programmers.

Who should pick it

Programmers making 2D games who want to be programmers making 2D games. If your instinct when a tool does something automatically is "but what is it actually doing," LÖVE will feel like relief rather than deprivation.

Jam developers. When you have 48 hours, the fastest thing between you and a running prototype wins, and LÖVE is very fast between you and a running prototype.

Beginners who are serious about learning fundamentals — not the quickest possible route to a finished game, but the route that leaves you actually understanding one. Pair it with a plan to learn some general programming, because LÖVE assumes you can write code and does not pretend otherwise.

Small solo or programmer-led projects: arcade games, puzzlers, tight action games, roguelikes, anything where the design lives in the mechanics and code rather than in vast hand-placed content. It scales down beautifully and scales up only as far as your willingness to build infrastructure.

If you need an editor, a marketplace of ready-made systems, or a way for a whole mixed team to work in the same tool, be honest with yourself and look elsewhere. LÖVE is not trying to be that, and admiring its minimalism will not save you when you needed a terrain tool.

Getting started

Install LÖVE, make a folder, and create a file called main.lua. Write love.load, love.update(dt) and love.draw, and drop the folder onto the LÖVE executable — that is your build-and-run loop, and you will use it constantly.

Spend the first hour on the basics of the loop: how update and draw differ, why you multiply movement by dt, and how to load and draw an image and play a sound. Get a rectangle moving with keyboard input. That single exercise touches most of what you do all day.

The official wiki at love2d.org is the reference you will keep open, and its API is small enough to browse rather than search. Learn the drawing and input modules first, then audio, then the physics bindings only when you actually need them — plenty of games never do.

Once you have a prototype, resist writing a giant framework before you have a game to hang it on. Add structure when the mess starts hurting, not before. With LÖVE the mess is at least always yours, and always visible.

Best for

Programmers who want to understand how a game loop actually works, jam devs who value startup speed over features, and anyone happy assembling their own tooling.

Not the right pick for

Designers who want to drag things around a viewport, teams that need a shared visual editor, or anyone shipping to the browser as a hard requirement.

Frequently asked questions

Is LÖVE an engine or a framework?
A framework. It gives you graphics, audio, input, windowing and physics bindings and then leaves the structure to you. There is no editor, scene system, or project layout imposed on you, which is why people describe it as closer to a library you build a game on than an engine you build a game in.
Can I ship a LÖVE game to the web?
Not through an official first-party export. Community projects exist to run LÖVE games in a browser, but that path is not maintained by the framework itself and comes with more setup and more uncertainty. If browser play is a hard requirement, factor that in before you start rather than near release.
Do I need to know Lua before starting?
It helps, but Lua is a small language you can pick up quickly, and LÖVE is a common way people learn it. You do need to be comfortable writing code in general, since everything in a LÖVE project lives in code with no visual editor to fall back on.
Can LÖVE do 3D?
It is a 2D framework. You can reach for lower-level graphics calls to fake some pseudo-3D effects, but there is no real 3D scene system, and a genuinely three-dimensional game means fighting the tool constantly. For 3D, use something built for it.
Is it free to use commercially?
LÖVE is released under the zlib licence, which is highly permissive and does not require royalties or attribution in the usual sense. Check the current terms on the official site, but it is about as unrestricted as licences get for shipping your own game.