Marmalade SDK 8.5 out now

The latest and greatest version of the Marmalade SDK is now available here

  • Major update to 2D Kit editor
  • New OpenAL middleware component
  • New live tile support for Windows platforms
  • Improved C++11 support
  • Improved EDK documentation

A full list of changes is available here.

Marmalade SDK 8.4 out now

The latest and greatest version of the Marmalade SDK is now available here

  • C++11 support now available.
  • Apple Pencil pressure reading is now supported on iPad Pro in addition to existing 3D Touch support.
  • Slide Over and Split View multitasking now available to Marmalade apps on supported iPad models.
  • Compression of assets in APKs on Android is now supported.
  • Windows 10 ARM builds can now be directly deployed to any attached device without any special configuration.
  • s3eCamera can now return high quality still images on Android, rather than the viewfinder preview.
  • s3eWebView updated to use newer version of Chromium Embedded Framework on Windows Desktop.

A full list of changes is available here.

Marmalade 7.10 is out now – On device Android debugging using Visual Studio!

That’s right, you can now debug Android games on apps using Visual Studio on Android, which is awesome of course.

You can download the Marmalade SDK for free from the Marmalade SDK website

Ok, now that I’ve finally contained my excitement (no more trailing through adb output!), here’s the full list of changes:

Changed since 7.9

Marmalade Hub

  • MSDK-1516 Fixed an issue on Windows that prevented newer versions of iTunes from being detected by the Dependency Checker.

Marmalade Quick

  • MSDK-1582 Networking library for Marmalade Quick updated with IPv6 support.
  • MSDK-1620 Render Texture example improved to show more efficient usage of sprites.
  • MSDK-1476 Fixed an issue when deploying from the command line that could cause app binaries to fail to be located.


  • IwGx (MSDK-1524) Fixed an issue with CIwTexture::LoadFromFile() where alpha was incorrectly converted for 32-bit images.
  • IwCRT (MSDK-1610) Implemented getaddrinfo() and freeaddrinfo() functions.
  • IwTwitter (MSDK-942) Fixed an unknown error during socket connection that prevented a session from being established.

Platform Abstraction

  • s3eSocket (MSDK-1603) Fixed an issue on iOS where no connection would be reported when connected via an indirect network connection type (ad-hoc networks or IPv6 tunnels). You can restore the previous behaviour if required by setting IOSUnreachableIndirect to 1 in your app’s ICF.


  • MSDK-1471 Fixed an issue that could cause touch callbacks to be lost when playing video.
  • MSDK-1281 Fixed an issue that prevented correct resizing of video when device orientation was changed.


  • Beta support for Android Native Debug mode, allowing you to use the Visual Studio Debugger or GDB to debug your Marmalade apps on Android devices.

Google Native Client

  • MSDK-1584 Fixed an issue that could cause a black screen on startup.


  • IwHTTPExample (MSDK-1574) Example now fails gracefully rather than crashing when unable to connect to an IPv6 address on 64-bit Android devices.

Free Booty5 HTML5 Game Maker Manual e-book now available

The first version of the Booty5 HTML5 Game Maker Manual e-book is now available for free download. Find out more on the Booty5 free e-book page.

Goji game editor for Marmalade 1.7.2b now available

Latest version of the free Marmalade compatible game IDE the Goji Editor is now available for free download

Changes include:

  • Added New Project dialog with support for creating wireframe projects
  • Update to AppEasy Core to work with Marmalade SDK v7.4
  • Fixed export of extra app.icf settings
  • Fixed missing app_id for Facebook extension when deploying device builds

AppEasy Core SDK is now open source!

If I remember correctly I promised a while back that I was going to open up the source to the AppEasy Core SDK. if you don’t know what that is then its a FREE open source cross platform game and app engine for mobiles and desktop that can be re targeted to work on anything you like as long as you implement the platform abstraction layer. At the moment, a Marmalade SDK layer is implemented so you can use it right out of the box. You will however need a Marmalade license to use it, although having a Marmalade license will give you deployment access to a vast range of platforms so its well worth it. if not then simply implement the platform layer for whatever platform(s) you desire. If you dont fancy any of that and just want to use Lua and XOML then you can always give the AppEasy service a try, which lets you deploy apps to iOS / Android and Windows desktop without the need to compile and re-write code etc..

AppEasy Core SDK is basically the big professional and powerful child of the old IwGame Engine. The IwGame Engine started as a tutorial project that I started a few years ago that was meant to teach developers how to use the Marmalade SDK. However, Marmalade has no out of the box game engine so IwGame evolved into a fully fledged game / app engine to fill that gap, although it was hastily developed and built directly on the Marmalade platform. I’m very much a recycler, so that’s not how I generally like to write an engine, I like to have a clear separation between engine and platform so it can be re-targeted at different platforms quite easily. I also wanted to get rid of the obscenely long names and add some proper structure / documentation to make the whole thing more easily understandable.

Well I think I accomplished all that and more, I also added many new features and fixed a mass of bugs along the way. When I get the time I will be replacing the old IwGame Engine page with an AppEasy Core SDK page, for me IwGame needs to be buried now I think.

I also developed a game / app editor called Goji Editor that lets you develop full on games and apps within the editor and export to AppEasy, Marmalade Quick and other engines coming soon, including HTML 5.

AppEasy Core SDK has the following core features:

General Features
- FREE and open source! (MIT)
- Can directly use data exported from the Goji Editor (
- Can be targeted at any development system / SDK by implementing the platform layer
- Marmalade SDK platform already implemented, giving you access to many platforms out of the box
- Develop using XML, Lua and / or C++
- Easy to learn mark-up driven language called XOML that enables rapid development
- Support for Lua scripting
- Styles and Templates
- Local and web based assets
- Proportional sizing and positioning
- Auto screen sizing and device orientation lock
- Local storage access
- Multi-touch input
- Accelerometer and compass support
- Smooth sub-pixel rendering and batch rendering for speed
- Touch panning and pinch zoom
- Persistent data
- HTTP POST / GET defined declaratively
- Access to video camera streaming
- Define actions that can be carried out when events occur

Game Features
- Polygonal based sprites and sprite depth
- texture atlases and batching
- Support for Scenes (game world / app canvas) and Actors (game / app objects)
- Images, fonts, compressed WAV sound effects and and MP3 music
- Animation
- Box2D Physics (fixtures, shapes, materials, collisions and joints)
- Video Playback

App Features
- Create simple or complex user interfaces
- Full support for simple and complex data bindings
- Data definition and organisation
- Access to local and remote data
- Support for SQLite

User Interface Features
- Text input boxes
- Buttons / Check boxes
- Labels
- Icons
- Sliders
- Panels (StackPanel, WrapPanel, Canvas)
- Grids
- Image / Text View – Support for pinch zoom and pan
- Web View (display web content)
- Tab Bars
- Video Overlays
- Sliders
- XML data bindings
- Multi-touch based user interface (up to 5 simultaneous touches)

Monetisation Features
- Ad integration
- In-app purchases

Advanced Features
- XOML Variables
- Modifiers
- XOML Programs and commands
- Inline scripts

Social Features
- Facebook API support

API documentation
API documentation is located at

The AppEasy Core SDK comes complete with:
- PDF documentation located in the Docs sub folder
- Extensive doxygen code documentation
- An example app that contains 70 examples demonstrating many parts of the SDK
- An example game
- XML schema for XOML

Whilst free support is not provided, a community support forum is available at AppEasy Community

You can download AppEasy Core SDk from Github

Marmalade 6.4 Gets Tizen Support

The latest and greatest Marmalade SDK 6.4 is out now. A number of cool new features have been added including:

  • Support for Tizen OS
  • iOS 7 and XCode 5 Support
  • Marmalade Quick has now been rolled into the Marmalade SDK


Marmalade Offering FREE licenses

Get Marmalade SDK for FREE

Marmalade the developers of one of the most powerful cross platform mobile and desktop development systems the Marmalade SDK are now offering FREE licenses. Marmalade are committed to ensuring that developers have the tools to deploy to established and emerging platforms first.

What is the Marmalade SDK? The Marmalade SDK is an awesome easy to use cross platform SDK that enables cross platform development for smart phones, tablets and emerging technologies such as smart TV. Marmalade supports unified development and testing across iOS, Android, Windows Phone 8, BlackBerry PlayBook / OS 10, Bada, Windows, Mac OS X and soon Tizen.

Marmalade comes in three flavours:

  • Marmalade C++ – Develop and test 2D / 3D apps and games using a mature C++ API that covers everything from 2D / 3D graphics and audio to native UI and unified in-app purchasing
  • Marmalade Quick – Develop and test 2D apps and games using a very easy to use Lua API that covers everything 2D and audio to physics and unified in-app purchasing
  • Web Marmalade = Develop and test HTML based apps and games using a very easy to use JavaScript API

All of the above enable testing right on a Windows or Mac desktop, with easy device deployment.

Finally Game / App Editor Started

Note to self, update my blog more often. These days my blog seems to have turned into an AppEasy update feed, well I want to change that and start blogging about other things (besides AppEasy).

Well, this blog post is not completely devoid of AppEasy news as the game editor will target AppEasy to begin with.

Today I want to blog about a new game editor that I have started work on (its a bit of a pet project because I’m getting fed up of writing game or app specific editors). The editor is tentatively called Groove Game Editor which will have the following features when finished:

  • Completely customisable – You can define all of the types of objects that can be edited along with all of the properties for those objects using an input XML file
  • Placement, scaling, rotation of game objects on a large virtual canvas
  • General layout, tile and zone maps
  • Automatic atlas generation
  • Resource management
  • Music and sound effects
  • Physics
  • Actions, events and triggers
  • Key frame animation editor
  • Lua scripting
  • Support for all XOML types out of the box
  • Support for HTML5, Marmalade Quick, Cocos2d-x, Corona, Gideros and other game / app development SDK’s and systems
  • Binary, xml and JSON export

Thus far I have implemented the customisation system which enables developers to create a single XML file that describes the following elements to the editor:
Enumerations – You can use these to define sets of possibilities, e.g.

Here’s an example that shows an enum for the Joint Type used by XOML joints:

<Enum Name="JointTypeEnum" Info="Physics joint type">
	<Property Name="weld" />
	<Property Name="distance" />
	<Property Name="revolute" />
	<Property Name="prismatic" />
	<Property Name="pulley" />
	<Property Name="wheel" />

You can later use this as a type for object properties

Object Types – These represent specific types of objects that can be edited, for example Actors, Scenes, Images, Programs, Actions etc are each single types, e.g.*

Heres an example of a Box2D material:

<Type Name="Box2dMaterial" Base="Common" Info="Box2D material resource" Colour="#ffe4ff00">
    <Property Name="Type"            Type="Box2dMaterialTypeEnum" Category="General"  Value=""	  Info="Type of material" />
    <Property Name="Density"         Type="double"                Category="General"  Value="1"   Info="Material density" />
    <Property Name="Friction"        Type="double"                Category="General"  Value="1"   Info="Materials coefficient of friction" />
    <Property Name="Restitution"     Type="double"                Category="General"  Value="0.1" Info="Materials coefficient of restitution / bounciness" />
    <Property Name="IsBullet"        Type="bool"                  Category="General"  Value=""	  Info="Treat object as moving at high speed" />
    <Property Name="FixedRotation"   Type="bool"                  Category="General"  Value=""	  Info="Prevent rotation of body" />
    <Property Name="GravityScale"    Type="double"                Category="General"  Value="1"	  Info="Amount to scale gravity" />

As you can see you can define the name of the type, the base, which is kind of like a base class in C++, the type inherits all properties of the base. Info is used for tool tips and the colour is the colour that will be used to display objects of this type in the resource view. There are other properties but I wont go into them right now. Within the TYpe tag is the properties, thee define the properties that can be edited along with their types, the category they appear under and the tool tip

Type Groups – Type groups are used to group together types that share similar function, e.g.

<Group Name="Basic Actors">
    <Type Name="ActorImage" />
    <Type Name="ActorConnector" />
    <Type Name="ActorText" />
    <Type Name="ActorParticles" />

Here we group together four different types into a group called Basic Actors. We can later use these to set up menu groups and other interesting stuff

Menu Groups – Finally we have Menu Groups. These are used to define how the user can create hierarchical data. Each menu group defines a list of types that can be creayed when the user attempts to create a child object within its hierarchy, e.g.:

<MenuGroup Name="NewAnimationChild" Context="Animation">
    <Section Name="">
        <Type Name="Frame" />
        <Type Name="Atlas" />

Here we create a Menu Group called NewAnimationChild that contains two possible types (Frame and Atlas), these are the only two possible types of objects that an Animation object can contain. The Context attribute specifies what type of object will use this menu for creating new child objects in its hierarchy. The Section tag specifies the name of the sub-menu that the type should appear under. In this case the section name is blank so Frame and Atlas will appear in the root.

Most other items and other parts of the editor will be defined in this customisable editor file.

The editor is not currently in a usable state and only has the following functionality:
* Allows editing using all custom types, enumerations and menu groups that are specified in the editors definition XML file
* Loads files that are based on the editors definition XML file
* SUpports all AppEasy XOML types and enumerations using colour coding

Next on the list is export to XML. However, before I do that I need to get objects that are specified inside templates working. The problem I face is that the editor creates UI that allows you to edit specific types. For example, a bool type will use a check box and an enumeration will use a drop down list. Problem with this is that objects that are defined inside a XOML template can have parameters that are template parameters (strings), so the UI needs to change for all objects that are sat inside a template to allow these parameters to be modified. Problem is that Windows Presentation Foundation (WPF the technology that I am using to create the editor) uses data binding to specific types. I need to figure a way around this. I have a few ideas that I can try.

Once I have export working I will release a version for those that are interested in taking a look to play around with. For now I will leave this screen shot that shows my porgress so far:

Groove game editor

Groove game editor

AppEasy 1.4.6 the cross platform app creation system is now out!

AppEasy the cross platform mobile game and app development system using XOML and Lua has received a new major update. See for more details. AppEasy is currently in FREE open beta.

AppEasy 1.4.6 is now available for download. Changes include:

* TextFilter attribute added to UI labels
* Added market.restore() to restore previous purchases
* Added market.products() which returns a table of all product ID’s in the market
* Added market.price() which returns the price of a product
* Added which returns the name of a product
* Added variable.count() which returns the actual number of used elements in the variable array
* ActorText now supports animation Text target property
* actor.bringToFront(actor) added to bring an actor to the top of its child hierarchy
* Added new load_xoml command to programs
* New system variable (index 11) which holds current screen orientation in degrees
* New Lua display,width(), display.height() and display.orientation() script functions added
* New input.setAccelerometerRef() and input.getAccelerometerOffset() functions added
* Market products no longer support an ID
* market.findbyID() has been removed
* market.products() now returns product names and not ID’s
* market.setCallback() added
* Callback removed from market.purchase()
* market.lastPurchase() has been replaced with market.currentProduct() which now returns the last attempted refunded, restored or purchased product.
* sys.yield() added
* added to force save a XOML variable
* Variables have new attribute called Instant. If set to true then the persistent variables value is saved as soon as it is changed. Marking a variable as instant will automatically mark it as persistent
* Added new change command to programs which enable you to start, stop, pause and restart a program
* Added new media.enableMusic(enable) and media.enableSound(enable) to enable / disable music and sound globally
* Added new AudioEnable action which enables / disables music and sound (P1 = music_enable, P2 = sound_enable)
* sound command 5th parameter changed from target scene to repeat (boolean)
* Current scene is no longer brought to front of scene stack when new scenes are added. This will need to be done manually, or you can use the more appropriate scene layering system
* KillAllScenes action now accepts up to 5 scenes to exclude
* Video now supports OnStopped event
* VideoOverlay now supports OnError event
* WebView now supports OnPageLoaded, OnPageLoading and OnPageError events
* CallActions parameters changed to actions-name, parent-actor-name, parent-scene-name
* PlayTimeline will now restart a stopped timeline
* More resource properties exposed to property setters / getters, animation targets and bindings
* Actor HitTest replaced with Tappable
* Added new UserProperties to scenes and actors. UserProperties allow you to add any number of custim user defined properties to actors and scenes
* New SetUserProp(PropertyName, Propertyvalue, actor, scene), AddUserProp(PropertyName, Propertyvalue, actor, scene), SetUserPropToVar(PropertyName, VariableName, actor, scene) actions added
* New set_userprop(PropertyName, Propertyvalue, actor, scene) command added to programs
* New userprops LUA library added that provides set, get, add and find user properties
* You can now change templates and the data source assigned to grids and list boxes in real time
* All time related properties now work in seconds instead of per frame (scale up by 30 to convert to new system)
* New camera lua API
* Array index variables can now be used in actions and commands (e.g. my_array:my_index)
* BUG FIX: Crash bug when adding actors to layout panel actors such as grid, stack panel, list box and wrap panel
* BUG FIX: Label Text and Font properties now returned correctly
* BUG FIX: Label with autoheight and proportional sizing set changing size when tapped
* BUG FIX: Label / text actor actor height fixed
* BUG FIX: Fixes to market
* BUG FIX: Scene panning on y-axis not stopping at extents properly

Apologies for any changes that force you to make modifications to your existing XOML / Lua but these changes are essential for moving forward.

Documentation and XOML schema has also been brought up to date with 1.4.6

Lastly, note that all of the old examples have now gone and have been replaced with a single Tests example. This to a) clean up the examples folder to make way for bigger better examples and b) enable you to see all of the features in a single app instead of having to build, deploy and test each individual example.