The Java Rabbit Engine is a 2D, open-source Java game engine under the BSD license (read the license here). It is built upon LWJGL.

Why 2D?

Because it’s easier. In basically every area – graphics, media, math, AI, etc. – 3D is far more complicated than 2D. Easier means quicker development, which means more games finished, which means more high-quality games, which means more fun!

Additionally, I feel that most game developers should start off with 2D and then move to 3D, rather than jumping in all at once. It’s always better to learn something in steps (especially something as complex and multifaceted as programming), and the difficulty and magnitude of game programming pushes that to an extreme level. Being a beginning programmer myself, I felt I should apply this philosophy to my own first project.


Why Java?

That’s actually a big question. In my experience, many programmers (interested in making games or not) scoff at the idea of developing in Java, preferring C++ because of one thing: “speed.” (Well, and maybe pointers too.)

Is Java slower? Well, yes, fundamentally so – Java code is basically emulated while native code simply runs. But it actually doesn’t matter. Java is, in my honest opinion, still better for most indie game development, and here’s why:

  1. Ease of Production: Java is higher-level than C++, and it is generally faster to get work done in. This is a huge benefit to individuals and small groups – games are a lot of work, and the quicker things can be finished, the better.
  2. Portability: This comes in two flavors with Java. Firstly, it can run on any JVM, so the same compiled code will run on Windows, OS X, or Linux. Additionally, bugs are usually simply in the code, and not dependent on differences in hardware (though some exceptions exist, especially in the OpenGL side of things). Secondly, distribution options such as Applets and Java Webstart lets you more widely distribute your work over the web.
  3. Speed: Yes, C++ is faster, but Java is still more than fast enough. Modern processors are fast, and Java performs admirably on them.



Because it’s awesome!


Final thoughts:

jRabbit has been my first real programming project, and having never really finished one before, it’s rather surreal to do so now. Of course I haven’t added everything I’m planning for the engine, but I’ve come to the first real point where I can say: “It’s good enough for release.” It’s strange, and wonderful, and satisfying, and I’m glad I stuck it through.

And hey – now I can actually work on games again!