I have spent a year and a half now creating a 2D game that will be the flagship title of the game development company my friends and I are building. We use the Lua programming language for the majority of the code. Today I want to share some tools, libraries, and utilities I have discovered during development that I believe can be helpful to any other programmers who want to create 2D computer games using Lua.
I am a firm believer that you should use an existing game engine to do as much of the heavy lifting as possible, allowing you to focus on the interesting, unique aspects of your game. Writing a graphics library is a great project for learning those relevant techniques. But when you want to make a game you should rely on existing technology to provide all of the basics for you instead of re-inventing the wheel.
Here are some engines worth consideration:
LÖVE: I have the most experience with this engine and it has been great to work it. It makes cross-platform development fairly easy, has a strong, helpful community. And it has a lot of engine-specific tools and libraries for developers. LÖVE is easily my top recommendation.
VERGE: This engine requires more work up-front to use than LÖVE but it also provides more features, such as handling map tiles and streaming video. Its design, and particularly its community, make it a great choice for anyone who wants to create an RPG.
Scrupp: Scrupp also has great cross-platform development, to the extent that it is a worthwhile choice for programmers who want to create any cross-platform 2D application, not just games. It is rougher than the others in some places, but is well-documented overall and should be easy for developers to learn.
Lavgine: I have not used this engine. And to be honest it seems much better suited to 3D games. However, people whose opinions I trust have suggested it as respectable engine choice for a 2D game. So it is worth a look.
Corona SDK: If you want to make games for mobile devices, you can do no better than Corona in my opinion. If you are considering Corona then also look at the Corona SVG Mobile Games Level Builder. This tool allows you to take such resources as levels that you draw in Inkscape and automatically convert them to the appropriate properties and materials for Corona. It can cut out a lot of the ‘middle-man work’ that you would otherwise spend bridging together your assets and game engine.
Object-Oriented Programming Libraries
Every Lua programmer quickly learns the language does not support object-oriented programming out of the bag. So there are a multitude of libraries out to fill that gap. These are my favorites:
Personally I like MiddeClass the best, but they all deserve consideration.
Software for Artists
Everyone expects a 2D game to have some kind of graphics, so you or someone on your team will need one (or more) of these tools:
GraphicsGale: Great for creating and animating sprites.
tIDE: An editor for tile-based games that can work not only on Windows but also the Xbox 360 and Windows Phone 7.
Tiled A free, cross-platform tile-map editor, and my personal favorite.
All for Now
In future installments of this series I will talk about audio software, Lua development tools for programmers, informative references about 2D gaming, and more. Also please leave a comment below to share any programs you like to use when building 2D games.