iOS developers, Marmalade Juice is here!

The clever bunnies over at Marmalade Technologies have today released an awesome new piece of open source technology called Marmalade Juice that I have no doubt many iOS developers will be thrilled to hear about. Catchy name aside, what is this Marmalade Juice technology all about and what can it do for iOS developers? Lets take a quick look at what is says on the tin.

“Marmalade Juice is a new and innovative technology which gives developers the ability to recompile their iOS projects natively for Android. And, because there is no need for laborious re-writing, you can focus on making your game the best it can be.”

So what does that mean? In essence it means that you can take your existing Objective-C XCode code base, compile and run it on the Android platform. As Marmalade Juice is an evolving technology there are a few areas that Juice does not currently fully support, but using the already existing Marmalade extensions you can still utilise them with a little code rework. Not much to ask considering that its infinitely easier than learning the Java / Android development ecosystem, oh and don’t get me started on Eclipse!

So in essence Marmalade Juice equates to easy porting from iOS to Android (that’s over 1 billion extra devices to target your games at!) for iOS developers around the world and an extra revenue stream, which is always nice for budding indie developers and the big boys alike.

All you need to get going is Marmalade Juice, XCode and the Android SDK.

Oh, even more great news. Juice will now be included in all Marmalade licenses and for a limited amount of time the yearly community license is free, so you get to play with Juice for free!

Interested? then mosey on over to the Marmalade Juice web site and grab a license whilst its free.

IwGameAds has been updated

IwGameAds the open source cross platform ad mediation system for Marmalade SDK users has been updated to use the very latest Marmalade SDK as well as additional features such as user agent detection for iOS and Android, which should improve ad delivery. It is now also available under the MIT license, To get the latest you should now download it from Github

Marmalade 7.1.2 is now out

Marmalade 7.1.2 is finally here. 7.1.2 is a very important release from my perspective as it covers a few important areas, including:

  • iOS loader is now built in Xcode 5 and iOS SDK 7 to comply with the new Apple iOS submission rules – Apple are making it a requirement from February 1st 2014 that all new app submissions and updates be PIE compliant, which this update fixed
  • GCC has been upgraded to 4.7.4!
  • Plenty more fixes and updates, see the full list here

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 (http://www.gojieditor.com)
– 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 http://www.appeasymobile.com/appeasy-api/

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

The Activision Decathlon now out on iOS and Android

And the second game that I wanted to cover today from Marmalade Play is a new sports title called “The Activision Decathlon”. You can download for Android on Google Play and iOS on iTunes.

I don’t know how many of you are old enough to remember the good old “Daley Thompson’s Decathlon” back on the Spectrum / Commodore (if you are then you probably have trouble reading the text on this page :)), but I was addicted to that 8 bit classic, so I have a bit of a soft spot for decathlon style games. Here’s more info on Marmalade Play’s latest and greatest:

And here’s a little video to whet your appetite:

Relive the glory days again with this revamped version of the ultimate sports game. The Activision Decathlon features all of its legendary events including the long jump, hurdles, javelin, and the all time classic…100 meters! Put your athlete through their paces in single player or go head to head against friends to unlock skills and abilities and reach the top of the podium.

CAN YOU BE AN ATHLETICS CHAMELEON?
Prove your worth in 10 events! The 100m, 400m, 1500m, 110m Hurdles, Long Jump, High Jump, Pole Vault, Javelin, Shot Put and Discus.

TRAIN TO REACH THE STARS
As any athlete will tell you, it’s all in the training. Earn stars, coins and skill points from great performance in practise events to level up and progress through the game.

SHOP ‘TIL YOU DROP
Who said money can’t buy a bit of success? Use your winnings to customise your athlete with more than 30 performance enhancing pieces of gear, training packs and energy supplements.

Features:

  • UPDATED CONTROLS, GRAPHICS AND GAMEPLAY
  • 8 DECATHLON LEAGUES TO UNLOCK
  • GO HEAD TO HEAD WITH YOUR FRIENDS IN REAL-TIME MULTIPLAYER COMPETITION
  • 10 ICONIC TRACK AND FIELD EVENTS TO COMPETE IN


Blur Overdrive now out on iOS and Android

Just a quick blog to report two great new made with Marmalade games for both iOS and Android are now available from Marmalade Play. The first of these games is a new top end racer called Blur Overdrive. You can download for Android on Google Play and iOS on iTunes.

Blur Overdrive

Experience Blur Overdrive, the stunningly chaotic powered- up racing game
The first game is Blur Overdrive, which is a top notch driving game. Having worked on creating around 6 racing titles for Electronic Arts in a past life I know how difficult it is to get it right and how easy it can go wrong. I’m happy to say that Blur Overdrive does a fantastic job at getting it right. Here’s more info:

Here’s a little video to whet your appetite:

Immerse yourself in the intense racing experience of Blur Overdrive. With eight insane power-ups this isn’t just racing, this is POWERED UP racing! The race track is your battle ground and you must shunt the other drivers to snatch the chequered flag and progress through the game. Buckle up and ride the beautiful chaos that is Blur Overdrive.

PLAY DIRTY
Collect and deploy eight pyrotechnic power-ups to aid your performance and damage rival vehicles. Barge, shock and shield your way to the finish line or use your nitro power-up to leave your opponents behind.

RACE HOW YOU WANT, WHERE YOU WANT
Blur has 9 different types of races to be won from a Showcase Battle to an Eliminator. Battle through the various races to reach new stages of competition and unleash your torque.

BUILD YOUR RACING EMPIRE
With your race winnings, browse the Showroom to purchase the car to conquer the next racetrack.

Features:

  • 4 RACING CLASSES AND 10+ SPECIAL EVENTS
  • 8 AWESOME POWER UPS – MINES, SHIELD, SHUNT, NITRO, SHOCK, BARGE, REPAIR & BOLTS
  • REALISTIC AND REWARDING HANDLING MODE ACROSS THE 4 CLASSES
  • 25 CARS TO OWN, DRIVE AND RACE
  • 250 CUSTOMISATIONS TO BEEF UP YOUR CAR


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

Enjoy!

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.

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 http://www.appeasymobile.com 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 market.name() 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
* variable.save() 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.

Book Review – Marmalade SDK Mobile Game Development Essentials

I recently obtained a copy of a new book called Marmalade SDK Mobile Game Development Essentials by Sean Scaplehorn, which is currently the first and only book available that covers the Marmalade SDK. The Marmalade SDK is a cross platform game and app development system for a number of mobile devices including Android and iOS, which I have been using now for a few years. With this book being the first and only book and considering that I had spent so much time writing tutorials to help bring would-be Marmalade developers get up to speed that I felt inspired to review this book. In addition, I was approached by Packt publishing some time ago to write this book, but unfortunately due to my busy schedule I had to forego the opportunity. So once I heard that the book was out you can bet I’m gonna read and scrutinise it 🙂

Ok, the first thing I do with all new books is take a scan through the chapter list to see how much content is there, I can usually judge a books value from the contents pages. I’m happy to say that this book passed my initial contents inspection. There’s quite a lot of content squashed into a relatively short book.

The book begins with a short introduction to the Marmalade SDK, including step by step instructions on how to install and setup Marmalade on your computer. It then moves on to building a fairly simple Hello World application complete with a step by step explanation of each of the parts of the program. The book then progresses on to explain many of the Marmalade API’s, below I will cover each section of the book:

* Resource management – This section covers Marmalade resource management. You should pay particular attention to this section as resource management is one of the most important things to get right when developing cross platforms apps.
* 2D Graphics – This section compares IwGL, IwGx and Iw2D then goes into in-depth details of IwGx (my favourite Marmalade graphics API), including materials, streams, textures and polygons
* User Input – This section covers detecting key presses, touch screen (including multi-touch) and accelerometer (would have liked to have seen compass covered also). Gestures sample project is good as it shows how to detect swipe and pinch gestures, something many developers have trouble with
* 3D Graphics – This section has a short introduction to 3D graphics, followed by an explanation on how to render 3D shapes with IwGx (polygon by polygon),, description of view / model matrices. The chapter then moves on to show you how to get data from popular packages such as Blender / 3DS Max into a format that Marmalade can use using the Marmalade supplied exporters. Finally the chapter covers rendering exported 3D data using Marmalades IwGraphics API.
* 3D Animation – This section covers basic PAS animation using matrices, morph target and bone animations, although morph target animations are not covered as in depth as I would like to have seen. I did however have a fair bit to learn from this chapter.
* Fonts, User Interfaces and Localisations – This chapter starts out by covering IwGxFont and bitmapped fonts, including building bitmapped fonts from Marmalade Studio Font Builder. I will admit that I personally prefer and would recommend looking at true type fonts instead (see IwGxFontCreateTTFontFromBuffer for reference) as you do not have to deal with intermediate tools such as the font builder. The author briefly touches on IwUI and IwNUI for user interfaces but opts to roll his own solution which I completely agree with because IwUI is difficult to get to grips with and IwNUI is only supported by Android and iOS, although I would have liked to have seen IwUI / IwNUI covered in a separate section for completeness.
* Sound and Video – This chapter covers playback of compressed audio (for in-game music), playback of sound effects and video playback.
* Support a wide range of devices – This chapter has to be by far my favourite. It not only covers handling different device capabilities and screen resolutions (things that will plague you unless you get the right at the start), it also covers other topics such as dealing with application configuration files, multiple resource sets and compression. This is a must read section, even for advanced Marmalade developers
* Social media and other online services – This chapter covers logging in and out of Facebook as well as posting information to the users wall using the Facebook Graph API. It briefly explains other services that are available but doesn’t venture into any of them with much depth. Hopefully a 2nd edition will delve deeper into these services.
* Extensions Development Kit – If you are coming to Marmalade from iOS or Android and have libraries of code that you would like to use in your Marmalade project, or maybe you want to simply integrate a 3rd party iOS or Android specific API into your app then the EDK is essential for you. The EDK enables you to call those libraries from Marmalade without too much hassle. The Marmalade EDK is impressive and this section is definitely worth absorbing. The author covers the creation, building and usage of an EDK extension for Windows, iOS and Android, providing an excellent step by step introduction to the EDK.
* The skiing app – I must say that I am impressed with Seans example skiing game, he not only provides a 2D version, but also a full 3D version. The code contained in these apps is invaluable for beginners.

In summary, I think that Sean Scaplehorn has done a great job and I would recommend this book to any would-be Marmalade developer, even seasoned Marmalade developers may have a few things to learn from it. I thought I knew just about everything about the Marmalade SDK, but this book proved that there are still a few corners that I need to investigate. I can say that I wish that this book was available when I first started my Marmalade journey. Marmalade is not the easiest of SDK’s to learn to use, but it is the best in my opinion, so its worth the time and effort to learn it properly and go on to create wonderful things. This book will help you along this journey much quicker than stumbling around in the dark the way I did when I first started using Marmalade. The accompanying sample code is also well written and well commented providing a good starting point for your own projects.

Overall I give the book a 9 out of 10. I would liked to have seen more coverage of the likes of True Type Fonts, In-app Purchasing, IwHttp and IwNUI. If a 2nd edition is forthcoming and these sections are covered then I could quite easily give an extra point.