jMonkeyEngine 3 Tutorial (1) – Hello SimpleApplication
このチュートリアルは、 *jMonkeyEngine SDK* を使うことを前提としています。
プロジェクトの作成
- メインメニューから ファイル→新規プロジェクト
- JME3→Basic Game を選び、 次 へ
- Project Nameを入力します。 例 : “HelloWorldTutorial”
- 作成する新規プロジェクトのパスを決めます。 例 : ホームディレクトリにjMonkeyProjectsを作成し、そこにする。
- 終了をクリック
さらに詳しいことは Project Creation で
SimpleApplication を書く
ここでは、プロジェクト内のjme3test.helloworldパッケージを作成し、その中にファイルHelloJME3.javaを作成する。
- 作成したプロジェクト内の ソースパッケージ を右クリック
- 新規→Javaクラス を選ぶ
- クラス名を入力: HelloJME3
- パッケージ名を入力: jme3test.helloworld.
- 終了をクリック
サンプルコード
作成したクラスを以下のコードに置き換えます。
package jme3test.helloworld; import com.jme3.app.SimpleApplication; import com.jme3.material.Material; import com.jme3.math.Vector3f; import com.jme3.scene.Geometry; import com.jme3.scene.shape.Box; import com.jme3.math.ColorRGBA; /** Sample 1 - how to get started with the most simple JME 3 application. * Display a blue 3D cube and view from all sides by * moving the mouse and pressing the WASD keys. */ public class HelloJME3 extends SimpleApplication { public static void main(String[] args){ HelloJME3 app = new HelloJME3(); app.start(); // start the game } @Override public void simpleInitApp() { Box b = new Box(Vector3f.ZERO, 1, 1, 1); // create cube shape at the origin Geometry geom = new Geometry("Box", b); // create cube geometry from the shape Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); // create a simple material mat.setColor("Color", ColorRGBA.Blue); // set color of material to blue geom.setMaterial(mat); // set the cube's material rootNode.attachChild(geom); // make the cube appear in the scene } }
コード内で右クリックして、 ファイルを実行 を選択する。ダイアログが現れ、そこで設定を確認する。
- シンプルな3Dキューブが現れる。
- WASDキーを押したり、マウスを動かしたりしてオブジェクトを動かすことができる。
- FPSやオブジェクト数が左下に表示される。これは開発時に使用し、リリース時には削除する。
- Escapeキーでアプリケーションを終了する。
コードを理解する
上記のコードは、シーンを初期化し、アプリケーションを開始する。
SimpleApplicationの開始
最初の行について。HelloJME3.java クラスが com.jme3.app.SimpleApplication を継承している。
public class HelloJME3 extends SimpleApplication { // your code... }
常に JME3のゲームは com.jme3.app.SimpleApplication のインスタンスとなっている。
SimpleApplicationクラスは、3Dグラフィクスを管理し、自動的に画面に描画する。
ゲームエンジンが簡単な作業でそれを行なってくれる。
標準的なJavaアプリケーションとして、main()メソッドからのJME3ゲームを開始する
public static void main(String[] args){ HelloJME3 app = new HelloJME3(); // instantiate the game app.start(); // start the game! }
このコードではアプリケーションウィンドウを開くだけである。次にこのアプリケーションに入れていくものについて学ぶ。
専門用語を理解する
何がしたいか? | JME3の用語でなんと言うか |
---|---|
キューブを作りたい | 1×1×1 Box shape の Geometry を作る |
青色を使いたい | blue Color propertyのMaterial を作る |
キューブを青くしたい | Box GeometryのMaterialをセットする |
キューブをシーンに追加したい | rootNodeにBox Geometryを含める |
キューブをセンターに出現させたい | Boxの起点を Vector3f.ZERO にする |
シーンの初期化
コードサンプルを参照する。 アプリケーションを開始すると、simpleInitApp()メソッドが最初に自動的によびだされる。
常にJME3のゲームはこのメソッドを実装していなければならない。 simpleInitApp()内で、ゲーム開始前に必要なオブジェクトを読み込んでおく。
public void simpleInitApp() { // your initialization code... }
青いキューブを表示させるための初期コードは以下のようになる。
public void simpleInitApp() { Box b = new Box(Vector3f.ZERO, 1, 1, 1); // create a 1x1x1 box shape at the origin Geometry geom = new Geometry("Box", b); // create a cube geometry from the box shape Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); // create a simple material mat.setColor("Color", ColorRGBA.Blue); // set color of material to blue geom.setMaterial(mat); // set the cube geometry 's material rootNode.attachChild(geom); // make the cube geometry appear in the scene }
典型的なJME3のゲームの初期プロセスは以下のようになる。
- ゲームオブジェクトの初期設定
- オブジェクトの作成もしくは読み込み、そして配置
- rootNodeへ連結し、シーンにオブジェクトを表示させる
- 例: プレイヤー、地形、空、敵、障害物の読み込みと、それらの開始位置
- 変数の初期設定
- ゲームの状態を追跡するための変数の初期設定
- 開始時の変数をセットする
- 例: 体力100%、スコア 0
- キー入力やマウス操作の初期化
- 次のものははじめから設定されている
- W,A,S,Dキー – シーン内を動く
- マウス、矢印キー – カメラの回転
- Escapeキー - ゲーム終了
- 独自の追加キーとマウスクリックアクションを定義する
- 例: クリックでシュート、スペースでジャンプなど
- 次のものははじめから設定されている
最後に
SimpleApplication は以下のことをするための出発点である。
- simpleInitApp() でオブジェクトを作成する
- rootNode にオブジェクトを登録すると、シーンに追加される
- シーンのナビゲーションとして使える便利なデフォルトの入力設定
ゲームを開発するとき、以下の事が必要となる。
- ゲームシーンの初期設定
- ゲームアクションのきっかけ
- ユーザの入力に対する応答
次のチュートリアルでは、jMonkeyEngine3でこれらのタスクを実行する方法を解説する。