Share

FAQs

Registration and Licensing

I’m a student, what sort of cheap licenses do you have for me?

We offer a free license for students and educational institutions. Please Contact Us for more details.

What licensing options do you have for indie developers?

We love indie developers and have quite a few options to cater for their needs:

  • Our Community license is suitable for hobbyists and solo semi-professionals allowing you to develop and commercially deploy applications to iOS and Android devices for only $149
  • Our Indie license is available for companies with revenue <$500K per year and only costs $499
  • You may be able to get a full refund for both Basic and Standard licenses if you participate in our Forums and Code Community
  • Any developer whose app gets approved for the Apps Program will get a free Standard license (or a full refund)
  • You can also try out Marmalade for free for 45 days to experience its benefits and advanced capabilities

I have not received the activation email for my account, what should I do?

Please check the "junk" email folder in your email client. If you cannot see the email please Contact Us

How do I obtain a license for my desktop development machine (or request a new one)?

On a PC you can request a license using the "Marmalade Configuration" tool, once open you can use the "Request New License" option to obtain your license.
On a Mac use the "s3elicense" tool located in the "Applications" folder (e.g. Developer/Marmalade-SDK/version/).
When asked for your username and password, these are the same as you would use to login to our web site.

I have an existing license I purchased before 16th June 2011, is it still valid?

Yes, any license purchased before 16th June is still valid and can be used in the same way until its expiry date.

How can I use my license on another computer?

It is possible to "Release" a license so that it can be used on another computer. If you log in to the web site, go to "My Account" and scroll down to the option that allows you to release your license. On the new computer you will need to use the Marmalade Configuration tool to request a new license.

I have bought multiple licenses for the Marmalade SDK, how do I allocate them?

Once you have purchased your licenses you can manage them from the "My Account" section of the web site. From the "Manage Licenses" section it is possible to invite users to obtain your licenses as well as release licenses for existing users so that they can be re-allocated.

How can I get a receipt for my license purchase?

A receipt for your purchase is emailed when the transaction is completed but if you need another copy you can find this through your account on our web site.

Downloads, Updates and Support

Where can I find the latest version of the SDK?

The latest version of the SDK is available to download here

Where and how can I get support for using the SDK?

The community forums on our web site are there for developers to ask questions and have discussions about the SDK. If you require dedicated support from Marmalade engineers you will need to purchase or upgrade to a Professional license. You can find out more about licensing here

What desktop platforms can be used for development

Marmalade is supported on the following platforms:

  • Microsoft Windows 7
  • Microsoft Windows Vista
  • Microsoft Windows XP SP2 (or above)
  • Mac OS X 10.5 (Leopard) or above running on an Intel Mac.

Note that Marmalade Mac is still "Beta" - some tools and Simulator/debugging features are not yet supported, and Marmalade Mac is not subject to our usual support SLA for Professional licensees. See the documentation for more information.

When will such-and-such a feature be included in the SDK?

Marmalade's roadmap is very customer-driven. Forum requests and feedback are very welcome. Please check for existing threads relating to a certain feature first, and if possible add to an existing thread rather than starting a new one.

Professional licensees have dedicated technical support and can use their private ticket-based channel to discuss new features.

Marmalade Concepts and Features

Can a single build of an app really target any device? How does this work?

Marmalade builds your app as a single code binary that can run on all supported platforms and devices. The machine code in this binary runs unmodified on every target device, giving you the confidence that exactly the same code is running everywhere.

The app binary is packaged with assets and a platform-dependent binary into the appropriate package format. For example, the same binary and assets will go into an IPA file for iOS and an APK for android. Icons, splashscreens and other package features can be specified in the project's MKB file.

How do I handle differences between the devices, like screen resolution, etc?

The system APIs provide reflection for most device capabilities, for example an app can query the device's screen width using s3eSurfaceGetInt(S3E_SURFACE_WIDTH). Marmalade apps use these APIs to customise themselves for the device.

For more abstract device differences the app can combine custom settings with conditional blocks in the ICF file, for example:

[MyApp]
{OS=ANDROID}
StoreLink= http://market.android.com/
{OS=IPHONE}
StoreLink=http://itunes.apple.com/

This has the advantage that further variations can be added in future (often without even recompiling the app).

The s3eDeviceInfo example is useful for identifying device information quickly. It displays basic information about the device and can be easily edited to add more properties. Note that a deployment of any app using a Debug loader will also output basic device information at the start of trace files.

Note that we have upcoming plans for providing both this and more device/platform information in an easy-to-find way without requiring access to the device.

How do I debug on device?

One of the main aims of Marmalade is to minimize the requirement for on-device debugging, which is slower and less unreliable even on the best platforms. A fast, flexible and accurate desktop ARM emulator is included to allow debugging of the actual code that runs on device.

Generally, a debug version of the platform loader can be deployed that will output tracing. The exact method of retrieving this file depends on the platform.

Using Marmalade Mac, a fully native iOS build can be generated in XCode and debugged/profiled with the usual Apple tools.

Can I use native platform code in my app?

Yes, the EDK (Extensions Development Kit) allows developers to call native OS APIs from within their Marmalade apps. The EDK is currently supported for iOS, Android and Windows. There is further information on using the EDK in the documentation here.

Use of native OS APIs is also supported on Android through the JNI (Java Native Interface) S3E Extension. This allows you to include Java code for Android, either directly in the C++ source files of your Marmalade app, or by building and executing standard Java source files and assets. Due to the flexible nature of the MKB system, you can use it to define a project for the native Java part of the process if you wish - i.e. it will include .java files and build them into a .jar that can be used by your C++ app.

Can I use the standard POSIX APIS such as <string.h>, <stdio.h>?

Yes, Marmalade supports large parts of the POSIX API and also the BSD socket API via . These are implemented via the underlying S3E APIs.

Do Marmalade apps leverage hardware-accelerated floating-point processing?

Yes, it is possible to create builds which use hardware enabled floating point support via the arm-fpu ICF setting, which is to be set as an MKB option. Note that a build prepared in this way will not run on devices with no FPU.

Internally Marmalade uses 1.3.12 fixed-point in all the IwGx, IwGraphics and IwAnim pipelines (positions, normals, colours, UVs). This approach is often preferable to floating point even if an FPU is available. For example, on the iPhone GPU the use of 16-bits per component is half the bandwidth compared to 32-bits per component used by float.

Floating point matrices can be used in the transform stack. Marmalade will soon add support for floating point streams and animations.

How can I fix my app to landscape or portrait aspect ratio?

The ICF setting [s3e] FixScreenOrientation can be used to fix the screen in a given aspect ratio. "1" means portrait and "2" means landscape.

The landscape setting will allow either landscape setting based on the device's orientation. In future SDK versions, this may be expanded to allow specification of all 4 orientations explicitly.

Does Marmalade support internationalisation (for example: Japanese, Chinese, Korean,... characters)?

Marmalade does not include any support for switching strings/assets by language out of the box. Most common approaches will work fine.

Displaying non-Roman fonts can be achieved by using the IwGxFont module, which supports rendering of bitmap and TTF fonts, therefore supporting virtually any character set. Bitmap fonts are created using the Marmalade Studio Font Builder.

Note: Please be careful to save any text to be imported as a UTF-8 text file. (See the documentation of your editor on how to save files in this format)

Is Marmalade just for games?

No. Marmalade’s sweet spot is 'rich' apps, by which we mean any combination of: great graphics; audio processing; use of device APIs such as camera, GPS, and microphone; deep C/C++ codebase; or anything else that raises your app above the level of a simple mobile website wrapper. Marmalade's history is in games, so is used very widely in that particular industry.

Development Tools / Compilers

Which IDEs does Marmalade support?

Marmalade currently supports the following:
On PC:

  • Microsoft Visual C++ 6
  • Microsoft Visual C++ .NET 2003
  • Microsoft Visual Studio 2005
  • Microsoft Visual Studio 2008
  • Microsoft Visual Studio 2010

On Mac:

  • XCode

Which compilers does Marmalade support?

On Windows, Marmalade supports the Microsoft Visual Studio compiler (all versions) for x86 builds, Codesourcery GCC for ARM builds and ARM's RVCT (RealView Compiler Toolkit) for ARM builds. Marmalade Mac supports Apple GCC for x86 builds, and Codesourcery GCC for ARM builds.

Codesourcery's GCC is included in the both versions of SDK and does not need to be downloaded separately. When using the Simulator you'll typically be compiling with the x86 compiler, as this is best integrated with the respective IDE's on each platform. When deploying to device or running in the ARM emulator you'll use one of the ARM compilers.

When compiling on Windows, RVCT can deliver significant performance increases over GCC. Use of RVCT requires a commercial license to be purchased from ARM:http://www.arm.com/products/tools/software-tools/rvds/arm-compiler.php

ARM do however offer a free evaluation license for RVCT is part of the RealView Development Suite (RVDS), which is compatible with Marmalade.

How can I change the Marmalade Mac Simulator resolution, or other settings?

The Marmalade Mac Simulator does not yet provide configuration menus as found on the Windows PC version. This functionality will be added in a future version.

You can set the Simulator settings manually by editing the development.icf file in the data folder of your project.

When a project is launched in the Simulator, this file is generated if it does not exist and then updated whenever an option is changed. Options are read back in whenever the Simulator starts up. Therefore, to set values manually, you should:

  • Run the app for the first time, to generate the development.icf file.
  • Edit the file as desired (see below).
  • Restart the app (Stop, Run in Xcode).
  • Repeat whenever you need to change a setting.

The SurfaceWidth and SurfaceHeight settings will determine the surface size that the Simulator uses.

See https://www.Marmaladesdk.com/docs.php#/main/programmertools/Marmaladesimulat... for more information and a list of settings.

Why does the Simulator run slowly (low frame rate, slow start, CPU hogging) or not start at all?

The Simulator may run very slowly, in spite of the processing capability of the desktop machine. For example, it may run at a very low frame rate (<15 fps), start up very slowly (over a minute between launching and displaying the first frame), or use the CPU excessively (as shown in the Task Manager on Windows).

For most apps the Simulator will run flat out (unless you call s3eDeviceYieldUntilEvent or are limiting your frame-rate in some way) so it should not run slowly.

Simulator performance issues are usually due to graphics/GL driver/hardware issues on your desktop machine. In the Simulator menu, try selecting Preferences->Display->Use DirectX and see if that makes a difference. Try going to Preferences -> Display and unticking “Use off-screen buffer for GLES rendering”. This disables stretching of the OpenGL ES display which can cause issues on some drivers. Note that enabling this setting will have some side effects, notably resizing the window won't work and you will see a yellow screen at startup, but that should be replaced once your app draws its first frame.

Try going to Configuration - > GL... and changing the value of "GLES API supported". Check that this is correct for the version of OpenGL ES your app needs. Also note that some options are labelled as "POWERVR" and some "Qualcomm". When selected, drivers from the provider specified will be used; your graphics card may perform better using one compared to the other.

Always check that your graphics card drivers are up to date.

In extreme cases you can disable OpenGL ES altogether by selecting “None” from the GLES API drop down or adding [s3e] DisableGL=1 in your ICF file. Note that the SW renderer can produce significantly different output, so this is not an perfect solution.

Why do I get extra key events while debugging? Why can't I use print screen to take a screenshot?

The setting of "Use DirectInput in exclusive mode" in Preferences->Keyboard... determines the Simulator's style of integration with the desktop OS.

In non-exclusive mode (the default) the Simulator integrates more intuitively with the OS; for example, "Print Screen", and the use of Alt to access menus, work as expected. However, keys pressed during debugging are queued up and issued to the app when it resumes.

Exclusive mode has the opposite behaviour.

How do I change the IDE used to open MKB files?

In Windows, you can right click on an MKB file and chose to open with an IDE from a list of those that you currently have installed. Note that you can also choose here to build your app directly without using an IDE.

To change the default IDE used when you double-click an MKB, open the Marmalade Configuration Utility (from the Start Menu folder) and change the "Default Build Environment" setting.

Can I run MKBs from the command line?

Yes, MKBs can be invoked from the command line to build, run and deploy apps. See the documentation for more details.

Note that X86 builds on Windows will still require at least the command line tools from Visual Studio.

Marmalade for iOS (Platforms and Devices/iOS)

Can I use Objective C or native iOS code in Marmalade apps?

Yes, you can code in Objective C and use iOS APIs inside your own custom "extensions" using the Extensions Development Kit (EDK). The EDK allows you to code in C++ and Objective C, using standard iOS or third party frameworks and libraries, and expose them to the app through a C interface. The EDK provides your app with a function to check the availability of the extension on the target device – if running on iOS, the function will return true, and you can then make calls into the extension functionality. The extension library is statically linked into the iOS version of your app at deployment time.

Do I need a Mac to build, deploy and submit iOS apps?

You can fully build, deploy and install standard Marmalade apps for iOS using a Windows PC, with no need for a Mac. This includes all stages of app signing for both development and app store submission (generating certificate requests, obtaining certificates/profiles, signing apps). However, a Mac is currently required to upload final app builds to the App Store due to the store's dependency on the Mac App Loader. This may be improved in a future release. A Mac is also required if you want to *build* EDK extensions for iOS. Note that a Mac is not required if you simply wish to include pre-compiled EDK extension libraries for iOS.

How does Marmalade handle the differing screen resolutions and capabilities of iOS devices?

By default Marmalade deploys apps in "universal" mode so that they will run in native screen resolution on both iPhone/iPods and on iPads. You can specify for apps to be iPad-only or to run in 320x480 standard iPhone resolution on iPad via deployment options. Retina screen (640x960) support for iPhone 4 or newer must be enabled using the iOSScaleFactor ICF setting, but apps using this setting will still run in the native resolution on other devices.

Functionality that is only available on some devices can be queried at runtime through the relevant API. Marmalade's low level S3E APIs are designed so that they can always be called on any device and will simply return an appropriate error value if not supported, rather than causing a crash or exception.

How can I debug my app on an iOS device?

Marmalade Mac supports native device debugging, with live console output, breakpoint and code step-though, using Xcode and the --iphone option. Launch the app's MKB from the command line with "--iphone" to create a native iOS Xcode project with full iOS debugging features. Note that the compiled app uses a special static library version of the iOS loader, which means it will differ from a normal Marmalade app in subtle ways and is NOT supported for App Store submission. --iphone mode is useful for profiling and fixing bugs in EDK extensions. It is more productive to do as much debugging as possible on the desktop in the Marmalade Simulator rather than on device. Use S3E's trace and error output functionality with the console log provided by Xcode on Mac or the iPhone Configuration Utility on Windows.

Why does my Marmalade iOS app fail App Store submission with a "...the signature was invalid..." error?

The likely cause is that the .mobileprovisioning file specified during deployment was not valid. For Distribution builds, a .mobileprovisioning file must be specified but the validity is only checked when installing to devices, not during the signing process. A common error is to include a profile that is linked to a Developer certificate rather than a Distribution one. Check the details of the profile in Xcode, the iPhone Configuration Utility or the iPhone Developer portal.

Marmalade for Android (Platforms and Devices/Android)

How does Marmalade handle the differing screen resolutions and capabilities of Android devices?

There is a wide variety of Android devices with different screen resolutions, CPU and GPU capabilities, memory and hardware peripherals. This fragmentation is handled in two ways. The underlying functionality and capabilities of Android devices are exposed by the S3E API layer, and the Marmalade Studio modules such as IwGx are designed to support easy creation of code and assets that can “scale” across the range of devices you wish to support. 

For any native Android OS functionality not exposed by the S3E layer, or that you wish to use a third party library, you can use the EDK to develop a wrapper module allowing your app to call through to the native code.

Do I need the Android SDK to develop Android apps using Airplay?

While you do not need the Android SDK to create Android apps, it is highly recommend for serious development. If you download the Android SDK and install the device drivers, you can "Package, Install and Run" your app directly on the device and view the debug trace using the "Android Debugger Bridge". Additionally, if you wish to use the EDK to create extensions for Android, you will require the Android SDK and Android NDK.

Note that you do require the Java Development Kit (JDK) in order to deploy to Android; however, you do need it in order to use the EDK for creating Android extensions.

How do I debug apps on Android?

You can view the Android trace in real time using the Android Debugger Bridge (adb) from the Android SDK. Connect the device via USB and ensure the device drivers are installed (by following the Android SDK instructions). You can then use the command "adb logcat" to view the trace of a debug build of your app. For more information see http://developer.android.com/guide/developing/tools/adb.html

If the device has memory card inserted, you can find the iwtrace.txt file at it's root (/sdcard/iwtrace.txt).

Why do my textures appear white after suspending and resuming the on Android?

On Android the OpenGL ES context is sometimes lost while the app is in the background. You can solve this by using Marmalade’s IwGL abstraction, in which case the textures will automatically be restored on resume. Alternatively if you are using OpenGL ES APIs directly without IwGL, you will need to restore any lost OpenGL ES state (such as the textures) in the S3E_DEVICE_UNPAUSE callback.

How is screen rotation handled on Android devices?

On Android, the screen surface provided by s3eSurface is resized on rotation to match the new screen orientation. This means that s3eSurface functions will provide new values for the width and height of the surface as the device is rotated. The s3eSurface blit direction will not change as the surface rotates on Android devices.

Apps Program

How much is the financial incentive for joining?

We will assess the app to determine the level of incentive.

Can I choose to retain the publishing rights for certain stores, for example Android Market?

You can choose to retain the publishing rights to any stores when you accept the agreement when applying to join.

Do I need a license to port my app to Marmalade? How do I get it?

To do the initial work, if you don’t have a license, we provide you with one that allows you to port it but cannot be used commercially.

Once the app is accepted, you will receive a free standard license.

What if I already have a license? Do I get a refund?

As long as your app is accepted into the Apps Program, you will get a refund if you have a basic or standard license.

Why are you doing this? What’s the catch?

There is no catch! We are Publishers who have relationships with the OEMs and know they want more content. We want to help you distribute your apps in more places and increase profits for both parties. It’s a win-win situation!

What are the criteria for being part of the Apps Program? How are the apps rated?

Marmalade reviews apps internally and also has them assessed by an external reviewer.

How do I submit my app?

After assessing the app we will let you know whether we can port it for you for submission or whether we would help you do it yourself

What if I already registered for the Premium Apps Program?

Your app will be assessed for the new Apps Program

What if I decide I no longer want to be part of the program?

The Apps Program Terms & Conditions specify the termination options.

I understand that I retain the intellectual property rights, but will Marmalade be the name people see as ‘Publisher’ or can it be in my company’s name?

The Publisher’s name will be Marmalade and we will be the publisher for any platform that is not excluded in the agreement. This means that we will communicate with OEMs, submitting your app(s), dealing with rejections, etc.

You will be named as the Developer

Where do I go to for technical support?

You will receive access to our dedicated support team.

How do I get a phone so I can test my apps?

If you are re-deploying the app yourself, we will provide you with a loan device

Marmalade Code Community

What is the Marmalade Code Community initiative?

The Marmalade Code Community is where developers can come together to discover, share and create code that works with Marmalade. You can find out more here

How can I find out about source code and extensions that other developers have contributed?

Take a look at our Marmalade Code Community page that shows a list of all the projects that are hosted. Alternatively you can browse our GitHub repository

How can I contribute improvements and modifications to source code?

The Marmalade Code Community is hosted on GitHub and it is possible for any user to "fork" a project and make modifications. More information is provided here

How do I get my project included in the Marmalade Github repository?

We are always keen to include more Marmalade projects in our shared code repository on GitHub. More information on how your project can be included is provided here

What license can I use for my source code in the community code share?

Any code posted to our GitHub space must be shared under an open source license. There are no restrictions on the type of open source license you use, so long as it is an open source project.

Marmalade Rebranding

What is happening?

Ideaworks3D is rebranding its Ideaworks Labs division as Marmalade. Its market-leading product – Airplay SDK will also become Marmalade. The registered company name, Ideaworks3D Limited remains the same. The main website will be www.madewithmarmalade.com

When is it happening?

The changeover is planned for mid-June 2011

Why have Ideaworks Labs and Airplay changed their name to Marmalade?

The goal is to combine our team of software experts with the award winning SDK product under one brand. We believe this will help build our well-established reputation further, and position us strongly in a fast moving and expanding market.

Has Ideaworks Labs changed its ownership?

No, there have been no changes in the ownership or management structure of the company. We are the same company, with the same smart people, building the same innovative technology and products, in the same offices. We are growing fast though!

Where can I see the new identity?

The new brand is best seen on the website - www.madewithmarmalade.com, where you could also learn more about the newest features of the Marmalade SDK.

What about Ideaworks Games Studio?

Ideaworks Games Studio is another division of Ideaworks3D Limited and remains unchanged.

What should I do if I need to use a Marmalade logo?

Please Contact Us using the form on here

Are there any other changes happening?

We have introduced innovative new licensing with low cost options. Information about our new license packages can be found here

A new version of the SDK, Marmalade 5.0, is also being released. Click here to find out more about Marmalade 5.0 .

We’ll be launching a new developer loyalty program shortly and through which developers can benefit from community activities like code submissions, forum participation, etc.

Why have you changed your licenses?

The number and diversity of developers entering the cross platform development world is changing fast. We felt we needed to provide licensing options to meet these changing needs and better match developer business and technical requirements.

How does this change affect my current license?

All of our paid license holders will not be affected by the change while their license is valid. Once your license expires you will be given the opportunity to switch to one of the new license packages that best matches your needs.

What about iPhone only licenses?

We have discontinued our iPhone only license. Holders of these licenses have until the end of July 2011 to switch to a different license package with enhanced capabilities, including cross-platform deployment, multithreading and much more.

Can I continue to download new versions of the SDK?

Yes, simply go here