uLove

uLove is only a proposal at this stage, feel free to add your thoughts


uLove is a proposed standard subset of functionality intended to reduce Love's binary and memory footprint, specifically for use on embedded and portable devices.

While any port of love may provide features beyond those defined in uLove, it not generally permitted to remove features.

  • uLove archive files are explicitly Zip files. (Rather than "nominally", as in Love).
  • uLove must support image fonts, it specifically may omit vector fonts (such as TTF).
  • uLove must provide a default font, with a size appropriate to the target device, in the same instances that Love would provide a default font. However, this font is permitted to not be, or be named after, "Vera Sans".
  • uLove must support Ogg Vorbis Audio, it may omit all other audio formats.
  • uLove must support PNG, and Uncompressed Targa (TGA) image formats, and is recommended (but not required) to additionally the Windows BMP image format. It may omit all other image formats.
  • uLove may omit love.mouse, love.keyboard, and love.joystick. Though a uLove host will likely provide at least one of them, none of them are required.
  • uLove may omit love.physics.

In addition to the above contraints, Lovers must also recognise that:

  • Many devices running uLove have limited memory, often 32MB or less
  • Many devices targeted by uLove have considerably less processing power than standard systems.
  • Many devices running uLove have low resolutions, in the vien of 320x240.
  • uLove is targeted at many disparate devices, uLove games should use functions such as those in love.joystick and love.graphics.checkMode to determine the device's capabilities, and adjust themselves accordingly.
  • Many devices targeted by uLove have limited controls, usually one d-pad and four face buttons (A, B, Start, Select, or equivilent) is all that can be relyed on.
  • Many devices running uLove entirely lack mouse support, those that do present mice have touch surfaces. bare in mind that:
  • Touch surfaces usually lack precision
  • Touch surfaces do not usually allow the pointer to be moved without also generating either a click or mousedown event
  • Touch surfaces are absolute, rather than relative pointing devices. (that is, the mouse is always moved to a specific location, never by a delta)