Languages, Frameworks and Engines
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.
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.
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");
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.
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.
Here are the languages, frameworks and engines that usually come to mind first:
- C# (easy)
- Java ( easy)
- Delphi (medium)
- C (hard)
- C++ (hard)
- XNA Game Studio (needs C#, hence easy)
- Ogre3D (needs C++, hence complicated)
- Unity3D (easy to use, perfect for all kinds of Games)
- Torque2D / Torque3D
- Unreal Engine
- Cry Engine
- Source Engine
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.