• Register

LÖVE is a game framework which allows you to make your own 2D games with Lua. Your game can easily be played by anyone with LÖVE installed on their Windows, Mac or Linux computer.
It has support for many image and audio formats, physics, networking, particle effects, and also has some user-made libraries (downloaded separately) to make developing games even easier.

Useful links:
Forum
Wiki (also hosts documentation)
Bug tracker
IRC Channel (#love@freenode.net)

  • View media
  • View media
  • View media
  • View media
  • View media
  • View media
Post article RSS Related Articles

In 2012 I was shocked and awed by Portal and Braid, so I decided to make a game about time and space manipulation. If you take two awesome and multiply them together, you get awesome squared, right? Well, no, but that was my understanding of game design at that time. :)

rwd

Anyway, I set out to implement rewinding time the naive way, simply saving the position and velocity of every entity into a stack on each frame, in update(). Time rewind is simply popping the state off of the stack during every frame when the time rewind button is pressed, that’s your downdate().

This was fine for a couple of entities, but as levels got larger, surprise surprise, I started to run out of memory. :) Ring buffers to the rescue!

Screen Shot 2019 06 27 at 17 06

With ring buffers, you limit your memory usage by allocating an array of fixed size (N = 16 in this case). You keep a pointer to your current position (head), that’s where you keep your current state. In each update(), you put the stuff in, and increment head (modulo N, to avoid falling off the right edge of the array). In downdate() you just remove the stuff in head, and decrement head (modulo N, to avoid falling off the left edge this time). This works very well if you only need to keep the last N / FPS seconds of gameplay.

Yet, I wanted more. I wanted everything. Just like Jon Blow. He’s a genius. I wanted to be like Jon Blow. So, even more ring buffers to the rescue! :)

Screen Shot 2019 06 27 at 17 06 1

I created multiple ring buffers, each with different speeds. The first one was just like the previous example, the next one had the same size, but only updated on every other frame (keeping state at 2x speed), then the next one updated every fourth frame (4x speed), etc. Being faster, the buffers down the line keep more and more time. The last buffer keeps the last twenty minutes at 256x speed.

During downdate(), I just eat up the first buffer resulting in smooth 1x rewind. When it’s all empty, I switch down to the next buffer, which results in smooth 2x rewind. And so forth all the way down! The more you rewind, the faster it goes, which results in pretty nice user experience, since players don’t want to wait too long when rewinding a lot. Jon Blow had to implement (and explain) a whole speed-tweaking mechanism in Braid which turned out relatively great because he is Jon Blow, and by universal consensus, he is a genius, however, it’s still an additional complication that clunked up his UX.

So. If I aspire to asymptotically approach Jon Blow’s genius, how come I tore out my ingeniously engineered rewind mechanism from my game, just now, two months before the launch?

The short answer is that the main reason for implementing it was to make me feel smart. It didn’t contribute a single puzzle mechanic to the game. Since Terraforming Earth is a rogue-lite puzzle platformer, time rewind even actively detracted from the player experience by incentivizing sloppy gameplay: “*BOOM* lol, nvm, watch this *BBZZZ*” can be fun, but not in a game with perma-death.

Admitting that your pet feature is only there to feed your ego is hard. However, Sid Meier says there are games where the programmer is having all the fun, games where the computer is having all the fun, and games where the players are having all the fun. And he’s also a genius, so, yeah, don’t keep all the fun to yourself! :)

So, what’s Opi’s new skill to replace time rewind? Well, he’s the get-stuff-done piece, so giving him super-strength fits his character and also enables many opportunities for emergent puzzles.

str2

The level generator knows that Opi can move enemy robots, so it can decide to generate situations like this one. How would you get the gang past the obstacle on the left?

Screen Shot 2019 06 27 at 17 02

Steam Early Access is right around the corner, so if you liked this article, consider giving the page some wishlisting love. You can also sign up for the closed beta on our Discord!

Thanks for reading! Remember to let the players have all the fun! :)

How To Get Eyeballs On Your Game At Game Shows 👀

How To Get Eyeballs On Your Game At Game Shows 👀

Terraforming Earth 2 comments

Terraforming Earth is about three quirky robots working together. We showcased our game at a local game show and wanted to get as many eyeballs as possible...

0.6.4 - Stage 5, new Stage 1, and more

0.6.4 - Stage 5, new Stage 1, and more

Demonizer

The game is updated to version 0.6.4. This update adds Stage 5, the "highway".

Terraforming Earth - Alpha Demo

Terraforming Earth - Alpha Demo

Terraforming Earth

Watch our three unlikely heroes blundering through tricky obstacles in their own quirky ways in this Alpha Trailer. Oh, and in case you enjoy blundering...

Version 0.5.0

Version 0.5.0

Demonizer

New underground lab/dungeon level and usability improvements.

Add game Games
Vasya Industries

Vasya Industries

Point and Click

You work as a security guard in Vasya's building. Since you are the first day at work, you need to explore the building of the great genius Vasya. Try...

Terraforming Earth

Terraforming Earth

Platformer

Controlling three clunky robots with unwarranted technological quirks, you must help them work together to overcome randomly generated obstacles on a...

Demonizer

Demonizer

Arcade

2D fantasy arcade shooting and man-catching game.

Pnorar

Pnorar

Arcade

Pnorar is a simple bullethell-like topdown spaceshooter with randomly generated upgrades.

Bagburnian Remote

Bagburnian Remote

Puzzle

Bagburnian Remote is hard sci-fi puzzle that tells the story in the only language that is common for the Universe, in the language of mathematics.

LandR

LandR

Puzzle

LandR is a challenging puzzle platformer with an unique game play and unconventional control scheme. Move the two players independently, each with one...

SquareWorld

SquareWorld

Adventure

Nothing should stop your imagination, so there are over 200 blocks to build with, and this is just an alpha release! Most blocks can be chiseled and shaped...

Stargazer Program

Stargazer Program

Arcade

Quick pvp shoot em up. Takes 5 minutes or less. Just you, your foe and the game. Dodge bullets and send them to your friends in this pvp shmup. Net play...

Derpy & The Hunting of the super tasty Muffin (oA)

Derpy & The Hunting of the super tasty Muffin (oA)

Adventure

Derpy and The Hunting of the super tasty Muffin (of awesomeness) is a totaly crazy and colorful graphic textadventure with retro music, sounds a a lot...

Diguin

Diguin

Arcade

Take control of Diguin the Hummingbird, it this infinite side-scrolling challenge with lots of challenges! This game was developed in less than two weeks...

Comments  (0 - 10 of 20)
Ace1214
Ace1214

this engine would be extremely cool if it had a built-in IDE that you could run the scripts through instantly, but i do see the challenges that that would make for the developers of love

Reply Good karma Bad karma0 votes
Editapp
Editapp

Usually you can intergrate a build command for Love in lots of text editors, making it easy to package games instantly.

Reply Good karma Bad karma+1 vote
ananasblau
ananasblau

I prefer ot use my dear Vim for editing anything and I think most other people have their own choice of favourite editor.

Reply Good karma Bad karma+2 votes
XHH
XHH

I still cannot comprehend why people use Vi/Vim

Reply Good karma Bad karma+4 votes
kjfytfkytfyt
kjfytfkytfyt

That kind of sucks, that you have to have Love on your computer in order to play the games... i mean you should make it so the games can be run without having to have Love on your computer...

Reply Good karma Bad karma-1 votes
fláráðr_ljós
fláráðr_ljós

That's been possible since the dawn of time. It's up to the creator of the game if he wants to do that though.

Love2d.org

Reply Good karma Bad karma+7 votes
adfjkndjklnhdfs
adfjkndjklnhdfs

"Your game can easily be played by anyone with LÖVE installed on their Windows, Mac or Linux computer." Says this engines description.

Reply Good karma Bad karma0 votes
qaisjp
qaisjp

It's outdated, old versions required LOVE installed (or the binary); new versions allow lovers (us developers, not LOVE developers but game developers in love) to compile their project so you dont need love.

Reply Good karma Bad karma+4 votes
Estor_

Lövers

Reply Good karma Bad karma+1 vote
ianna_keeper
ianna_keeper

gonna give it a try soon.

Reply Good karma Bad karma+2 votes
Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.

Follow Report Profile
Platforms
Windows, Mac, Linux
Contact
Send Message
Homepage
Love2d.org
Licence
Zlib
Release date
Engine watch
Follow
Share
Community Rating

Average

9.5

52 votes submitted.

You Say

-

Ratings closed.

Highest Rated (2 agree) 10/10

There is no easier and friendlier way to get started with game programming out there!

Dec 9 2010 by qubodup

Twitter

Latest tweets from @obey_love

RT @KarlKaze: Here is my Launch Trailer for KnifeBoy, set for Oct 25th this year on Steam. Please add it to your wishlist if you… T.co

Aug 21 2019

RT @arachonteur: thing that makes me feel like a real gamedev and not a fakey fake: fake depth #gamedev #love2d T.co

Aug 6 2019

RT @icylavah: My #GMTKJam game is complete! You can download it at Itch.io if itch is working. #GMTK #love2dT.co

Aug 4 2019

RT @flamendless: Here is a blog post on how I did this simple asset bundling (not yet finished) with #lua and @obey_love #love2d in… T.co

Aug 2 2019

RT @bryinlyin: hi #screenshotsaturday! VERGER is a tiny roguelike in four seasons wander a strange land, harvest fruit, slay be… T.co

Jul 28 2019

RT @wmagic_cat: added aim system. #gamedev #indiedev #love2d T.co

Jul 28 2019

RT @Sin_tel: more creature sounds T.co

Jul 26 2019

RT @codecatt: I just released Loveman! 💙 A project manager for LÖVE on Windows with cross-platform build automation that makes d… T.co

Jul 20 2019

RT @bhagat_nagi: Hey hey! It's #screenshotsaturday ! So I've been working on for the past few weeks. It's a Snakes & Ladders game I… T.co

Jul 20 2019

Tags
Embed Buttons
Link to LÖVE by selecting a button and using the embed code provided more...
LÖVE
Statistics
Rank
38 of 813
Last Update
Watchers
128 members
Games
136
Files
242
Articles
131
Reviews
10
You may also like
Wave Engine
Wave Engine Proprietary
Castle Game Engine
Castle Game Engine L-GPL
id Tech 4
id Tech 4 Commercial
Smile Game Builder
Smile Game Builder Commercial
Source
Source Commercial
GoldSource
GoldSource Commercial