Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon Join the GFS Discord Server!
9. June 2016


Mere days after the release of Unreal Engine 4.12.1 hotfix, we receive hotfix 4.12.2.  As always the fix can be located in the Epic Game Launcher.  This release consists of the following fixes:


Fixed in 4.12.2
Fixed! UE-31740 Crash While Compiling Blueprint in FBlueprintEditorUtils::RefreshExternalBlueprintDependencyNodes()
Fixed! UE-31655 BP EQS generators crash on adding vectors.
Fixed! UE-31723 Attempting to build MinidumpDiagnostics with Visual Studio 2015 Update 2 results in failure
Fixed! UE-31612 Physics enabled Child Actor components that spawn with with a delay, always spawns at world origin
Fixed! UE-31680 [CrashReport] DestroyChildActor->Rename->StaticFindObject()
Fixed! UE-31682 [CrashReport] UE4Editor_CoreUObject!UObjectBaseUtility::GetOutermost() [uobjectbaseutility.cpp:118]
Fixed! UE-31736 SteamController BackRight is not setup correctly
Fixed! UE-29543 Adjusting Light Source Radius/Length creates undesirable effect
Fixed! UE-31589 Capture reflections on translucent materials are broken
Fixed! UE-31715 Static Meshes Disappear with Media Player Asset Applied as Material in Standalone or Packaged Game
Fixed! UE-31687 Vive: Positional Latency with a Possessed Pawn's Camera Component

GameDev News

7. June 2016


Fast on the heels of their Unreal Engine 4.12 release, Epic have just released hotfix 4.12.1 for UE4.  This hotfix is predictably enough composed entirely of fixes.  The complete list of fixes follows:


Fixed in 4.12.1

Fixed! UE-31570 Crash in StaticDuplicateObject while compiling or editing variables in blueprint widgets
Fixed! UE-31550 Using Integer Bitmask crashes editor
Fixed! UE-23371 [CrashReport]UE4Editor_GraphEditor!FNodeFactory::CreateNodeWidget() nodefactory.cpp:91
Fixed! UE-26761 Crash When Compiling Child Blueprint Containing a Custom Event with the Same Name as its Parent's Event
Fixed! UE-31443 Crash occurs clicking "Select All" in Foliage Tool in QA-Sequencer map
Fixed! UE-31183 [CrashReport] UE4Editor_Engine!FAnimNode_StateMachine::Evaluate() [animnode_statemachine.cpp:745]
Fixed! UE-31574 RemoveNaNTracks causes anim DDC data to be regenerated every load on old animations
Fixed! UE-31445 [CrashReport] UE4Editor_DetailCustomizations!FBodyInstanceCustomization::GetDefaultCollisionProvider() [bodyinstancecustomization.cpp:35]
Fixed! UE-31255 Shipping Builds packaged for WinXP 32 bit crash when opening on Win7
Fixed! UE-31492 Can no longer generate a dsym on Mac
Fixed! UE-25561 Read IAP information node causes hang if connection is disconnected
Fixed! UE-31539 GPU crash on PS4 due to GS mode not getting disabled when using parallel contexts
Fixed! UE-31247 Emissive for Static Lighting discarded upon Re-opening Level or Restarting Project
Fixed! UE-28817 [CrashReport] UE4Editor_Engine!FStaticLODModel::Serialize() [skeletalmesh.cpp:1261]
Fixed! UE-15903 [CrashReport] Lighting build triggers array out of bounds crash
Fixed! UE-31620 Roughness Calculation is incorrect in 4.12
Fixed! UE-26288 Crash on unchecking Generate Lightmap UVs and Applying with Mesh already assigned and painted as Foliage
Fixed! UE-31182 [CrashReport] UE4Editor_Engine!FMaterial::GetShader() [materialshared.cpp:1564]
Fixed! UE-18906 [CrashReport] Crash in !UE4Editor_D3D11RHI!FD3D11DynamicRHI::Shutdown()
Fixed! UE-30985 Reflective surfaces rendering incorrectly in -featureleveles2 -opengl
Fixed! UE-31431 Crash in Sequencer play rate track when setting negative play rate
Fixed! UE-31647 Crash changing the color of a fade track section
Fixed! UE-31648 Sequencer audio doesn't play after rendering a movie in editor.


As always, the hotfix can be downloaded using the launcher.

GameDev News

6. June 2016


In a recent blog post the Amazon developer team discussed the upcoming support for VR devices in Lumberyard 1.3.  This support comes in two forms, supporting actual VR devices in your game and using VR to develop your game.  Both are being provided in the form of “Gems”, which is basically Amazon’s way of saying plugin.  To add support for a new VR device, you create a gem that implements the IHMDDevice interface, acting as a bridge between Lumberyard and the device’s SDK.

Utilizing Gems, small chunks of code can be created that interact with the engine but don’t require editing the engine code itself. This means that developers can add support for any VR device without having to delve into the engine source. As long as a new VR device conforms to the public interfaces that Lumberyard has defined, the engine will automatically use it. Developers can create their own integrations for additional devices without having to wait for an official Lumberyard update, as they would in other engines. With so many new VR devices coming out soon, we wanted to provide a way for customers to make their own support decisions. Additionally, developers can easily override existing device support to add any experimental features that may be important for their gameplay. Below is a high-level diagram of the way this works inside the engine.

The HMDManager contains an IHMDDevice, which is then implemented by a device-specific Gem. The manager takes care of device initialization and device-abstracted head-mounted display (HMDs) interaction with the rest of the system. On the rendering side, Lumberyard’s stereo renderer makes use of the D3DHMDRender object, which takes care of creating graphics-API-specific render targets, social screen rendering, and frame submission to the VR device. To add support for any new VR devices, you simply wrap the vendor-specific SDK in a Gem as defined by IHMDDevice. That’s it! There’s no need to edit Lumberyard’s underlying HMD code, which is represented by the Lumberyard Engine section of the diagram.

On engine startup, the selected HMDs are scanned for connectivity and selected for use. If you want to support both the Rift and the Vive, for example, simply go into the Project Configurator, enable both Gems, and the engine will pick which one to use at runtime based on which device is plugged in.


They also go on to describe the new VR developer functionality that will be part of Lumberyard 1.3:

Developing in VR

Game developers need to be able to see what they’re doing in the editor at all times. Without a way to see VR in the editor, developers would have to export a level, load it into the launcher, enable VR, and take a look around. This is obviously inefficient. The Lumberyard Beta 1.3 editor will have full VR Preview support built in. VR Preview utilizes the same Gems system as the engine runtime, and it works in a similar fashion. We’ve added the “VR Preview” button to the editor, which you can click to see in VR right away. This allows developers to make VR-specific adjustments to their level designs right in the editor, which reduces iteration time. Flow Graph nodes are an important part of developing in Lumberyard, but they can only be debugged in the editor. With VR Preview, users can debug their VR Flow Graph nodes and see what they’re doing.

The cool part of their implementation is there is no performance penalty for enabling VR if VR functionality isn’t used, making this functionality “free” from a processing perspective.


So, what devices are supported?  Well until 1.3 ships the answer is unknown.  They address it with this comment:

Rift and HTC Vive support were top requests (our demo was presented on the Rift), but many developers were just as interested in other devices, like the Samsung GearVR, PSVR, and OSVR.

But never actually state what gems will ship with the 1.3 release, meaning it might be left to developers to implement the various VR headset SDKs. 

GameDev News

6. June 2016


V8 is a popular embeddable JavaScript engine, perhaps most famously used to power the popular Node development framework or as the JavaScript engine used by Chrome.  They just announced the release of version 5.2.  From the release notes V8 gained the following features:

ES6 & ES7 support

V8 5.2 contains support for ECMAScript 6 (aka ES2015) and ECMAScript 7 (aka ES2016).
Exponentiation operator
This release contains support for the ES7 exponentiation operator, an infix notation to replace Math.pow.
let n = 3**3; // n == 27
n **= 2; // n == 729
Evolving spec
For more information on the complexities behind support for evolving specifications and continued standards discussion around web compatibility bugs and tail calls, see the V8 blog post ES6, ES7, and beyond.


V8 5.2 contains further optimizations to improve the performance of JavaScript built-ins, including improvements for Array operations like the isArray method, the in operator, andFunction.prototype.bind. This is part of ongoing work to speed up built-ins based on new analysis of runtime call statistics on popular web pages. For more information, see the V8 Google I/O 2016 talk and look for an upcoming blog post on performance optimizations gleaned from real-world websites.


Please check out our summary of API changes. This document gets regularly updated a few weeks after each major release.

GameDev News

6. June 2016


As you may recall, last week Unity announced some pretty major price changes.  The response has not exactly been great, especially among those that purchased their PRO license outright.  Yesterday, Unity co-founder and CTO Joachim Ante released this blog post explaining the move to a subscription model:

Why Subscription?

When we started Unity, we would ship Unity every once in a while on just 2 platforms. Initially just Aras and I, gradually adding a couple engineers every few months. We’d decide on a couple major features and focus working on that for a year and a bit, go through beta and then ship it.

Today Unity lets you target 28 platforms. No one targets all platforms at the same time, but the ability to choose to easily switch your game to any platform gives Unity developers incredible advantages.

Each platform is supported by a team of dedicated engineers. We have teams focused on different areas of the engine, working on improving each major area all the time.

We ship a patch release every week. Supported by the awesome Sustained Engineering team.

We ship point releases with major new features and improvements multiple times per year.

All of this is necessary because the platforms we support rapidly change. In today’s world, we can’t leave customers behind for a year because we are in the process of releasing a major version. We think it would be very bad for Unity developers if we held features for a full number release, rather than launch these features along the way, when they are ready.

With this in mind, we want to be clear. There will be no major Unity 6 release.

In the dev team we wanted to stop doing major releases for a long time. With the major releases model we had done up until Unity 5, it has always forced us to bundle up a bunch of features and release them in one big splash. Usually it results in that good & complete features would be artificially held back for a long time while other features are still maturing, and eventually releasing some of these features before they are ready. All in the name of creating one big splashy release that customers feel is worth upgrading to. It’s what we did because we had to in a model where we worked toward an unnatural new major release every few years. This is not some evil marketing team pushing for it, it is the inherent nature of that business model. It was always a painful process for us and you and it really serves no one.

With our switch to subscription we can make Unity incrementally better, every week. When a feature is complete, we will ship it. If it is not ready we will wait for the next point release.

Our switch to subscription is absolutely necessary in order for us to provide a robust and stable platform.

Pay to own!

Along with the new subscription model, we are introducing “pay to own”. After having paid for 24 months of subscription, you can stop paying and keep on using the version you have at that point. Of course, you would also stop getting new features, services or fixes; choice is yours.

If you are upgrading from a previously bought perpetual license of Unity and you are switching to subscription after March 2017,  then you get “pay to own” right away with your subscription license.

Pay to own applies to everyone; there’s no special “license option” you have to get. Simple!

Thanks for listening, I hope this gives some much needed background on our switch to subscription.


In some ways this move makes sense.  Both Unreal and Unity have moved to a more rapid release schedule, making make 1.0 releases somewhat of a thing of the past.  The problem for Unity is, they are selling software still using a version by version model, Unreal obviously don’t have this issue as their revenue is royalty based.  A quick look through the comments in response to this post show that the community isn’t exactly mollified at this point!  At first glance the Pay To Own license sounds like a good deal, but all that is really saying is, after 2 years of paying licensing fees you get a perpetual license for that version (and not further updates without a subscription).  Considering you could previously buy Unity outright for $1,500, “owning” it after 24 payments of $125 ($3,000) is only a deal if you are using all three versions, otherwise it’s a doubling of the price.


A point that might be somewhat confusing is There will be no major Unity 6 release. This is some truly horrible wording and is incredibly misleading.  Yes there will be a Unity 6, it just has absolutely no impact on licensing.  All subscriptions from Unity are now time limited, not release oriented.

GameDev News

AppGameKit Studio

See More Tutorials on!

Month List