Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

12. April 2018


AppGameKit v2018.4.12 was just released on Steam.  The update adds a load of new functionality to the game engine the star of which is AR support for both ARCore and ARKit devices.  Mobile devices also received cloud storage support, iCloud on Apple devices, Google Drive on Android devices.  The release was also packed with minor features and fixes.  If you’ve never heard of AppGameKit, be sure to check out our (somewhat dated) Closer Look review.


Details of the release from the Steam news page:

  • Here's the full Augmented Reality Command List and Values:
    • void ARSetup()AGK
    • int ARGetStatus()
    • void ARUpdateInternal()
    • void ARPause()
    • void ARResume()
    • void ARDestroy()
    • void ARControlCamera()
    • void ARDrawBackground()
    • void ARSetPlaneDetectionMode( int mode )
    • void ARSetLightEstimationMode( int mode )
    • float ARGetLightEstimate()
    • int ARHitTest( float screenX, float screenY )
    • float ARGetHitTestX( int index )
    • float ARGetHitTestY( int index )
    • float ARGetHitTestZ( int index )
    • float ARGetHitTestNormalX( int index )
    • float ARGetHitTestNormalY( int index )
    • float ARGetHitTestNormalZ( int index )
    • int ARGetHitTestType( int index )
    • void ARHitTestFinish()
    • int ARGetPlanes( int reserved )
    • float ARGetPlaneX( int index )
    • float ARGetPlaneY( int index )
    • float ARGetPlaneZ( int index )
    • float ARGetPlaneAngleX( int index )
    • float ARGetPlaneAngleY( int index )
    • float ARGetPlaneAngleZ( int index )
    • float ARGetPlaneSizeX( int index )
    • float ARGetPlaneSizeZ( int index )
    • void ARGetPlanesFinish()
    • int ARCreateAnchorFromHitTest( int index )
    • int ARCreateAnchorFromPlane( int index )
    • void ARFixObjectToAnchor( int objID, int anchorID )
    • int ARGetAnchorStatus( int anchorID )
    • void ARDeleteAnchor( int anchorID )
Find out more about ARCore and which devices are compatible for Android HERE
Learn more about ARKit from Apple HERE.


  • Changed iOS to use an OpenGL ES 3.0 context to support the larger shaders that AppGameKit generates when using multiple features like normal mapping with cascade shadow mapping


  • Minimum supported version of Android is now 4.0.3 (API 15)
  • Updated Google Play Services to version 11.8.0 on Android
  • Added commands to check and request permissions for certain Android features, such as camera access, sdcard read/write access, and GPS location tracking
  • You must start using the new permission commands in your apps, even though they currently auto granted at startup, as a future version of AGK will switch to auto deny, as required by Google
  • Fixed FacebookActivateAppTracking causing a crash on Android
  • Fixed Android orientation changes sometimes causing the AGK render area to be offset from the visible display area
  • Fixed physical keyboards on Android causing edit boxes to not accept any characters if the backspace key was pressed too many times
  • Added 64-bit version of Android for better performance on 64-bit devices
  • Fixed GameCenter commands causing a crash on some Android devices

Cloud Data

  • Added Cloud Data commands to save and load variables to iCloud Drive on iOS and Google Drive on Android which will sync across all devices on the same platform with the app installed
    • SetupCloudData( string reserved )
    • integer GetCloudDataAllowed()
    • integer GetCloudDataChanged()
    • string GetCloudDataVariable( string varName, string defaultValue )
    • SetCloudDataVariable( string varName, string varValue )
    • DeleteCloudDataVariable( string varName )


  • Fixed LoadObject causing a crash with some FBX models, there may be further incompatibilities with newer FBX format specs
  • Added SetShadowCascadeValues command to set the size of each cascade level manually
  • Added DeleteObjectTree command to delete an object plus all attached objects
  • Fixed CreateMemblockFromObjectMesh incorrectly increasing string padding when called on an object created with CreateObjectFromMeshMemblock
  • Fixed SetSpriteAnimation causing a crash if called with a greater number of frames than the previous call
  • Fixed SetObjectMeshFromMemblock crashing if the memblock contains more than 65536 vertices

Video & Camera Fixes

  • Added double buffering to PlayVideoToImage on iOS to avoid flickering on some devices
  • Added double buffering to SetDeviceCameraToImage on iOS to avoid flickering on some devices


  • Fixed GetTweenPlaying commands crashing if a tween chain exists without being played

Text & Fonts

  • Added GetTextAlignment to return the current alignment mode of the text
  • Added DrawText command to draw text immediately to the screen
  • Fixed LoadFont failing to load from the system fonts folder when SetErrorMode is set to 2


  • Fixed JSON conversions being inaccurate with integers over 16 million due to floating point assumptions
  • AppGameKit Type variables that begin with an underscore "_" will now match with JSON fields that don't have the underscore, for example an AppGameKit variable named "_type" will match a JSON field named "type", this allows JSON files to have keywords that can't be used as variable names in AppGameKit


  • Updated Android Tier 2 libraries and projects to use libc++_static instead of stlport_static

System Commands

  • Added GetDeviceNetworkType command to check the current network type (mobile or Wifi) or iOS and Android
  • Added GetStorageRemaining commands to get the current free space and total storage space on iOS and Android
  • Fixed written files sometimes being invisible to external PCs connected via USB
  • Fixed Android videos being replaced with a black texture after resuming the app on some devices


  • Updated Firebase to version 4.5.0 on Android
  • Updated Firebase to version 4.11.0 on iOS
  • Disabled Firebase functionality on Amazon apps due to a crash when it checks for Google Play Services
For all existing users the AppGameKit V2018.04.12 update is now live on Steam.

GameDev News

11. April 2018


A couple years back Unity released a video ADAM that showcased the rendering capabilities of the Unity game engine.  Since then a company called Oat Studios released a sequel and today they released the assets used to create that sequel on the Asset Store.  Additionally they released a EXE version of the trailer, that allows you to jump in as the video is rendered in real-time and relocate the camera.  The asset packs include 3 of the characters used in the trailer as well as the environment they were rendered in.  Be aware that the assets are released under different licenses, so be sure to check each license before you use any of this in your own project.  You can read more about the released here on the Unity blog.

To learn more about the assets, see them in action, as well as seeing the real time movie in action, be sure to watch this video, also embedded below.

GameDev News

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

Month List

Popular Comments