Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon
25. January 2016


Allegro, a C++ based game programming library just released version 5.1.13 WIP, so I would assume the WIP tag means you can expect a few more hiccups than normal.  Allegro holds an interesting place in my heart, as it was one of the first DOS based game programming libraries I ever used.  Yes, I said DOS.  Allegro has been around for a little while...  fun fact, the guy that started Allegro eventually ended up at Microsoft where he was one of the main developers of the now defunct XNA project.


Enough trivia and reminiscing... back to the release:

Changes from 5.1.12 to 5.1.13 (January 2016)

The main developers this time were: Julian Smythe, Elias Pschernig and Peter Hull.


  • Add al_get_opengl_program_object (SiegeLord).


  • Fix spurious triggering of the mouse grab key when it wasn't otherwise set (SiegeLord).

Android port:

  • Avoid multiple HALT/RESUME events on Android (Max Savenkov).

  • Implement al_get_monitor_info for Android (Reuben Bell).

  • Fix Android crash on file access.

  • Implement ALLEGRO_FULLSCREEN_WINDOW on Android.

  • Fix crash if display is destroyed while the app is switched out.

  • Add support for x86_64 Android.

  • Add al_android_set_apk_fs_interface.

Linux port:

  • Allow using OpenGL ES in X11.

  • Fix the initial display size not being correct sometimes (SiegeLord).

  • Fix a race condition in the XInput joystick driver (Trent Gamblin).

OSX port:

  • Fix various memory leaks.

  • Fix al_set_window_title.

  • Fix a lot of decrepid and deprecated code.

  • Fix single buffer flip display (SiegeLord).

Windows port:

  • Fix Windows UNC path handling.

  • Fix clipboard nul-termination issues (Trent Gamblin).

  • Set the window title immediately upon window creation (SiegeLord).

Build system:

  • Define CMAKE_FIND_ROOT_PATH for i686-w64-mingw32 cross compiler (Martijn van Iersel).

  • Allow building with older CMakes again (SiegeLord).

  • Do not catche compile tests' failure (Bruce Pascoe).

  • Add a way to statically link the runtime with MinGW (SiegeLord).

  • Don't link the MSVC C runtime at all when requesting a static runtime and building a static library (SiegeLord).


  • Add links to the source code of the definitions of the most API entries.

  • Fix sidebar generation with modern Pandoc (Boris Carvajal).


  • Fix ordering issue for HAPTIC* structs.

  • Fix missing ALLEGRO_PRIM_ATTR_NUM.


  • Add a 'none' debug level to turn off logging entirely in debug builds (SiegeLord).

  • Reconfigure logging after the configuration files are loaded (SiegeLord).

  • Fix al_set_new_window_title() off-by-1 (Bruce Pascoe).

  • Don't call al_get_time() before system is installed (SiegeLord).

Audio addon:

  • Add al_get_default_voice and al_set_default_voice.

  • Flush the pulse audio stream rather than draining it, fixing some audio breaks (SiegeLord).

  • Fill audio stream fragments with silence in the audio addon rather than in the acodec addon, fixing some garbage output (SiegeLord).

  • Fix possible deadlock when destroying audio streams (SiegeLord).

Acodec addon:

  • Don't read past the audio chunk's end when streaming wav files (SiegeLord).

  • Turn off allegro_acodec dynamic loading by default, fixing a common footgun (Bruce Pascoe).

Image addon:

  • An enormous amount of work supporting reading of esoteric (and not) BMP format variants (palletted, GIMP-style, etc). New tests were added using the manual bmp suites.

Native dialog addon:

  • Update code to work with modern OSX versions.

  • Clean up menu handling on OSX.

GameDev News

24. January 2016


Kode Studio 16.1 was just released, a fork of the Visual Studio Code editor specifically modified to work with the Kha library for Haxe.  Eventually Kode Studio should be useful as an IDE for general Haxe development... maybe, read on for more on this.


From the release notes:

The first public version of Kode Studio is out, Github hosts the downloads. Kode Studio is a fork of Visual Studio Code, optimized for Kha (Kore support will also be added). This is a very early version of Kode Studio but features debugging support which is in many ways superior to anything else currently around for Haxe based development, based on VSCode's Chrome debugger, Haxe's JavaScript target and a modified HTML5 target in Kha. It's cross-platform, very fast (runtime and compile time) and very convenient (no additional software required).

To get started with Kode Studio, just unzip the archive, start the executable and open a directory (File -> Open Folder) containing a Kha project - or open an empty folder and hit the "Init Kha Project" command (Press F1, type Kha, click it).
Kode Studio Create Kha Project

To debug open the debugging panel (the bottom icon on the very left) and click the green play button.
Kode Studio Debugging

Code completion will work after your first debugging session.

We hope you will enjoy developing in Kode Studio but as mentioned before, this is a very early release. Please tell us about any problems you encounter.

Oh and here are the answers to the questions everybody wants to ask:

Is the fork necessary? Couldn't it be an extension?
Currently it could be an extension for the most part, there are about 20 lines of code outside of extensions right now. But that is not were Kode Studio is headed. All functionality of Kit (Kha's previous GUI tool) will be integrated. The IDE will be tightly coupled to Kha's and Kore's build systems. Much of that can not be done in extensions. VSCode is a strong base but it's also a cage that has to be blast open to do Kha justice.

Is this a general Haxe IDE?
Right now - no. In the future - probably yes. But will it be a better Haxe IDE than VSCode plus the proper extensions? Probably not. The focus is clearly on Kha and Kore for Kode Studio. Every change done to the VSCode Haxe plugins that's not specific to Kha will end up in pull-requests for the original projects - namely and

GameDev News

23. January 2016


Corona Labs just released a Corona SDK auto complete package for the popular Atom text editor.

From the release:

We would like to announce the immediate availability of a code completion package for the Atom editor, which provides code completion as well as a description and links to the Corona Docs.

You have two options to install the package: through Atom’s package interface or from the command line.

If you choose the Atom’s package interface, open up the Preferences screen and click on Install.

In the search box, type corona and hit enter. The autocomplete-corona package should show as the first option. Click on the Install button. This will install the package and you can start using it immediately.

If you prefer, you can install it from the command line by executing:

apm install autocomplete-corona

You may also need to enable the language-lua package as well, to get the syntax highlighting.


This is a no-frills package that uses Corona’s own docs to provide the code completion. Simply tab to complete and then tab between parameters to fill them out.

This tool complements our Corona Editor and Corona Composer GUI tools to help you make your apps easier.

Atom also supports building your project. There is not a pre-built Corona SDK build provider. However, you can configure your own by putting an extra file in the folder with your main.luanamed:


You must include this file in every project you want to build. The contents of the file will vary depending on if you are using a daily build or public build. And it will vary between OS X and Windows.

Here is an example OS X version for public releases:

  "cmd": "/Applications/CoronaSDK/Corona\\\\ Simulator",
  "args": ["main.lua"],
  "name": "Corona SDK",
  "cwd": "{PROJECT_PATH}",
  "sh": true

If you use daily builds change the first line to the right folder:

  "cmd": "/Applications/CoronaSDK-2811/Corona\\\\ Simulator",
  "args": ["main.lua"],
  "name": "Corona SDK",
  "cwd": "{PROJECT_PATH}",
  "sh": true

For Windows, you will need to provide the right path to your Corona SDK install folder.

  "cmd": "C:\Program Files (x86)\Corona Labs\Corona SDK\Corona\\ Simulator.exe",
  "args": ["main.lua"],
  "name": "Corona SDK",
  "cwd": "{PROJECT_PATH}",
  "sh": true

You must also install the build package to use this. Click here to learn more about these build scripts.

If you are an Atom fan, you will now be more empowered.

GameDev News

22. January 2016


Cocos2D-X, the popular cross platform C++ 2D game library, just released version 3.10.  If you are interested in learning more, I have a full Cocos2D-x tutorial series available here.Cocos2d-x Logo


From the release notes:

[HIGHLIGHT] UI: Rewrite Scale9Sprite and improve the scale9sprite performance and reduce memory consumption.

[HIGHLIGHT] UI: Change PageView to derive from ListView.

[NEW] Core: Added Application::getVersion() to get the app version.

[NEW] UI: Add PageView indicator.

[NEW] UI: Label add three Overflow type to new label, see release note for more information.

[NEW] UI: UIText::clone supports clone the text effect.

[NEW] Label: Add methods to query label effect state.

[NEW] UI: UIRichText support the new line element.

[REFINE] 3rd party: WebP loading improvements WebP loaded as premultiplied alpha if it has.

[REFINE] UI: Slider `setCapInsetProgressBarRebderer` change to `setCapInsetProgressBarRenderer`.

[REFINE] UI: RichText support new line element.

[REFINE] UI: Set focus to Widget when touched.

[REFINE] 3D: Change char* to string in Terrain.

[REFINE] Studio: Merge Studio ActionTimeLine change back into engine.

[REFINE] Studio: Merge Studio changes for compatible withe 32bit Mac System.

[REFINE] Studio: Merge Studio changes for lua-binding, js-binding and simulator.

[REFINE] Mac: Make engine compatible for 32bit Mac.

[REFINE] 3rd party: WebP loading improvements WebP loaded as premultiplied alpha if it has.

[REFINE] Audio: AudioEngine on Linux replace the original SimpleAudioEngine with a new version of FMOD, now AudioEngine support all platforms!

[REFINE] IOS: Add virtual keyword for some render related function.

[REFINE] UI: Fixes boring deprecated warning in HttpRequest.

[REFINE] Network: Fix Downloader bug on iOS & Android platform.

[REFINE] Studio: Fix deprecation warning in SkeletonRenderer.

[REFINE] JS: Add js test case for fix, improve template.

[REFINE] Network: Permit http access to in test projects on iOS.

[REFINE] Network: Crash when removing a remotely downloaded image from texture cache in js-binding.

[REFINE] Win10: WinRT project update version to v3.10.

[REFINE] Console: Add quiet option for Cocos Toolkit.

[REFINE] JS: New GC model for js-binding.

[REFINE] Doc: Fix typos in documentation and comments.

[REFINE] UI: update controlButton size calculate with new Scale9Sprite logic.

[REFINE] Win10: Added missing _USRJSSTATIC preprocessor define for ARM builds.

[REFINE] JS: Added ccvector_to / ccmap_to converted to new js-binding API.

[REFINE] UI: Slider misprint fix.

[FIX] Network: fix possible websocket crash in its destructor.

[FIX] Core: Fix premultiplyAlpha for mipmaps and compressed textures.

[FIX] UI: Fix Scale9sprite rendering error when content size smaller than the sum of leftInset and rightInset.

[FIX] Win32: Fix EditBox crash when removing an EditBox in a scheduler.

[FIX] Android: Fix cannot add view to mFrameLayout when extends Cocos2dxActivity.

[FIX] 2D: Fixed actionNode set at wrong position bug.

[FIX] 3D: Fix the movement of PUParticle lags one frame.

[FIX] UI: Fix the wront argument of setPlaceholderFontName in EditBox.

[FIX] UI: Fix EditBox editBoxEditingDidEnd may use the original text after change the text of EditBox in user script.

[FIX] Audio: Fix `FinishCallback` never be called in Windows.

[FIX] UI: Fix Layout stencil clipping nested with Clipping Node rendering issue.

[FIX] UI: Keyboard doesn't hide when click the screen outside of EditBox on iOS platform.

[FIX] UI: Fix a fatal bug in EditBox implement on Windows platform.

[FIX] UI: Fix edit box setPlaceholderFontName and scale font size issue.

[FIX] Core: Fix memory leak when initWithImage() failed.

[FIX] Network: CCDownloader on iOS is broken in v3.9 js-binding.

[FIX] JS: Bindings fixes for Menu, Sprite and Label.

[FIX] Studio: Remove weak reference in ActionNode.

[FIX] UI: shouldStartLoading method should return value to js in js-binding.

[FIX] UI: Fix scrollview render error.

[FIX] JS: Fix win32 js project crash issue.

[FIX] UI: Button touch doesn't work with scale9 enabled.

[FIX] JS: Fix evalString doesn't return result issue.

[FIX] JS: Fix ComponentJS proxy management issue in JSB.

[FIX] Android: Fix include in cocos network module.

[FIX] Network: Fix web socket crash.

[FIX] UI: Fix TextField missing default password style text setting.

[TEST] S9SpriteTest: Scale9Sprite fade actions with cascade opacity.

[TEST] Web: Remove default focus block from UIFocusTestVertical.

[TEST] Lua: Fix pageViewTest Horizontal scroll won't work in Lua-test.


Cocos2d-x can be downloaded here.

GameDev News

22. January 2016


This news came to me from cra0zy on Twitter and it’s a bit of a bummer.  OpenTK, a popular set of OpenGL bindings for .NET languages is currently dead.  The original founder walked away from the project and the guy that has been maintaining the project for the last several months posted this message to Github.



@frassle (current maintainer) is stepping away from this project. The project owner is not around to give direction, and I don't have access to the website, nuget account, travis account or most permissions on the github account. I can't push this project forward.

As I'm the only one whos maintained this repo for the last 6 months with my absence pull requests and issues will probably stay unresolved. I'd suggest developer look to other projects like MonoGame or SDL2#.

As this is a large project used by many people I thought it best to add this notice before signing off.


So basically nobody has full access to the project anymore and the guy that has been keeping the project on life support just quit.  The line “look to other projects like MonoGame” is an interesting one, as I am pretty certain Monogame itself is dependent on OpenTK.


At the end of the day it may not be all that big of a deal.  Obviously all of the source code is still out there if someone else wants to pick up the torch and run with it.  Additionally, with Vulkan “coming soon”, I can’t imagine there will be a great deal of changes in the world of OpenGL in the future.

GameDev News

AppGameKit Studio

See More Tutorials on!

Month List