Indie Game Programming


Welcome to Indie Game Programming

What does it mean to be indie? Ironically, independent game development's greatest weakness is also its greatest strength. When you are indie, you have no publisher, no budget, and few team members (if any). But it also means that you don't require publisher approval, and have complete creative freedom. With crowd source funding, online distribution, and many available platforms, it is an exciting time to try out indie development.

Why Java for Indie Games?

Java is not the most popular choice for game development. But Java is a great choice for making games. Reasons for choosing Java include:

  • Free - Java doesn't cost any money (great for indies).
  • Garbage Collection - Java manages memory, so learning how to make games is easier than a language like C/C++ that makes you handle everything yourself.
  • Object Oriented - Java is an object-oriented language, which makes it easy to compartmentalize code for reuse.
  • Statically Typed - Languages such as Javascript and Python are loosely typed, and errors with mismatched types are not caught until that code is run. Java catches these errors at compile time.
  • Failsafe I/O - A super fast language doesn't mean a whole lot if you can't fix bugs. Java throws meaningful exceptions and has great debugging features. You can even connect to another machine and look at all the variables in memory with the jconsole utility
  • Documentation - Java has tons of documentation, tutorials, and example code available to teach everything about the language.
  • Help Available - Because it is such a popular language, help is only an internet search away.
  • Mature Tools - Java has been around for a long time, and all of the most commonly used tools are fast and reliable.
  • Fast - Current Java code speed is usually as fast or almost as fast as C++.
  • Multi-Platform - Java code runs on Windows, Mac, and Linux.
  • Profilling Tools - Not only can the jconsole utility explore code, it has build in profiling for free.
  • Multi-threaded support - Java's threading support is built right into the language, so when you're ready, all the features are available without 3rd party libraries.