Tony Waters, Head of SDK at Marmalade Technologies told 80.lv about the future of cross-platform game development technologies.
Tony Waters, Head of SDK at Marmalade Technologies told 80.lv about the future of cross-platform game development technologies.
Let’s talk about Marmalade. Tell us a bit about the origins of this development tool. How did the whole thing start?
Marmalade has a rich heritage with mobile gaming. In particular, it has a strong pedigree of bringing high profile AAA titles to mobile. Early on we found development process for multiple platforms required dealing with lots of different tools, SDKs, and inconsistent implementations of fundamental APIs. Each new platform added more complications, which made development more complex and time consuming. The Marmalade SDK started out as internal technology used to reduce this complexity by providing a common toolchain and abstraction layer that simplified the process of supporting new platforms.
How does this technology work?
Marmalade is an open and flexible SDK that allows developers to write their application once using a single codebase and then deploy across a wide variety of platforms without compromising performance. Along with the core SDK, we provide a large collection of Marmalade and partner middleware and SDK extensions that developers can optionally include in their projects to help them complete their apps. This greatly reduces the time and effort on platform specifics, meaning developers can focus their time where it counts, delivering a superb user experience.
web-marmalade-stack
The core of our product is the C++ SDK, but there are a number of additional tools that developers can use. Marmalade Quick is a RAD game engine using the Lua scripting language, Marmalade Juice allows developers to take iOS apps written in Objective-C and redeploy them to Android, and finally Marmalade Web allows developers to create hybrid apps for Android and iOS using HTML5.
Making a multiplatform game takes a lot of time and optimization. You have to adapt thousands of details, mechanics, controls, and visuals. How does Marmalade help with solving these problems?
Marmalade allows developers to code in C++ with full support for standard libraries and 3rd party extensions. Marmalade removes the need to use platform tools, languages, and APIs to replace them with a single API and tool-chain that is easy to use. Using a single project, single code base developers can work on a Mac or a PC and deploy it to all platforms including deployment to iOS from a PC.
The Marmalade toolchain compiles direct to native machine code with no appreciable performance overhead. As Marmalade is a modular system, only the libraries and services actually used by the app are included in the application package which keeps the installation size down and prevents application bloat, which can be an issue with other cross platform solutions. Marmalade’s API abstraction layer makes dealing with platform differences very easy, an example of this is common APIs access low level APIs across different platforms (such as display, sound, accelerometer, location etc). At a higher level there are utility modules as well as the seamless handling of different input methods (such as touch, mouse, keyboard and controllers) which also includes dealing with different screen resolutions.
How expensive is it to make your game a multiplatform title? Does Marmalade help you to make this transition more cost-effective?
Marmalade SDK
We feel developers should have access to the broadest market of consumers, meaning being available on as many platforms as possible. Developing for each platform without using a cross platform tool such as Marmalade, often means having separate projects built by separate teams. For example, to target two platforms using the native SDKs instead of using Marmalade, you would need double the amount of code; that also doubles the number of bugs to fix and the doubles the support you need. Add a 3rd or 4th platform to the list and costs continue to get higher and higher. The single project, single codebase approach with Marmalade greatly reduces the cost of adding additional platforms making it very easy for developers to target a very wide audience.
Could you tell us a bit about the testing process? Let’s say we already have a working prototype and we want to test on different platforms. How do we do that? Is it possible on a PC?
Marmalade provides a simulator available on PC and Mac that allows developers to test and debug their apps without needing the specific device. Marmalade also allows developers to test on real devices such as deploying apps to iPhones and iPads from a PC.
What platforms do you support? Can you make a game for PC or a browser and then port it to mobile platforms using Marmalade?
Marmalade supports all leading mobile platforms: iOS, Android, Windows; desktop: OSX & Windows, TV: LG TV, Roku, Google TV, and Amazon Fire TV. Once you have developed a game for one platform it’s very simple to deploy it to one of the other platforms supported by Marmalade. In fact, existing apps can easily deployed to new platforms as they are added to the SDK. If you have an existing C++ project, due to its open and flexible nature Marmalade is also a very good solution for porting apps from other platforms. Of course if you have an existing Objective-C project, Marmalade Juice allows developers to deploy them to Android.
Marmalade is based on C++. Why did you choose this particular language? Wouldn’t it be much easier to use something less difficult for newbies?
C++ offers developers maximum performance and a lot of flexibility. We do recognize that C++ is not necessarily the right language for everyone. It’s for this reason that in addition to the C++ SDK we also have Marmalade Quick which is a RAD game engine which uses the Lua scripting language and Marmalade Web which allows developers to quickly and easily create hybrid apps using HTML5.
What are your plans for the development of Marmalade and its future?
We are continuing to add new platforms and we also plan to add new tooling and services to the SDK to make it even easier to develop apps with Marmalade.