Contact Us

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

Anura

Atomic Game Engine

Cocos Creator

Crafty.js

CreateJS

Excalibur.js

Flambe

Flixel

Flixel Community

Game Closure

GDevelop

Gideros

HaxeFlixel

Kivy

Kiwi.js

LibGDX

LÖVE

Lychee.js

Melon.js

Meta2d

OpenFL

Panda.js

Phaser

Pixi.js

Qici

Quintus

raylib

RenPY

Starling

Superpowers

Turbulenz

Free 3D Game engines (some have 2d too)

Atomic Game Engine

Babylon.js

Blend4Web

Citrus

Dash

Gameplay

Horde 3D

JMonkeyEngine

LibGDX

Lumberyard

MonoGame

raylib

RPG in a box

Spring

Superpowers

Three.js

Urho

Voxel.js

Wave