So you want to make games? – Engine

engine

We’re now going to talk about the part of game development that programmers have been anxiously waiting for, and others have been dreading… the engine. Certain people have a natural knack for programming and won’t be as nervous about making decisions here, but I’m aware that for some, the idea of mucking around knee deep in code and syntax isn’t your thing; I’m therefore sorry to tell you, that although there are options available to reduce the amount of coding necessary, you’ll need to at least get your feet dirty in order to build a game of your own design.

This section is part of a larger compilation of articles on independent game development. More topics will be included over the next few weeks. Please see the primary article for ongoing updates and the table of contents.

The Upfront Decision

I’ll be delving into the multiple layers of a game engine later in this section, but the first thing you need to decide is whether you’re making your own engine or using someone else’s. This may not be as easy a decision as you think, as many would-be programmers often find themselves lost in creating an engine as opposed to a game. Hopefully you’ve fleshed out your initial design in a enough detail to avoid such a trap, but there are those who can’t help but to implement “just one more thing” for the sake of simply having proven to themselves that they could do it.

Ask yourself, do I want to reinvent the same wheel that so many have reinvented before me? Do I want to reprogram the same chunks of code that are, in some cases, freely available to use? On the opposite side of the coin, ask yourself if you want to deal with someone else’s bugs and function library? Are you willing to package up an entire house when all you want is a refrigerator?

Only you can decide what will work for you, but feel free to read the rest of this article before making any final decisions.

Prebuilt Engine Alternatives

If you already know that you don’t want to code everything from scratch, you’re probably looking for a list of recommended game engines to load up and begin developing with. There aren’t as many “complete” engines out there as you might think; many are only smaller parts of everything else needed to pull together. That being said, there are a few that include all the necessary layers, though some will cost you a pretty penny to obtain full functionality from.

Below is a short list of the more popular engines currently available:

  • Unity
    • Perhaps the most popular engine for “non-programmers”
    • Scripting done in C#, Javascript, or Boo languages
    • Comes with a complete development environment for asset importing and scripting
    • Available for several platforms
    • Free version available for Windows and Mac targets (lacks fancier graphic functions)
    • $1500 for the full version
    • $400 more for Android or iOS options (each)
  • Unreal Development Kit
    • Amazing capabilities used by AAA studios available now to indie developers
    • Scripting done in Java and C++
    • Available only for Windows and iOS targets
    • $99 for licensing
    • Additional cost of 25% of all royalties after $50,000
  • Microsoft’s XNA Game Studio
    • Scripting and programming done primarily in C#
    • Built on top of the very complete collection of DirectX libraries
    • All done in code via Visual Studio
    • Only available on Microsoft platforms (Windows, Xbox, Windows Phone)
    • Free licensing (if using Visual Studio Express)
  • jPCT
    • Scripting and programming all done in Java
    • No development environment, all done in code
    • Available for Windows, Mac, Linux, or Android
    • Free licensing
    • Privately maintained with good code organization
  • Construct
    • 2D only
    • Almost no programming skills required (uses event system)
    • Makes games in HTML5 for browsers
    • $79 for a standard license

It’s Not The Language, Silly!

Wars have been fought online over the subject I’m about to bring up. You ask this on a forum and it inevitably starts a “flame” filled thread with opinions and conjecture over which is “best” (big emphasis on those quotation marks). Even if you choose a prebuilt gaming engine, you’ll need to learn a programming language in order to script events and customize mechanics.  So which language “should” you choose?

The answer is simply: whichever one will work best for what you need. If you decide on a prebuilt game engine your choices will be whittled down for you. Otherwise, your best bet is to stick with what you already know.

This is because the language doesn’t matter. Making a solid game has nothing to do with the language you decide to program in. What actually matters are the libraries available for you to build off of. Most languages have a way of integrating libraries written in other languages, though you’ll probably have to put in some extra effort to import them.

One of the absolute best collections of libraries I’ve found available to Java programmers is the Light Weight Java Game Library. They are regularly updated, well supported, and utilize numerous industry standard C libraries such as OpenGL (for graphics) and OpenAL (for sound). The popular games Minecraft and Runescape were both written this way, which can come as quite a shock to those who consider Java a “slow alternative” or the “ugly stepchild” of the development world.

There is also an excellent collection available to C# programmers in the form of Microsoft’s XNA Game Studio which utilizes the popular DirectX libraries for game development on Windows and Xbox. Popular games written using XNA include Terraria and Magicka.

For those who feel that C or C++ is the best way to go, you can use the aforementioned DirectX libraries, or some popular cross-platform ones such as SDL or SFML that have proven quite capable and sturdy. There are also some very good graphic engines available such as OGRE, but keep in mind that graphics alone can’t make a game.

If you’re developing for an Android or iOS device, then your only choices will be determined by Google or Apple respectively. Both platforms have fairly extensive libraries and compilers already in place, as well as limitations on what they’ll allow outside of their purview.  If you go with Android, your choices are currently Java or C++, and if you go with iOS you’re stuck with Objective-C (with some C++).

Now, let’s talk about all the parts that make up a complete game engine…

Continued on next page

Pages: 1 2

Did this article help you in any way?
Please consider donating so we can make more.

a littlea lot
$