Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

4. April 2017


Construct 3 is a recently released cross platform 2D game engine with a visual programming interface.  We very recently did a completes hands-on with Construct 3 video if you are interested in learning more about this release.  Today Scirra released their plugin SDK for Construct 3 enabling you to extend the functionality of the game engine using JavaScript.


Details of the SDK release:

Welcome to the Construct 3 plugin SDK forum! Here we'll be providing information and support to third-party plugin developers interested in working with Construct 3.

Note you must use Construct 3 r15 or above for the SDK to work properly.

Current state of the SDK
The full set of editor SDKs we plan to support are very broad and involve a very large API surface. To approach this large task, we are going to gradually roll out the SDK in phases.
At first, the plugin SDK only supports single-global plugin types. (That means plugins that do not draw to the Layout View.) We hope to expand on this to drawing plugins, behaviors, effects and editor addons in future.

SDK documentation
We have provisional SDK documentation available here:
The SDK documentation will eventually be hosted on, but the new documentation system isn't ready yet. Currently the documentation is hosted on but likely will be moved in future.
This should help get you going with developing Construct 3 addons. Again this only covers single-global plugins; we'll update the documentation accordingly as we roll out new features and make new APIs available.

GameDev News

3. April 2017


There is a new release of the Defold game engine, release 1.2.101.  Defold is a free, cross platform 2D game engine.  If you are interested in learning more about the Defold engine, we have a complete tutorial series available here.

Details of the new release:


  • DEF-2574 - Added: Efficient WebP compression for PVRTC and ETC1
  • DEF-2582 - Added: screen_x/screen_y and screen_dx/screen_dy fields for multi touch input.
  • DEF-2595 - Fixed: Profile counters Lua.Ref and Lua.Mem in web profiler.
  • DEF-2522 - Fixed: Support for detection of require with same line access.
  • DEF-2541 - Fixed: Issue with Android native extension library order.
  • DEF-2585 - Fixed: Some buffer documentation fixes.
  • DEF-1408 - Fixed: Argument verification for render.draw and render.render_target.
  • DEF-2428 - Fixed: Model UVs can now be outside [0..1].
  • DEF-2567 - Fixed: Resources was incorrectly excluded if shared between excluded/bundled collectionproxies.
  • DEF-2569 - Fixed: On iOS UIScreen main screen bounds didn't update when rotating the screen.

They also described in more detail the new WebP compression option:

Efficient WebP compression for PVRTC and ETC1

When selecting WebP compression for compressed texture formats (PVRTC1 and ETC1), the WebP compressor has up until now just been compressing the texture file as a raw LUM8 texture (an array of bytes). We have greatly improved this compression by transforming the compressed texture format data into data more suitable for WebP image compression using an internal intermediate format. This is then retransformed back into the compressed texture format when loaded by the run-time. This has shown an average improvement of anything between 40-60% over compressing with ZLib (or WebP with LUM8).

You can read more details about this release here.

GameDev News

31. March 2017
Today we have the final release of Unity 5.x before they move on to Unity 2017. This release comes with a ton of new features including Vulkan support, improved graphics performance, an improved light mapper and more.

Details from the release blog:

Massive lighting improvements
5.6 includes the Progressive Lightmapper preview, which provides immediate feedback when trying out different lighting scenarios, and much faster iteration, compared to the current Enlighten solution. 5.6 also offers Light Modes, which allow for various ways of mixing real time and baked lighting for static and dynamic objects.

Improved graphics performance
GPU Instancing which enables new kinds of effects where many similar objects are needed at a very low performance cost, has been improved with support for Procedural Instancing. And, with the addition of Compute Shaders for Metal, you can now add more details to your games by tapping into the raw power of the chipsets on Apple iOS and macOS.

Vulkan support
Vulkan support brings increased speed while reducing driver overhead and CPU workload; this leaves the CPU free to do additional computation or rendering and saves on battery life for mobile platforms.

Massive update to Particle System
5.6 greatly extends the range of particle effects to give more options and control to the user. This update also significantly improves Particle System performance.

New Video player
A new multi-platform video player enables playback of 4k video allowing you to build 360 degrees videos VR experiences.

Navigation system improvements
Improved AI and Pathfinding tools–also referred to as the NavMesh system–expand the possibilities to manipulate multiple nav meshes and agents. And, new tools for procedurally generated or dynamically loaded content enable a whole new set of use cases and gameplay options for character navigation.

New 2D tools and improvements
Unity 5.6 adds a whole set of 2D features that give you more control and make it easier to create complex 2D objects. New features for 2D physics enable new kinds of gameplay and effects, including fully featured particle effects interacting with 2D objects.

TextMesh Pro
One of the top performing tools on the Unity Asset Store is now available for free to users of 5.3+ and will be soon be natively integrated into Unity. TextMesh Pro features advanced text rendering with dynamic visual text styling, along with greatly improved control over text formatting and layout.

Performance Reporting and debugging improvements
In addition to exception reports, Performance Reporting now collects native crashes for iOS. Physics debug visualization and profiler improvements make it easier to find the source of performance issues in the game.

New platforms
Seamlessly publish to Facebook Gameroom, as well as Google Daydream and Cardboard for Android and iOS. Nintendo Switch support is also available now.

Unity Collaborate (Beta)
We added new options when publishing changes for finer control of your Collaborate projects.

Experimental support for WebAssembly
In 5.6 we bring experimental support for WebAssembly, a new cross-browser technology designed to help improve the Unity WebGL experience.

GameDev News

30. March 2017


Now that we have the basics of drawing graphics on the screen down in the ongoing Haxe and HaxeFlixel tutorial series now is a good time to move on to giving our player some control over the game.  Today we are going to look at how you handle keyboard input in a HaxeFlixel game.  It’s a fairly straight forward task, so this will be a fairly short tutorial consisting of a single code sample.  Without further ado, let’s jump right in with the code!



import flixel.FlxG;
import flixel.FlxSprite;
import flixel.FlxState;
import flixel.input.keyboard.FlxKey;

class PlayState extends FlxState
   var sprite:FlxSprite;
   override public function create():Void

      // Create a sprite and center it to the middle of the screen
      sprite = new FlxSprite(AssetPaths.enemy__png);
      sprite.x = FlxG.width/2 - sprite.width/2;
      sprite.y = FlxG.height/2 - sprite.height/2;

   override public function update(elapsed:Float):Void



            sprite.x = FlxG.width/2 - sprite.width/2;
            sprite.y = FlxG.height/2 - sprite.height/2;

This example draws a sprite centered to the screen and enables you to control it using the arrow keys.  The majority of logic happens in the update function, where we poll the status of various keys using the object FlxG.keys.  Notice that we start by checking if keys is enabled, this is because many platforms Haxe runs on may not have keyboard input at all.  Next we check the status of keys two different ways, using pressed() and justReleased().  There is a critical difference between these two approaches.  Pressed will have a list of all the keys that are currently being pressed, while released will only have a list of keys that were just released in this pass through the game loop.  The end result is, pressed will be true over and over as a key is held down, while justReleased will only be true once per individual key/press cycle.  This means to move up and down you have to keep hitting the UP/DOWN arrows over and over, while you will move left and right constantly as the LEFT/RIGHT arrows are held down.  Keep in mind the game loop takes only a few milliseconds to run, so even though it feels like a single key press, pressed will be true for several frames. 


The final portion of this example illustrates how you can query multiple key presses at a single time.  In this case we check if the ESC or SPACE BAR are pressed and reset our sprites position back to the center of the screen if they are. In addition to anyPressed() there are also methods to check just pressed, and just released.  There are also additional methods to check other values such as firstPressed(), firstJustReleased() and more.  You can also get an array of the currently pressed keys using getIsDown().  Ultimately FlxG.keys implements FlxKeyManager, so that is the class to check out to see the full scope of functionality available.


One interesting omission from HaxeFlixel is event driven (as opposed to polled) keyboard input.  The underlying OpenFL and Lime libraries do however support it.


The Video

Programming , , ,

28. March 2017


Construct is a 2D game engine that provides a visual programming interface and compiles down to HTML5.  Details of the upcoming release were announced back in February, today a beta is available to try.  With the move to Construct 3 it has moved entirely to be browser based, requiring the Chrome browser.


Details of the beta:

What the beta includes

Our aim is to get lots of testing done and receive general feedback. Construct 3 is also not on sale yet. So for the public beta we are making the Free Edition of Construct 3 available. This has limits and several features are unavailable. However we will be making the fully-licensed version available for one week during the Newgrounds Gamejam from May 15th-21st! We aim to have subscriptions on sale when that week ends, by which time we should have found and fixed any last issues relating to subscriber-only features.

How to use the beta

Construct 3 requires Chrome 57+. This recently became the lastest stable version. If your system hasn't updated yet, you can usually manually update by opening the Chrome menu and selecting Help → About Google Chrome. On mobile, check for updates in the Google Play Store. If you still can't update, try installing Chrome Beta.

You can log in to Construct 3 (and the website) with the same username and password you use here on

We'd like to point out one especially useful feature of Chrome that makes it easier to use Construct 3: in the Chrome menu, try selecting More tools → Add to desktop (or Add to shelf on Chrome OS, or Add to homescreen on mobile). Be sure to tick Open as window if the option is there. This creates an icon for Construct 3 on your desktop or home screen that lets you use Construct 3 like any other app. It also removes the browser address bar and UI, which saves space on your screen for more of Construct 3! And don't forget Construct 3 works offline too, so the icon will continue to work wherever you go or whatever happens to your Internet connection.

Let me at it!

Ready to go? We're launching a whole new website over at It's still a work in progress, but we'll be updating it regularly throughout the beta. If you want to jump directly to Construct 3, just click the link below.

GameDev News

Month List

Popular Comments