Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon Join the GFS Discord Server!
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

20. February 2018

Creature, a 2D animation system from Kestrel Moon Studios, just added real-time morph target support for game engines such as Unreal Engine and Unity.

Real-time Morph Targets allow you to create a set of morph pose animations that can be smoothly blended and targeted in real-time while running in Game Engines. You author the morph poses in Creature and export them out to have the functionality run live in the desired Game Engine. This allows for some very compelling/sophisticated animation effects to be achieved in real-time, including the ability to have 2D characters that exhibit pseudo 3D Head Turning effects towards a target direction/location.

You can learn a great deal more about real time morphing in their documentation available here.  Or by watching this video:

GameDev News

20. February 2018

A new version of Gideros, 2018.2.1 was just released.  Gideros is an open source, free cross platform Lua powered 2D game engine capable of targeting Android, iOS, MacOSX, Windows Phone, Windows and Windows RT.

Details of this release from the Gideros blog:


  • TileMap cells can now have a colour tint and alpha setting (per tile!!!)
  • TileMap new setTexture command.
  • TileMap new setRepeat command.
  • Requires plugin now has a switch for tilt games (no rotation mode)
  • [core] Handle various new keycodes
  • [android] New splash screen code
  • Add MOUSE_HOVER to the list of input events for a sprite
  • [bump] remove extraneous check on querySegment functions
  • [gps] Honor GPS threshold, fix geolocation source, more binders
  • [doc] Updated movieclip doc
  • [plugin/iab] Correct plugin script
  • [export] Show button disabled until export complete.

Gideros can be downloaded freely here.

GameDev News

AppGameKit Studio

See More Tutorials on!

Month List