2017/07/06

libgdx いじり

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/02/17

すっかりスマホ ゲーム中心

ちょいちょい PS4 のゲームを遊んでいますが、ここ数年はゲームに割く時間の大半がスマホ ゲームです。

1 年以上プレイしているスマホ ゲームは、こんな感じです。
どれも積極的にプレイしているわけではないのですが、なんとなく続いています。

まぁ、スーパーガンダムロワイヤル以外は、そろそろアンインストール対象に入りかけています。僕はガンダム好きなので、モビルスーツを見ていると何となく嬉しいのと、非常にシンプルでありながらグラフィックスが好みなので、スーパーガンダムロワイヤルが気に入っています。他のガンダム ゲームも色々と試しましたが、続けられるのはスーパーガンダムロワイヤルだけですね。

1 年未満で最近遊んでいるのは、こんな感じです。
お気に入りは、アイドルモンスター、ウォーキング・デッド、サマナーズウォー、Brutal Age ですね。ゆる~い感じで遊びながらも成長や発展を感じられるものは好きです。

僕のスマホ ゲームのプレイ スタイルは、10 以上のゲームを並行させ、定期的に開催される時限イベントに合わせて、時間や気分次第でどれかをプレイするという物です。後は、全ゲームで 1 日 1 回のサインインを行い、デイリー報酬を貯めておく感じですね。まぁ、それを逃しても、長期的に見ると鼻糞レベルですから、それはそれでどうでも良いって感じです。

このスタイルでは特定のゲームに固執する事がなく、わざわざ課金アイテムを購入する気持ちが起こらないのですよね。このため、今まで無料枠でしかスマホ ゲームを遊んだことがありません。

後は、面白そうならとりあえずプレイし、僕の性格に合わなければ即アンインストールです。無料で始められますし、無理に楽しもうとしなくとも、それなりに新しいゲームを発見できますし。

即拒絶するのは、シナリオを見せたがる物や、アクション操作を主体とするゲームですね。短い時間で遊ぶスタイルが常となるスマホ ゲームでシナリオ重視とか意味不明ですし、スマホでアクション操作なども意味不明です。まぁ、面倒なスマホ ゲームは嫌いです。それらを体験したければ、据置機でゲームを買いますよ。

僕は、スマホ ゲームでは体験やゲーム性を求めておらず、なんとなくの成長や発展が進めば満足します。その感覚が常となったため、逆に、据置機には今まで以上に体験やゲーム性を求めるようになった気もします。
ゲーム性に応じて、「どの媒体で出すか?」ってことかな、と。PS4 のゲームでも「この感じならばスマホで出した方が儲かるのでは?」と感じる作がチラホラあります。

しかし、ゲームを延々と無料で遊べるなんて凄い時代ですよね・・・。

2017/02/15

Biohazard 7 やり始めて断念

Biohazard (バイオ) シリーズは初代しかやっていないのですが、初代はとてもインパクトがありましたね。まぁ、操作が面倒で直ぐに止めたのですが、攻略サイトを見て一応は攻略した記憶があります。それ以降は、ただの続編のイメージしか無く、また、徐々に単なる TPS 化しているように見えて手を付けていませんでした。

今回、バイオ 7 が出るにあたり、PV を見ると純粋に恐怖を見せる作りに見えたので、これは面白い!と思って購入しました。

・・・まぁ~怖い。僕はホラー映画への耐性があり、ホラーってコメディだろwww?と思う性格ですが、バイオ 7 は怖い。

それなりにゲーマであるせいか、敵との遭遇と対処を考えながら行動する思考が怖さを招くんですよね。「この状況で敵が出てきたらどうにもならない気がする」という思考のために、「歩くだけで怖い」という心理が働きます。
その心理をもたらすために、非常に狭い空間を舞台にしている感じがします。明らかに逃げ場がない、とか、対応できる武器が無い、と認識する状況に常に追いやられている感覚がします。何だか凄くヤバイとだけ認識できる状況と言うか。
また、敵に殺られたらそこで攻略を考えれば良いのですが、何度もリトライしたくないという心理もあり、慎重になります。

と、楽しんでいたのですが、わりと序盤で嫌になりました。まぁ、序盤のガレージでの戦闘ですが、「これは決められた攻略方法があるな」と感じたので、もうどうでもいいや、と。

正直、そういうのは面倒くさい。僕は怖さを体験し続けたいだけで、攻略を求めていないんですよね。ヌルゲーマ?そうです。僕には攻略よりも体験が重要です。若い頃なら違った感覚でプレイできたかもしれないと思うのですが、オッサンと化した僕には色々と面倒です。

後は実況動画を観れば良いかなー・・・と。

2017/01/14

FF15 やりこみ中

他にやりたいゲームもないので、FF15 で未クリアのサブ クエストをこなしている所です。そして、サブ クエストをこなしていると、初見クリアまでとは別の印象を持ちました。

結構、面白いな、と。

作業感の強いモブ ハント、1 つしか受注できないモブ ハント、不便なファスト トラベルなどなど、否定的に捉えているシステムも、緩くプレイする姿勢ならば気にならなくなります。始めから緩くプレイできる人ならば、FF15 に肯定的なのでしょう。僕はせっかちなのでイライラしましたが、今はのんびり車を走らせながら BGM を聞いている状態です。

Lv 99 にし、スキルを MAX にし、殆どのクエストを終えましたが、時間の掛かりそうなクエストを残して、さてどうしたものかと考えました。ダメージ限界突破や魔法威力の底上げしないと、クエスト クリアには単純に作業的な時間が掛かりそうで、それは嫌だなぁと。

問題はアビリティの充実であり、つまりは AP 稼ぎです。調べると AP 稼ぎの方法が出てきますが、ただの作業であり、それはキツイ。という事で、2 周目に入って AP 稼ぎをすることにしました。シナリオを追いながら、知らないうちに AP が貯まっていた・・・という状態の方が健全ですから。

そこで気付いた事。

2 周目に入る前には全員の服装をカジュアル スタイルにしていたのですが、カジュアル スタイルで開始するとシナリオに違和感がありません。荒野を黒服で車を押しながら友達感を押し付ける描写も、カジュアル スタイルならマッチします。

なぜ、最初からそうしなかったの?と思います。

黒服は別に良いです。正装としての設定が世界観の一部としてあり、否定するものでもありません。しかし、黒服で旅を始める事には違和感しかありません。旅の開始は旅らしくカジュアル スタイル、締める時には正装の黒服、このような使い方をすれば良いだけです。そうしていれば、ホスト風イケメン ファンタジーとして拒絶されることは無かったのではないかと。

でまぁ、2 周目クリアをしてみても、たいして AP が貯まっていないんですよねー・・・。戦闘自体は面白いので、またサブ クエストを回しながら AP 稼ぎするか、このまま放置してスマホ ゲームでもやるか、そんな所です。

libgdx いじり

Google が提供している Java 版の Tango Examples は Rajawali をベースにしているため、自分が仕事で開発する Tango アプリも Rajawali ベースとしていましたが、最近は libGDX への移行を進めています。一応、要点については移行が...