Marmalade SDK the ultimate cross platform SDK for phone, tablets and emerging technologies – the best kept secret?

I spent a few days browsing the web from the point of view of a potential developer looking for a cross platform development software developer kit (SDK)  and I was very surprised and woefully disappointed to find that very few developers are actually aware of the existence of the Marmalade SDK. This tallies with the many developers that I have spoken to over the last year or so and introduced to the Marmalade SDK, who had no idea that it existed.

I searched social media, Google, Bing and other search engines as well as a number of well known developer forums for terms such as “cross platform development”, “cross platform sdk”, “cross platform phone sdk”, “cross platform mobile development” and many others. I came across many top 5, top 10 cross platform SDK’s etc.. but the Marmalade SDK was not listed on any of them. I did leave behind a few posts mentioning the Marmalade SDK to the original posters, so hopefully they will pick up on it and mention it.

We have been using the SDK for over a year now, launching a game across 5 platforms and an augmented reality app across 4 platforms with great ease and very little effort. We also have three additional games in development using the Marmalade SDK, so we have a fair amount of experience with the SDK.

The thing is, the Marmalade SDK is a remarkable piece of software engineering that appears to be  largely going unnoticed by the wider developer community. I mean you can deploy the same native code and in some cases the same art and audio assets to 10 platforms including emerging platforms such as LG TV. I have looked at many of the cross platform SDK’s and cannot find anything  that can directly compete. Some of the HTML / Javascript SDK’s offer wide platform support which is cool but don’t really offer the raw native speed that the Marmalade SDK does.

Here are a few cool things to know about the Marmalade SDK:

  • Marmalade supports 10 platforms to date, including iPhone, iPod Touch,  iPad, Android phone and tablets, Samsung Bada, Blackberry Playbook, Symbian, webOS, Windows, OSX, Mobile Linux and LG TV
  • Producing 2D & 3D games with Marmalade is very simple as all of the components are already written for you using the 3D Studio Max / Maya / Collada exporters and graphics, math and audio modules
  • Marmalade has good UI and font support as well as native access to UI coming October 2011. Coupled with existing Marmalade modules such as http access, video, web view and others, Marmalade allows the user to create apps as good as in in many cases better than using native platform SDK’s
  • Marmalade EDK allows developers to use native platform specific plugins
  • Code developed using the Marmalade SDK is compiled as tight as is possible using modern ARM & MIPS compilers
  • Marmalade SDK deployed apps do not need to carry around bloated VM’s or other unnecessary baggage, ensuring that deployed app sizes are minimal
  • Marmalade SDK allows high and low hardware access
  • Marmalade SDK has some great out of the box modules that support the likes of iOS iAds, game centre, in–app purchasing, market billing and web views.
  • With Marmalade you simply build and deploy your game directly to the phone or tablet on a PC or a Mac, no other hardware required
  • Amazing support, including the apps program and device loan program to aid testing
  • A simulator that lets you test across an unlimited set of screen resolutions and simulated access to Accelerometer, GPS, Camera, Audio, Multi-touch screen, SMS, Compass and more
  • Test actual ARM code without even deploying to an ARM based device
  • Access to a large collection of open API’s such as Box2D, AdMob, Flurry, Chipmunk,SVG, Python, LUA and tonnes of other cool stuff (Full list available at http://github.com/marmalade)

If you are a happy Marmalade developer then help bring the Marmalade SDK to the wider developer community. Mention it in your blogs, tweets, Facebook posts, conversations with clients, fellow developers, PR , so on and so forth.

I have added a new page to my blog that will outline exactly what the Marmalade SDK is and cover all of the cool stuff it supports here

Also, at the end of my Marmalade SDK tutorial blog series the community should have a good basic game engine that new users can use as a base for their own games, with new advanced features added week on week.

You can find out more about the Marmalade SDK at http://www.madewithmarmalade.com/

Hello Marmalade – Introduction to the Marmalade SDK – The ultimate cross platform SDK for smart phones and tablets

This tutorial is part of the Marmalade SDK tutorials collection. To see the tutorials index click here

So you are a smart phone, tablet, smart TV or desktop developer (or at least want to be) and you want to have your next hit game or app run across a huge range of smart phones and tablets. Well, you have come to the right place to find out how to do just that.

No matter whether you are a professional games developer, part time hobbyist coder or the technical director of a large corporation researching how to support you work force across a huge range of varied phones and tablets, the basic principles remain the same. By choosing to develop your products across multiple platforms:

  • You benefit from a much wider audience for your apps and games
  • You save a lot of money and time on development, testing and updating
  • You can perform updates to your existing apps quickly and easily
  • You can share the same unified C / C++ code base across all devices and platforms
  • No need to learn (or hire professionals that know) multiple languages, UI’s or SDK’s
  • Regularly updated SDK with new platforms and features
  • Some of the smaller app stores offer increased visibility and more stable long term sales

And by choosing the Marmalade SDK you also get:

  • A FREE license/li>
  • Amazing support, including the apps program and device loan program to aid testing
  • A simulator that lets you test across an unlimited set of screen resolutions and simulated access to Accelerometer, GPS, Camera, Audio, Multi-touch screen, SMS, Compass and more
  • Test actual ARM code without even deploying to an ARM based device
  • Support for iOS specific features such as App Store Billing, iAd, Game Center etc..
  • Support for Android specific features such as Android Market Billing
  • Access to a large collection of open API’s such as Box2D, AdMob, Flurry, Chipmunk,SVG, Python, LUA and tonnes of other cool stuff (Full list available at http://github.com/marmalade)

Marmalade is also partnered with the likes of Shiva3D, Scoreloop, Tapjoy, Raknet and many others, so you know this is an SDK that’s here to stay

Ok so what platforms does Marmalade actually support? The list to date is as follows:

  • iPhone, iPod Touch and iPad
  • Android
  • Blackberry Playbook
  • Blackberry 10
  • Windows
  • Windows Phone 8
  • OSX
  • Tizen
  • Roku

I know what you are thinking, can I really write my code once and run it across all of these platforms? The straight answer is “absolutely!” as we at Pocketeers have proven. We have already released BattleBallz Chaos (Arcade action game) across iOS, Android, Bada and Blackberry Playbook using the Marmalade SDK, as well as Funky Cam 3D (a fun photography app) across iOS, Android and Bada.

Ok, so if you can write your code once and deploy to so many platforms then why is your BattleBallz Chaos not available on the likes of Symbian or webOS? The simple answer is that some of those platform markets are not currently where we want to go for a variety of reasons, but none of those reasons relate to the Marmalade SDK. We may choose to support them in the future and we may not.

Righty ho, you’ve decided that you quite like the sound of this Marmalade SDK and you’re considering saving yourself a boat load of time and money developing your cross platform games and apps, but what does code look like with this SDK?

Well here’s a basic game loop:

#include “IwGx.h”

int main()
{
    // Initialise Marmalade graphics system
    IwGxInit();

    // Main Game Loop
    while (!s3eDeviceCheckQuitRequest())
    {
        // Clear the screen and depth buffer
        IwGxClear(IW_GX_COLOUR_BUFFER_F | IW_GX_DEPTH_BUFFER_F);

        // Update my awesome game
        PleaseUpdateMyGame();

        // Render my awesome games view
        RenderMyGameViewThankyou();

        // Flush graphics system
        IwGxFlush();

        // Display the rendered frame
        IwGxSwapBuffers();

        // Yield to the operating system
        s3eDeviceYield(0);
    }

    // Shut down Marmalade graphics system
    IwGxTerminate();

    return 0;
}

You will find that the graphical system in Marmalade is similar to Open GL, which for me makes the SDK very simple to use. All other sub systems are equally as easy to use for example:

To create a texture from a bitmap file and upload it to the GPU:

CIwTexture* texture = new CIwTexture();
texture->LoadFromFile(“AwesomeSpriteAtlas.png”)
texture->Upload();

As you can see the code is ultra simple and very easy to use but most of all “cross platform compatible!”. Imagine having to do this on iOS using XCode / Objective C and then again using Java on Android and then again using Flash on Playbook, the list goes on.

So unless you enjoy self punishment, lots of extra work and the pain of tracking the same bugs across multiple SDK’s, languages and platforms, I suggest you take a short trip over to Marmalade’s SDK home page at http://www.madewithmarmalade.com. Take a look at the SDK, its features, read some tutorials and even sneak a peek in the forums (I bite but not many of the other developers do!)

Over the coming weeks / months I will be writing a number of tutorials covering various aspects of the Marmalade SDK, associated tools and extensions, so keep an eye out.