Modules overview - garsue/libgdx GitHub Wiki

イントロダクション

libgdxは典型的なゲームアーキテクチャの各ステップのための機能を提供するモジュールから構成されています.

  • 入力 - 統一された入力モデルとすべてのプラットフォーム向けのハンドラを提供します. キーボード, タッチスクリーン, 加速度センサ, マウスを利用可能なプラットフォーム上でサポートしています.
  • 画像 * - ハードウェアが提供しているOpenGL ES実装を使ってスクリーンへ画像を描画します.
  • ファイル - すべてのプラットフォームで抽象化されたファイルアクセスです. メディアを気にせず簡単に読み込み/書き込み操作を行えるメソッドを提供しています.
  • オーディオ - すべてのプラットフォーム上でサウンドの録音と再生を行う機能です.
  • Net - シンプルなHTTPのGETおよびPOSTリクエストや, TCP サーバ/クライアント ソケット通信のようなネットワーク操作を行うメソッドです.

次のダイアグラムはシンプルなゲームアーキテクチャでのモジュールを示しています.

images/modules-overview.png

以降のパートでは各モジュールのよくある使い方について簡単に解説します.

モジュール

入力

入力 モジュールはすべてのプラットフォームで異なる入力状態のポーリングができます.

各キー, タッチスクリーン, 加速度センサの状態をポーリングができます. デスクトップの場合, タッチスクリーンはマウスに置き換えられ, 加速度センサは利用できません.

また, イベントベースの入力モデルを使った入力処理を登録する方法も提供します.

次のコードスニペットは現在のタッチ(デスクトップの場合はマウスダウン)イベントと協調する例です.

if (Gdx.input.isTouched()) {
  System.out.println("Input occurred at x=" + x + ", y=" + y);
}

同様のやり方でサポートされているすべての入力方法をポーリングおよびハンドリングできます.

グラフィクス

グラフィクス モジュールはGPUとのやりとりを抽象化し, OpenGL ESラッパのインスタンスを取得する便利なメソッドを提供します. OpenGLインスタンスを保持し, 製造元が提供するあらゆる実装を扱わなければならいコードのめんどうをみてくれます. _

ハードウェアに依存しているため, ラッパが利用できるかできないかはわかりません.

また, グラフィクスモジュールはPixmapとテクスチャを生成するメソッドを提供しています.

OpenGL API 1.0 のインスタンスを得る例として, 次のようなコードが利用できます.

GL10 gl = Gdx.graphics.getGL10 ();

このメソッドはスクリーン上への描画に利用できるインスタンスを返します. ハードウェアの構成がOpenGL ES v1.0をサポートしていない場合はnullが返ります.

次のスニペットはスクリーンをクリアして赤色で塗りつぶします.

gl.glClearColor(0.1f, 0.0f, 0.0f, 1);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

いつも特定のAPI(lwjgl, jogl, androidなど)の実装を返すので, メインアプリケーション側でAPIを特定する必要はなく, サポートされている限りすべてのプラットフォーム上で動作します.

次のAPIバージョンがサポートされています.

GL バージョン アクセスするためのメソッド
1.0 Gdx.graphics.getGL10();
1.1 Gdx.graphics.getGL11();
2.0 Gdx.graphics.getGL20();

グラフィクスモジュールについての詳細は こちらのドキュメント を参照してください.

ファイル

ファイルモジュールはプラットフォームに依らない汎用的なファイルアクセス方法を提供します.

このモジュールはファイルの読み書きを用意にします. ファイル書き込みにはプラットフォームのセキュリティの関係でいくつか制限があります.

ファイルモジュールのよくある使い方は, アプリケーションのサブディレクトリからゲームのアセット(テクスチャ, サウンドファイル)の読み込むことです.

また, ハイスコアやゲームの状態を書き込むのにもとても便利です.

次の例は $APP_DIR/assets/textures ディレクトリにあるテクスチャをファイルから生成性しています.

Texture myTexture = new Texture(Gdx.files.internal(“assets/texture/brick.png”));

これはAndroidでもデスクトップでも動作するとても強力な抽象化レイヤです.

オーディオ

オーディオモジュールは極めて簡単にオーディオファイルを作成したり再生したりできます. サウンドハードウェアへの直接的なアクセスも提供しています.

二通りのサウンドファイルを扱えます. ミュージックサウンドです. どちらのタイプもWAV, MP3, OGG形式をサポートしています.

サウンドインスタンスはメモリに読み込まれ, いつでも再生できます. 爆発音や銃撃音といったゲーム中の効果音として複数回使う際に理想的です.

一方, ミュージックインスタンスはディスク(またはSDカード)上のファイルからのストリームです. ファイルを再生するときは毎回, ファイルからオーディオデバイスにストリームを流します.

次のコードスニペットは ディスク上から myMusicFile.mp3 というサウンドファイルを半分の音量でリピート再生する例です.

Music music = Gdx.audio.newMusic(Gdx.files.getFileHandle("data/myMusicFile.mp3", FileType.Internal));
music.setVolume(0.5f);
music.play();
music.setLooping(true);

Net

TBD