Game Engines
Introduction
One of the most common questions asked by aspiring game developers is the question “What game engine should I use?” It’s not an easy question to answer, even for developers who have been considering at game development for a while. This FAQ aims to provide enough information to allow inquiring devs to make an intelligent, informed decision as to what tools are right for them, or, at least to provide enough information to start on their search and allow them to ask more specific questions.
What is a game engine?
An engine is a complete package: a comprehensive set of tools to help you build a game from scratch. Engines typically contain some kind of level/scene editor, tools for importing and managing game assets (models, textures, sounds, sprites, etc.), an animation system, and a scripting language or API to program the game’s logic. You’ll still need to write code to use an engine, but you’ll only need to concentrate on game logic; the system-level heavy lifting has already been done for you.
What is a game framework?
A framework is much lighter weight than an engine. Frameworks exist to abstract away the lowest-level programming details, and allow a developer to make interactive graphics programs easily. Typically, a framework will handle creating the OS-level window in which the game will run (this is surprisingly complicated), provide a straightforward, platform-independent way to draw things in that window (whether 2D sprites or proper OpenGL/DirectX code), provide access to the state of various input devices (keyboard, mouse, joystick, etc.), and provide a system for handling sound. Everything else you need to code yourself. This has advantages and disadvantages. A framework is much less than an engine, but it means you are free to build any architecture you desire, rather than working within the constraints of any pre-existing engine’s design.
So…why do I need one of these?
Strictly speaking, you don’t need to use any of these sorts of tools at all, however the road to building a game without any of them is long, arduous, and filled with peril. Many developers who have found themselves asking this same question find themselves falling into what’s sometimes referred to as the “engine trap,” that is, they spend all their time trying to recreate the functionality found in these sorts of tools, and fail to ever actually develop the game that they started out trying to make.
If your end goal is to build a game, it is almost always a better choice to do so with the aid of some sort of third party tools.
So do I need a Framework, or an Engine?
This depends on your background and goals. Generally speaking, if your motivation is “I want to make a game,” you should choose an engine. An engine will get the messy architecture bits out of your way and let you immediately focus on art, design, and gameplay.
However, if your goal is “I want to learn to program games,” you’re probably better off using a framework, as you’ll be able to make your own decisions about how to build things, and you’ll come away with a much stronger understanding of how games are really built.
Additionally, it’s possible to design a game such that no engine will be well-suited to build it. Fez and Minecraft, for example, would likely have been much more work to build in Unity than to write from scratch on top of a framework due to how uniquely they approach gameplay, and how their assets are handled.
Also, if you want modern fancy graphics (like Xbox 360 or better), use an engine. You’ll go completely mad trying to reimplement all that stuff yourself unless you know exactly what you’re doing.
Which framework should I use?
This is a hard question, as the answer to it will depend largely on what you’re looking for the framework to accomplish. Common frameworks used for game development include
- Haxeflixel – Haxe based 2D framework supporting HTML5, iOS, Android, Desktop and more.
- LibGDX – Java Framework / Engine
- Love – 2D Lua based Game Framework
- MonoGame – C# based framework for 2D games. Supports Windows, iOS, Android, MacOS, PS4, PSVita, Xbox One, and Switch
- PyGame – 2D Python Game Framework
- Pyglet –
- Processing –
- SDL – Low-level library written in C. Supports Windows, Mac OS X, Linux, iOS, and Android
- SFML – Slightly higher-level than SDL, written in C++. Supports Windows, Linux and Mac OS X
- lgameframework – 3D game development framework for Lua
- LWJGL – Java library providing access to OpenGL, OpenAL, GLFW, Vulkan, OpenCL, BGFX, AssImp, NanoVG, STB, etc.
- Ogre – 3D C/C++ Rendering Engine
- OpenTK – OpenGL & OpenAL framework for .NET
- Flixel – Flash-based framework written in AS3
- Allegro – C/C++. Allegro is a cross-platform library mainly aimed at video game and multimedia programming.
Which engine should I use?
This is another hard question, as there are a lot of engines out there, and there isn’t a hard and fast set of rules for picking what’s best for you.
This list is by no means exhaustive, and serves to provide a starting point for your search for the right engine for you.
Engine Name | Platforms | 2D/3D | Language | Cost | Pros | Cons |
GameMaker: Studio | Deploys to: Windows, Mac, Android, iOS, Windows Phone 8, HTML5, Ubuntu, Tizen, Windows UWP | 2D | GML (custom) | Free to $799, depending on the modules | One-time payment, no revenue sharing, easy to use for beginners, active community, lots of exports | Limited, not generally accepted in a professional environment, the language only works in GameMaker |
Godot | Deploys to: Windows, Mac, Android, iOS, HTML5, Linux, Windows UWP, Various consoles | 2D/3D | GDScript (similar to Python), Python (currently in beta 2018/03), C#, F# (Mono), Visual Scripting, Nim | Free (Open Source MIT) | Easy to use for beginners (python like syntax), interesting scene/node system, lots of exports, Linux editor | Big update coming in May/June to the 3D engine so probably stick to the 2d engine until 3.0 drops, community is smaller, custom scripting language |
Unreal Engine 4 | Develop: Win, Mac, Linux | 3D/2D | C++, Blueprint Visual Scripting | 5% of profits from sales | Good documentation, Powerful tools/editor, active community, Does not require active subscription to release a game, Oculus/Morpheus VR Support | Upper-mid/High specs PC preferred |
Deploys to: Win, iOS, Mac, PS4, XB1, HTML5, Android, Linux | ||||||
Unity | Develop: Win/Mac/Linux | 2D/3D | C#, UnityScript | Free up to $100,000 revenue | Great Asset Pipeline, 1-Click deploy to different platforms, Large, Active community, good documentation | Messy with version control, pay to remove splash screen |
Deploys to: Win, Mac, Linux, HTML5, iOS, Android, PS4, XB1 , N3DS, Wii U, Switch | Subscription fee for pro version | |||||
RPGMaker | Develop: Win/Mac/Linux | 2D/3D | None | Free and paid versions, more options in paid | Easy to use and requires no coding knowledge. Extensive premade sprite assets with many more available online. | Can be pretty basic and lacks some customization. |
CopperCube | Develop: Windows, Mac | 3D | C++, JavaScript, Visual Scripting | Free | Very easy to use for beginners, runs fast even on very old systems | Source (C++) only in paid pro version |
Deploys to: Windows, Mac, Android, Web | ||||||
Cryengine | Develop: Windows | 3D | C++ / Lua/C# (scripting) | Pay What You Want | Powerful rendering, no royalties, active VR development | Little documentation currently, Not beginner friendly |
Deploys to: Win, Linux, PS4, XB1 | ||||||
Defold | Develop: Windows, Mac, Linux | 2D | Lua | Free | Rich IDE, used by King for their own games, no royalties, excellent docs and active community | |
Deploys to: Windows, Mac, Linux, iOS, Android, HTML5 | ||||||
Duality | Develop: Win | 2D | C# | Free | Open Source, Very Extensible, Modular | Small Community, Not Cross-Platform out of the box. |
Deploys to: Win | ||||||
JMonkey3 | Develop: Win, Mac,Linux | 3D | Java | Free | Excellent documentation, Active community, Beginner Friendly, Open Source | Smaller Community, very few commercial projects |
Deploys to: Win, Mac, Linux, Android, Web | ||||||
Blender Game Engine | Develop: Win, Mac Linux | 3D | Python 3.0 | Free | Good for prototyping, good documentation, active community | No longer considered a priority by the blender team. |
Deploys to: Win, Mac, Linux, Android, Web | ||||||
Irrlicht | Develop: Win, Mac, Linux | 3D | c++ | Free | Open Source, Good documentation, Active community, Excellent Asset Pipeline | Very few notable projects built using it |
Deploys to: Win, Mac, Linux | ||||||
Cocos2D | Develop: Win, Mac, Linux (some platforms need cocos2d-x) | 2D | Depending on platform, C++, C# or Objective C | Free | Large number of resources online, very powerful for 2D games, widely used for commercial ios development | not as active a community |
Deploys To: Pc, Mac, Linux, iPhone, Windows Phone, Android in development | ||||||
Corona | Develop: Win, Mac | 2D | Lua | Free | Rapid prototyping, live build testing, large and active community, good docs and tutorials, easy to learn, powerful rich APIs | Pay to remove splash screen |
Deploys To: iOS, Android, Kindle, Win32, macOS, tvOS, Android TV | ||||||
Stencyl | Develop: Win, Mac | 2D | Haxe, Visual Scripting | Free for browser, $$$ for iOS or Kongregate or Newgrounds | Good for beginners, integrated graphics program, active community, decent documentation | inflexible, no support for vector graphics |
Deploys to: Flash | ||||||
Multimedia Fusion | Deploys To: Win, Mac, Linux, iOS, Windows Phone, XNA, Java, Android, Flash | 2D | Visual Scripting | $119 standard version, More for more features | Lots of resources online, fast prototyping, visual scripting, lots of third party support | Not good for very complex games, not good for more than 1 developer, lots of “quirks” |
BYOND | Develop: Win | 2D | DM | Free | Good documentation, very active community, Rapid development, beginner friendly | not scalable, not good for complex projects |
Deploys to: Win | ||||||
ImpactJS | Develop: any desktop | 2D | Javascript | $99 | tile based games, sprite animation, html5! | not for complex rendering projects |
Deploys to: HMTL5 | ||||||
Construct 2 | Deploys to: HTML5 | 2D | Visual scripting, Javascript | Free for personal use, $$ for commercial | good for beginners, no code needed, exceptional documentation, active community | Free version is very limited, engine is designed for beginners and is limited because of it |
Torque 2D | Deploys to: Windows, OS X, iOS | 2D | C++, Objective-C, TorqueScript | Open Source, MIT License | Rapid prototyping, fast turn around on features and bug fixes, extremely fast, advanced physics capabilities, scalable asset system, script component system, open source, active community, highly performant “tile” system | no editors (yet), documentation is a WIP, community could be larger |
Torque 3D | Deploys to: Windows, Linux, OS X | 3D | C++, TorqueScript | Open Source, MIT License | full in-game editor suite, lots of built-in gameplay and environment objects, full source code access | custom scripting language, documentation is patchy, community could be larger |
Source | Deploys to: Windows, OS X, Linux, PS3, Xbox360 | 3D | C++, Squirrel | Free for non-commercial use on PC, $$$ for commercial and other platforms | Very easy to use level editor | Programming documentation is not always up to date. Very minimal support |
BDX | Develop: Windows, Mac, Linux | 3D | Java | Free | Open-source, no import/export process, Blender-integrated, light engine | Tiny community, small feature list vs. larger engines |
Deploys to: Win, Mac, Linux, HTML5, Android, iOS | ||||||
Superpowers HTML5 | Deploys to: Web, Desktop, Mobile (Intel XDK) | 2D/3D | TypeScript | Open source (MIT-like) | Real-time collaboration over the Internet, great for jams, extensible | Not the most performant engine out there |
Panda3D | Develop: Windows, Mac OS X, Linux | 3D | Python (fully featured) or C++ | Open source (Modified BSD License) | Very versatile, powerful scene graph, easy & quick prototyping with Python, optional community-maintained PBR pipeline, no royalties | No editor, so external editing tools need to be used (blender, netradiant,..), slightly niche |
Deploys to:Windows, Mac OS X, Linux |
Some more Game Engines
Free 2D Game Engines
Free 3D Game engines (some have 2d too)