Lua-based Game Engines

3rd Edition of programming in Lua. The 4th edition is also available .

I’ve been on a mission lately to find something to use for game development other than Unity3D. Don’t get me wrong. I enjoy Unity development and C# is one of my favorite languages, but there are a few things that I don’t like about Unity. More than that though is the desire to learn something new. I decided to check out alternative game engines that use Lua (another of my favorite languages).  What I’m looking for is an engine that gives me at a minimum support for building binaries for: Windows, MacOS, Android, iOS (bonus points for Html5 and Linux).  Defold, Corona SDK, and Love2D were my first considerations. I’ve known about them for some time, but hadn’t taken the time to mess with them.

Lua Game Engines (the big boys)

Windows DesktopMacOSXLinuxAndroidiOSHTML5
Love2DyesyesyesyesyesYes with love.js (Not up to date with current Love2D version)
Defoldyesyesyesyesyesyes
Corona SDKyesyesnoyesyesno

Below are just a few things I liked/disliked about each of the engines. Note that these aren’t exhaustive lists by any means and are definitely missing things as I have not yet delved as deeply into any of them as I plan to.

Defold

The Good:

  • Component based
  • Nice message-passing system to pass data between GameObjects
  • WYSIWYG editor that does some of the janitorial work for you
  • New V2 editor in development that looks really nice
  • 3D is supported and there are plans to improve it
  • WYSIWYG particle system editor

The Bad:

  • Joystick support isn’t very good. At this point XBOX360 controllers are all that’s supported on Windows :/
  • The IDE is basically a customized version of Eclipse which I do not enjoy using at all

Corona SDK

The Good:

  • Very quick iteration time. You write code, save the file, and your changes are shown in a running project almost instantly.
  • Support for ‘instant’ development on target devices as well (haven’t tested this)

The Bad:

  • No 3D
  • The weakest cross-platform support
  • Just a few Windows-based joysticks supported (XBOX one, 360, etc)

Love2D

The Good:

  • Uses SDL under the hood for great cross-platform support
  • Strong community and active forums
  • Because of SDL, the joystick support blows the other two out of the water
  • Very quick to get something up and running

The bad:

  • Some Love2D library developers think it is funny to name their libraries with suggestive names (because the framework is called “Love” 2D). That’s immature and frankly, it is somewhat of a turn off.
  • Doesn’t provide and WYSIWYG tools and you must do all the lower level plumbing code yourself. Screen scaling, cameras, sprite batching, particle systems, etc.
  • No official 3D support

I have a side project in mind involving up to 4 simultaneous players which means joysticks are a must. I need joystick support. Good joystick support, and if you read anything above, you’ll know that Love2D has the others beat by a mile in this category. With Love2D there is even a built-in function to load a special joystick mapping file (courtesy of SDL) which describes any joysticks that are not supported by default. Very nice. So with that in mind, I decided to begin trekking dont the Love2D path to see what kind of progress I could make. I’ve created a few tutorial videos on Love2D the first of which can be found here. Depending on when you read this, there may be only one, but rest assured, there will be more. I’m enjoying using Lua to create games with, but I’m still not ready to jump the Unity3D ship completely. For now, the Lua-based game engines will be my side projects while my main projects will be Unity3d.