16
apportable meeting Keisuke Hata SQUARE ENIX Technical Director Mobile Business Division 1372日火曜日

apportable meeting

Embed Size (px)

DESCRIPTION

apportable technology summary and best practices, Story behind porting Sword & Sorcery to android.

Citation preview

Page 1: apportable meeting

apportable meetingKeisuke Hata

SQUARE ENIXTechnical Director Mobile Business Division

13年7月2日火曜日

Page 2: apportable meeting

apportableとは?ObjC, ObjC++などで記述されたiOSアプリケーションをクロスコンパイルし、Android用のアプリケーションバイナリを生成するエンジンである。iOSでリリースしたタイトルをAndroidに移植したいが、マルチプラットフォーム対応のフレームワークやゲームエンジンを利用していない場合(Unityやcocos2d-x、Corona、Adobe Air)、通常であれば、iOSのソースコードをベースに開発をし直すことが多い。

しかし、apportableは、iOS専用に記述されたアプリケーションのソースコードをAndroid用に変換するエンジンを持っているため、そのエンジンを用いて、ソースコードの修正は基本的に行わずにAndroidのアプリケーションを自動で生成することができる。

iOSで有名なスキタイのムスメやZenBound 2もこのエンジンを利用してリリースしている。

http://www.apportable.com/

13年7月2日火曜日

Page 3: apportable meeting

プランの違い

Free版は、Android 4.0以上のデバイスに対してアプリを生成できるが、サポートが最も少なくいわゆるお試し版である印象は強い。

企業としては、Android2.xがまだ主流であることから、Proもしくは、Enterpriseのプランの契約は必須になりそう。

13年7月2日火曜日

Page 4: apportable meeting

apportableアーキテクチャ

Clangコンパイラを用いており、ObjC( ObjC++ )のコードをクロスコンパイルして、ARMのネイティブコードをはき出し、apkとして書き出している。このネイティブコードがJava UIから呼び出しされる。

ARM native code

ObjC

cross-compile

.apk

13年7月2日火曜日

Page 5: apportable meeting

スキタイのムスメ、ZenBound 2の開発秘話

Q:スキタイのムスメ、ZenBound 2をiOSからAndroidへ移植する際にapportableを用いた開発を行った結果、どれくらいの時間を要したか?

apportableによる対応作業は、ゲームの複雑さに応じて、30分~2週間程度でデモレベルまで持って行ける。Google Playにロンチさせるなどの製品としてのチューニングや別途対応作業は、さらに時間を要するが内容次第(4~6週間)。

ゲームプラットフォームごとの新しいAPIを利用している場合などは、apportable側でのコンバート対応を行うために追加工数がかかる。物によるが数ヶ月見積もってもらいたい。スキタイのムスメは、通常のゲームとは異なり、ゲームプレイ中に縦持ちと横持ちが切り替わる瞬間がある。そのため、その対応を行うためにAndroid側では、ホームボタン、バックボタンがデバイスの姿勢によって回転する仕組みを利用して、ゲームコード側の画面回転の対応を行った。

●依頼方法:NDA締結後、プロジェクトのソースコードをapportable側に提供し、調査してもらうことを推奨している。特にパフォーマンスや新API対応作業が含まれるかどうかの見積もりなどを行う。その場合、サポート契約を締結する必要があり。

13年7月2日火曜日

Page 6: apportable meeting

独自プラットフォーム対応iOSやAndroid、Kindleといった、プラットフォームごとに用意されるGame APIやStoreKitなどの課金処理の部分に関しては、すでにapportable側で対応している。

iOS版さえ作成すれば、各プラットフォームごとに必要なコードをコンパイル時に生成してくれる。開発者はプラットフォームごとの対応に追われなくて済むようになっている。ただし、Pro版以上。

13年7月2日火曜日

Page 7: apportable meeting

SpriteKitへの対応

SpriteKitのサンプルをapportableが作ってリリースすることは可能であるが、できれば実際の利用例があると対応しやすい。実例がある場合は、apportableにContactしてみると良い。

apportableのスタンスとして先に対応してリリースというよりは、リクエストの多い内容から作り始めるスタンスであるという。

Q:SpriteKitを用いたコンテンツを今後サポートできるように検討されているかどうか?

13年7月2日火曜日

Page 8: apportable meeting

解像度の対応

UIScreenクラスを拡張して、解像度にあわせたスケーリングオプションが用意されている。

Androidビルドする際にそのコードが動作するようにプリプロセッサマクロで分岐しておけば、iOSではそのコードが実行されずに済む。

詳しくは、以下のURLを参照。

Q:Androidでは多くの解像度が存在しているが、apportableではどのような対応になっているか?

http://docs.apportable.com/sample-apps.html#cocos2dsimplegame

13年7月2日火曜日

Page 9: apportable meeting

デバッグ手法

apportableが用意するgdbを用いてデバッグするのが基本。ログやスタックトレースを活用してデバッグする。あるいは、Objective-Cのメッセージを追ったり、オブジェクトの状態を見る。

AndroidのデバイスログもObjC->Javaコールのデバッグにも役立つ。

Androidデバイスにありがちなグラフィックスチップ依存のバグは、トランスレーションレイヤーで吸収させて修正するようにしている。また、デバッグに関して、apportableには優秀なエンジニアがいるため、デバッグのサポートも行っている。

Q:apportableにおけるAndroidアプリケーションのデバッグはどのようにすればよいか?

13年7月2日火曜日

Page 10: apportable meeting

既存ミドルウェアを利用するには?

ミドルウェアやゲームエンジンを利用する場合、できればソースコードまで提供されることが望ましい。

それが難しい時(例えばライブラリのみが提供される)は、apportableが用意するブリッジの仕組みを利用したりすることで、apportableが対応していないものも利用することは可能。

Q:既存のミドルウェアをapportableで利用する際のTipsは?

13年7月2日火曜日

Page 11: apportable meeting

apportableのバイナリサイズ

●ライブラリサイズ利用するライブラリにもよるが、数MB程度( OpenGL, OpenAL, UIKitレベルなら )。これまでの案件は、50MB以上のタイトルが多かったためこのサイズが問題になることは少なかった模様。しかし、デバッグビルドは非常に大きくなりがちなので気をつけること。

●バイナリサイズが50MBを超える場合androidのAPK Expansion Fileには対応しているため、詳しくは、Contact Usで問い合わせをしてくださいとのこと。

Q:apportableを適用した場合のバイナリサイズはどの程度になるか?日本のソーシャルゲームを代表とするアプリケーションは、50MB以下でランチャーとして機能させ、アセットデータは、サーバーからダウンロードしてくる仕組みを採用していることが多い。

13年7月2日火曜日

Page 12: apportable meeting

Androidにおけるオーディオレイテンシ

オーディオレイテンシは、ずっと頭を悩ませている内容である。apportableは、OpenALプロジェクトに参加し、Androidデバイスにおけるオーディオのパフォーマンスと改善に貢献している。

ソースコードは、OpenAL-softとして、LGPLv3として公開している。

Q:Androidでは、オーディオレイテンシがとかく問題になりやすいが、apportableではこの件に関して取り組んでいることあるか?

http://www.apportable.com/open_source

13年7月2日火曜日

Page 13: apportable meeting

apportableベストプラクティス

●利用する言語C, C++, Objective-C,C++などは問題なし。ただし、Rubyなどのスクリプト言語への対応はやや複雑になりがちで推奨していない。

●利用するライブラリやフレームワークOpenGLやUIKitといったゲーム制作に最低限必要なものとベーシックなフレームワークは対応済み。オープンソース系のライブラリにも各種対応。Box2D, FMOD, CocosBuilder( ccbi ), cocos2d-x, cocos2d-iphone ...。UIKitのベーシックなものには対応:UIScrollViewなど...。cocos2d-xやcocos2d-iphoneで開発することはとても良い。

●サポート外の機能カメラやマイクロフォンの機能

Q:apportableを利用する上でのベストプラクティスを教えてほしい。

13年7月2日火曜日

Page 14: apportable meeting

apportableのアドバンテージ

cocos2d-xは、マルチプラットフォームに対応したフレームワークであるが、課金処理やGame API周りは、各プラットフォームごとにコードを用意する必要がある。

apportableは、これらStoreKitやGameKitの対応工数を吸収してくれる。プログラマーは、iOS版のコードのみを記述するだけであとは、apportableがプラットフォームごとのコードを生成してくれるため、ゲームのコーディングに集中することができる。

Q:cocos2d-xは、マルチプラットフォームに対応したゲームフレームワークであるが、apportableを利用するメリットはどこにあるのか?

Kindle AndroidiOS

13年7月2日火曜日

Page 15: apportable meeting

cocos2d-x + apportable

Hero Academy

13年7月2日火曜日

Page 16: apportable meeting

Thank you for reading :)Enjoy apportable !!

13年7月2日火曜日