Fallen Game Engine May 11, 2011Posted by Jesse in : Game Development , add a comment
This entry will likely only be of much interest to other game developers. I’ll try to put up more fun game stuff soon.
A couple of months ago, I decided that I was going to write my next game to target Windows, Mac OS X, and Linux, instead of the Xbox Indie Marketplace. There are alot of reasons for this, and I can go into them in depth if anyone cares, but the gist is that I want more control.
Going forward with that decision, I started looking into the game engines/frameworks available that would match my needs. (If you follow my twitter, you’ve probably seen that I’ve ported the Demina player about a half dozen times. I used it as a gauge to test the frameworks.) There’s alot of really cool stuff out there.
- Unity3d and the Unreal Development Kit
- PlayFirst’s PlayGround SDK
- LÖVE and Monkey
These are both really awesome for 3d work. While I managed to get some 2d code working nicely in Unity, it wasn’t a very elegant solution and I think I would have had severe problems. If I decide to work more on a 3d game, I think one of these will be an easy choice.
PlayGround is a well supported 2d framework. It’s got all sorts of bells and whistles, like Flash movie rendering and Lua scripting support. Unfortunately, it’s also missing pixel shader access, and doesn’t currently port to iOS or Android.
LÖVE is really cool, but I don’t think I’m ready to write an entire game in Lua. Monkey generates code for a ton of platforms, including Xbox Indies. Unfortunately, you have to write in a language (similar to Blitz Basic, I think) specific to Monkey. I feel that these are both very awesome, but I think it’s a better idea for me to stick with a programming language I’m already very familiar with.
Monocle rocks! It’s brand new, and still under heavy development, but already very cool. Alec Holowka is one of the main developers behind it, and he’s using it to build Marian. (Which I am uber-excited about.) I spent a couple of weeks evaluating it, but I’ve decided to go in another direction. I’m still following the development, though. Hopefully I’ll be able to find some ways to contribute.
In the end, I realized that what I really want is XNA. I really love the framework, and it matches perfectly with how I want to write games. Unfortunately it has two problems. It doesn’t exist outside of Windows/XBLIG, and I really dislike requiring the user to install both .Net and XNA before they can install my game on Windows. There are partial ports to Mono, which could help solve the problems, but they don’t seem very well supported. So I decided to create something of my own.
It’s taken me a couple of weeks, but I’ve reached the end of my todo list, and now the Fallen Game Engine is up and running. (It’s really just a framework, not an engine. I chose the name poorly.) It’s not a port of XNA, but I’ve implemented the features that I need in a way that is very similar to the features in XNA. I’m sticking to the rule of “Write Games, Not Engines”, so now that I’ve implemented the specific features I know I’ll need, I’m going to start on game code rather than spend forever implementing features I may never use.
The code is open source, and the reason I’m posting this is to invite other developers who may be interested to take a look. I think it would be of particular interest to XNA developers who are wanting to port over to Mac OS X or Linux. If you’re interested, you’re welcome to go take a look at the source, and I’ll happily help you get setup and working.