はじめに
libGDXは
- Windows
- Mac
- Linux
- Android
- iOS
- HTML5
に対応したクロスプラットフォームなゲーム用フレームワークです。
setup用ツールも用意されていますが、シンプルではない上に、環境によっては開発もしづらいのでまずは一番シンプルな形を作ってみます。
ここではPC向けとAndroid用の設定を説明します。セットアップはとっても簡単です。
#libGDXのダウンロード
ファイルはここからダウンロードします。
http://libgdx.badlogicgames.com/releases/
2014/6/15時点で1.1.0を落とすとよいでしょう。
zipは展開しておいてください。
Windows/Linux/Mac用のセットアップ
クラスパスに以下のファイルを加えます。
- gdx-backend-lwjgl-natives.jar
- gdx-backend-lwjgl.jar
- gdx-natives.jar
- gdx.jar
メインクラスを作ります。Libgdxtest.javaは共通部で、あとに書きます。
public class Main{
public static void main(String[] args) {
new LwjglApplication(
new MainListener(),
"Game",
320,
320
);
}
}
Android用のセットアップ
libsフォルダに以下のファイル/フォルダをコピーします。
- armeabi
- armeabi-v7a
- gdx-backend-android
- gdx.jar
アクティビティクラスを作ります。設定ファイルは適当に合わせておいてください。
import android.os.Bundle;
import com.badlogic.gdx.backends.android.AndroidApplication;
public class MainActivity extends AndroidApplication {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initialize(new MainListener());
}
}
最小限のロジック部分
ApplicationListenerインターフェースを実装します。
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
public class MainListener implements ApplicationListener{
@Override
public void create() {
System.out.println("create");
}
@Override
public void resize(int w, int h) {
System.out.println("resize"+w+","+h);
}
@Override
public void render() {
Gdx.gl.glClearColor(0, 0, 0.2f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
}
@Override
public void pause() {
System.out.println("pause");
}
@Override
public void resume() {
System.out.println("resume");
}
@Override
public void dispose() {
System.out.println("dispose");
}
}
実行
PCでの実行結果は以下のようになります。
ライフサイクルメソッドが実行されたタイミングでそれぞれログが出ていることでしょう。それぞれ予想通りの動きだと思いますが、PC版だけはウインドウが最前面ではなくなった時、pauseが実行されますが、そのあともrenderメソッドが呼ばれ続けるのだけに注意してください。
320x320の描画エリアを持つウインドウが生成されました。暗い青で塗りつぶされていますね。
色はここで指定しています。
Gdx.gl.glClearColor(0, 0, 0.2f, 1);
引数の先頭から赤、緑、青、αとなっています。値は0から1の間でfloatで指定します。この順番で色を指定することよくあるので覚えておきましょう。
Gdx.gl
でGLを取得、OpenGLの命令を発行できます。OpenGLさえ動けばどうでもいいという人はこれで十分でしょうか。
とっても簡単ですね。
これだけだと、JOGLを直接使っているのとあまり変わらないですね。クロスプラットフォームなのはいいのですが、Androidにしてもありがたみも薄いかもです。
次回からはもう少し高レベル、便利な機能を紹介していきたいと思います。