Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

13. March 2018

Another quick update for the recently released Phaser 3 game engine, this one bringing Phaser to version 3.2.1.   Phaser is a popular and full featured 2D framework for developing HTML5 games.  This release is almost entirely composed of bug fixes and quality of life improvements.

Details of the release from the release notes:

Bug Fixes
  • Fixed issue with Render Texture tinting. Fix #3336 (thanks @rexrainbow)
  • Fixed Utils.String.Format (thanks @samme)
  • The Matter Debug Layer wouldn't clear itself in canvas mode. Fix #3345 (thanks @samid737)
  • TimerEvent.remove would dispatch the Timer event immediately based on the opposite of the method argument, making it behave the opposite of what was expected. It now only fires when requested (thanks @migiyubi)
  • The TileSprite Canvas Renderer did not support rotation, scaling or flipping. Fix #3231 (thanks @TCatshoek)
  • Fixed Group doesn't remove children from Scene when cleared with the removeFromScene argument set (thanks @iamchristopher)
  • Fixed an error in the lights pipeline when no Light Manager has been defined (thanks @samme)
  • The ForwardDiffuseLightPipeline now uses sys.lights instead of the Scene variable to avoid errors due to injection removal.
  • Phaser.Display.Color.Interpolate would return NaN values because it was loading the wrong Linear function. Fix #3372 (thanks @samid737)
  • RenderTexture.draw was only drawing the base frame of a Texture. Fix #3374 (thanks @samid737)
  • TileSprite scaling differed between WebGL and Canvas. Fix #3338 (thanks @TCatshoek)
  • Text.setFixedSize was incorrectly setting the text property instead of the parent property. Fix #3375 (thanks @rexrainbow)
  • RenderTexture.clear on canvas was using the last transform state, instead of clearing the whole texture.
  • The SceneManager.render will now render a Scene as long as it's in a LOADING state or higher. Before it would only render RUNNING scenes, but this precluded those that were loading assets.
  • A Scene can now be restarted by calling scene.start() and providing no arguments (thanks @migiyubi)
  • The class GameObject has now been exposed, available via Phaser.GameObjects.GameObject (thanks @rexrainbow)
  • A Camera following a Game Object will now take the zoom factor of the camera into consideration when scrolling. Fix #3353 (thanks @brandonvdongen)
  • Calling setText on a BitmapText object will now recalculate its display origin values. Fix #3350 (thanks @migiyubi)
  • You can now pass an object to Loader.atlas, like you can with images. Fix #3268 (thanks @TCatshoek)
  • The onContextRestored callback won't be defined any more unless the WebGL Renderer is in use in the following objects: BitmapMask, Static Tilemap, TileSprite and Text. This should allow those objects to now work in HEADLESS mode. Fix #3368 (thanks @16patsle)
  • The SetFrame method now has two optional arguments: updateSize and updateOrigin (both true by default) which will update the size and origin of the Game Object respectively. Fix #3339 (thanks @Jerenaux)

Phaser is available for download here.  If you are interested in learning more about Phaser 3 development be sure to check out our getting started video available here and embedded below.

GameDev News

9. March 2018

YoyoGames have just announced an agreement with Nintendo bringing Nintendo Switch platform support to their seminal cross platform 2D development platform GameMaker Studio 2.  GameMaker Studio 2 Nintendo Switch Edition will arrive this summer.  No word if any additional licenses or agreements will be required for GameMaker developers to deploy to the Switch.

Details from the announcement:

GameMaker Studio 2, the leading 2D game development engine, has signed a deal with Nintendo, meaning GameMaker games can be exported directly to Nintendo Switch. GameMaker is expanding its already significant reach to developers looking to release on the hugely successful console that can be played anytime, anywhere, with anyone. First launched by YoYo Games in March 2017, GameMaker Studio 2 has seen continual growth since its release, and it is ready to take another step forward by forging a partnership with Nintendo. This will culminate with the launch of the GameMaker Studio 2 Nintendo Switch edition in summer, 2018.

GameMaker Studio 2 was released last year and represented a massive overhaul of the aging developer tool.  If you are interested in learning more, be sure to check our Closer Look at GameMaker Studio 2.

GameDev News

7. March 2018

The Khronos Group have just released the Vulkan 1.1 and SPIR-V 1.3 specifications. Vulkan Vulkan is a low level cross platform graphics API, the successor to OpenGL offering easier driver development and potentially better performance.  SPIR-V is a binary intermediate language for shaders and computer tasks in Vulkan, OpenGL and OpenCL. 

Vulkan 1.1 includes several Vulkan 1.0 extensions as well as new Subgroup Operations.

Details from the Khronos press release:

New functionality in Vulkan 1.1 includes Subgroup Operations that enable highly-efficient sharing and manipulation of data between multiple tasks running in parallel on a GPU. Vulkan 1.1 also enables applications to perform rendering and display operations using resources that they cannot access or copy - for secure playback and display of protected multimedia content.

In addition, a wide range of Vulkan 1.0 extensions have been integrated, bringing significant proven functionality into core Vulkan 1.1, including: simultaneous rendering of multiple image views, use of multiple GPUs in a single system, and cross-process API interoperability for advanced rendering and compositing operations often used in demanding applications such as Virtual Reality. These core functionalities also include advanced compute with 16-bit memory access, and support for HLSL memory layouts, and display, processing and compositing of video streams, through direct sampling of YCbCr color formatted textures produced by many video codecs.

Integral to the release of Vulkan 1.1 is the new SPIR-V 1.3 specification that expands the capabilities of the Vulkan shader intermediate representation to support subgroup operations and enable enhanced compiler optimizations. The SPIR-V tools ecosystem continues to gain significant momentum with front-end compilers for both GLSL and HLSL, and to expand low-level tooling support from the open source SPIRV-Tools project.

In other recent Vulkan news, support for iOS and Mac OS was recently announced.

GameDev News

7. March 2018

Tiled, the open source map editor, just released version 1.1.3.  Beyond some new translations, this released is primarily composed of bug fixes.  If you are interested in learning more about Tiled, be sure to check out our Tiled tutorial series available here.  Complete change log of the release displayed below.

  • Fixed crash when removing a tileset referenced by multiple objects
  • Fixed crash on paste when it introduced more than one new tileset
  • Fixed Invert Selection for non-infinite maps
  • Fixed Select All to not select objects on locked layers
  • Fixed logic determining the tilesets used by a tile layer
  • Fixed copy/paste changing object order (#1896)
  • Fixed tileset getting loaded twice when used by the map and a template
  • Fixed repainting issues on undo/redo for new maps (#1887)
  • JSON plugin: Fixed loading of infinite maps using CSV tile layer format (#1878)
  • Linux: Updated AppImage to Qt 5.9.4
  • Updated Hungarian, Japanese, Norwegian Bokmål, Portuguese and Ukrainian translations

Tiled is available to download on, while the source code is available on Github.  If you’d like to support Tiled, be sure to check out their Patreon here.

GameDev News

6. March 2018

RenderDoc is a graphics debugger that was first launched over 4 years ago.  Today they reached the massive 1.0 milestone!  RenderDoc is open source under the MIT license, available for Windows, Linux and Android.  RenderDoc is capable of working with the following APIs:


The 1.0 release brings several new features, the biggest of this release has to be the addition Android support, although Windows users might appreciate the newly rewritten Qt client. 

Full details of the release from the release notes:

  • The Qt RenderDoc UI is now shipping on Windows, the previous .NET winforms UI has been completely deprecated and removed. Aside from better consistency between platforms this comes with a number of benefits to Windows users.
  • Qt natively supports high-dpi displays, which should 'just work' including per-monitor DPI awareness.
    • The Qt UI doesn't require an interoperability copy-layer between C++ and C# so should be more efficient.
    • Likewise Qt's rendering and updating is generally faster and the UI should feel more responsive.
    • Qt being C++ greatly increases my abililty to diagnose crashes from crash dumps as I actually get a minidump, not just an exception callstack.
  • RenderDoc now supports Android, with both OpenGL ES 2.0 - 3.2 and Vulkan 1.0, thanks to contributions from Samsung and Google.
    • Any android application is supported as long as it is built as debuggable, there is no patching or setup step needed, you just select your device and run the application. A step-by-step guide is available in the docs.
    • The workflow is deliberately almost identical to the familiar process on Desktop. Aside from selecting the Android device as the active replay context, you browse to the desired package, launch it, and when you open captures they appear to open locally even though the replay happens on the device.
    • All standard features for GL and Vulkan are supported on android, subject to hardware support for certain features.
    • This also comes with the same requirements as GL, such as all contexts being created as shared.
  • The internal serialisation system used for saving captures has been completely rewritten to be much more flexible and future-proof. This enables a lot of nice features in this release and opens the door for some interesting features in future. This is the reason behind v1.0 not being able to open v0.x captures.
    • It's now possible to export capture files to another format, such as human readable xml. This XML lists all of the function calls recorded in the capture and all the parameters and structures. This XML can be edited, added to, changed, and then re-imported back into a capture file for replay. Future RenderDoc versions may include more formats.
    • Previously any GL calls that were serialised the same way - e.g. glTexImage2D, glTextureImage2D, glTextureImage2DEXT, glTextureImage2DARB were all serialised and displayed as one of these, regardless of which you called. Now gl functions correspond to the exact function called.
    • Errors that happen during loading of a capture can now in most cases be caught and gracefully propagated to the UI. This means instead of the whole program crashing, you at least get a message indicating that there's a problem replaying the capture.
    • RenderDoc now saves thread IDs, timestamps, and durations for every function call. This can be exported in chrome tracing format, and in future may be displayed in-UI.
  • Resource Inspector

    • As a side bonus of the above serialisation refactor, there is a new centralised resource inspector panel. This panel contains a list of all resources available in the capture, and lists the details of the functions used to create and initialise them.
    • It also shows the links back and forth between related or dependent resources.
    • Resources with special viewers like buffers, textures and shaders have links from the resource inspector to go to those viewers.
    • Everywhere in the UI that resources are mentioned, they link back to the central resource inspector panel.
  • The RenderDoc python API has been revamped to be an explicitly designed and carefully documented interface into RenderDoc's internals
    • The previous API was autogenerated from reflected C# internals, which meant that any internal warts were exposed and there was no documentation beyond code commenting.
    • The new API has been designed to be more naturally pythonic where possible and present a more consistent and unified interface.
    • Likewise all API endpoints and structures are documented with python docstrings for help(), as well as being generated into the sphinx documentation.
  • RenderDoc now has features for annotating capture files
    • A general capture comments system now allows saving some arbitrary text with a capture, and it will be displayed first and foremost when opening a new capture. This could be used for storing a build date or version, some reproduction information, or other metadata that is useful to store embedded in the capture file.
    • Bookmarks can be saved with the capture, so that you can save an important event with the capture before sharing it, making it easier for someone else (or you in the future) to jump to the most useful event.
    • The resource inspector allows for renaming of any resource, which can be used both to give names to important resources that only have an autogenerated name, as well as renaming resources based on how they are used within the particular capture. If one buffer in particular is related to a bug, it can be renamed to highlight it.
  • AMD have provided performance counter integration into RenderDoc. This includes both access to all of their hardware counters on all APIs that RenderDoc supports, but also a simple sortable table view of counters for browsing the results and finding hot drawcalls.
    • This does not mean RenderDoc is a full-featured profiler! However it can be useful to obtain these counters on existing RenderDoc frame captures.
  • The bug reporting system is much improved. As well as being a more streamlined experience, it tries to help users provide more useful bug reports.
    • Most bug reports without contact information and without a reproduction capture cannot be resolved and end up getting ignored, only a small fraction end up resulting in actual fixes.
    • To address this, the bug reporter encourages users to put in their email address and stores it for any future bugs.
    • The user is also able to opt-in to upload the most recently loaded capture file. If able to share this will greatly help with reproducing any bug.

The source code and precompiled binaries are available on Github.

GameDev News

Month List

Popular Comments