noobtuts

Languages, Frameworks and Engines

Foreword

The amount of different choices when making a game can be overwhelming. In this article we will learn the difference between a Programming Language, a Game Framework and a Game Engine - and when to use which one.

Programming Language

A programming language is what we make programs with (the classic way). We just open a text editor, write in a few lines of code and then compile it to a program.

Game Framework

A Game Framework extends our Programming Language by a few functions that we need for game development. The goal is to save us time when programming the game. For example, we don't have to worry about how to load a 3d model anymore since the framework already has a function for that. All we have to do is something like:

Model m = framework::load("player.3d");
    world.add(m);

Game Engine

A Game Engine is different from the two above. Here we don't use the classic way where we just open the text editor, write in some code and then compile it. Instead a Game Engine is one big program that has all kinds of menus and features. If we want to put a 3D model into the world, we usually just click a few buttons, select the file and drag it around a bit without writing a single line of code.

Game Engines usually support Scripting, which means that we can still write little programs inside the Engine.

Which one to use then?

Each type has a lot of advantages and disadvantages. Ultimately it's a matter of taste.

Time is always an important factor. A project might take 3 months when making it from scratch just with the Programming Language of choice. When using a Game Framework with it, it might only take 2 months to make the game. When using a Game Engine, chances are high that it just takes a couple of weeks. A Game Engine can make all the difference between making 10 games a year and making only 1 game a year.

Fun is an important aspect as well. After all, fun is why we make games and not the next phone book software. For many programmers it's much more fun to make a game in C++ than in a Game Engine that uses Javascript, even though it takes much longer. Making the game in a programming language that you really love will help you to stay motivated over a long period of time, which is really important in bigger projects.

Learning makes a huge difference too. In Game Engines we usually don't have to worry about things like lighting or how animations really work. When making the game from scratch in our programming language, we really do have to worry about all kinds of complicated techniques and mechanics. Even though this can be a lot of stress in the beginning, developing your own lighting system will give you a lot of knowledge that might be useful later on.

Candidates

Here are the languages, frameworks and engines that usually come to mind first:

Languages

Frameworks

Engines

Summary

If you still don't know if you should use a Programming Language, a Game Framework or a Game Engine, you should probably think about your priorities first.

If you want to ship games and make a living off them no matter what, a Game Engine is the best choice for you. It will let you focus on the actual gameplay without worrying about too many technical aspects, platforms or compatibility with older hardware.

If you make games mostly for fun then it's very simple: use whatever language / framework / engine makes you happy.