Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

9. April 2018


Version 1.2.125 of the Defold Game Engine was just released.  This release is primarily a bug fix release.  If you’ve never heard of it, Defold is an excellent 2D game engine from King that is free for developers to use.  You can learn more about working with Defold in our tutorial series available here.  In addition to the release, there was also a new incredibly handy plugin released by the community named Moku, described below.

Details of the release:


  • DEF-3185 - Added: Added projection helper functions to the default render script
  • DEF-3061 - Fixed: HTML5 rendering issue for Safari.
  • DEF-3209 - Fixed: Multitouch crash on iOS when using more than supported number of touches.
  • DEF-3206 - Fixed: Stopping all playing particlefx on a single particlefx GUI node.
  • DEF-3233 - Fixed: iOS11: App now requests priority over system gestures (i.e. touches at edges)
  • DEF-3217 - Fixed: The SIGABRT signal will now generate a _crash log.
  • DEF-3215 - Fixed: dmLog* functions on iOS now use NSLog.
  • DEF-3162 - Fixed: Changed what part of the script filepath is reported on Lua errors.
  • DEF-3184 - Fixed: Improved link errors for native extensions on Win32.
  • DEF-3197 - Fixed: Resource hashes does not include the factory base path.

Additionally there was a powerful new extension released for the Defold engine.  Moku is a new Defold extension that brings auto-tiling and pathfinding to the Defold engine.

  • Bitmask auto-tiling partially based on the method outlined here: How to Use Tile Bitmasking to Auto-Tile Your Level Layouts. Supports both simple (4-bit) and complex (8-bit) auto-tiling. Can be used in conjuction with defold tilemaps, or your own custom, game-object based maps.
  • AStar pathfinding with support for options such as heavy diagonals, different heuristics, etc
  • Assorted convenience functions including cell picking


A great deal more information, as well as a download link, is available here.

GameDev News

6. April 2018


NightDive Studios, who specialize in releasing updated old classics, as well as the developers of a System Shock reboot currently in progress, justImage result for nightdive studios released the source code for the original System Shock on Github.  The code is released under the GPL license and with one pretty series downside… it’s the Mac port of System Shock.  This means building it is going to be a virtual nightmare for most people, as it requires a chip hardware ( Power PC ) that is no longer available as well as a compiler (CodeWarrior for Mac) which is no longer sold.   The release is also code only, so none of the data files are provided. 


Details from Github:

A project file for Metrowerks Codewarrior is provided in ShockMac/Shock.µ

You will need a PowerPC to build the Mac version of System Shock. Fortunately, there are emulators out there that are able to run PowerPC Mac Applications, like SheepShaver. You also need Metrowerks CodeWarrior 10 Tools to build the project and Stuffit Expander to unpack the project files and source code. The game was initially built with an older version of CodeWarrior, but we tested it with CW 10 Gold Tools (IDE 1.7) and it was able to build a working executable. Things you will need:

  • A PowerMac or an emulator like SheepShaver;
  • CodeWarrior for PowerPC (CW 10 Gold Tools works)
  • The original Mac System Shock data.


So obviously this is mostly useful as a code reference.  It will be interesting to see if the community does anything with this, System Shock is one of the all time greats.

GameDev News

4. April 2018


GameMaker Studio 2.1.4 was just released.  German, French and Spanish speakers rejoice, as GMS has be localized to those languages, chosen during the installation process.  If you are interested in learning more about GameMaker Studio 2, be sure to check our Closer Look at GameMaker Studio 2 review.

In addition to the new localization, GMS2 contains several other improvements and fixes, details from the release notes:

  • The audio engine has been consolidated across all platforms and audio synchronisation issues have been fixed
  • Support for IPv6 has been introduced within the networking functions - if you find any issues, please send a sample project to the Helpdesk
  • Async network connection events now contain a new 'other_port' variable
  • #macro definitions now support configs. Use the syntax #macro CONFIG:MACRONAME to override #macro MACRONAME for a given config
  • Buffer-management functions buffer_compress() and buffer_decompress() added
  • Tilemap-management functions tilemap_set_width() and tilemap_set_height() added
  • Fixed an asset compiler crash when a SWF is imported over an existing sprite
  • Instances now correctly inherit Object Variables from parent instance
  • Fixed issues with startup sequence when launching a Steam game outside of the Steam client
  • Fixed issue where a view was not updated first when calling camera_apply()
  • Fixed issues with gamepad support on mcOS and Ubuntu
  • Fixed issues with some string comparisons failing in YYC
  • Fixed issues with screen_save() on several platforms
  • Fixed issues with physics bodies when removing all fixtures and then adding a new fixture
  • Fixed 28482 - Asset Compiler crashes if you have /* as your last line
  • Fixed 21791 - Memory leak when loading/unloading Audio Groups
  • Fixed 28894 - Global variables created using the variable_global_set function don't show up in the watches
  • Fixed 28933 - Steam: Leaderboards - Emojis in usernames cause runner crash
  • Fixed 27413 - GM_version returned only 3 parts of the version number on several platforms
  • Fixed 28946 - font_add_sprite_ext(spr, str, true, 0) when using SWF for "spr" crashes the runner
  • Fixed 28376 - Sprite Editor: [Precise overrides Manual mask values, but the editor does not communicate this properly]
  • Fixed 28723 - steam_set_stat_float doesn't work correctly
  • Fixed 28610 - Object variables of type "Colour" don't seem to work on certain platforms
  • Fixed 28759 - Added new function bool(val) - returns val as a boolean, if val is a number then if it is >0.5 then it is true, if it is a string it will be converted to a number and if >0.5 then it is true, if a ptr it is treated as a number, otherwise it is false.
  • Fixed 28716 - Asset compiler crashes when building this project as there are empty views
  • Fixed 28698 - instance_deactivate_layer doesn't deactivate instances on a layer as they still move using built in variables
  • Fixed 28636 - Having a comma in your YoYo Account name causes a 'Permission Error' compile error when running
  • Fixed 28632 - Issues with instance depth when importing from 1.x
  • Fixed 28358 - Spine: Event information only takes the default value and ignores the value at individual keyframes
  • Fixed 28483 - Debugger: Breakpoints in Clean Up event not triggered if event called by game_end()
  • Fixed 28494 - Configurations: Swapping configs on new projects doesn't work, uses first run config instead
  • Fixed 27564 - Remote Worker: There is no way to set the Steam SDK location
  • Fixed 28367 - Runner titlebar is thinner and uses 1.4's runner icon if built using YYC
  • Fixed issues with image alpha not being processed correctly when compiling using the Mac IDE and running on Mac
  • Fixed 28815 - window_set_fullscreen() doesn't work unless multiple game options are enabled
  • Fixed 28757 - Providing a larger splash screen than your display resolution causes your splash screen to break
  • Fixed 28583 - Xbox One controller has mis-mapped inputs on Mac Runner
  • Fixed 26920 - show_debug_message() doesn't work on Mac IDE
  • Fixed 28021 - YYC runs can't be stopped by the IDE
  • Now support 16.04 LTS 64bit (and this is what the runner is now built using)
  • Fixed Steam integration
  • Changed default index.html template to include "window.onload = GameMaker_Init" to allow delayed game start, so you can inject startup code into your pages, etc.
  • NOTE: If you are using a custom index.html you will need to add that new line, otherwise you'll just get a black screen on startup
  • Fixed 28227 - tilemap_clear() no longer skips some tilemap cells
  • Fixed 24947 - ds_list_sort() does not work in HTML5 (now works generally close to Windows's behaviour)
  • Fixed 25723 - window_get_cursor() returns cr_none by default, in spite of GGS setting
  • Fixed 28626 - load_csv() throws a reference error when used
  • Fixed 28765 - ds_map assumes pairs with "undefined" values to be nonexistent
  • Fixed 22247 - pointers are not identified by is_ptr()
  • Fixed 22248 - ds_list_find_value() unable to return a stored pointer
  • Fixed 15450 - window_has_focus() is incorrect at game launch
  • Fixed 17677 - HTML5 module cannot read INI entries stored from ds_grid_write()
  • Fixed 28774 - buffer_delete() does not fully free up the buffer data
  • Fixed 28331 - Drawing a # using draw_text breaks your alignment
  • Fixed 23271 - sprite_delete() doesn't release VRAM in HTML5
  • Fixed 24669 - High DPI Support
  • Fixed 28821 - Some ds_ functions don't return "undefined" on out-of-bounds access like native ones
  • Fixed 20399 - keyboard_key behaves differently in HTML5 than Windows
  • Fixed 19081 - Obfuscated function crashes application after cutscene plays
  • Fixed 25628 - string_count(chr(13), " " + chr(13)) yields 0
  • Fixed 25577 - file_text_write_string() turns "#" into newlines
  • Fixed 21165 - background_get_height() returns cropped texture height instead of asset height
  • Fixed 16924 - game_end() causes an error
  • Fixed 15608 - Destroy Map HTML5 does not remove nested maps
  • Fixed 24070 - texture_set_interpolation is not supported on 2d
  • Fixed 28817 - Select functions replace "#" with newlines while they don't on native
  • Fixed 28309 - Using skeleton_animation_set_frame() freezes your animations permanently
  • Fixed 19994 - 'Destroy instances at position' action does not work as expected
  • Fixed 28760 - Function.arguments is deprecated
  • Fixed 28627 - Keyword "undefined" handling fixed
  • Fixed 28620 - Object Variable definitions do not work on HTML5
  • game_end() will send the game to the background and return the user to the Android desktop, as per Google's specification
  • Debug dialogs show_question(), show_message(), get_string() and get_integer() have been deprecated - please use the '..._async()' versions instead
  • Fixed 29109 - Android package names with a '.' anywhere in the string are disallowed
  • Fixed 28863 - "Always do full install of APK" setting in Preferences in Android tab doesn't work
  • Fixed 28846 - 'APKExpansion' extension does not create a .zip
  • Fixed 25340 - Android SDK 25.2.3+ has no separate "Support Library" package - update Andriod options
  • Fixed 28484 - Uncaught TypeError: _uC1.getParameter is not a function when setting collision mask in GML
  • Fixed 28643 - Runner crashes if you use draw_text_ext with string_width
  • Fixed 28065 - Does not actually disable Lint analysis when this game option is set
  • Fixed 22689 - YYC builds fail if folder path contains special characters
  • Fixed showing the correct splash screens for iPhone SE, 7, 8 and X
  • game_end() won't do anything on iOS now
  • Debug dialogs show_question(), show_message(), get_string() and get_integer() have been deprecated - please use the '..._async()' versions instead
  • Fixed memory leak when calling extension functions
  • Fixed 27752 - iOS debug should connect without requiring the device's IP to be provided by the user
  • Added support for the Microsoft 2017 stats and achievements system
  • Added xboxlive_matchmaking_join_session to join a specific session handle
  • Fixed 28400 - Fullscreen switching on Alt+Enter now works
  • Fixed 28398 - Disable cursor on windows now works
  • Fixed 28742 - Windows UWP splashscreen background colour only shows blue on build
  • Fixed 26092 - Remote Worker: Unable to use UWP as a target since no target for UWP can be provided
  • Fixed 28613 - Games crash upon being restored after the OnSuspended event has been fired

GameDev News

2. April 2018


LÖVE 11.0 was released yesterday… yes, on April Fools day.  You may notice that goes silent every April 1st I take a holiday from the internet to avoid the “humour”.  Turns out this was actually a real release and yes, they did in fact rebrand their versioning, by going from 0.11.x style numbering to 11.0 to represent that maturity of the product.  I personally agree with this change (although not the date of the announcement) as the low version numbers really hid just how mature a library love was. 

As to this release, there is actually quite a bit going on here.  Quite a few upgrades in the audio department, a move to normalized numbers for colour data as well as >8bit colour support.  The actual full list of changes is pretty massive, here however are the highlights from the forum:

  • Loads of audio additions:
    • Queueable audio sources
    • Recording support
    • Support for audio effects and filters
    • A simplified Source API
  • Added a module, containing functions for encoding, hashing and compression
  • Added Transform objects to love.math
  • Added more ImageData formats, Image formats, and new texture types
  • Added support for depth buffers
  • Added a deprecation mechanism
  • Added automatic batching
  • Deprecated love.filesystem.exists / isFile / isDirectory / isSymlink / getLastModified / getSize in favour of getInfo
  • Changed colour values to be in the range 0-1, rather than 0-255
  • Changed, to support co-operative multitasking environments


If you are interested in learning more about Love, be sure to check out our complete tutorial series available here.

GameDev News

30. March 2018


Valve have just open sourced on Github their GameNetworkingSockets library.  This library is a subset of the networking library available in the Steamworks SDK, but does not require SteamThe library provides reliable and unreliable UDP messaging.


The library features:

  • Connection-oriented protocol (like TCP)
  • ... but message-oriented instead of stream-oriented
  • Mix of reliable and unreliable messages
  • Messages can be larger than underlying MTU, the protocol performs fragmentation and reassembly, and retransmission for reliable
  • Bandwidth estimation based on TCP-friendly rate control (RFC 5348)
  • Encryption
  • Tools for simulating loss and detailed stats measurement


The library is released under the BSD 3 Revised license, which permits commercial closed source usage, but offers no warrant nor takes any liability.  The code is only currently compiled under Ubuntu Linux, but should run on Windows, OS/X as well as Android.

GameDev News

Month List

Popular Comments