Modules Overview - garsue/libgdx GitHub Wiki
libgdxは典型的なゲームアーキテクチャの各ステップのための機能を提供するモジュールから構成されています.
- 入力 - 統一された入力モデルとすべてのプラットフォーム向けのハンドラを提供します. キーボード, タッチスクリーン, 加速度センサ, マウスを利用可能なプラットフォーム上でサポートしています.
- 画像* - ハードウェアが提供しているOpenGL ES実装を使ってスクリーンへ画像を描画します.
- ファイル - すべてのプラットフォームで抽象化されたファイルアクセスです. メディアを気にせず簡単に読み込み/書き込み操作を行えるメソッドを提供しています.
- オーディオ - すべてのプラットフォーム上でサウンドの録音と再生を行う機能です.
- Net - シンプルなHTTPのGETおよびPOSTリクエストや, TCP サーバ/クライアント ソケット通信のようなネットワーク操作を行うメソッドです.
次のダイアグラムはシンプルなゲームアーキテクチャでのモジュールを示しています.
以降のパートでは各モジュールのよくある使い方について簡単に解説します.
入力 モジュールはすべてのプラットフォームで異なる入力状態のポーリングができます.
各キー, タッチスクリーン, 加速度センサの状態をポーリングができます. デスクトップの場合, タッチスクリーンはマウスに置き換えられ, 加速度センサは利用できません.
また, イベントベースの入力モデルを使った入力処理を登録する方法も提供します.
次のコードスニペットは現在のタッチ(デスクトップの場合はマウスダウン)イベントと協調する例です.
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);
TBD