Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon
29. March 2016


Defold is a game engine that was recently release by King at GDC 2016.  It’s a cool and capable cross platform Lua powered game engine that you can see in action in this video.  One of the big downsides of the engine (and an upside too) is that your code resides on King’s servers.  Behind the scenes they maintain a git repository, but it’s quite understandable that this might not make you feel warm and fuzzy.  Thankfully you have the option of using your own server as described in these instructions.

If you are comfortable at the command line, here are the instructions below:

Command line

Prerequisite: Git - OS X, Windows, Linux

  1. Open your project in the Defold editor.
  2. Right click on the game.project file, select "Show in Finder" (or similar for your platform).
  3. Next, you need to navigate to the project location (from step 2) in a terminal window. Here's how:
    • OS X - Open the project location in, for a detailed guide see this.
    • Windows - Open the project location in Git Bash, for a detailed guide see this1.
  4. Lastly, change the ​origin remote to your own Git URL entering these commands into your terminal:
git remote set-url origin <your_own_git_server_url>
git push -u origin master


Easy enough.


Note however that you will still need to create your project on the Defold servers, but the code will now reside on your own servers.  This requirement should be removed in version 2.0 according to this forum post.

GameDev News

26. February 2016


Marmalade SDK, a popular C++ and Lua based mobile focused game engine, just released version 8.2.1.  Apple platforms certainly were the focus of this release with 3D touch and Watchkit support being the major new features.  For details on the new 3D Touch support, check out this recently released tutorial.


From the release notes:


  • Support for 3D Touch on iOS. See 'Detecting touch pressure' here
  • Support for WatchKit extensions on iOS.
  • Fixed App Store codesigning on PC.
  • Added the ability to control the inclusion of extensions that contain IDFA. This is required by apps that were rejected from the App Store for inadvertently using IDFA. For more details see 'Preparing for binary upload' in the iOS Platform Guide

Changed since 8.2

Marmalade Hub
  • MSDK-2294 Fixed a bug where after cancelling the 'Create Deployment' dialog, a blank deployment page was shown.
  • HUB-236 The Builds list and 'Last Build' were not updated correctly.
  • MSDK-2311 Added ability to view/edit MKB from Hub.
  • HUB-309 Fixed a bug where the log was not visible if something went wrong when opening a project.
  • HUB-314 Could not create a deployment.mkf file with empty mkb.
  • HUB-310 Provide a way to reset deployment settings of a project.
  • HUB-125 Add ability to create multiple builds in the 'Builds' page.
  • HUB-285 Fixed the Hub UI becoming unresponsive when building on Mac OS.
  • HUB-302 Fixed the Configurations tab hanging after cancelling a save operation.
  • MSDK-2317 Company name and publisher entries were not being set.
  • MSDK-2361 Changes to the project's readme file weren't saved.
Marmalade Quick
  • MSDK-2254 Fix issue where removeNode() could not be called multiple times for a given object.
  • MSDK-2265 If createSprite is called using a table, allow xScale and yScale to be defined if relativeScaleX/relativeScaleY are not given.
  • MSDK-2276 Fix OSDateCallParam lunary test on OS X.
  • MSDK-2280 Fix issue where QNode:setParent() was not setting the object in question as a child of the target.
  • MSDK-2265 Fix Lunary test code to pass on PC.
Platform Abstraction
  • s3ePointer (MSDK-2208) Implemented support for reporting touch pressure using s3ePointer events. Currently supported on selected iOS devices with 3D Touch technology (iPhone 6S/6S Plus) and iPad Pro with Apple Pencil. See Detecting inputs for more information on detecting touch pressure.
  • IwAnalytics (MSDK-2302) Deprecate IW_ANALYTICS_EXCLUDE_IDFA_SUPPORT - use new DISABLE macro S3E_EXT_IOSIDENTIFIERS_DISABLE_ON_IPHONE instead. (Remove need to recompile the iwanalytics module to switch behaviour).
  • HUB-311 Implemented support for 3D Touch App Shortcut actions (currently supported on iPhone 6S and iPhone 6S Plus) through news3eIOSAppShortcut extension.
  • MSDK-2309 Re-implementation of fix for issue in iOS Native Debug with space in the project name.
  • MSDK-2264 Fix for "invalid signature" error during App Store submissions when building on PC.
  • MSDK-2330 Updated WKWebView interface in s3eWebView to reflect standard ARC changes in UIWebView.

  • MSDK-2338 Fixed a regression with stack sizing issues which caused crashes on secondary threads due to stack overflow. The crux is that the default for the deployment option SysStackSizePlatform had changed from 0 to 128k. It has been changed back to 0 to get the system default stack size. One manifestation was that s3eAudioPlayFromBuffer crashed on different thread on Android.

  • MSDK-2355 Removed spurious warning: "The target name is different across different builds of the project" when building a middleware module or extension with Visual Studio 2015 in Android Native mode.
  • MSDK-2286 Minor fix to prevent potential crash in s3eAndroidGooglePlayBilling extension on some devices.
Windows Desktop
  • MSDK-2176 Fixed issue with Alt-F4 being ignored as a quit request when in fullscreen mode.
  • MSDK-2334 Fixed regression in snprintf (and friends) in vc11 and vc12 builds where passing 0 for size would cause stack corruption or a crash
  • s3eIOSWatch (MSDK-1255) Introduced s3eIOSWatch extension for data exchange between Marmalade apps and WatchKit 1.0 style app extensions (Apple Watch apps). See iOS specific functionality and tips for more information.
  • s3eFacebook (MSDK-2210) iOS extension can now provide app activation analytics data to Facebook if EnableAppEvents ICF option is enabled.
  • s3eGameCenter (MSDK-2209) Introduced a function to list multiple GameCenter achievements at the same time. Enabled control of achievement completion banner from updated s3eGameCenter example.
  • MKB System (MSDK-2289) Fixed a bug where an empty file group [] or [""] in a 'files' block in an mkb file would cause an invalid Xcode project to be emitted.
  • EDK (MSDK-2307) Support DISABLE macros on a subset of extensions in the SDK - those used by prebuilt Quick engine and those that use IDFA on iOS.

GameDev News

22. February 2016


Corona SDK has been getting a lot of updates since it was recently acquired by Perk, which is never a bad thing.  Today saw another release of the Corona SDK, a cross platform game focused Lua based framework.


Update 2016.2830 brings the following changes/new features:

With this release, both OS X and Windows desktop builds are out of beta. Several people have even had their apps greenlit for publishing on Steam! In addition, our tvOS supportmoved into beta state and several people have already ported apps to the tvOS app store.

Corona Simulator improvements

This release also improves upon the Corona Simulator’s interface, providing you with an even better experience. The big new feature in this regard is the Simulator console window. Previously, we used either the OS X “Terminal” app or the Windows “Command prompt” to output Corona console messages. Now, the built-in console window takes on this role and offer some exciting new features, including:

  • Both errors and warnings are highlighted for quick reference
  • Easily search for text using the built-in search feature
  • Choose from several color themes to suit your preference
  • Jump to an error or warning in the log by clicking/selecting its message in the bottom panel
  • If you choose to build and copy to a tethered device, the console log will show messages from that device

Other highlights/notes

Other additions and changes to this release include:

  • Android builds now support Android 6 “Marshmallow”
  • Windows, OS X, iOS, and tvOS game controller support; on Windows, support for bothDirectInput and XInput; on OS X, support for both HID and MFi controllers
  • iOS device builds now target the iOS 9.2 SDK
  • 3D Touch support for supported devices like the iPhone 6S and 6S Plus
  • Corona apps now respect the “Auto-Rotate” setting on Android
  • New texture loading/management APIs
  • Graphics V1 compatibility is now deprecated and may be removed in a future release


The complete release notes are available here.

GameDev News

14. February 2016


A new version of Love, the popular Lua based 2D game engine, was released today.  Release 0.10.1 brings:

  • Fixed a Lua error in the no-game screen if the window's height is too small.
  • Fixed the default error handler to reset the mouse Cursor.
  • Fixed love.filesystem functions crashing when called if liblove is used directly without calling love.filesystem.init.
  • Fixed audio on Android to pause when the app is inactive, and resume when the app becomes active again.
  • Fixed Source:setRelative to set the relative state of playing Sources to the passed value rather than an old cached one.
  • Fixed the Video decoding thread hanging after Video:seek or when a Video finishes.
  • Fixed Video:isPlaying to always return false after it finishes playing.
  • Fixed RandomGenerator:random crashing if a nil 'self' is used.
  • Fixed loading BMFont files which have characters with 0 width or height (a space character, for example).
  • Fixed causing crashes if FileData is passed in.
  • Fixed causing crashes on OpenGL ES 2 systems when a Canvas is active.
  • Fixed object creation functions (e.g. to error instead of crash, if called before a window has been created.
  • Fixed a driver bug on some Android devices which caused all objects to show up as black.
  • Fixed a driver bug on Windows with AMD graphics cards where would not always work.
  • Fixed Shader:sendColor incorrectly converting alpha values from sRGB to linear RGB when gamma-correct rendering is enabled.
  • Fixed double-converting colors from sRGB to linear RGB when gamma-correct rendering is enabled.
Other changes
  • Updated the Windows executable to prefer the high-powered AMD graphics card on systems which have switchable Intel+AMD GPUs.
  • Updated love.touch.getTouches to return the list of IDs in the relative order that the touches initially happened (i.e. the first ID in the list is the least recently pressed touch that is currently active), instead of being in a random order.
  • Updated the error messages caused by invalid or bad arguments to ImageData and SoundData methods to be more descriptive.

If you are interested in learning more about Love and Lua I featured it in this multi-part video tutorial series for beginning gamedev.

GameDev News

3. February 2016


Many game engines come with examples to get you started, but most are minimal in scope and actually show pretty horrible programming practices in exchange for being compact, or just out of pure laziness.  Corona has long needed a meaty sample and finally it has one.  The just released Corona Cannon, basically an Angry Birds clone.  From the announcement blog:

Five years have passed since then. The original GvM was developed for Graphics v1, it only supported 480×320 or 960×640 resolution screens, and the code didn’t follow current best practices.

For instance, there were many global variables, the project didn’t use OOP (Object Oriented Programming practices), and the code wasn’t DRY (Don’t Repeat Yourself). Each level needed a new levelN.lua file, which repeated the entire logic of the game plus level layout.

The project wasn’t perfect, but it was a great example 5 years ago. Director class was the only scene management choice at the time and there was no way to organize projects with sub-directories. Dark times.

After the acquisition of Corona Labs by Perk, and with addition of new hires, it was time that we made a fresh new clone! Or a remake of the clone. Or is it a clone’s clone? Too many clones… Let’s just call it a remake.

The “remake” started as a simple code update to the original game, to make it compatible with modern versions of Corona SDK. As a side note, it was actually my first task at Corona Labs as a new hire. Initially, I started updating the code, but quickly realized it was not enough. Developers would not fully benefit from simple code update. We needed a game that shows best practices. So, I created a new game with similar features, from scratch.

The old graphics weren’t made for high resolutions, so we decided to use free assets, which are great for prototyping. I also wanted to use Tiled to showcase how to integrate it into a Corona game. I wanted to integrate a simple level editor too. It also needed to be playable on all platforms including OS X, Windows desktop and Apple TV, so controller support was a must.


As for the new game theme, I came up with an idea to fire Corona Labs and Perk logos from a cannon, like cannonballs. We can’t fight pigs, right? No unnecessary animal cruelty… So what can we fight with in Corona? Why, bugs of course! Corona Debugger could have been a cool name for this game, but we settled down on Corona Cannon instead.

During development, some fixes and improvements were also introduced in Corona. Theeasing.continuousLoop was fixed, and Apple tvOS remote support was improved, as was desktop support.


The code is available for download on their github page.

GameDev News

AppGameKit Studio

See More Tutorials on!

Month List