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.