Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

1. March 2018

Version 2.0.8 of the popular open source 2D framework SDL (Simple DirectMedia Layer) was released today.  This long running framework has been used in several cross SDL_logoplatform commercial games and provides the low level functionality required to create a game such as window creation, input handling, audio playback and more.  This release includes new functionality including Metal support on iOS/Mac,  as well as several improvements and bug fixes.

Details from the release announcement:


  • Added SDL_fmod() and SDL_log10()
  • Each of the SDL math functions now has the corresponding float version
  • Added SDL_SetYUVConversionMode() and SDL_GetYUVConversionMode() to control the formula used when converting to and from YUV colorspace. The options are JPEG, BT.601, and BT.709


  • Implemented WASAPI support on Windows UWP and removed the deprecated XAudio2 implementation
  • Added resampling support on WASAPI on Windows 7 and above

Windows UWP:

  • Added SDL_WinRTGetDeviceFamily() to find out what type of device your application is running on

Mac OS X:

Mac OS X / iOS / tvOS:

  • Added a Metal 2D render implementation
  • Added SDL_RenderGetMetalLayer() and SDL_RenderGetMetalCommandEncoder() to insert your own drawing into SDL rendering when using the Metal implementation


  • Added the hint SDL_HINT_IOS_HIDE_HOME_INDICATOR to control whether the home indicator bar on iPhone X should be hidden. This defaults to dimming the indicator for fullscreen applications and showing the indicator for windowed applications.

iOS / Android:

  • Added the hint SDL_HINT_RETURN_KEY_HIDES_IME to control whether the return key on the software keyboard should hide the keyboard or send a key event (the default)


  • SDL now supports building with Android Studio and Gradle by default, and the old Ant project is available in android-project-ant
  • SDL now requires the API 19 SDK to build, but can still target devices down to API 14 (Android 4.0.1)
  • Added SDL_IsAndroidTV() to tell whether the application is running on Android TV

Android / tvOS:

  • Added the hint SDL_HINT_TV_REMOTE_AS_JOYSTICK to control whether TV remotes should be listed as joystick devices (the default) or send keyboard events.


  • Added the hint SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR to control whether the X server should skip the compositor for the SDL application. This defaults to “1”
  • Added the hint SDL_HINT_VIDEO_DOUBLE_BUFFER to control whether the Raspberry Pi and KMSDRM video drivers should use double or triple buffering (the default)

In addition to the SDL release, SDL_Image 2.0.3 was also released.  SDL_Image is an image file loading library that works with SDL.  The SDL 2.0.3 release was entirely around dealing with some security related issues.

GameDev News

1. March 2018

Kotlin 1.2.30 has been released.  Kotlin is a new JVM powered programming language from JetBrains, the makers of popular development tools such as Intellij IDEA, WebStorm and CLion IDEs.  While initially targeting the existing Java VM environment and maintaining compatibility with Java libraries, Kotlin also can now be compiled to JavaScript as well as LLVM targets making native no VM compilation possible.


New features in this release:

  • Adds a new declaration in the standard library, which imitates the suspend modifier for lambda expressions
  • Adds support for TestNG in kotlin.test
  • Brings support for Android modules in multiplatform projects
  • Introduces a new feature in kapt for reporting annotation processing errors along with proper links to the original Kotlin declarations
  • Adds a lot of new inspections and intentions in the IntelliJ plugin and improves its performance
  • Fixes bugs in the compiler and IntelliJ plugin

The update is compatible with all versions of IntelliJ IDEA from 2017.1 until 2017.3 and 2018.1 EAP, as well as with Android Studio 3.0.

If you are interested in getting started with Kotlin development, be sure to check out this excellent resource list.

GameDev News

27. February 2018

Once upon a time there was OpenGL and it was…  ok I guess.  That’s actually incredibly unfair, OpenGL was a game changer, allowing applications to use a great deal more of the underlying video hardware in a way never before seen.  It was mostly used in the world of computer graphics workstations, in fact starting life as IrisGL on SGI machines and gained a great deal of fame in the game development world when iD software threw their weight behind it with GLQuake.

Since those early days of 3D graphics, OpenGL and Direct X followed a very similar path.  At first, when new features were added to the hardware, they needed a new corresponding feature to be added to the underlying renderer.  At this point, it was the GL layer that was more and more of a roadblock in the way of progress.  A work around was extensions but this was certainly a kludge fix.  In this time too, the world moved from a fixed pipeline to a programmable model and shader programming became the new norm. 

Eventually drivers became a cumbersome and bloated beast, while graphics developers wanted more and more control.  This lead to a move closer to the hardware.  First there was AMD’s Mantle followed by Apple’s Metal.  In time Mantle was opened up and given to the Khronos Group, the people behind the OpenGL libraries (and much more), ultimately becoming Vulkan.

The major problem here is, while the rest of the world embraced Vulkan, Apple did not, they stuck with Metal for iOS and later MacOS hardware acceleration.  This ultimately meant game engines had to support both Metal and Vulkan if they wanted to support all platforms.  In fact, Microsoft also released a low level graphics API, Direct X 12 in the same period of time.  This means Vulkan might the right API for you, but if you wanted to support Apple or Xbox One, you were out of luck or more accurately, had to support multiple rendering back ends.

In steps MoltenVK, a technology that enables you to run 99% of Vulkan code on Apple’s Metal SDK, essentially expanding Vulkan to support iOS and Mac OS.  They also have a DirectX 12 back end in the works, essentially bringing Vulkan to every current platform.  The final piece just fell into place, MoltenVK has been made free and released under the Apache2 source license.

The announcement has already had an immediate impact.  Today the Godot Engine announced they will switch to using Vulkan/MoltenVK instead of the problematic OpenGL ES renderer back end.  To the vast majority of game developers, this is simply an implementation detail and wont directly affect their daily life in any noticeable way, at least, not initially.

You can learn more about this release on the Khronos page or by watching the video below.

GameDev News

27. February 2018

Allegro is a venerable open source cross platform C++ game programming library with a fond place in my heart.  In fact I just recently released a Allegro Tutorial series as a bit of a trip down memory lane.  Earlier this week they released Allegro 5.2.4, a primarily fix based release.

Details of this release:


  • Fix errors when reading/writing 0 byte buffers (Bruce Pascoe).

  • Re-initialize TLS when Allegro is installed (Issue #865).

  • Add al_transform_coordinates_4d.

  • Don't initialize the trace mutex multiple times (Issue #874).

  • Fix 3D (non-projection) transforms with al_hold_bitmap_drawing.

Raspberry Pi port:

  • Fix compilation on RPI.

Android port:

  • Remove limit on the working directory length.


  • Fix build with older Android NDKs.

  • Remove glClear hack for Android 2.1.

Linux port:

  • Make compositor bypass configurable in X11, and bypass only when fullscreen by default.

OSX port:

  • Fix a few OSX retina scaling issues (Issue #851).

Audio addon:

  • Fix ALSA lag.

  • Add an option to use the desktop window when initializing DirectSound (Issue #877).

Font addon:

  • Add support for bmfont format.

Native dialog addon:

  • Resize the display on Windows when hiding/showing the menu (Issue #860).

  • Detect when al_popup_menu fails to actually work under GTK (Issue #808).

  • Don't clear the top-level menu when destroying the popup menu.

Build system:

  • Don't link in libm on MSVC for DUMB (Issue #847).

  • Don't use the LOCATION property (Issue #847).

  • Don't use SYSTEM for DirectX includes.

  • Add hints for mingw-w64 path locations for DirectX includes/libs.

Python binding:

  • Fix the Python code-generation scripts to run under Python 2.

Lua binding:

  • Add script to generate LuaJIT C API for Allegro 5 (BQ).


  • Many improvements (Andreas Rönnquist, others)


  • Add a texture to the skybox in ex_camera.

GameDev News

27. February 2018

Today there was a new release of the Defold engine, the cross platform mobile focused 2D game engine from King.  If you are interested in learning more about the Defold engine, be sure to check out our tutorial series available here.

New features in this release:

In this release we have added a new vector math function vmath.mul_per_elem() which allows you to multiply two vectors elementwise.
We’ve also fixed an issue on Android when a silent (but playing) audio would steal back audio focus from other apps playing music.


  • DEF-3135 - Added: Added vmath.mul_per_elem() for element wise multiplication between vectors.
  • DEF-3130 - Fixed: Fixed issue when silent sounds stole audio focus from other apps.
  • DEF-3136 - Fixed: Crash fix when using nil as target url for label.set_text().
  • DEF-3127 - Fixed: Added support for “-fpermissive” for our GCC based platforms (Android and Linux).

Work in progress

Apart from the current release, we also have some longer tasks. We are currently:

  • improving the Live Update feature set with the ability to upload a new manifest and data to a released game.
  • adding better profiling of the resource usage at runtime. A first MVP should land in the next release
  • adding a way to synchronously query the physics world for collision contact info. This can be used for spawning, or implementation a custom time-of-impact detection. It can be very beneficial for kinematic objects.

GameDev News

Month List

Popular Comments