私はインディーゲーム会社でマーマレード/エアプレイを2年近く使用しています。私はたった1人のプログラマーであり、MS Dev Studio(これは私のお気に入りの開発環境です)を使用してWindowsでほぼすべての作業を行うことができ、多くの処理を行う必要がないため、これは勝利です。プラットフォーム固有の詳細、特にさまざまな開発ツールを使用すると、ゲームコンテンツに費やしたい時間が多く消費される可能性があります。
マーマレードでは速度は問題になりません。C++コードはネイティブに実行されます。また、カメラやその他の機能へのアクセスはそれほど問題にはならないはずです。すでに提供されているか、拡張機能SDKを使用して追加できます。これは非常に簡単に使用できます。
マーマレードは成熟した製品であり、無料で製品を使用しているインディー開発者にとっても、同社は問題を迅速に解決するのに非常に役立ちます。クロスプラットフォーム性に加えて、メモリリークトラッカー、ロギングシステム、グラフィック分析ツールなど、いくつかの優れたツールが組み込まれています。
私がマーマレードで経験したいくつかの欠点があります。
理論的には、拡張システムを介してAPIまたはサードパーティのSDKにアクセスできますが、実際には、必要なものがまだ存在しない場合があります。一例として、現在、多くの開発者が分析パッケージFlurryを統合するのに苦労しており、一部の開発者にとっては課題となっています。状況は、他の多くのサードパーティSDKと同様です。Objective-Cの開発を行っている場合、統合するのはほんの数行かもしれませんが、Marmaladeを使用するとさらに困難になる可能性があります。
操作するクロスプラットフォームレイヤーのために、自然ではないものもあります。私にとってのいくつかの例は次のとおりです。
スプラッシュ画面(アプリケーションの起動画面)をiOSとAndroidの両方のすべての画面サイズで正しく表示するのに問題がありました。また、マーマレードアプリ自体のデバイスの読み込みと、マーマレードのアプリコードの読み込みのステップの間を移行するときに、ちらつき、短いブラックアウト期間、または画像のサイズ変更を行わずに、画像を表示することは困難でした。
マーマレードは非常に単純なメモリモデルを課しており、前もって固定ヒープを取得し、すべてのメモリ割り当てはマーマレードを介して行われます。システムの観点からは、アプリはメモリの大きなブロック(またはいくつかの大きなブロック)を保持しています。これにはいくつかの利点がありますが、たとえば、メモリ警告を受信し、不要なリソースを投棄することが予想されるなど、このモデルをiOSモデルと二乗するのに問題がありました。「1つのサイズですべてに対応」すると、実際にはいくつかの重要な機能が失われる場合のようです。
拡張機能マネージャーやその他の方法を使用してネイティブUI要素を表示できますが、かなりの量のネイティブルックアンドフィールUIを統合するのは難しい場合があります。したがって、アプリがゲームのようで、ユーザーが非標準のボタンなどを処理できる場合は問題ありませんが、重要なネイティブUIが必要になると予想される場合は、より困難です。[編集:Marmaladeの最近のバージョンでは、標準のUI要素を一般的な方法で指定し、デバイスに適切なウィジェットを使用して実装できるネイティブUIフレームワークが追加されています。私はこれを使用していませんが、かなり包括的に見えます。]
問題が発生した場合、それが一般的なOSの問題なのか、マーマレードの問題なのかがはっきりしないことがよくあり、助けを探すのは寂しいかもしれません。たとえば、最近、iOSとAndroidの両方で、ゲームにアプリ内購入を追加しました。IAPはやりがいがあり、SDKレイヤーを追加しなくても、対処すべき特殊なケースがたくさんあります。私の場合、私のアプリが小さな問題でAppleによって拒否されたという状況があり、それが拒否された状態である間、私のアプリ内購入も「拒否された」状態でした(何も壊れていなかったとしても) IAP自体。これはAppleのプロセスの癖にすぎません)。アプリ内購入機能を回帰テストしようとしたとき(このアプリ内購入に関連しない問題の修正を送信している間)、ゲームは実際にクラッシュしていました。適切なエラー結果を取得する代わりに。クラッシュが私のゲームコードにないことを確認できたので、アプリ内購入コールバックを処理するためのOS(ありそうもない)またはMarmalade中間層のいずれかでした(これが[update 11 / 28/2012:Marmaladeは、最近のSDKアップデートでこの問題を修正したと報告されています])。
そのような状況では、Stack Overflowを使って助けを求めることができますが、実際には誰も助けてくれないので、マーマレードチームに頼って答えを返してもらいます。私が言っているように、彼らはこれをかなりうまくやっていますが、通常のiOSプログラマーの世界的なコミュニティからのStackOverflowでのほぼ瞬時の応答と競合する方法はありません。ですから、これがマーマレードのようなシステムを使用する上での私の最大の関心事だと思います。さまざまなプラットフォームSDKの詳細を事前に把握する必要がないため、時間を節約できますが、問題が発生した場合は、マーマレードチーム(またはフレンドリーなマーマレードコミュニティメンバー)に「翻弄されて」戻ってきます。答えがあります。(ここで私が m問題解決の標準的な優先順位を取得する無料のインディー開発者として執筆。迅速な解決を保証するためにお金を払うことができます。)私個人としては、プロデューサーに戻って「これについてマーマレードの人たちからの回答を待っています」と言い続けるのは大変でした。
(問題3のもう1つの例は、最近まで特定のAndroidデバイスで効果音が遅れるという問題があったことです。これはマーマレードの問題であり、最終的には解決しましたが、時間がかかり、基本的に何もできません。その間。)
(他のレスポンダーが指摘しているように)Marmaladeがなくても、iOSまたはAndroidのいずれかでコードベースの大部分をC++で使用できることに注意してください。
上記の潜在的な問題の長いリストにもかかわらず、私はマーマレードのファンであり、会社が無料で提供してくれたすべてに感謝しています。このツールは、(私にとっては)badaやPlayBookなど、他の方法では決して気にしない他のプラットフォームに関しては本当に輝いています。PCとDeveloperStudioの快適さから(または、生活を少し難しくしたい場合はxcodeを搭載したMacから)、さまざまなデバイスに実際にデプロイできます。彼らが持っているシミュレーターツールは素晴らしいです、そして私がデバイス自体でデバッグしなければならなかった例はほんのわずかしかありませんでした。一般に、シミュレーターで動作する場合は、正常に動作します。IdeaWorksは大きな課題に取り組み、これらすべてのプラットフォーム(つまり、モバイルデバイスでこれまでに提供されたすべての機能)をうまく活用しています。現在ネイティブコードを許可していないため、Windows Phone 7を除いて、存在するすべての重要なデバイス)。いくつかの注意点があります。