Google が提供している Java 版の Tango Examples は Rajawali をベースにしているため、自分が仕事で開発する Tango アプリも Rajawali ベースとしていましたが、最近は libGDX への移行を進めています。一応、要点については移行が済んだかな、と。
libGDX
libgdx/libgdx | GitHub
しばらく前には、Rajawali の品質が酷すぎるという事で、3D フレームワーク (エンジン) を自作しようと試みてもいましたが、あらためて 3D フレームワーク を調査していたら libGDX を見付け、そのクラス設計を眺めていたら非常に綺麗であったので、強く惹かれたという感じです。位置付け的には XNA Framework + α という印象ですね。
後は、調べてみると libGDX は Ingress で採用されているようでした。
IngressでもlibGDXが利用されているのをご存知でしたか? | Qiita
Ingress の後に登場した Pokemon GO は、Unity で実装されているとの情報を海外掲示板サイトなどで見かけましたが、libGDX でIngress を開発したという事例だけでも品質として心強いなぁと。
そこで、libGDX による Tango アプリ開発をネットで調べると・・・情報がほぼ無い。とは言え、Java による Android 開発の視点では、Tango もただの Java ライブラリの 1 つでしかなく、OpenGL をベースに 1 つづつ考えればやれるだろうと考え、libGDX の基礎から始めていました。
でまぁ、やり始めると早いですね。libGDX 自体の情報は豊富ですから (ただし、英語)。
Android Studio 用プロジェクトは libGDX に付随のツールで行えるので、これをベースに Tango を加える事を考えるだけです。
libGDX 付随のツールが生成する Android Studio プロジェクトに含まれる build.gradle は、libGDX 式のフォルダ階層への対応や、不要な定義が含まれているため、一見では、複雑な事をしているかの如く見えます。
しかし、要点は、libGDX に含まれる JNI ライブラリへの依存関係を適切に記述し、apk ファイルに含まれるようにする定義のみです。build.gradle の内容を正確に理解すれば、わざわざツールでプロジェクトを生成せずとも、Android Studio で新規生成したプロジェクトに対して libGDX のための定義を加えるだけで済むことが分かります。
この辺りのサンプルは、時間があれば GitHub などで公開する・・・かもしれません。
後は、僕が対象としているアプリは Android 前提であるため・・・と言うか、現状では Tango の利用は Android が前提となるため、クロスプラットフォーム開発の概念は捨て、ネットワーク処理を始めとした非グラフィックス処理は AndroidApplication (libGDX の Activity) のサブクラスで行い、グラフィックス処理は ApplicationListener (libGDX のグラフィックス処理) で実装するように切り分けています。また、AndroidApplication サブクラスでは、ApplicationListener のロジックに関係するロジックのみを実装し、一般的な Android の画面を用いる場合には、別途、Activity を定義して startActivity などをするようにしています。
ただまぁ、ゲーム的なアプリを始めとした、GUI を自前でゴリゴリ書くような Tango アプリを開発するのであれば、Unity 版で開発するのが最善であろうかと思います。
Java では、GC 回避の手段がプーリングや作業用インスタンス変数などしかなく、それらはコードの可読性を極めて低下させ、くだらないバグを引き起こしやすいです。
しかしながら、Android 開発経験者の殆どは Java 開発であろうと思います。まずは Tango を使ってみたいという場合には、Java で書いてみるのが良い気がします。まずは、動く物を作って、自身のモチベーションを上げていく事が重要ですからね。
2017/07/06
登録:
投稿 (Atom)
libgdx いじり
Google が提供している Java 版の Tango Examples は Rajawali をベースにしているため、自分が仕事で開発する Tango アプリも Rajawali ベースとしていましたが、最近は libGDX への移行を進めています。一応、要点については移行が...
-
ゲイジ、マヤ(ボス前放置)、クリーグと三周目本編ソロを終え、今は、初見時に選んだアクストンで三周目保護区ソロを終えた所です。初見時は特に強いキャラではないと思っていたのですが、改めて操作すると異常に強いですねぇ・・・(タレットが)。ブラッドウィング戦もヌルゲーと化していました。 ...
-
アクストンも三周目本編を終えました。今まで使ったキャラと比べると、飛び抜けて楽でしたねぇ・・・。 ビルドは、スラグを撒くのがダルいのでゲリラ ツリーから ダブル アップ まで、チキン野朗として戦いたいのでガンパウダー ツリーから ロングボウ タレット まで、サバイバル ツリー...
-
ぴぃ~っかぴかの、い~っちもつぅ~♪(意味深) クリーグをコツコツと進め、本編三周目をソロで終えました。 ネタキャラかと思いましたが、プレイしてみると非常に面白いキャラですね。 レイビング レトリビューション を覚えると、中二病全開ポエムを聞けるのでオススメです。 ...