{"id":494,"date":"2011-07-08T16:09:25","date_gmt":"2011-07-08T15:09:25","guid":{"rendered":"http:\/\/shadowcovenant.com\/blog\/2011\/07\/08\/some-marmalade-please\/"},"modified":"2011-07-08T16:09:25","modified_gmt":"2011-07-08T15:09:25","slug":"some-marmalade-please","status":"publish","type":"post","link":"http:\/\/shadowcovenant.com\/blog\/2011\/07\/08\/some-marmalade-please\/","title":{"rendered":"Some Marmalade, please&hellip;"},"content":{"rendered":"<p><a href=\"http:\/\/shadowcovenant.com\/blog\/wp-content\/uploads\/2011\/07\/marmalade.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px\" title=\"marmalade\" border=\"0\" alt=\"marmalade\" src=\"http:\/\/shadowcovenant.com\/blog\/wp-content\/uploads\/2011\/07\/marmalade_thumb.jpg\" width=\"196\" height=\"145\" \/><\/a><\/p>\n<p align=\"justify\">I\u2019ve been experimenting some stuff on mobile development, specially for iOS and Android\u2026<\/p>\n<p align=\"justify\">Although I managed to build solid applications for both platforms, I\u2019m always annoyed that I can\u2019t use my normal development routines\u2026<\/p>\n<p align=\"justify\"><strong>iOS<\/strong><\/p>\n<p align=\"justify\">Stuck with XCode (which is dreadful) and Mac in particular (which I hate, to be honest)\u2026 To minimize by grief, I used the excelent <a href=\"http:\/\/synergy-foss.org\/\" target=\"_blank\">Synergy<\/a>, which enabled me to use my keyboard and mouse on the Mac and PC at the same time, without using ugly and non-functional KVMs, since it\u2019s a fully customizable software solution\u2026 After I got that working, I still use Visual Studio with a remapped directory to do all the editing of code on the Mac\u2026 Basically, I just use the Mac to compile and debug.<\/p>\n<p align=\"justify\">But, even with this setup, I\u2019m still stuck with Objective-C, which is horrible, and a unwieldy framework\u2026 Although I can work with that, it\u2019s far from optimal\u2026 <\/p>\n<p align=\"justify\">Well, at least it has the advantage of being able to compile C and C++ code, which enables me to port parts of Spellbook (my engine) to it, making it a bit easier doing multimedia applications, unlike\u2026<\/p>\n<p align=\"justify\"><strong><\/strong><\/p>\n<p align=\"justify\"><strong>Android<\/strong><\/p>\n<p align=\"justify\">Java\u2026 really, think that says all\u2026 Although Java isn\u2019t as bad as Objective-C, it\u2019s still a far cry from pure C++ in terms of code development (at least for me\u2026 I\u2019ve got 15 years of C\/C++ experience, and only 3 or 4 of Java, and never in the fields of multimedia).<\/p>\n<p align=\"justify\">The Android framework is slightly nicer than the iOS one, and Eclipse is much better than XCode, so it has that going for it\u2026 but still\u2026 Java\u2026<\/p>\n<p align=\"justify\">&#160;<\/p>\n<p align=\"justify\">So, until now, if I wanted to do a cross-platform game, I\u2019d have to go through an existing engine like Unity, do two wholly different implementations of the game (just reusing assets), or ignore one of the platforms (which sounds like a terrible idea)\u2026<\/p>\n<p align=\"justify\">Enter <a href=\"http:\/\/www.madewithmarmalade.com\/\" target=\"_blank\">Marmalade<\/a>\u2026 Marmalade is a framework that wraps most of the functionality of mobile frameworks and compiles ARM code directly, making the games developed with it able to be deployed in several platforms (iOS, Android, Bada, Symbian, webOS, with more coming soon)\u2026 And the best part is that you can develop and debug the games with Visual Studio (on the PC) or XCode (on Mac), using an ARM emulator\u2026 The build process is quite simple, and deploying the various versions can be done with some scripts and one button\u2026<\/p>\n<p align=\"justify\">It\u2019s really a good product\u2026 Initially, you have to edit a text file that describes some options of your project (files that are part of it, etc)\u2026 Then, (after you install Marmalade properly), you just double click the file and it generates a Visual Studio or XCode environment that you can work with like it was any normal application.<\/p>\n<p align=\"justify\">My experience was so good, I had my engine (all 200k lines of it) compiling under it in less than one day\u2026 Of course, this is just compiling, not working, since I have to implement an OpenGL ES layer to replace my normal DirectX layer\u2026 Anyway, got some of that working in one additional day (I got some amazing colored squares on screen, powered by Spellbook, with FFP \u201cshaders\u201d imported from Reality files (my own format), with some simple behaviors).<\/p>\n<p align=\"justify\">They even replace the C stdlib in the ARM projects, so that you can use the normal C functions you\u2019re used to!<\/p>\n<p align=\"justify\">&#160;<\/p>\n<p align=\"justify\">If anybody is looking into a good cross-platform development environment, I can recommend it\u2026 It has its drawbacks:<\/p>\n<ul>\n<li>\n<div align=\"justify\">Documentation is terrible, but fortunately not very necessary, since you\u2019re (hopefully) programming with the C stdlib, STL and OpenGL ES.<\/div>\n<\/li>\n<li>\n<div align=\"justify\">The code footprint seems to be a bit big, but it probably can be cut down with some options (I optimized for speed, not size)\u2026 <\/div>\n<\/li>\n<li>\n<div align=\"justify\">Price\u2026 There\u2019s a 90 day evaluation license, but after that you have to pay for it\u2026 There\u2019s Basic subscription, that costs $150 USD\/year (which is more than the budget of loads of indies I know), and only supports iOS and Android, besides having an ugly splash screen when the game starts\u2026 And then there\u2019s Standard, which supports all the platforms (except for the Beta ones) and doesn\u2019t have the splash, for an hefty price of $500 USD\/year\u2026 The price is a bit steep for indies, but if this just has to be weighted between the cost of doing different applications for different platforms or having a \u201cone-size-fits-all\u201d approach\u2026 Of course, Unity is less than that for indies, but it has its own set of restrictions for development (I don\u2019t like GUI-based game engines, maybe that\u2019s just me). The yearly fee might also be a deal breaker for lots of people, even if they have the money to spend on the license\u2026They have an \u201cApp Program\u201d that might ease the financial burden (or even remove it), but they\u2019ll take 20% of your profits (although they do the distribution in all stores, etc) and you have to be approved by them\u2026 <\/div>\n<\/li>\n<\/ul>\n<p align=\"justify\">&#160;<\/p>\n<p align=\"justify\">The financial issue is the only thing that really detracts from the whole concept, and I think that if you\u2019re serious in going indie, it might be worth the investment\u2026 Take a look at the evaluation and see if it\u2019s for you! <img decoding=\"async\" style=\"border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none\" class=\"wlEmoticon wlEmoticon-smile\" alt=\"Smile\" src=\"http:\/\/shadowcovenant.com\/blog\/wp-content\/uploads\/2011\/07\/wlEmoticon-smile.png\" \/><\/p>\n<div id=\"tweetbutton494\" class=\"tw_button\" style=\"\"><a href=\"http:\/\/twitter.com\/share?url=http%3A%2F%2Fshadowcovenant.com%2Fblog%2F2011%2F07%2F08%2Fsome-marmalade-please%2F&amp;text=Some%20Marmalade%2C%20please%26hellip%3B&amp;related=&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fshadowcovenant.com%2Fblog%2F2011%2F07%2F08%2Fsome-marmalade-please%2F\" class=\"twitter-share-button\"  style=\"width:55px;height:22px;background:transparent url('http:\/\/shadowcovenant.com\/blog\/wp-content\/plugins\/wp-tweet-button\/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;\">Tweet<\/a><\/div>","protected":false},"excerpt":{"rendered":"<p>I\u2019ve been experimenting some stuff on mobile development, specially for iOS and Android\u2026 Although I managed to build solid applications for both platforms, I\u2019m always annoyed that I can\u2019t use my normal development routines\u2026 iOS Stuck with XCode (which is dreadful) and Mac in particular (which I hate, to be honest)\u2026 To minimize by grief, [&hellip;]<\/p>\n<div id=\"tweetbutton494\" class=\"tw_button\" style=\"\"><a href=\"http:\/\/twitter.com\/share?url=http%3A%2F%2Fshadowcovenant.com%2Fblog%2F2011%2F07%2F08%2Fsome-marmalade-please%2F&amp;text=Some%20Marmalade%2C%20please%26hellip%3B&amp;related=&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fshadowcovenant.com%2Fblog%2F2011%2F07%2F08%2Fsome-marmalade-please%2F\" class=\"twitter-share-button\"  style=\"width:55px;height:22px;background:transparent url('http:\/\/shadowcovenant.com\/blog\/wp-content\/plugins\/wp-tweet-button\/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;\">Tweet<\/a><\/div>","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-494","post","type-post","status-publish","format-standard","hentry","category-games"],"_links":{"self":[{"href":"http:\/\/shadowcovenant.com\/blog\/wp-json\/wp\/v2\/posts\/494","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/shadowcovenant.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/shadowcovenant.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/shadowcovenant.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/shadowcovenant.com\/blog\/wp-json\/wp\/v2\/comments?post=494"}],"version-history":[{"count":0,"href":"http:\/\/shadowcovenant.com\/blog\/wp-json\/wp\/v2\/posts\/494\/revisions"}],"wp:attachment":[{"href":"http:\/\/shadowcovenant.com\/blog\/wp-json\/wp\/v2\/media?parent=494"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/shadowcovenant.com\/blog\/wp-json\/wp\/v2\/categories?post=494"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/shadowcovenant.com\/blog\/wp-json\/wp\/v2\/tags?post=494"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}