Ludicrous Software

Space Instavaders

I’ve been wanting to make a little game with Haxe/NME and HaxePunk (a port of FlashPunk to Haxe), as I’ve read some good things about them. The end result is Space Instavaders, a Space Invaders clone with a Steven Poole-inspired twist.

Zwoptex and Corona’s New Sprite API

Long time, no blog post, so here’s a quick and easy one to get back into the swing of things. After a season or two away from Corona dev, I’ve recently had reason to return to it to prototype a game. During my time away, Corona’s Sprite API was changed considerably. However, Zwoptex (my sprite sheet generator of choice) has not been updated to output a .lua file that uses the form required by the new API. So here’s the fix for that.

Simple App to Ipa Script

I have a client who asks for .ipa files of test builds, but the Corona SDK (among others) creates .app files. The process of creating an .ipa from an .app file is pretty simple, but I wanted to automate it a little more. The result is this simple little bash script.

Remove Unused Libraries From Corona Apps

Ansca has incorporated a lot of libraries into the Corona SDK that make it very easy to add social, analytics, and other features to your app. The downside is that all these great features are still bundled into your app during the build process, even if you don’t use them. Ideally, Corona would exclude these unused libraries, but currently it does not. However, if you’re building for Android, it’s possible to remove them from the apk file.

Corona Bunnymark Performance

Last week I ported Iain Lobb’s Bunnymark performance test to Corona, as I was curious to see how it would perform. I posted the results on Twitter, but thought that I’d follow up with a post showing the Bunnymark code, and also talk about how the results have changed after testing again using the graphics optimizations recently announced by Ansca.

PlayBook Sales/Downloads

I have two PlayBooks apps available in BlackBerry’s App World: Poker Solitaire (available for $0.99) and Marblous (a free app). I recently noticed a bit of a spike in sales of the former and downloads of the latter, and while I was looking at the numbers, I realized that I’ve never done a sales/stats post. So here’s a sales/stats post. The numbers for both apps are overall pretty low (I’m not retiring off this income), but I think what’s interesting is the trend that they both indicate, which is that the market for PlayBook apps seems to be growing.

Scope in Corona

Scope in Lua can be a bit of a challenge if you’re used to how scope works in other languages, such as AS3. Rather than try to write the exhaustive, authoritative description of scope in Lua, I figured I’d do a quick overview to explain a few things that may not be obvious when you’re starting out, and also describe how I typically handle potential scoping issues.

hasEventListener() in Corona

One of the nice things about Corona if you’re a Flash developer is the similarity between Corona’s API and some Flash APIs. For example, the event listener, although different in some respects, are also quite similar, which makes learning Corona a lot easier. But sometimes, those differences mean you’re missing out on things that you “take for granted” in Flash. For example, Corona has no native hasEventListener function. But I needed one, so I wrote one.

Speed Up Device Builds in Image-heavy Apps

I’m currently working on an image-heavy Corona iPad application for a client. And when I say “image-heavy”, I mean extremely image-heavy. The app is about 150MB in size, and about 99.8% of that is PNG images, and most of those images are fullscreen (i.e. 1024 x 768) images. It takes about eight(!) minutes to build the app using the latest public release of the Corona SDK, and I wanted to find a way to speed that up.