38

私たちの会社は、ネイティブのAndroid / iPhone開発と、いくつかのクロスプラットフォームソリューション、具体的にはMarmalade SDK(以前のAirplay SDK)のどちらかを選択しようとしています。

私たちはコンピュータビジョン会社です。つまり、カメラデバイスへの低レベルのアクセスが必要です。また、私たちのアプリケーションは計算コストが高いため、利用可能な処理能力を少しでも絞り出す傾向があります。

私たちのチームは、Objective-CとJava(またはC)の両方で、プラットフォーム固有のソリューションを提供するのに十分な経験を持っています。ただし、私たちの主な焦点は常にC ++でした。そのため、チームの断片化を防ぎ、クロスプラットフォームソリューションを使用したいと考えています。

私たちの最大の懸念は、マーマレードを選択すると、処理速度が犠牲になるか(主な懸念事項)、カメラのフレームバッファーへの低レベルのアクセスが複雑になるため、開発時間が大幅に長くなることです。

ですから、私の質問は、明らかなことに加えて、プロセッサを集中的に使用するビデオ処理アプリケーションに対するMarmalade SDKの利点、特に制限は何であるかということです。

4

6 に答える 6

99

私はインディーゲーム会社でマーマレード/エアプレイを2年近く使用しています。私はたった1人のプログラマーであり、MS Dev Studio(これは私のお気に入りの開発環境です)を使用してWindowsでほぼすべての作業を行うことができ、多くの処理を行う必要がないため、これは勝利です。プラットフォーム固有の詳細、特にさまざまな開発ツールを使用すると、ゲームコンテンツに費やしたい時間が多く消費される可能性があります。

マーマレードでは速度は問題になりません。C++コードはネイティブに実行されます。また、カメラやその他の機能へのアクセスはそれほど問題にはならないはずです。すでに提供されているか、拡張機能SDKを使用して追加できます。これは非常に簡単に使用できます。

マーマレードは成熟した製品であり、無料で製品を使用しているインディー開発者にとっても、同社は問題を迅速に解決するのに非常に役立ちます。クロスプラットフォーム性に加えて、メモリリークトラッカー、ロギングシステム、グラフィック分析ツールなど、いくつかの優れたツールが組み込まれています。

私がマーマレードで経験したいくつかの欠点があります。

  1. 理論的には、拡張システムを介してAPIまたはサードパーティのSDKにアクセスできますが、実際には、必要なものがまだ存在しない場合があります。一例として、現在、多くの開発者が分析パッケージFlurryを統合するのに苦労しており、一部の開発者にとっては課題となっています。状況は、他の多くのサードパーティSDKと同様です。Objective-Cの開発を行っている場合、統合するのはほんの数行かもしれませんが、Marmaladeを使用するとさらに困難になる可能性があります。

  2. 操作するクロスプラットフォームレイヤーのために、自然ではないものもあります。私にとってのいくつかの例は次のとおりです。

    • スプラッシュ画面(アプリケーションの起動画面)をiOSとAndroidの両方のすべての画面サイズで正しく表示するのに問題がありました。また、マーマレードアプリ自体のデバイスの読み込みと、マーマレードのアプリコードの読み込みのステップの間を移行するときに、ちらつき、短いブラックアウト期間、または画像のサイズ変更を行わずに、画像を表示することは困難でした。

    • マーマレードは非常に単純なメモリモデルを課しており、前もって固定ヒープを取得し、すべてのメモリ割り当てはマーマレードを介して行われます。システムの観点からは、アプリはメモリの大きなブロック(またはいくつかの大きなブロック)を保持しています。これにはいくつかの利点がありますが、たとえば、メモリ警告を受信し、不要なリソースを投棄することが予想されるなど、このモデルをiOSモデルと二乗するのに問題がありました。「1つのサイズですべてに対応」すると、実際にはいくつかの重要な機能が失われる場合のようです。

    • 拡張機能マネージャーやその他の方法を使用してネイティブUI要素を表示できますが、かなりの量のネイティブルックアンドフィールUIを統合するのは難しい場合があります。したがって、アプリがゲームのようで、ユーザーが非標準のボタンなどを処理できる場合は問題ありませんが、重要なネイティブUIが必要になると予想される場合は、より困難です。[編集:Marmaladeの最近のバージョンでは、標準のUI要素を一般的な方法で指定し、デバイスに適切なウィジェットを使用して実装できるネイティブUIフレームワークが追加されています。私はこれを使用していませんが、かなり包括的に見えます。]

  3. 問題が発生した場合、それが一般的な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を除いて、存在するすべての重要なデバイス)。いくつかの注意点があります。

于 2011-09-28T07:22:09.923 に答える
9

私はマーマレードのCTOであることに偏見があります...しかし、あなたの重要な要件が(1)カメラへのアクセスと(2)「利用可能な処理能力のすべての小さな部分を絞り出す」能力である場合、マーマレードは素晴らしい選択です。

Marmaladeは、C / C ++をネイティブARM(またはx86)命令にコンパイルします...トランスコーディングも仮想マシンもありません。既存のC/C ++コードを簡単に導入でき、ほぼすべてのC / C ++標準ライブラリがサポートされています。また、プロジェクト内でASMコードを使用できます。また、展開先のプラットフォームに関係なく、WindowsまたはMacのいずれかですべての開発を行うことができます(はい、純粋にWindwsでiOSにコンパイル/テスト/展開することもできます)。

于 2011-09-27T09:08:38.950 に答える
2

ANDROID Developmentからわかる限り、Android自体のCamera APIは少しバグがあるようです(たとえば、2.1より前では、画像をスクランブリングせずにカメラをポートレートモードで表示するソリューションはありません)。その上にある別の抽象化レイヤーは、(アクセシビリティ、機能などの点で)より良い場合もあれば、さらに悪い場合もあります。それがshureのために何をするか:それはあなた自身のアプリのために必要とされるかもしれないリソースを盗みます。

于 2011-09-26T13:12:18.397 に答える
2

マーマレードは優れたネイティブ拡張フレームワークを提供します

http://www.madewithmarmalade.com/marmalade/features/extensions-development-kit

これは最終的に、特定の機能のネイティブ実装に直接ジャンプできることを意味します。メインアプリのクロスプラットフォーム開発の主なメリットは引き続き維持されます。

また、Androidでは、マーマレードがAndroid NDKを使用するため、データを処理するためのc++コードは対応するAndroidJavaコードよりも高速に実行されます。

マーマレードと拡張機能を使用してゲームを作成しているので、ネイティブコードの速度により、少なくとも「ネイティブ」アプリと同様に配信できることに非常に自信があります。

于 2011-09-26T19:28:57.640 に答える
1

私はMoSyncAndroid/ iOSを使用しますが、私はMoSyncで働いているので、そう言います。

しかし、公平を期すために、私はMoSyncCameraAPIを好みます。

本当にすべての処理能力を絞り出したい場合は、ASMを使用する必要があります。

/トニー

于 2011-09-26T12:48:48.777 に答える
0

マーマレードは悪くありません。2013年に使用しました。いくつかのバグ、いくつかの煩わしさ(メモリプールの修正)がありますが、全体的には悪い経験ではありません。

唯一の本当の失望は、Linuxのサポートの欠如です。マーマレードの連中がBlackberryのようなあいまいなプラットフォームをどのようにサポートできるかはわかりませんが、Linuxはサポートできません。意味がない。たぶん、これはSteam OS(Linuxベースのゲーム中心のプラットフォーム)が成熟するにつれて変わるでしょうが、確かにSteam OSは、今のところ、他のOSがもたらすもの以外に多くをもたらすことはありません。

于 2015-07-18T11:31:47.900 に答える