Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

Game Engine Guides

The following is the master list of “Closer Look at” series done by  Each is a combination of a guided tour, review and getting started tutorial, designed to give you a quick but thorough introduction to each game engine. The following list is chronological order in which the guide was written. If there is an engine you would like to see get the "Closer Look at" treatment, please contact me with details!

  • S2Engine HD

    S2Engine HD

    S2Engine is a low cost 3D Windows only game engine capable of some stunningly pretty results. Text Version | Video Version
  • ClickTeam Fusion Engine Logo

    ClickTeam Fusion

    ClickTeam Fusion is a storied 2D game engine complete with all of the tools you may need. ClickTeam requires no programming experience. Text Version | Video Version
  • Stingray Game Engine Logo

    Stingray Engine

    Stingray is a 3D engine from Autodesk, the makers of Maya and 3DS Max. It was based on the BitSquid engine, is written in C++ but coded using Lua and Flow. Text Version | Video Version
  • QICI Game Engine Logo

    QICI Game Engine

    QICI is a full HTML5 game engine and editor built over top of the sublime Phaser framework. It's is both free and open source. Text Version | Video Version
  • Atomic Game Engine Logo

    Atomic Game Engine

    Currently in early access at a reduced price for the Pro version, Atomic Game Engine is freely available and built over the Urho C++ based game engine, adding a very polished editor and JavaScript and Typescript bindings. Text Version | Video Version
  • Otter 2D Logo

    Duality Engine

    An open source C# based 2D game engine with a surprisingly capable and well polished Editor and entity component system. Text Version | Video Version
  • Otter 2D Logo

    Otter 2D Engine

    An open source C# engine built over top of the SFML framework. Otter2D provides most of the game engine functionality you would expect in an easy to use well documented format. Text Version | Video Version
  • WaveEngine Logo

    Wave Engine

    A C# based 2D/3D cross platform game engine with tooling that runs on Windows, Mac and Linux.  WaveEngine is free to use but requires displaying a splash screen. Text Version | Video Version
  • SFML Logo


    While technically not a game engine, SFML provides a great deal of the functionality you need to make a 2D game using C++ including graphics, windowing, networking, input and audio libraries. It is free and open source. Text Version | Video Version
  • jmelogo200


    A Java based cross platform 3D game engine capable of targeting Windows, Mac, Linux, Android and soon iOS. Contains a full SDK and toolset for creating 3D games. Text Version | Video Version
  • agk

    Paradox Game Engine

    A C#/Windows/Visual Studio based 2D/3D game engine capable of targeting Windows, iOS, Android and soon PS4, Mac and Linux. Uses a component based design and icluded Paradox Studio for asset management Text Version | Video Version
  • agk


    Stencyl is Text Version | Video Version a cross platform 2D game engine with a visual scripting language available with the option to program using the Haxe programming language.  Stencyl can target web, desktop, iOS and Android.
  • agk

    AppGameKit 2

    A cross platform mobile friendly 2D/3D game engine programmed using BASIC or C++. Runs on Mac and Windows and capable of targeting Mac, Windows, Android, iOS and Blackberry. Text Version | Video Version
  • LibGDX Logo


    A cross platform, open source Java based 2D/3D game framework. Extensive tutorial series exists here on Text Version | Video Version
  • BabylonJS Logo


    A 2D code focused open source HTML5 game engine. Text Version | Video Version
  • Playcanvas Logo


    A 2D/3D HTML5 game engine with a complete 3D world editor. Text Version | Video Version Partially open source with commercial licenses for cloud based services.
  • Godot Engine Logo

    Godot Engine

    A C++ based open source 2D/3D game engine supporting most desktop and mobile platforms while running on Windows, OS/X and Linux. Text Version | Video Version
  • Urho3D Logo


    Urho3D is a lightweight, cross-platform 2D and 3D game engine implemented in C++ and released under the MIT license. Text Version
  • Unreal Engine Logo

    Unreal Engine 4

    One of the largest install base 3D game engines available, and the most used by AAA studios on this list. Please note this guide is in two parts, look for the link to the next page at the bottom. Also note, there is no longer a monthly fee.Text Version
  • Project Anarchy Logo

    Project Anarchy

    Another AAA game engine on the list. Project Anarchy is a collection of AAA game technologies from Havok, released free for use on mobile platforms.Text Version
  • Turbulenz Logo


    An HTML5 game engine geared towards high performance 3D games. Developers may have stopped development.Text Version
  • AWE6 Logo


    AWE6 is a Haxe based Inversion of Control based game engine, used to create some shipping game. What's IOC? Read more to find out!Text Version
  • Loom Logo

    Loom Engine

    Loom is a mobile focused cross platform 2D game engine. Please note that the logo is not theirs, I couldn't find one. This is a mutli-part guide, the link to next part is at the bottom.Text Version
  • Loom Logo


    Cross platform C++ open source, code centric 3D game engine, originally created by RIM. Text Version

blog comments powered by Disqus

Month List

Popular Comments

Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

1. January 2016


A reader wrote in to share this bundle currently running on BundleStars, and I am glad they did.  Somewhat similar to a humble indie bundle from a few months back but containing a great deal more art assets.  I’ve actually used the tilesets from the earlier humble bundle several times here on GFS, so I will be picking up the $16 tier.


The ultimate Game Makers bundle:



For between $3 and $15 you can end up with a heck of a large volume of assets to make games with.

GameDev News, Art ,

1. January 2016


When I set up the news monitoring on I noticed that Ogre3D hadn’t had an update since June and was somewhat concerned that the project was dying off.  Thankfully today there were signs of life over at  If you have never heard of it, Ogre3D is a C++ based renderer and scene graph and has been used to create several shipped titles.  The major challenge to Ogre3D is that it is currently Windows and Linux only.


From the update:

So… what’s new?

1. Added TagPoints to the new Skeleton system! This has been a sort of unfinished business for me. I’m glad it’s finally done!

2.1’s TagPoints are superior to their 1.x counterparts. The TagPoints from v1.x had many issues: they didn’t follow RenderQueue, visibility rules, nor LOD rules correctly (they were subordinated to the settings from the main entity/skeleton they were attached to). The v1 TagPoints also belonged to an Entity. If the Entity was destroyed, it took down its TagPoints with it. Meaning if you wanted to still keep the attachments, you had to iterate through them, detach them from their TagPoints, and add them to a new SceneNode. Ugh!!! Personally, I gave up trying to use those in my projects a long time ago.

In Ogre 2.1; TagPoints are much better: they are exactly like regular SceneNodes, except they occupy a little more RAM (a few more bytes per node), and can be attached to Bones. Other than RAM consumption, there is no performance penalty for replacing SceneNodes with TagPoints (*).

You can make a TagPoint child of a SceneNode, a SceneNode child of a TagPoint, and a TagPoint child of another TagPoint. The only thing you can’t do is make a SceneNode child of a Bone. You must use a TagPoint for that.

If you want, you can use TagPoints throughout your entire codebase and forget about having to deal with whether an Item/Entity was attached to a TagPoint or a SceneNode and get downcasts correctly.

(*)When a SceneNode or TagPoint is attached to a TagPoint that is child of a Bone, the performance is slower because these nodes need to support non-uniform scaling. But if the TagPoint is child of the Root SceneNode (instead of a bone) like all regular SceneNodes, then there’s no performance penalty.

2. Added PSOs (Pipeline State Objects). This brings us one step closer to Vulkan, DX12 and Metal support. We’ve also noticed some minor performance improvements since there are less hoops now when tying shaders with input layouts in the D3D11 RenderSystem. Overall it simplified our workflow. It also fixed a rare culling winding bug in GL3+ as a nice side-effect.

This work is in the branch 2.1-pso. It’s ready. It hasn’t been merged yet back to main 2.1 branch because I am waiting to test it on a big engine (since it was a big change) in case there are edge cases to fix.

3. Added alpha tested shadows and transparency to PBS! These have requested by many. Alpha tested shadows are useful for grids, leaves and other alpha tested objects.

We offer two transparency modes: Transparent and Fade. The former is physically based and still emits some specular light even at alpha = 0; the latter is good old alpha blending; and becomes invisible when alpha = 0.


4. Added Metallic and Specular workflow options. We’ve been working hard and closely with other teams and artists, tuning the BRDF settings. We now have 3 workflows: specular_ogre, specular_as_fresnel (what most popular engines do when they say “specular” workflow) and metallic.

For the tech-curious, specular_ogre maps the specular texture to the coefficient “kS”, whereas specular_as_fresnel maps the specular texture to the fresnel, colouring it. And metallic uses the slot reserved for the specular texture to control the metallness.

John Hable has an interesting discussion about the topic. Long story short specular_ogre allows more variety in the amount of materials that can be represented; but the specular_as_fresnel is more intuitive and is what most artists are used to.

5. Optimized vertex buffers for shadow mapping! If you’ve got VRAM to spare, you may want to enable this option to generate vertex buffers optimized specifically for shadow mapping.

Normally, GPUs require us to split a vertex when two triangles can’t share it (i.e. it has a different normal, it has got an UV seam, etc). But shadow mapping only requires position, and these cloned vertices (alongside fatter vertices) reduce performance unnecessarily. This new feature creates a vertex buffer with position data exclusively, thus reducing bandwidth requirements, fitting the cache better; and reducing the vertex count by avoiding duplicates.

Performance improvements vary wildly depending on scene and model complexity.

To enable it, set the global variables:

Mesh::msOptimizeForShadowMapping = true;
v1::Mesh::msOptimizeForShadowMapping = true;

Note that this will increase loading times. For large meshes (i.e. 300k vertices), it is better to do it offline and save it to disk using the OgreMeshTool. If you do this, then there is no need to set msOptimizeForShadowMapping to true.

Also bare in mind this optimization will not be used for meshes using materials with alpha testing, as we require UV data for alpha testing; and not just position data.

For more information, visit the forum thread.

6. Updated and merged OgreMeshUpgrader and OgreXMLConverter into one tool: OgreMeshTool. This new tool supports many similar options and most of the same functionality the other two provided; with the addition of new v2.1 features like exporting to v2 formats, optimizing vertex formats to use half floating point and QTangents, generate optimized vertex buffers for shadow mapping.

7. Compositor improvements. Finished UAV (texture) support, finished resource transition/barriers project (needed by OpenGL, Vulkan and D3D12) see what are barriers and why they are needed, Compositor now allows for rendering to 3D and texture 2D arrays, also declaring cubemaps.

Automatic generation of mipmaps was added for RTTs (useful for cubemap probes). See section generate_mipmaps from the porting manual for more information.

With proper UAV support, compute shaders are around the corner!

8. Added JSON materials. The previous script syntax was not scaling well. JSON rocks! Drop on the forum thread for more details. It was our latest addition so there may still be things to polish. The old hlms material script system will continue to work while we iron out the issues and finish DERGO as a material editor.

GameDev News , ,

30. December 2015


GarageGames have just released Torque2D version 3.2.  Torque2D is 2D game engine built over the Torque 3D engine, which is now open source and MIT licensed.

From the release:

While you were singing carols door to door and sipping eggnog by the fireplace, the T2D Steering Committee was hard at work wrapping up one last present! Presenting Torque2D 3.2! This latest incarnation of everybody's favorite 2D engine sports several shiny new features! But before we get into that, let's take a moment of silence to remember the many bugs that lost their lives to make this release possible.

Now then, our first new feature is the FadeTo function. This works like MoveTo except that it changes the blend color over time instead of the position. If you ever wanted to fade a bad guy out when it died or fade a slightly transparent object in, then this function was written for you! It could be used to make your hero flash red when his life is low or slowly change the color of the sky as the sunsets. FadeTo comes with all the support functions of MoveTo including a cancel function and callback when it's finished.

We also added GrowTo which changes the size of an object over time. With GrowTo you can change the x and y at different rates and create all kinds of neat effects. But, there's a catch! Collision shapes don't grow with the sprite. So if your object has collision shapes attached you'll want to use it sparingly. Slight changes can do a lot. Like FadeTo, GrowTo is supported by functions to test and cancel. When an object reaches its target size it will fire a callback.
We also have support now for one way collisions. This is most commonly seen in platformer games when a character jumps up through the platform and magically lands on top of it, but in theory there's many other uses for it. This only works for edge and chain collision shapes.
And finally, last but not least, we have revived ogg! That's right! The open source, compact audio format is back by popular demand. You can start using ogg files again on Windows and Mac OSX.

GameDev News, Programming , ,

30. December 2015


This is a tutorial on getting started with Samsung’s GearVRf framework with the Samsung Gear VR.  The GearVR is a virtual reality headset powered by Oculus Rift technology and a modern Samsung android phone.  The GearVRf SDK is a framework made available by Samsung enabling you to develop for the GearVR using Java.  If you are wondering “Hey, can’t you use Unity or Unreal Engine?” yes, yes you can and probably should… but that’s never stopped me from doing things before!


First off, there is a guide to getting started available here and it will get you *most* of the way there.  This tutorial covers the missing bits…  There is also a video version available here or embedded below.


First off there are a number or pre-requisites before you can begin, you need to have the following installed/configured/registered:


The Eclipse requirement is unfortunate, however NDK support was only recently added to Android Studio.  In time expect it to work with Android Studio instead.


As part of the installation, make note of where you extract the Oculus SDK.  The Samsung VR SDK has to be installed at the same directory level and I believe requires the folder be named ovr_sdk_mobile.  In other words, if you installed the Oculus Mobile SDK to c:\dev\ovr_sdk_mobile then clone GearVRf to the c:\dev folder. Change into the appropriate folder and run the command:

git clone

This will take a few minutes and download the GearVR SDK.  Now we are ready to start working in Eclipse.  Follow the instructions from Samsung specifically “Build Configuration” to setup Eclipse, then copy the files mentioned in the section “Oculus Mobile SDK”, it’s just 3 jars to 3 different folders that need to be copied.


Now we are ready to import the Samsung SDK into Eclipse.  Select File->Import… then Existing Android Code into Workspace.



Now select the Framework folder ( for example c:\dev\GVRf\Framework if you cloned the sdk into the c:\dev directory ), then click Next.

Go to the menu Project and turn off Build Automatically.  Then in the same menu select Clean… toggle if not already the “Clean all Projects” tick then click OK.  This will now build the SDK.  If you get an error, there is a good chance the your NDK or Android SDK settings in Eclipse are wrong, so start there.


Hopefully however everything ran fine.  In which case, let’s start with a sample from the SDK.  In the same workspace you imported and built the framework, import another existing Android project using the same settings, this time importing a project from Sample subdirectory of the GearVRf install folder. 


Now that we have a project to run, this next part is CRITICAL or your app will crash on start.  If you haven’t already, go to the Oculus site and register for a signing key ( the link is available above ) and put in the id of your phone.  Instructions are available on the same page as the form on Oculus.  This process will generate and download a file that needs to be included in each application you run.  Simply copy this file into the assets folder of the sample you imported.


Now plug in your phone then in Eclipse in Package Explorer, right click the imported demo and select Run As->Android Application. The APK should now be generated and copied to your phone.  However it wont run as you need to insert your device into the GearVR now ( we will address this shortly ).  For now, unplug your phone, run your newly installed app, then insert into the GearVR.  If it loads the main menu, your application crashed.  Ideally your app will now be running. 


So that’s it, the steps required to get started with GearVR development using Samsung’s GearVRf SDK.  If you are thinking… Unity/Unreal would be a hell of a lot easier!  You are right… I’ll cover getting started with both of those in the near future.


Now that we are running you will quickly notice that putting the device into the GearVR over and over is a pain and requires you to disconnect your device from USB each time making debugging impossible.  Don’t worry, there are two ways around this.


Debugging a Samsung Gear VR application


Running in Developer Mode ( no headset )

For most builds, you can actually run your code without a device.  This way you can leave it plugged in and remove the time consuming insert in phone and restart process.  First you need to put your phone into developer mode for Oculus.

  • Swipe down and select Settings gear icon
  • Tap Applications
  • Tap Application Manager
  • Locate Gear VR Service, tap
  • Tap Manage Storage
  • Tap VR Service Version Several times
  • Swipe Developer Mode on.  Now you can run without the Rift (great way to record video by the way…)

There is a dedicated post and video on this topic now available here.


Debug Wireless

You can also set adb into wireless mode. 

  • On your phone select Settings->Wireless->Click your active connection, make note of your IP address
  • Open a terminal/command prompt and cd into your Android SDK folder\platform-tools
  • Plug in your phone
  • In the terminal/command prompt type adb tcpip 5555
  • Now connect to device wireless with adb connect (<--- obviously, your IP address here)
  • Unplug your device.  At this point you may want to restart Eclipse.
  • Now you can run from Eclipse directly to the device without having to plug in.



Programming ,

29. December 2015


So over the holiday I joined the VR revolution with a Samsung GearVR while I wait for the Oculus Rift to be released.  The good news is, it’s really quite cool, except a full review shortly.  However, one of the challenges of reviewing something like the GearVR on the web is taking a screenshot…  How can you demonstrate the experience if you can’t take screen shots?  Well fortunately you can, but it’s a bit of a hack/workaround to get there.


First off, you need to have an external keyboard.  Personally I used a Logitech K810 I have sitting around.  Next be sure to pair it with your Galaxy phone, simply select Settings->Bluetooth and locate the keyboard.  Now fire up the GearVR like normal.  Then when running simply hit the Print Screen button on your keyboard and the screenshot will automatically be saved to your photo roll.


Now, the screenshot may not look exactly like what you expect.  Here for example is the dashboard:


Notice the tilting???  Well that’s because I didn’t have my hand on the print screen key when I started the app, so I had to remove the goggles to find the key.  Oops.


And here is Netflix running, slightly less tilted:



As you can see, you get a screenshot for each eye and they aren’t square like you’d expect on a PC.  There may be a way to take a screenshot without requiring an external keyboard, but I don’t know what it is.  If you know an easier way, please let me know in the comments below!

General ,

Month List

Popular Comments

YoYoGames Autumn Sale -- GameMaker Half Price
Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

25. November 2015


YoYo Games just announced their Black Friday Autumn sale, with GameMaker and most exporter plugins available at half price.  From the announcement:

The leaves are falling and so our prices as we reveal our Autumn Sale! Get up to 50% off various GameMaker: Studio products and export modules!

Check out our awesome Autumn savings below!


Click here to buy now!


Interestingly, GameMaker is also on sale on Steam, but completely different price points!



With Professional being cheaper on Steam, while the exporter plugins are much more expensive.  Very odd.

GameDev News

blog comments powered by Disqus

Month List

Popular Comments