投稿

ラベル(Android)が付いた投稿を表示しています

Google Play Games Services v2 を使ってみる

イメージ
Google 公式の サンプル が古く、API が刷新された v2 には対応していない。サンプルが旧 API でグチャグチャとやっていることが、v2 ではライブラリー側に隠蔽された感じになっており、グチャグチャやっているサンプルを参照すると、却って無駄に学習コストを浪費する面もある。 Google Play Games Services は基本的には Firebase のようなクラウド BaaS のようなものであり、Google Play コンソールからサーバー側の設定作業を行うものの、Google Play そのものとは独立した代物と考えた方がいい。 学習面で Firebase(Analytics や Crashlytics)よりも一段ややこしいハードルがあって、それは、アプリ認証(OAuth)をインプリメントしなければならない点である。サーバー側での適切な設定と、アプリ側での適切な設定を、協働させて行わなければならない。独学で誰にも意見を聞けない状態で、上手く動作しない場合に、どこに原因があるのか、学習段階で突き止めるのは非常にストレスフルである。一旦、成功してしまえば、後から振り返って検証するのは難しくはないのだが。 Firebase プロジェクトを選択する 既に Firebase Analytics/Crashlytics は組み込み済だったので、それに追加する形で Games Services をセットアップする。 Play ゲームサービスの設定 Play ゲームサービスの設定画面に遷移し、必要な作業が列挙されている。認証情報を作成することにする。 認証情報を追加 ここで認証情報を追加するためには、OAuth クライアントを作成する必要がある。 OAuth クライアントの作成 ここで表示された情報を使って、Google Cloud Platform にて OAuth クライアントを作成する流れになる。 Google Cloud Platform での OAuth クライアント ID の作成 直前の Google Play コンソール側で表示された情報を使って Google Cloud Platform 側で OAuth クライアント ID の作成をする。 ただし、留意しなければならないのは、

OpenGL FrameBuffer オブジェクト(FBO)

Grafika の RecordFBOActivity を見ながら、FBO(FrameBuffer Object)について勉強中。 DRAW_TWICE (draw x2) レンダリング(描画処理;draw メソッド)自体を(デフォルト framebuffer と動画ファイル用に)丸々 2 回行っている。 FBO (draw x1 + blit x2) オフスクリーン用の FBO にレンダリング(draw)を行い、それをデフォルト framebuffer と動画ファイルそれぞれに blit している。 BLIT_FRAMEBUFFER (draw x1 + blit x1) GLES 3.0 の glBlitFramebuffer を使い、デフォルト framebuffer にレンダリング(draw)したものを、先に動画ファイルに blit してから、画面表示用に swap している。 draw は描画オブジェクトの数、blit は転送するデータ(画面)サイズに依るので、DRAW_TWICE がいいのか、それ以外が良いのか一概には言えない。だが明らかに、BLIT_FRAMEBUFFER(draw x1 + blit x1)は FBO(draw x1 + blit x2)より確実に効率が良さそうである。 他、参考:LearnOpenGL: Framebuffers

Beginning Android Games(Android ゲームプログラミング A to Z)その 2

イメージ
前回の記事 その 1 の続き。 前回は本( libGDX の創始者である Mario Zechner 氏の著書“ Beginning Android Games ”(邦題は『 Android ゲームプログラミング A to Z 』))の 7 章の内容がベースだったが、今回は 8 章の内容がベースになる。 7 章では OpenGL ES 1.x そのものの使い方の解説(インプット)に主眼があったのに対して、8 章では「OpenGL そのもの」というよりは、いよいよ「OpenGL を使って」様々なグラフィックス表現を実現する、アウトプットの段階になる。 前回の記事では、Mario Zechner 氏のサンプルプログラムと同じ結果を実現するために、最近の Android プログラミングの事情に合わせて、Kotlin と最新の Android API をベースとし、さらに OpenGL は 2.0 に準拠するため自前のシェーダーを用意して、自分流のサンプルプログラムとライブラリーを構築した。 Game クラスと Screen クラスの構造、そして OpenGL をグラフィックスエンジンとして使用するための GLSurfaceView.Renderer クラスを用意し、その他のファイル入出力やサウンド、タッチ入力などの部分は、Android の API をそのまま使えばいいだけじゃないかということで、サンプルプログラム化、ライブラリー化の対象外としていた。 しかし、8 章では、タッチ入力をサンプルプログラムで使用するので、これだけはどうにかしなければならない。もちろん、Android プログラミングのタッチ入力に熟達している人ならば問題ないが、タッチイベントは独特のノウハウがあるので、普通はかなり面倒な代物である。本の 8 章のサンプルプログラムの側では、3 〜 6 章の過程で用意したライブラリーのタッチハンドラーがあり、そのタッチハンドラーから得られるイベントによって動作するように記述されているので、タッチ入力に関しては、この 8 章の個々のサンプルプログラムで直接扱うよりは、相当するタッチハンドラー用のクラスを用意して対応するのが無難である。 TouchHandler( 本家 ):本はかなり古い時代の Android API を基準としてい