Monkey-X is my current favorite language for doing game prototypes and even full projects. It isn’t at all widely known, and has more than a few rough edges, but I still find it congenial and thought I’d share so that more people will give it a try.
When I went looking for something to code in, I had the following criteria:
- Get stuff on screen in under an hour. Ideally, under ten minutes.
- Output to as many platforms as possible.
- Web, because that is useful for accessibility, Facebook, demos, and more.
- Desktop, because that’s where midcore and core gamers still live.
- Mobile, because the whole world is moving to touch.
- Avoid porting. Porting is tedious and expensive. Yes, you get the advantage of maximizing use of the hardware, but the fact is that there’s a lot of headroom on hardware these days.
- A community large enough to supply libraries for things I don’t want to write myself. I am no great shakes as a coder, you see.
- Syntax that doesn’t make my eyes cross (looking at you, Objective C).
- Garbage collection. Why? Because I always mess it up, and then it gets in the way of being productive.
Monkey-X met these criteria, though the community is still pretty small.
Monkey outputs to desktops (Windows, Mac, and Linux). It outputs to mobile (iOS, Android, Windows Phone). It outputs to the Web in both HTML5 and Flash. It does XNA, it does Playstation Mobile (Vita!)… the way it works is by creating a native project for each, as long as you have the toolchain on your dev machine. So after hitting compile, you actually have a Visual Studio project, an XCode project, and so on.
It’s also $99 and mostly open source, though you certainly want to spend some extra money for JungleIDE.
There’s GL (ncluding WebGL), Box2d, physaxe or Chipmunk for physics, Flixel, Particle Candy, a pretty nice community framework called Diddy, a few others (Playniax, Ignition, etc), several GUI libraries (though none are yet desktop-app level, they are mostly aimed at games), and so on. Nowhere near what there is for the Asset Store in Unity, though.
Language-wise, it’s a descendant of the Blitz family of languages, which I have used off and on for years now. It’s object-oriented, supports reflection and interfaces, you can load in external code, and even add your own targets if you are willing to dig in deep.
I looked a lot of other languages when I did this research back in 2013. My test case was “make a Bejeweled grid,” because it is so incredibly simple.
- Unity is of course the big gorilla. Enormous community, tons of support, and it does everything. But it does 2d and rapid prototyping poorly (it has quite a learning curve), and most of what I want to do right now is 2d. I can stage up a gorgeous outdoor FPS game in under an hour in Unity. Making a grid with gems on it, though, took me hours. I’m sure I could do it faster, given more practice, but the fact is that doing 2d in Unity is working against the grain. Unity is also much more expensive than everything else if you plan to ship anything with it. I am sure that at some point, I will have to bite the bullet and dive in, given that Unity is well on its way to having a monopoly on game development. 🙂
- Gamemaker is way more robust than many give it credit for. At GDC, one of the people from there did the Bejeweled test in under ten minutes. You do have to work inside of the integrated editor and tool, like Unity, but you can pretty much do all the work in GML, their scripting language. You need the Pro or Master Collection ($799) to get all the target platforms, though.
- Corona is basically Lua. It’s great, and I am quite comfy in it, but it doesn’t do desktop or web.
- Loom is done by folks I know, actually, and is pretty slick. But it is very directly aimed at ex-Flash people, mimicking APIs and the like, and I actively disliked what I saw of coding with Flash while doing social games.
Some stuff I didn’t look at too closely:
- Marmalade has annual fees; you write in C/C++.
- There was just writing directly with Cocos2d-x.
- Moai is also out there; it’s like Corona, only open source and with more targets, but less usability.
- Monogame, which is somewhat more low level than the above.
- SDL, which is WAY more low level than the above.