Michael Ebens edited this page Jan 26, 2016 · 31 revisions

This wiki is currently for version 1.1.0. It should be updated to 1.2.0 soon.

Ammo is a library for the LÖVE (or, Love2D) game engine. It's purpose is to provide a simple, flexible organisational structure for your games. The core library itself is pretty lightweight, but can be extended easily (see below for a list of extensions available). Ammo was inspired heavily by the awesome FlashPunk engine.

In case you're wondering, the name "Ammo" is derived from the Latin word "amo", which means "to love, like, be fond of, cherish." Most libraries for LÖVE have their names somewhat related to the term or concept of love, so I decided I'd combine the Latin word with "ammunition".

Current Version: 1.2.0



  • ammo - The main module.
  • World - An organisational class to hold and process entities.
  • Entity - The core unit of which games are made.
  • Camera - A class that embodies a camera.
  • Sound - A class that makes it easier to manage sounds.
  • Vector - A data structure for 2D vectors.
  • LinkedList - A linked list data structure. Used internally.
  • API Extensions - Lists the changes made to the APIs of Lua and LÖVE.
  • Files - Gives information about each file and what it does.


There's a number of extension modules which can be independently hooked into Ammo:

  • physics: An interface that allows you to connect Ammo's worlds and entities to love.physics.
  • debug: A versatile, highly customisable debugging console.
  • input: A simple input mapping library.
  • tweens: A tweening library.
  • assets: A simple asset management library.

External Libraries

The only external library required is MiddleClass, version 2.0. If you've cloned Ammo's Git repository, you can automatically download MiddleClass into the lib/middleclass folder:

git submodule update --init

Other than MiddleClass and the extensions above, here's a few other external libraries you may want to use:

  • strong: A string-enhancing library.
  • inspect.lua: Converts a table into a human-readable string. Useful for debugging.
  • carpenter: A table-enhancing library. A work in progress at present.