Don't Miss Out

Follow us now so you don't miss new releases!

Construct 2 Release r153

There is a more up to date Stable Release! Download the latest Stable release instead here.

122.9 mb, Windows 8/Windows 7/Vista/XP

Friday, December 6, 2013

New this build: a new experimental asm.js powered physics engine option, and low-res fullscreen scaling!

asm.js physics

Asm.js is a technology invented by Mozilla that allows high-performance languages like C and C++ to be compiled down in to a special assembly-like subset of Javascript. Engines which are optimised for this subset can then generate very well-optimised assembly code for it, resulting in performance close to native speeds. We're now providing an experimental option to choose an asm.js-compiled physics engine to run the Physics behavior.

The existing physics engine is not particularly fast for a couple of reasons. There are a few factors involved here, and I'll cover it in more detail in a blog post soon. (Edit: now posted here - More about asm.js powered physics) However our own tests have shown the asm.js physics can be 2-3x faster in Chrome and Firefox, including on mobile, which is such a big jump it's close to a native engine! Note only Chrome and Firefox are specially optimised for asm.js at the moment, but IE and Safari don't appear to be any slower with asm.js.

There are two drawbacks to the asm.js physics engine that are why it's not a new default. Firstly, it does not support the Disable collisions action. This is enough to break some existing games. We're investigating adding support for this. Secondly it can actually be slower in native iOS apps, because iOS apps are not allowed to compile Javascript and have to interpret it at a slower speed. Since asm.js generates large amounts of very simple code, the lack of a JIT can actually reduce performance. This shouldn't be a problem given that there's an option to keep using the old engine, or use CocoonJS native physics which works on iOS. Still, if you are not disabling collisions and aren't publishing an iOS app or can use CocoonJS native physics, the asm.js physics option should otherwise be feature-complete and much, much faster in many cases. Don't forget it's experimental though, so let us know if you have any issues!

Low-resolution fullscreen scaling

When using a fullscreen scaling mode like Letterbox scale, there is a new Fullscreen scaling project property that can control how the scaling is done. The default is high quality, which is what it has done previously: each object drawn at a bigger size directly to the screen. The new low quality option does something new: it first renders the screen to an unscaled canvas at the size of the Window size project property. Then, after all objects have been rendered, it simply stretches up the result to fill the screen.

Low quality mode can improve performance on systems with limited GPU power, like mobile devices or cheap laptops running in HD resolution. There is a lot less rendering work, since objects and shaders are rendered to a smaller canvas with fewer pixels, and then the end result is simply scaled up in one go, which is fast. This is particularly good for retro games using point sampling, since in some cases it will appear identical, but significantly reduce the rendering work. It might even be desirable, since it causes shader effects to appear in low-res mode as well, keeping the pixelly appearance of the game. However as the name suggests for many games the quality will be reduced. In high-quality mode, downscaled sprites, text and shaders appear crisp and detailed; in low-quality mode, downscaled sprites lose detail, text becomes blurry or pixellated, and shaders render at lower quality. There is a new system action which can turn it on and off at runtime, so it could provide an easy way to have a "low resolution" option in your game's settings for players to use if performance is poor.



New option to enable asm.js physics engine. The option to choose the physics engine has been removed from the CocoonJS object and added to project properties instead. Note asm.js physics does not support 'disable collisions'.


New 'Fullscreen scaling' project property. Defaults to 'High quality' (same as before) but 'Low quality' enables rendering at the project window size then simply stretching the result up afterwards.


New system action 'Set fullscreen scaling' to allow changing quality mode at runtime


WebGL renderer now falls back to canvas2d renderer using the "failIfMajorPerformanceCaveat" context attribute. This should ensure best performance by avoiding software-rendered or otherwise very slow WebGL implementations.


The editor now enforces that group names are unique project-wide, instead of on just the same event sheet. This prevents the issue where activating or deactivating a group affects all groups with the same name. Note that any existing projects which use the same group name more than once will still load the same for backwards compatibility, but you cannot create new groups with duplicate names.

Bug Fix

Tilemap: now displays collision polys properly when 'Show collision polys' ticked in ribbon

Bug Fix

Tilemap: could display incorrectly in editor when the graphics card driver did not support non-power-of-two textures

Bug Fix

Tilemap: could sometimes save/load incorrectly using JSON when empty tiles existed in the tilemap

Bug Fix

In the canvas2d renderer, layers using their own texture did not use 'Point' sampling even if it was set in Project Properties

Bug Fix

Could create event groups with empty names, which then could not be renamed


FredFors 8,729 rep

Awesome :)

Friday, December 6, 2013 at 4:22:21 PM
_deleted_ 6,450 rep

Great Update Scirra!

Friday, December 6, 2013 at 4:24:40 PM
jardelbr 4,893 rep

GREAT! downloading! ^^

Friday, December 6, 2013 at 4:28:45 PM
Wastrel 12.5k rep

Nice update! Scirra is always riding the bleeding edge!

Friday, December 6, 2013 at 4:32:24 PM
firebelly 7,294 rep

Interested to see how this plays out.

Friday, December 6, 2013 at 4:33:04 PM
jayderyu 15.2k rep

Not bad options here :) I like the low res rendering then upscale. I'll certainly make use of that come stable.

I was hoping briefly that when Group names needed to be unique that this was the first step towards modulairty.... my hopes were dashed :D

Friday, December 6, 2013 at 4:35:18 PM
OneMuppet 7,031 rep

Nice! asm.js physics is really exciting! Good work!

Friday, December 6, 2013 at 4:43:17 PM
Jase00 10.3k rep

Holy crap, I did not see this coming! Thanks so much! :D

Friday, December 6, 2013 at 4:44:54 PM
damainman 8,015 rep

This sounds like an amazing update!! Can't wait to get into this one... downloading now :D

Friday, December 6, 2013 at 4:48:42 PM
Pixel perfick 12.8k rep

Pixel heaven! Thanks for this one...

Friday, December 6, 2013 at 5:02:01 PM
Paradox 42.1k rep

Thank you!

Friday, December 6, 2013 at 5:04:48 PM
AbelaNET 14.9k rep

Thanks. Keep it up.

Friday, December 6, 2013 at 5:22:04 PM
ferrod 18.7k rep

Great update team, allways forward.

Friday, December 6, 2013 at 5:30:16 PM
Kurz 9,686 rep

Cool ! I love first beta releases which go after stable one )

Friday, December 6, 2013 at 5:42:10 PM
JohnnySix 12.5k rep

Sweet, can't wait to try it out. Am guessing you guys might be thinking about including some more physics behaviours soon, like prismatic joints?

Friday, December 6, 2013 at 5:51:13 PM

Leave a comment

Everyone is welcome to leave their thoughts! Register a new account or login.