/awesome-love2d

A curated list of amazingly awesome LÖVE libraries, resources and shiny things.

Creative Commons Zero v1.0 UniversalCC0-1.0

Awesome Löve Awesome

A categorized community-driven collection of high-quality, awesome LÖVE libraries, projects, and resources.

Table of contents

3D

3D-centric Libraries

  • anim9 - 3D skeletal animation library (design to be used with IQM and IQE)
  • bump-3dpd - A 3D collision detection library for Lua.
  • DEEP - Handles draw order by allowing you to specify Z axis when drawing.
  • IQE - Inter-Quake Export loader (text)
  • IQM - Inter-Quake Model loader (binary)
  • LÖVE3D - 3D extensions to LÖVE
  • Lovox - Pseudo-3D library for working with voxels

AI

Navigation, Decision-Making and AI Libraries

  • Jumper - Grid-based pathfinding library

Animation

Animation & Frame-Managing Libraries

  • andross - a Lua library for 2D skeletal/bone animations with a Löve backend
  • anim8 - Animation library
  • chiro - Convenience wrapper around Spine
  • skeletor - 2D skeletal animation system
  • Sodapop - Sprite and animation library
  • Walt - Animation library
  • Lump - Adobe Flash animation runtime

Camera

Viewport & Camera Libraries

  • Brady - Camera library with parallax scrolling
  • Editgrid - Gamera and HUMP compatible scaling grid
  • gamera - Camera system
  • hump.camera - Camera library with window locking and smooth camera movement interpolation
  • STALKER-X - STALKER-X is a camera module for LÖVE

Development

Development assisting Libraries, that enrich your development experience

  • FPSGraph - Small FPS graphing utility
  • debugGraph - Small OO FPS graphing utillity based on FPSGraph
  • Lovebird - Browser-based debug console
  • Lovecat - Edit your game parameters in a browser and see the changes in the running game in real time
  • LoveDebug - Inline console-like debugger utility
  • lurker - Auto-swaps changed Lua files in a running game
  • LÖVE API - The complete API documentation of LÖVE in a Lua table

Drawing

Drawing specific Libraries, that simplify the Drawing process

  • draft - A module for drawing complex shapes
  • Artal - A .PSD parsing library for LÖVE
  • Autobatch - Small LÖVE module to automate the use of SpriteBatches
  • HSLUV - Lua implementation of HSLuv (a human-friendly alternative to HSL)
  • Maid64 - Low resolution scaler for LÖVE
  • Möan.lua - Multiple-choice VN-esque messagebox library for LÖVE
  • renderplanet - realistic orthographic planet rendering
  • Sölar - a fairly simple solar system simulator
  • svglover - Library to import and display simple SVGs in LÖVE

Entity

Entity and Gameobject Managing Libraries

  • adorbs - Minimal, Functional Entity Component System
  • knife.system - Minimalist functional ECS
  • tiny-ecs - Entity Component System for Lua that's simple, flexible, and useful

Helper Libraries

Game specific Library bundles, that provide reuseable functions

  • astray - Astray is a lua based maze, room and dungeon generation library for dungeon crawlers and roguelike video games
  • hump - Collection of tools for developing games with LÖVE (Gamestates, Timers/Tweens, Vectors, Classes, Signals, Cameras)
  • knife - Collection of useful micro-modules for Lua (Class, State Machines, Bind, Chain, Coroutines, Event, Memoize, Entity, Tests, Timer)
  • lovely-windows - A Window/Screen Manager Module for virtual windows.
  • love-state-switcher - State switcher class for Lua LÖVE Engine
  • lue - lue is a LÖVE library that allows you to display hue color effects in your game
  • lume - Collection of functions for Lua, geared towards game development
  • rotLove - Roguelike Toolkit in Love. A Love2D/lua port of rot.js
  • ScreenManager - Screen/State Management for the LÖVE framework
  • shack - shack is a LÖVE library that lets you easily add screen effects such as shake and rotation
  • Simple Tiled Implementation - Tiled map loader and renderer
  • Vivid - Color math, manipulation and conversion library

Input

Input & Binding Libraries

  • baton - Input library for LÖVE that bridges the gap between keyboard and gamepad controls
  • boipushy - A simple and easy to use input handler
  • love-microphone - Simple microphone support for LÖVE
  • tactile - A straightforward and flexible input library

Lighting

Lighting & Shadow Libraries

Math

Math specific Libraries

  • Bresenham - Bresenham's line algorithm written in Lua
  • brinevector - Standalone lightweight luajit ffi-accelerated 2D vector library for great performance
  • Cirno's Perfect Math Library - Math/intersection library designed for games
  • delaunay - Delaunay triangulation for convex polygons
  • hump.vector - Powerful 2D vector class
  • MLib - Math and shape-intersection detection library written in Lua. It's aim is to be robust and easy to use

Music

Music related libraries

  • ripple - An audio library for sound effects and music
  • wave - A sound manager with audio parsing and rhythm functionalities
  • denver - A Löve custom waveform generation library

Networking

Networking & Online-Play Libraries

  • Grease - Networking library intended to make networking easy for lovers (TCP, UDP, Enet) [IPv6]
  • LoverNet - A networking library that leverages bitser and enet [IPv4]
  • NoobHub - OpenSource multiplayer and network messaging [IPv6]
  • Sock.lua - A Lua networking library for LÖVE games [IPv4]

Object Orientation

Object Orientation Libraries that support Class-Commons

  • 30log - Minified framework for object-orientation in Lua. It features named (and unnamed) classes, single inheritance and a basic support for mixins
  • classic - Tiny class module for Lua. Attempts to stay simple and provide decent performance by avoiding unnecessary over-abstraction
  • hump.class - Small, fast class/prototype implementation with multiple inheritance (class-commons)
  • knife.base - Extremely minimal base class providing single inheritance and constructors.
  • middleclass - Simple OOP library for Lua; has inheritance, metamethods (operators), class variables and weak mixin support (class-commons)

Performance

Performance measurement tools

  • Piefiller - Graphical profiler for LÖVE
  • profile.lua - Profile.lua is a small, non-intrusive module for finding bottlenecks in your Lua code
  • ProFi - A simple lua profiler that works with LuaJIT and prints a pretty report file in columns

Physics

Collision Detection & Physics Wrappers

  • Bump - Collision detection library for Lua
  • HC - Collision detection with arbitrary polygons; allows rotation of objects
  • loveblobs - A softbody library with support for both dynamic and static arbitrary softbodies.
  • Windfield - Physics module wrapper for LÖVE

Platforms

Ports for Platforms other than Windows, Mac and Linux

  • LoveDos - A Lua framework for 2D DOS games, implementing a subset of the LÖVE API
  • LoveFTW - Work-in-progress port to Windows phone 8.1
  • LovePotion - Unofficial work-in-progress implementation of the LÖVE API for 3DS Homebrew
  • Love.js - LÖVE ported to the web using Emscripten
  • LÖVR - LÖVE for virtual reality devices

Publishing

Guides to distributing LÖVE games in 3rd party stores

  • Love-Snap-Template - A template for packaging LÖVE games for distribution in the Snappy Store
  • AppImageKit - Using AppImageKit you can package LÖVE games as AppImages that run on common Linux-based operating systems, such as RHEL, CentOS, Ubuntu, Fedora, debian and derivatives; one game = one file

Serialization

Save Game & Storage Libraries

  • binser - Customizable Lua Serializer
  • bitser - Serializes and deserializes Lua values with LuaJIT
  • cdata - Serialize between Lua data and C data using LuaJIT's FFI
  • knife.serialize - Serialize data as a Lua script
  • Lady - Saving and loading savegames; based on Ser
  • Ser - Fast, robust, richly-featured table serialization library for Lua
  • Smallfolk - A fast, robust, secure, richly-featured table serialization library for Lua
  • trickle - A bitstream library focused on high compression for use in networking

Shaders

GLSL related Libraries

  • LoveShaderConverter - Convert Shadertoy Shader files to LÖVE GLSL Files with handy utilities for infinite purposes
  • Shadertoy viewer - Run code copied from shadertoy directly or output the converted code to a LÖVE shader
  • Moonshine - Repository of common post-processing effects like blur, vignette, color-grading, etc.

Testing

Libraries and Tools for Unit Testing

  • busted - Simple unit-testing framework with customizable assertions
  • knife.test - Fixture-free test framework
  • Luassert - Extends assert() with additional, customizable tests
  • lua-TestMore - Port of Perl's Test::More package
  • Lunatest - xUnit-style randomized unit testing framework
  • lust - Minimal test framework
  • Specl - Behavior Driven Development (BDD) tool
  • Telescope - Highly-customizable BDD-style testing library

Tweening

Smoothing & Timer Libraries

  • Flux - A fast, lightweight tweening library for Lua
  • hump.timer - Timer and tweening library with flexible tweening methods
  • knife.timer - Create timers and tweens with ease.
  • tween.lua - Tweening/Easing/Interpolating functions for Lua inspired on jQuery's animate method

UI

User Interface Libraries

  • CatUI - A very light-weight GUI library for LÖVE
  • GOOi - Android-oriented GUI library
  • Gspöt - A stateful GUI lib for LÖVE
  • LoveFrames Fork - 0.10 Fork of a GUI library
  • Love Imgui - imgui module for the LÖVE game engine
  • Löve-Nuklear - Lightweight immediate mode GUI for LÖVE games
  • Patchy - 9patch library
  • Polywell - A highly-configurable text editor / coding tool written in Lua that runs on the LÖVE game engine.
  • SafeWord - An overscan detection library for LÖVE
  • SUIT - small immediate mode GUI library
  • ListBox - A dynamic ListBox for LÖVE that supports touch, mouse, and keyboard inputs

Utilities

Non-Game specific Library bundles, that provide reuseable functions

  • ArrayRotation - Rotation of two dimensional arrays (square and non-square)
  • cargo - Asset manager
  • chance.lua - Library for generating random data
  • GifCat - A simple module for saving gifs from LÖVE
  • i18n - Internationalization library designed to help localize your game
  • log.lua - Library for configurable log output
  • love-loader - Threaded resource loading
  • love2d-assets-loader - Assets Loader
  • Lily - Async Asset Loader
  • Luvent - Simple event-driven programming
  • splashy - Splash Screen Library
  • Talkback - Observer pattern library with two-way communication
  • tick - Useful timing tweaks for LÖVE's run loop

Tutorials

Blogs and tutorials

IDEs

Integrated Development Enviroments and text editor plugins

  • Atom - A hackable text editor for the 21st Century

  • Brackets - A modern, open source text editor by Adobe

  • ZeroBrane Studio - ZeroBrane Studio is a lightweight Lua IDE with code completion, syntax highlighting, live coding, code analyzer, and debugging support

  • IntelliJ IDEA - Capable and Ergonomic Java IDE

  • Vim - Vim is a highly configurable text editor built to make creating and changing any kind of text very efficient

  • Notepad++ - Notepad++ is a free source code editor and Notepad replacement that supports several languages

  • Visual Studio Code - VS Code is a new type of tool that combines the simplicity of a code editor with what developers need for their core edit-build-debug cycle

  • Sublime Text - Sublime Text is a sophisticated text editor for code, markup and prose. You'll love the slick user interface, extraordinary features and amazing performance.

    • Package Manager - The Sublime Text package manager that makes it exceedingly simple to find, install and keep packages up-to-date.
    • SublimeLove - Supports syntax highlighting, auto-completion, and build system.
    • SublimeLinter-luacheck - Provides linting and static analysis of your Lua code.

Contributing

Please see CONTRIBUTING for details.

Other Awesome Lists

  • awesome-lua - A list like this one, but more general and encompassing all of Lua's uses
  • awesome-love-shaders - A collection of shaders designed to work in LÖVE
  • awesome-pico8 - A curated list of PICO-8 resources, tutorials, tools and more

Other awesome lists can be found in the awesome-awesomeness list.