Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

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.


Changelog
  • 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 itch.io, 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:


image


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

6. March 2018


Kongregate is a popular online game portal, launched way back in 2006.  It appears they have decided to take a run at online game stores such as Steam and GoG by taking a Kartridgedeveloper centric approach.  As a platform, Kongregate is going to provide the usual back-end services such as achievements as well as site wide leaderboards.  They are also providing community building tools for game developers, enabling them to heavily customize their own home pages, customize each game’s sales page and offering “developer friendly terms”.   There are also no fees or approval required to upload a game… which leads to the most obvious problem of any online game store… discovery. 


Once Steam launched Greenlight, Steam was awash with a flood of absolutely horrible games making good games even harder to find.  According to an interview with VentureBeat, Kongregate CEO and co-founder Emily Greer figure they have this covered:

“Through a combination of editorial curation and algorithm-focused game surfacing, our goal is to show the right game to the right player at the right time. This approach will help surface titles that are getting lost in other marketplaces and will help players find new content they didn’t know they’d love.”


Details are pretty scarce right now.  Beta is coming in Summer 2018 and the only details we have come from the single developer page:

    • Open Platform No fees or approval to upload a game.
    • Putting Developers First Your own developer profile page to show off your work, a painless game upload process, and developer-friendly terms.
    • Active Player Base An audience of several million active users on Kongregate.com
    • 10+ Years Experience Kongregate’s decade-plus experience in content curation and community management
    • Rewarding and Social Gameplay A platform wide metagame as the next evolution of earning badges and leveling up.
    • Robust, Customized Storefronts Tools to help you design a storefront that highlights your game to the fullest.


Given the large community Kongregate already have, it will be interesting to see if these users can be converted into paying customers.  As a general rule, choice is always good and Steam truly needs competitors to drive it forward.

GameDev News

5. March 2018


Hot on the heels of last months Phaser 3 release, Phaser 3.2.0 has just been released.  Considering the short period that has elapsed, there are actually a fair number of new features, bug fixes and changes in this release.


New features in this release:

  • The new Render Texture Game Object is now available. You can clear, fill and draw texture frames to it. The Render Texture itself can be displayed in-game with its own transform, or you can use it as a Bitmap Mask for another Game Object.
  • Game.resize allows you to resize the game config, renderer and input system in one call.
  • When Game.resize is called it causes all Scene.Systems to have their resize method called. This is turn emits a resize event which your Scene can respond to. It will be sent the new width and height of the canvas as the only two parameters.
  • InputManager.resize allows you to update the bounds def and input scale in one call.
  • Game.Config.roundPixels property added to prevent sub-pixel interpolation during rendering of Game Objects in WebGL and Canvas.
  • Load.plugin now accepts a class as an argument as well as a URL string (thanks @nkholski)
  • Tween.complete will allow you to flag a tween as being complete, no matter what stage it is at. If an onComplete callback has been defined it will be invoked. You can set an optional delay before this happens (thanks @Jerenaux for the idea)
  • The Headless render mode has been implemented. You can now set HEADLESS as the renderType in the Game Config and it will run a special game step that skips rendering. It will still create a Canvas element, as lots of internal systems (like input) rely on it, but it will not draw anything to it. Fix #3256 (thanks @rgk)
  • GameObject.setInteractive has a new boolean argument dropZone which will allow you to set the object as being a drop zone right from the method.
  • Sprites can now be drop zones and have other Game Objects dragged onto them as targets.
  • The SceneManager has a new method: remove which allows you to remove and destroy a Scene, freeing up the Scene key for use by future scenes and potentially clearing the Scene from active memory for gc.
  • SceneManager.moveAbove will move a Scene to be directly above another Scene in the Scenes list. This is also exposed in the ScenePlugin.
  • SceneManager.moveBelow will move a Scene to be directly below another Scene in the Scenes list. This is also exposed in the ScenePlugin.
  • Quadratic Bezier Interpolation has been added to the Math.Interpolation functions (thanks @RiCoTeRoX)
  • A new Quadratic Bezier Curve class has been added, expanding the available Curve types (thanks @RiCoTeRoX)
  • Path.quadraticBezierTo allows you to add a Quadratic Bezier Curve into your Path.
  • Loader.multiatlas now supports Texture Packers new JSON atlas format which exports one combined atlas for all image files. This is available if you use the new Phaser 3 Export from within Texture Packer (thanks @CodeAndWeb)
  • Modified WebGLPipeline to make it easier to extend and easier to create custom rendering passes.


Be sure to check the full change log for full details on the bug fixes and updates in this release.  If you are interested in learning more about Phaser 3, be sure to check out our Getting Started with Phaser 3 video.

GameDev News

Month List

Popular Comments