If you follow us on Twitter, you probably know that Marmalade is the apple of our eye. The reason, as you may imagine, is very simple: is the SDK we used to develop Trouble With Robots for iOS and Android. Are you a rookie gamedev looking for the best option to develop his / her mobile game? Well, we have asked our Lead Developer, Ed Mandy, to give us some hints on why you should choose Marmalade.
- What made you choose Marmalade as SDK to Trouble With Robots?
Well, to be honest, the number one reason that we first chose Marmalade was because one of our team members was very familiar with it. He wasn’t primarily working on the TWR code, but he suggested that I look into it as a tool. It turned out that Marmalade was just about perfect for TWR, as the project started out as a Windows game that was programmed under Microsoft Visual Studio in C++. Not only does Marmalade allow us to use C/C++ code, but it also allows us to use Windows and Visual Studio.
- Which benefits do you think it provides that other platforms don’t?
The fact that it’s a game-centric middleware that allows us to use C++ code under multiple compilers and operating systems to target Android and iOS is all right there in one product. There are others, like Xamarin, that give some of the same features, but, for us, the choice was clear. We had an existing code-base that was already fairly well supported by Marmalade, and we had a team member that was already familiar with the system.
- How was the process of porting TWR? Can you describe the steps you follow, maybe give us an overview of your schedule?
The first main step involved understanding the existing code-base. The structure of the code was very nicely compartmentalized. The class structure was also very well thought out and implemented. The problem was that I wasn’t the one that did the initial work on the code, so I didn’t initially understand the layout.
Once I had a good grasp on the structure and layout, I began the process of getting the code to compile under Marmalade. At first, I used the exact same version of Visual Studio as the original code used. Over time, I have since migrated through some newer versions, and I have even compiled/tested under Xcode.
The process of getting the code to compile involved ripping out (actually commenting out or #ifdef’ing out) large chuncks of platform-specific code. Once the project actually compiled, then I had to painstakingly go back through everything that was removed and rewrite it to work with Marmalade instead of DirectX.
Once the game was actually playable, then the process of changing the interface to work better for touch-screen users began.
- Which difficulties did you find, and how did you overcome them?
“Readability” and “touchability” were probably the two parts that were most difficult from a porting view. This is because there is no direct “change this platform-specific function call to this other Marmalade-specific call.” Much of this work has to do with how the interface feels or if things are easy to use.
One example of this is that in earlier builds, new users would often poke the screen several times before activating the button they wanted. On the small screens, it was sometimes hard to touch the exact spot that would activate items. I had to come up with an innovative way to detect input that wasn’t technically perfectly on a button in a way that it just “knew” what the user was trying to press.
- Which aspects in Marmalade would you wish to be improved or added in the future?
The core functionality is very nice, and the more you get used to it, the better it seems, but there are many things in Marmalade that just aren’t put together perfectly. I would say that, in particular, many of the extensions are a bit lacking. Marmalade seems to take an almost open-source approach to these with their reaction coming off (to me) as “if you don’t like it, fix it yourself.”
I would really like to see more official Marmalade representation in their support forum. If you have an issue with Marmalade, you can post to the support forum, but it’s mostly community-driven. Sometimes a Marmalade representative will add to the conversation, but often it will only be other users. This can be helpful if it’s the type of issue that other programmers can help with, but it can also be frustrating when you are the only one.
Ed is a persuasive guy, right? If you decide to give Marmalade a try, we recommend you to check the news from this past month:
- A new 2D kit (still in beta), and an expanded 3D kit to help you create more complex games. Read more about both here.
- A renewed hub, which simplifies things a lot more to developers. Here you can find more info on the news, and also try the beta, if you’re a Windows user.
And, of course, don’t forget to take a look at the Showroom. Maybe you’ll find some surprises about games made with Marmalade! Hope to see your project as a reality featured in there soon!