I’ve been looking for the past year for a suitable programming environment for my two boys (10 & 7) that moves them beyond graphical environments like Scratch and Lego Mindstorms and into the land of real programming (a few years ago we had great success with Scratch). In my mind, the target has always been something like the Apple ][ BASIC ROM that shipped with the machine: easy to grasp and when paired with the GR (low resolution graphics), an endless source of fun. However, it’s been an absolutely bear to find something that fit the bill in terms of abstracting away enough complexity while remaining engaging enough in the era of Minecraft and Halo 4. Until LÖVE, a quirky game framework.
Before I get to why LÖVE is working, here is a list of the stuff we played with and dismissed:
- PyGame: though it benefits from maturity and tons of material online and Python at its core (a fantastic starter language with tons of headroom), it is too low level for kids. Plus it is a bear to build on OSX.
- Pythonista: iOS only, sadly, and both boys have yet to get the memo that keyboards are out and fingers on glass is the future. If this got ported to the Mac, it would win, hands down as the API is fantastic. Maybe my kids will learn that in the future there won’t be keyboards and start living there...
- Gosu: Ruby’s version of PyGame, it looked great until you try to build it and see some of the same cracks PyGame suffers from. On top of it, there are a bunch of Ruby projects for teaching kids that use it so the documentation is a bit inconsistent.
- ImpactJS: I want so badly to believe in a future where all apps are in the browser but if you value your sanity, it’s a tough environment for beginners. ImpactJS is well done if you already have all of the basics of game development down and want to target the browser but otherwise, I call it the “English major maker”
- Unity3d pros use this and it has a nice feature in that it supports a lot of languages along with a free edition. But it is a full and complex IDE so teaching someone to program with this is like teaching a kid to draw with Photoshop. Sometimes crayons are better (Playmaker makes some of this go away but at the cost of being Scratch-like)
- text based terminal games: I loved Zork and Choose Your Own Adventures but it turns out that no graphics = no fun for little guys so this one was not ever a real option
Enter LÖVE. I had seen this about 6 months ago but dismissed it because the programming language, Lua, looked weird and I’d never heard of it. But it turns out to be just what the beginner brain needs and surprisingly, its warts are a padawan’s advantages. Crappy scoping? No need to explain locals, globals, etc. Only 5 datatypes? No need to explain how numbers aren’t always numbers. Pascal like “ends” everywhere? Much better than braces or whitespace.
To boot, the API offered by the underlying game engine makes sense, boots quickly, and offers a really nice learning curve. It’s only been a weekend but already we’ve got a a 2D game with a minimalist state machine, collision detection, sprites that don’t look totally awful, and sound effects to boot!
If you are looking for something to ease kids into real programming, you could hardly do better than well documented, nicely packaged, and free on top of a language which may not please the purists but will certainly engage your kids in the basics.