Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

24. February 2017


Valve have just launched Steam Audio a new SDK for advanced audio processing in games.  Currently it ships with support for a C api and with a Unity SDK, although a Unreal Engine SDK is in the works.  In Valve’s own words, Steam Audio is:image

Steam Audio delivers a full-featured audio solution that integrates environment and listener simulation. HRTF significantly improves immersion in VR; physics-based sound propagation completes aural immersion by consistently recreating how sound interacts with the virtual environment.

Essentially it enables you to create realistic real-time audio simulations, by integrating audio processing into your 3D world.  You define sound sources within your 3D world, define what geometry does and does not interact with the audio simulation and their acoustical properties and finally define the position of your ear in 3D space.  Steam Audio is then capable of simulating more accurate audio  positioning in a 3D world.  In many ways it works a great deal like existing physics engines, except for audio.  Obviously its tailor made for VR applications, but is useful for regular 3D applications as well.  Currently Steam Audio supports the following platforms:



There is obviously one major missing platform...  iOS.  It will be interesting to see if it is added in the future.   Somewhat surprisingly for Valve, this is not an open source project.  It is however free to use and is available for download here as both a Unity package or C API.

GameDev News

23. February 2017


Pluralsight is one of the oldest online courseware companies in existence, founded back in 2004.  Traditionally they have focused on the enterprise, but have been more and more active in the world of game development.  Just in time for GDC 2017, they have released a very interesting product.  A complete top down dungeon crawler game ( which can be downloaded for free here ), as well as a series of lessons covering how the game was created using Unity, Maya, Photoshop and ZBrush.  The game “Swords and Shovels” was created by a team with industry experience including such titles as Skyrim, Fallout, Fable Legends and Splinter Cell.

The following is the official press release:

SILICON SLOPES, Utah (February 23, 2017) Pluralsight, the enterprise technology learning platform, today announces the release of a free, downloadable game, Swords and Shovels,” to enhance the learning experience for aspiring game developers. The first of its kind on the technology learning platform, “Swords and Shovels” offers game developers the hands-on opportunity to play a game they can then learn to recreate in its entirety through a series of courses available on Pluralsight.

Mapped as sequential training through the Game Environment Modeling learning path, the courses provide game developers with the most direct route to increased proficiency in gamingPluralsightSaS environments, character modeling and gameplay elements using leading software tools including Maya, Unity, Photoshop, ZBrush and more.

“As technology becomes more complex, the art of creating games will become increasingly interdisciplinary,” said Andy Rahden, VP of creative, design and engineering at Pluralsight. “By embracing hands-on, interactive mediums like “Swords and Shovels” and the Game Environment Modeling learning path, we are helping game developers understand the full inner-workings of a game, see where every little piece fits and interacts within the pipeline and master the skills they need to be successful.”

“Swords and Shovels” is a top-down dungeon crawler -- a game where characters navigate a labyrinthine environment, battle monsters and loot treasure. The game and accompanying courseware was designed and authored by Josh Kinney, curriculum manager at Pluralsight, in collaboration with game development industry veterans Jean Simonet, Jonah Lobe, Dan Cox, Michael Baker and Alex Jerjomin, known for their work on “Elder Scrolls V: Skyrim,” “Fallout 4,” “Fable Legends,” “Splinter Cell Blacklist” and “Below.”

"Learning how to create games is one of the most difficult and demanding challenges in tech right now,” said Jean Simonet, a former AAA developer for “Skyrim,” “Fallout” and “Oblivion” and lead developer for the project. “Due to the complexity of modern games, many developers are forced to specialize their craft, limiting their experience and exposure to the various elements of video game creation. With ‘Swords and Shovels’ and the learning experience through Pluralsight, game developers can get a taste of the entire game-creation process and then select the learning focus that really appeals to them.”

“Swords and Shovels” is available for immediate download on and will also be available to play at Pluralsight’s Game Developers Conference (GDC) booth #244 in San Francisco on March 1-3, 2017.


As mentioned above, the game is available as a free download, while the course is available via their subscription service.  You can currently get a free 10 day membership, I am currently in the process of registering, and unfortunate it doesn’t appear to be an automatic process.  Coincidentally, you can also get a 3 month subscription to Pluralsight when you sign up for Visual Studio Essentials.

GameDev News

23. February 2017


Amazon just released the 1.8 Beta version of their Lumberyard game engine, an engine forked from CryEngine.  The 1.8 release contains over 234 (um... 235?) improvements, fixes and features, the primary new feature being the Cloud Gems Framework.  The new framework is described as:

Lumberyard Beta 1.8’s new Cloud Gems Framework makes it easier for you to build and launch connected game elements, such as dynamic content, leaderboards, and live messages. With the Cloud Gems Framework, you can add a connected feature to your game in as little as 30 minutes, with one engineer, freeing up the rest of your team to think about innovation and player experience.

The Cloud Gems Framework is made up of the Cloud Gem Portal, a web application that lets anyone on your team visually manage your cloud features (e.g. scheduling messages, releasing dynamic content, or deleting a fraudulent leaderboard score), and Cloud Gems – modular packages of discrete functionality and assets that include everything necessary for a developer to include that functionality into their project, including backend and client functionality. Cloud Gems can be used out of the box in production, and they come with full source code in case you want to customize their behavior in whatever way you choose.

Considering Amazon is one of the largest cloud computing companies in the world and the primary profit center behind Lumberyard is selling cloud services, I suppose this new functionality makes a great deal of sense.  Another part of this release is an updated UI, as shown in the screen shot below.


Other features of this release include Multiple UV support for meshes, the ability to animate component entities in Track View as well as new GameLift functionality.  You can read more about this release in the release notes as well as on the Amazon Dev Blog.

GameDev News

22. February 2017


Yoyo Games have released GameMaker  Primarily focused on IDE stability and exporting, there are several fixes and some solid new features in this release.  Perhaps the biggest new feature is the addition of gesture support such as taps, drags and swipes, with the mouse acting as a single finger on desktop builds.


From the release notes:


Release Notes

  1. Lots of fixes throughout, especially in the new modules
  2. A new gesture event system has been added - Tap, Drag, Flick
  3. Colour picker sliders should now work properly, regardless of language settings
  4. When copying frames in the image editor, layer-hiding should now work properly
  5. The Preference for overriding DPI now has a percentage slider for ease of setting and increased clarity
  6. Code windows should now open and fit inside the available space
  7. Maximised code window tabs can now be dragged back onto their object to re-dock them
  8. Maximised code windows have a new context menu item for "Go to Object"
  9. We now validate that the user is not picking a project folder inside the GMS2 folder space as these are deleted on update
  10. HTML5 can now build to a folder ("Loose Files") as well as a zip
  11. To avoid confusion, the Test target is removed if you have purchased Desktop and therefore have Windows also
  12. Deleting an object that is used in a collision event now propts that it will delete all redundent events
  13. UWP packaging has been fixed to provide an .appxupload as the file written out
    Known Issues
  14. Still investigating an issue stopping some users from updating their runtimes since 2.0.3
  15. Dragging a gmz onto the IDE when another project has unsaved changes and saying no to saving, can cause import issues
  16. Building with extensions on YYC platforms can include extensions not marked for that target
  17. Pressing F1 on DnD nodes doesn't open the correct page of the manual
  18. You can find more info about known issues at

GameDev News

21. February 2017


Somewhat delayed from the rest of the Defold Engine tutorial series, I realized there was a major gap in subjects we covered... GUI programming.  Defold actually has some really solid UI functionality built in, and in this tutorial we are going to look at the basics of handling a UI in Defold. Well very conventional in it’s approach, if you’ve gotten accustomed to the Defold way of doing things, you will find Defold’s approach to handling UI remarkably consistent to the way you do just about everything else using the Defold game engine.


As always, there is an HD video version of this tutorial available here.


In this tutorial we are going to implement the simplest of UI, but all of the concepts of a much more complicated interface can easily be extrapolated from what we cover here. We are going to create a UI that pops up when the user hits the ESC key, dimming the existing screen, showing the UI, handling input, then un-dimming the UI.  There is a ton more UI functionality available in Defold, but it should be fairly easy to pick it up once you’ve got the basics down.  So without further ado, lets jump right in.


A UI in Defold consists of two different file types, a .gui and a .gui_script file.  A gui_script file is just a traditional lua script file, but has access to the gui namespace.    Let’s take a step by step look at creating a UI that appears when you hit the ESC key and handles a simple button being clicked.


First we need a font, drag any applicable TTF file to your project.  I personally created a folder called MyFont and dragged it there.  Next I created a Font file in the same folder.



Next open the newly created Font file and select the ttf file you just imported.  Please note that the filter is broken and you should manually type *.ttf to locate your font.


After selecting the font I also increased the size to 30pts.  This is aesthetic and purely optional.


Now that we have a font selected, we need to define an Input map.  I fully describe the process here for more information on how Input Maps work in Defold.  This are the bindings I created:



Next we create our gui file.  Simply select Gui File:



We can use the Gui File to arrange the controls that make up our UI.  Here are the options:



In this simple UI we are simply going to create a button by creating a box then adding a text label to it.  We will also create a label telling the user to click the button.  First we need to set up our font that we created earlier.  In the GUI editor, right click Fonts and select Add Font:



When prompted, select the font you just created:



Now right click Nodes and add a Box.  Once created it can be positioned by hitting W then moving manually.



Next right click the newly created box node and create a child Text field:



Child nodes automatically inherit the position of their parents.  With the Text node selected, lets set it’s font and text, like so:



I also created another Text field telling the user to click the button.  This one in the root of the GUI hierarchy and not parented to the box.  You’re outline should look something like:



While your Gui layout should look something like:



Now that we have a gui file, let’s right a script that will display it.  In our main.collection I simply create a new script and attach it to the default logo objecct.



Now of course we need to add the UI to our game object.  Create a new root level GameObject named UI, then add component from file and select our gui file:



So now you main.collection should look something like:


Now we enter the following code for main.script:

function init(self)
	-- we want focus and to hide our UI until needed".", "acquire_input_focus")"UI","disable");

function on_message(self, message_id, message, sender)
	-- Wait for a message from the UI layer that the UI has been dismissed
	-- un-dim our sprite
    if(message_id == hash("DONE_UI")) then

function on_input(self, action_id, action)
	-- If the user hits the ESC show the UI and dim our sprite
    if(action_id == hash("ESC") and action.released) then
    	-- UI needed now, reenable"UI","enable")


This code does a couple things, first on input it tells Defold we want to get input messages.  We also start out by disabling the UI, by sending it the built-in message disable.  When the user actually hits the escape key, we send a message to re-enable the UI layer.  We also dim the logo sprite so it’s not visually in focus when the UI is active.  Also note we wait for the DONE_UI message to undim our sprite.  This is sent by the UI script, which we will create now.


If you select your .gui file, in the properties you will notice there is a setting for Script.



There is a special kind of script, .gui_script, that is used to control gui objects, the Gui Script File.  Let’s create one in the same folder as our .gui file:



This is a standard lua script, but it has access to the gui namespace.  Once you’ve created your gui_script, set it as the script for your gui file.  Now enter the following script:

function init(self)
	-- We want input control.  AKA, pump input to the UI".", "acquire_input_focus")

function on_message(self, message_id, message, sender)
	-- Expect to be enabled by main when needed.  Acquire focus and set text back to click me
	if(message_id == hash("enable")) then".", "acquire_input_focus")
		gui.set_text(gui.get_node("text"),"Click Me")

function on_input(self, action_id, action)
	-- handle left clicks.  On left click, see if click was within box
	-- if so change our text (this wont actually be seen), disable ourself and pass a message back
	-- to logo that we are done so it can undim itself
	if(action_id == hash("LEFT_CLICK") and action.released == true) then
		local box = gui.get_node("box")
		if(gui.pick_node(box,action.x,action.y)) then
			local text = gui.get_node("text")


This code waits for the enable message then sets input focus so the gui can receive input messages from Defold.  It also illustrates how you could change the text of a component within the gui.  The most important logic is in the on_input event handler.  We wait for the LEFT_CLICK input.  We then check to see if the click was within our box, if so we set the text of our control ( which is somewhat pointless as it’s about to be hidden! ) to “Clicked”, disable our self, release input focus then send the message DONE_UI back to main.script.  Now if you run the code:



Of course we only scratched the surface of what you can do in a Defold gui, but that should certainly get you started!


The Video

Programming , ,

Month List

Popular Comments

Marmalade SDK 8.2.1 Released
Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

26. February 2016


Marmalade SDK, a popular C++ and Lua based mobile focused game engine, just released version 8.2.1.  Apple platforms certainly were the focus of this release with 3D touch and Watchkit support being the major new features.  For details on the new 3D Touch support, check out this recently released tutorial.


From the release notes:


  • Support for 3D Touch on iOS. See 'Detecting touch pressure' here
  • Support for WatchKit extensions on iOS.
  • Fixed App Store codesigning on PC.
  • Added the ability to control the inclusion of extensions that contain IDFA. This is required by apps that were rejected from the App Store for inadvertently using IDFA. For more details see 'Preparing for binary upload' in the iOS Platform Guide

Changed since 8.2

Marmalade Hub
  • MSDK-2294 Fixed a bug where after cancelling the 'Create Deployment' dialog, a blank deployment page was shown.
  • HUB-236 The Builds list and 'Last Build' were not updated correctly.
  • MSDK-2311 Added ability to view/edit MKB from Hub.
  • HUB-309 Fixed a bug where the log was not visible if something went wrong when opening a project.
  • HUB-314 Could not create a deployment.mkf file with empty mkb.
  • HUB-310 Provide a way to reset deployment settings of a project.
  • HUB-125 Add ability to create multiple builds in the 'Builds' page.
  • HUB-285 Fixed the Hub UI becoming unresponsive when building on Mac OS.
  • HUB-302 Fixed the Configurations tab hanging after cancelling a save operation.
  • MSDK-2317 Company name and publisher entries were not being set.
  • MSDK-2361 Changes to the project's readme file weren't saved.
Marmalade Quick
  • MSDK-2254 Fix issue where removeNode() could not be called multiple times for a given object.
  • MSDK-2265 If createSprite is called using a table, allow xScale and yScale to be defined if relativeScaleX/relativeScaleY are not given.
  • MSDK-2276 Fix OSDateCallParam lunary test on OS X.
  • MSDK-2280 Fix issue where QNode:setParent() was not setting the object in question as a child of the target.
  • MSDK-2265 Fix Lunary test code to pass on PC.
Platform Abstraction
  • s3ePointer (MSDK-2208) Implemented support for reporting touch pressure using s3ePointer events. Currently supported on selected iOS devices with 3D Touch technology (iPhone 6S/6S Plus) and iPad Pro with Apple Pencil. See Detecting inputs for more information on detecting touch pressure.
  • IwAnalytics (MSDK-2302) Deprecate IW_ANALYTICS_EXCLUDE_IDFA_SUPPORT - use new DISABLE macro S3E_EXT_IOSIDENTIFIERS_DISABLE_ON_IPHONE instead. (Remove need to recompile the iwanalytics module to switch behaviour).
  • HUB-311 Implemented support for 3D Touch App Shortcut actions (currently supported on iPhone 6S and iPhone 6S Plus) through news3eIOSAppShortcut extension.
  • MSDK-2309 Re-implementation of fix for issue in iOS Native Debug with space in the project name.
  • MSDK-2264 Fix for "invalid signature" error during App Store submissions when building on PC.
  • MSDK-2330 Updated WKWebView interface in s3eWebView to reflect standard ARC changes in UIWebView.

  • MSDK-2338 Fixed a regression with stack sizing issues which caused crashes on secondary threads due to stack overflow. The crux is that the default for the deployment option SysStackSizePlatform had changed from 0 to 128k. It has been changed back to 0 to get the system default stack size. One manifestation was that s3eAudioPlayFromBuffer crashed on different thread on Android.

  • MSDK-2355 Removed spurious warning: "The target name is different across different builds of the project" when building a middleware module or extension with Visual Studio 2015 in Android Native mode.
  • MSDK-2286 Minor fix to prevent potential crash in s3eAndroidGooglePlayBilling extension on some devices.
Windows Desktop
  • MSDK-2176 Fixed issue with Alt-F4 being ignored as a quit request when in fullscreen mode.
  • MSDK-2334 Fixed regression in snprintf (and friends) in vc11 and vc12 builds where passing 0 for size would cause stack corruption or a crash
  • s3eIOSWatch (MSDK-1255) Introduced s3eIOSWatch extension for data exchange between Marmalade apps and WatchKit 1.0 style app extensions (Apple Watch apps). See iOS specific functionality and tips for more information.
  • s3eFacebook (MSDK-2210) iOS extension can now provide app activation analytics data to Facebook if EnableAppEvents ICF option is enabled.
  • s3eGameCenter (MSDK-2209) Introduced a function to list multiple GameCenter achievements at the same time. Enabled control of achievement completion banner from updated s3eGameCenter example.
  • MKB System (MSDK-2289) Fixed a bug where an empty file group [] or [""] in a 'files' block in an mkb file would cause an invalid Xcode project to be emitted.
  • EDK (MSDK-2307) Support DISABLE macros on a subset of extensions in the SDK - those used by prebuilt Quick engine and those that use IDFA on iOS.

GameDev News ,

blog comments powered by Disqus

Month List

Popular Comments