Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon Join the GFS Discord Server!
30. November 2015

Corona Labs, makers of the popular Lua based game engine CoronaSDK have been acquired by Perk a mobile rewards provider.

From the Corona blog:

Today, I’m really happy to announce that Corona and the team are joining Perk.

Perk is a publicly traded, profitable company that has built a service/platform that rewards people for everyday mobile and internet activities. Their goal is to enable developers like you to leverage their rewards system and advertiser relationships to both monetize and engage your users.

Having gone through multiple acquisitions (most recently with Fuse), I can tell you that this is really good news for Corona.

The key thing for me is that Perk builds and publishes apps — and more importantly — their engineers are huge Corona fans! They’ve built several apps with Corona already and at a fundamental level understand what makes Corona so special.

In fact, when we first met, they told us that it took them 3 months for their team to build an Android app natively. In contrast, one of their developers who had never used Corona before was able to port this app to Corona in 1 month!

The teams on both sides have been talking about a lot of different activities that are going to make this combination really great. And when I look at the conversations that the engineers are having on both sides, it’s clear they talk the same language: no nonsense, let’s get sh*t done.

* * *

This has been an incredible year for Corona.

As I look back at the agenda and themes we set for 2015, I’m extremely happy that we accomplished nearly all of it. The list is really quite extensive: Mac App, Win32 App, Corona Store, Lua-based plugins, custom shader effects, tvOS, etc.

On top of that, we now have a tremendous partner in Perk. They are excited about Corona at all levels of the company. They see value in what the team here does, in what you the community do with Corona, and in what Perk/Corona will be able to do together. The fact that they already build many of their own apps with Corona makes this transition so natural.

Because of all this, I feel like Corona is in the best shape it’s ever been. So I’ve decided this is a really great time to take a step back from my day-to-day role. Moving forward, I’ll be taking on the role as advisor to Perk/Corona Labs.

Pixar co-founder, Ed Catmull, talked a lot about how they built something that is self-sustaining — that will outlive the founders — in his book “Creativity, Inc.” In particular, he highlights the key role that the braintrust plays in that.

Well, the Corona team is my braintrust. These guys are rockstars. I credit them for what makes Corona so special and for why Corona has helped you all build such great apps.

I sometimes wondered if I would ever feel comfortable stepping away from the “captain’s chair”. Not anymore. The team has already stepped up and grown in so many ways. It’s time to take the training wheels off, so that they can continue to grow.

While I won’t be working side-by-side with the team on a daily basis anymore, I hope you’ll join me in cheering them from the sidelines.

Finally, as my last official act, I wanted to thank you — the community — for believing in what we are doing here with Corona. I hope I’ve played a small part in making a positive dent in your universe. I wish you all the best!



It will be interesting to see what, if any, effect this has on the Corona SDK and it’s community.  I covered Corona along side Gideros, Moai and Love in the Battle of the Lua Game Engines a few years back and at that point the Lua based game engines were all but owning the mobile space.  Since then Gideros has gone open source, Moai effectively disappeared and Corona went free just a short while back.  Amazing how fast the gamedev world can change!

GameDev News

30. November 2015


Along side the release of Visual Studio 2015 SP1, Microsoft shipped a new version of the TypeScript programming language.  I personally am a huge fan of TypeScript, but I am not entirely certain I am onboard with the changes introduced in 1.7.  Speaking of those changes, here they are, taken from the MSDN TypeScript blog:


Async/Await for ES6 targets

With the 1.7 release, TypeScript now supports Async functions for targets that have ES6 generator support enabled (e.g. node.js v4 and above). Functions can now be prefixed with the async keyword designating it as an asynchronous function. Theawait keyword can then be used to stop execution until an async function's promise is fulfilled. Following is a simple example:

"use strict";
// printDelayed is a 'Promise<void>'
async function printDelayed(elements: string[]) {
    for (const element of elements) {
        await delay(200);
async function delay(milliseconds: number) {
    return new Promise<void>(resolve => {
        setTimeout(resolve, milliseconds);
printDelayed(["Hello", "beautiful", "asynchronous", "world"]).then(() => {
    console.log("Printed every element!");

We are working on bringing async/await support in TypeScript for other targets, including a breadth of browsers, which might not have ES6 generators support. For more information on current implementation of async/await and how to use it, see our previous blog post.

Polymorphic this Typing

After much community discussion and feedback, TypeScript 1.7 adds a new polymorphic this type. A this type can be used in classes and interfaces to represent some type that is a subtype of the containing type (rather than the containing type itself). This feature makes patterns such as hierarchical fluent APIs much easier to express.

interface Model {
    setupBase(): this;
interface AdvancedModel extends Model {
    setupAdvanced(): this;
declare function createModel(): AdvancedModel;
newModel = newModel.setupBase().setupAdvanced(); // fluent style works 

For a deep dive on this typing, checkout the TypeScript Wiki.

As a part of supporting the feature, TypeScript 1.7 has made changes in inferring the type from this. In a class, the type of the value this will be inferred to the this type, and subsequent assignments from values of the original type can fail. As a workaround, you could add a type annotation for this. A code sample with recommended work around, along with a list of other potentially breaking changes is available at GitHub.

ES6 Module Emitting

TypeScript 1.7 adds es6 to the list of options available for the --module flag and allows you to specify the module output when targeting ES6. This provides more flexibility to target exactly the features you want in specific runtimes. For example, it is now a breeze to target Node.js v4 and beyond, which doesn't support ES6 modules (but does support several other ES6 features).

//tsconfig.json targeting node.js v4 and beyond
    "compilerOptions": {
        "module": "commonjs",
        "target": "es6"

ES7 Exponentiation

Finally, a little syntactic sugar! The ECMAScript committee recently moved the Exponentiation Operator proposal to stage 3. So we decided it was ready for TypeScript to adopt, and added support for it in TypeScript 1.7.

let squared = 2 ** 2;  // same as: 2 * 2
let cubed = 2 ** 3;  // same as: 2 * 2 * 2 

let num = 2;
num **= 2; // same as: num = num * num; 

Say goodbye to Math.pow()!


I hate Hate HATE the this operator in JavaScript, I think it is among the single biggest mistakes in language design I have ever encountered.  I really hope a polymorphic this in TypeScript isn’t a step down the road to AwfulVille™.  That said, I have faith in Anders Hejlsberg to do the right thing when it comes to language development, so I will take a wait and see approach.


You can get Typescript 1.7 as part of the Visual Studio 2015 service pack, or update using npm.

GameDev News

30. November 2015


The Visual Studio team at Microsoft just released Service Pack 1 for Visual Studio 2015.  The editor now supports several more languages such as Go, Swift and Ruby, command line REPL for C#, new NuGet and .Net releases and more.  From the announcement blog post:

  • New Visual Studio Icon. Responding to your feedback on UserVoice, we’ve tweaked the Visual Studio 2015 icon in Update 1 to make it easier to differentiate visually between multiple versions of Visual Studio running side by side on the same machine:
    New icon for Visual Studio
  • .NET Framework 4.6.1. Visual Studio 2015 Update 1 includes the latest version (4.6.1) of the .NET Framework. You can read about all the new features on the .NET blog.
  • Editor support for new languages. The Visual Studio editor now provides built-in syntax highlighting and basic IntelliSense support for languages including Go, Java, Perl, R, Ruby, and Swift. We support the TextMate bundle
    model for language grammars and snippets, allowing you to extend this with support for other languages.
    Editor support for new languages (showing R)
  • IncrediBuild-Visual Studio partnership. With this collaboration and at no additional cost, developers can use IncrediBuild’s build engine to lay out build plans for their applications with more parallelized execution of the build. This leverages hardware resources more effectively and provides monitoring to identify bottlenecks and better understand resource usage. For complete details, see the post, Improving your build times with IncrediBuild and Visual Studio 2015.
  • Tools for Universal Windows Apps v1.2. This update enables you to build and submit apps to the Windows Store targeting Windows 10 SDK Version 1511. It includes several developer productivity improvements to .NET Native, the XAML designer, the manifest designer, Windows Store packaging, and the debugger in this release. If you don't already have Tools for Universal Windows Apps installed, you can enable them by modifying the Visual Studio 2015 installation, or directly installing them from
  • Native support for behaviors in Universal Windows apps. Behaviors are an easy way of adding common interactivity to your XAML apps without having to add more imperative code. These are natively supported in Update 1, shipping as a NuGet Package (available for both managed and native projects), and accepting contributions as an open source project. The package can also be installed through the Blend Assets Pane (under “Behaviors”). Learn more from theXAML Behaviors, open source and on UWP post on the Windows Developer blog, start contributing by visiting theGitHub page, or request features by raising issues.
  • MSTest and CodeCoverage support for ASP.NET 5. The Visual Studio testing tools now support MSTest framework-based tests for ASP.NET 5 applications and add support for CodeCoverage with ASP.NET 5 on x86/x64 platforms targeting the CoreCLR/CLR. The MSTest framework components are available from the NuGet gallery.
  • Parallel Test Execution: The Visual Studio testing tools introduce support for parallel execution of test cases leveraging the available cores on the machine, with Test Explorer indicating the progress of parallel tests. The test execution engine is launched on each available core as a distinct process, and is given a container (assembly, DLL, or relevant artifact) with the tests to execute according to the semantics of the test framework. VS supports parallel execution through all launch points (e.g. the command line and IDE commands like Test Explorer, CodeLens, and various “Run” commands). For details on how to enable this feature, refer to the Release Notes.
    Parallel Test Execution feature showing tests running at the same time
  • C# Interactive Window and command-line REPL. We’ve added more functionality and fixed a number of bugs in these features that first appeared in the CTP. For RTM we’ve also cleaned up some of the command-line argument handling as described in the detailed notes on GitHub. (Note that NuGet support and the VB scripting API are not available with this release, but we’re still actively working on them. In the meantime, you can play with the C# scripting API available on GitHub.)
  • Managing analysis issues. We’ve heard from many customers that when they install a Roslyn analyzer from NuGet or Visual Studio Extensions, thousands of code analysis issues end up showing up in the Error List, leading them to abandon the analyzer. With this update you can now suppress all current issues to a global suppression file, view and manage baselined issues (to audit suppressions or review baselined issues), show analysis warnings and messages for only ‘my code changes,’ and remove duplicate instances of warnings in the error list to focus results to the unique set.
    Managing analysis issues
  • NuGet and NuGet Package Manager. NuGet 3.3 is now bundled with Update 1, and we’ve made a number of changes to the NuGet Package Manager interface including a tab-based UI to help filter groups of packages, action buttons in the package list for quick access to common management functions, a Consolidate tab for packages you work with at the solution level, and an Update tab that allows you to select and update multiple packages together.
    Updated NuGet package manager
  • Visual Studio license improvements. Signing in to unlock the IDE with your subscription is one of those features that you do not want to see interrupting your workflow. Towards this goal, Update 1 has improvements that will ensure the IDE stays unlocked for a year or more after signing in as long as you have regular access to the internet to keep the license renewed in the background. More improvements to reduce sign ins are still to come.

Full details are available in the release notes.  I know I’m installing right away, but that’s mostly because I found Visual Studio 2015 to be a bit of a mess, so I’m hoping this is an improvement and I can move up from VS2013 finally!

GameDev News Programming

30. November 2015




This entry in the Closer Look series is a bit different than normal.  First, Blade Engine is very much a work in progress, so expect bugs and flaws and minimal documentation.  Second, it’s actually built over top of an existing game engine, LibGDX.  Finally, it’s a game engine focused on one very specific genre – adventure games.  Given the popularity of hidden object games on mobile these days, there are no doubt a number of people looking for an appropriate engine.  So without further adieu, I present the Bladecoder Adventure Engine, an open source cross platform LibGDX based game engine and editor for creating adventure games.


As always there is an HD video version available here.


Meet Bladecoder Adventure Engine


Blade engine consists of two parts, the underlying game engine and the editor that is layered on top of it.  It is designed in such a way that you can work entirely in the editor and never once right a line of source code.  You assemble your game from a collection of Chapters, Scenes and Actors and added events and actions in the form of verbs.  If you want to modify the fundamental structure of the game itself, you are going to have to jump into the underlying source code.  Fortunately that is an option, as Bladecode Engine is hosted on Github and the source is available under the incredibly liberal Apache 2 license.


Blade Engine Features at a Glance:

  • Multi platform support: Android, IOS, Desktop (Windows, OSX, Linux) and HTML
  • Several animation techniques: sprite/atlas animation, Spine (cutout) animation and 3d model animation
  • 3d character support
  • Multiresolution to deal with different densities and screen sizes
  • Multilanguage support
  • Open source and free (as in beer and freedom)
  • Code free game creation possible


The heart of Bladecoder is ultimately the editor, so let’s focus there after we cover getting started.


Getting Started


To get started with Bladecoder you need to have Java and git installed and properly configured.  Bladecoder uses the JavaFX ui library so you will have to use JDK 8 or newer or be prepared to have to configure JavaFX manually in the build process.  You will also require an internet connection for the build process to succeed the first time. To start, from a terminal or command line, change to the folder you want to install Bladecoder and enter:

git clone

cd bladecoder-adventure-engine

gradlew build

gradlew run


There is an example repository, including the work in progress game The Goddess Robbery available in the repository  You should probably clone this repository too, as this is perhaps the single biggest documentation source available right now.


The Editor


Assuming the compilation process went without issue above, you should now see the Adventure Editor, where the bulk of your work will occur.



Your game is composed of a collection of Chapters, which in turn contain Scenes.  Scenes in turn are a collection of Actors and organized in layers:



Game Props enables you to set global properties of your game:



Resolution enables you to quickly create scaling modes for supporting multiple device resolutions ( think Retina ):



While Assets enables you to import multiple defined assets include audio and music files, texture atlases, 3D models, images and more.



You organize your scene using the editor available in the center of the window:


You can place actors on different layers, define walk paths, etc.  Click the Test button to preview that scene in action.


The actual logic of your game is defined on the right hand side of the editor. 

Here you can set properties of your actors:



Create and edit dialogs:



Define sounds and animations:



Clicking the edit icon will bring up the appropriate editor:



While selecting an animation will preview it in the scene:



Finally Verbs are the heart of your application:



You can think of verbs an analogous to event handlers, and they can be applied at the world, scene or actor level.  There are also default verbs that will be fired if unhandled.  Think the generic “I don’t know how to use that” messages from adventure games from the past.


Let’s look at an example from the Scene, handling the Init verb which is fired when the scene is ready.



This verb causes the sequence of actions shown at the bottom part of the above image to be fired when the scene init verb is called.  This causes the player to move, a dialog sequence, the player is scripted to drop an item, a state value is changed, etc.  You can create new elements by clicking the + icon:



And filling out the resulting form.  Each element has a different form associated with it.  Here for example is the result of the Say element:



Once complete simply click the play or package button:



Play launches the standard loader:



This screen can obviously be customized to each individual game.  While package brings up a form enabling you to build your game for a variety of platforms:



And that essentially is it.


Help and Community

This is certainly a weak point of the Bladecoder engine, it’s the result of a single coder, there is minimal help available and if you don’t know how to debug Java code, you will probably end up in trouble, at least at this point in it’s lifecycle.  There is currently no community or forum available for this engine but perhaps that will change in the future.  I spoke with the developer a few times however and he was very responsive and quick with fixes and answers.  He is also on twitter at @bladerafa if you want status updates on the project.

For now documentation consists of a minimal wiki although for the most part the best source of documentation is going to be from following the examples.



Make no mistakes, this is very much an under development engine so expect things to blow up spectacularly at any time.  When it does, you are probably going to be on your own figuring out why as there is no community to fall back on.  All that said this is a surprisingly robust tool that makes the process of creating an adventure game exceedingly simple.  Once the engine matures a little bit it will be an excellent tool for even a non-programmer interested in making adventure games.  For now though if you are competent in Java and interested in making an adventure game, this engine takes care of a hell of a lot of work for you and provides full source code for when it doesn’t.  Plus at the end of the day, the price is certainly good too!


The Video

Design Art Programming

27. November 2015


Quixel just released version 2 of their suite of products.  Quixel Suite is composed of:


You can currently purchase the entire suite for $99 on an indie license or $409 on a commercial license, which represents a 25% savings.


As to what Quixel actually is, it’s a texturing solution that bring PBR (Physically Based Rendering) to Photoshop.  Their own promo video probably illustrates it best… just turn your speakers down before pressing play!

If you are thinking to yourself, hey, that looks a heck of a lot like Substance Painter that you just looked at, you'd be right. They provide basically the same functionality for a very similar price, but Substance is a stand alone application while Quixel integrates within Photoshop.

GameDev News Art

AppGameKit Studio

See More Tutorials on!

Month List