イントロ
jMonkeyEngine 。 それについて何もする必要はありません。エンジンは実際にそれと呼ばれ、サイトのスローガンでさえ「深刻な猿。 深刻なエンジン」(「深刻な猿。深刻なエンジン」)。 一部の開発者は明らかにこれらの動物に関連するものを持っています(シェーダーの開発とデバッグに同じRenderMonkeyを思い出します)。
それにもかかわらず、エンジンで唯一のコミックタイトル。 jMEは、快適でかなり迅速なゲームの作成に必要なすべてをサポートします。これは、グラフィカルなビジュアライザーだけではありません。 入力処理システムと物理シミュレーションとオーディオ再生のライブラリも利用できます。 他の多くのエンジンに固有のツールの標準セットに加えて、次のような機能に注目できます。
- マルチスレッド。 OpenGL呼び出しとゲームロジックは異なるスレッドで実行されます。 作業のロジックは、組み込みのゲーム状態管理システムを使用して実装できます。 ロード画面を実装するためのTransitionStateクラスなど、いくつかの定義済みの状態クラスがあります
- Javaアプレット、AWT、Swing、SWTの統合
- エンジンは、JMEモデルの特別なバイナリ形式でのみ機能します。 それにもかかわらず、タイプX-> jme(X == obj、3dsなど)のコンバータが多くあり、実行時に他の形式からモデルを直接インポートできます(作成したモデルをJME形式に事前に変換する必要はありません)
- ボリュームを制限する組織に対する「強制的な」制御。 コードで次のグリッドモデルをロード/作成するとき、どのバウンディングボリュームを使用するかを明示的に指定する必要があります
- シーン内のSwingコンポーネントのレンダリング
- 事前に計算された値テーブルを積極的に使用する高速数学コア
- ブルーム、被写界深度、dot3バンプマッピング、レンズフレアなどの組み込み効果 もちろん、GLSLおよびARBのサポート:)
- 組織シミュレーション
- www.jmonkeyengine.com/wiki/doku.php/complete_features_list
インストールと最も単純なユースケース
既製のエンジンをロードするか、リポジトリからソースをマージして自分で収集します。 どちらの場合も、出力に必要なライブラリを取得し、それをディスク上の便利な場所に配置します。
Eclipseで空のプロジェクトを作成し、[プロパティ]-> [Javaビルドパス]に移動します。
Poke外部JARを追加し、/ path / to / the / engine / libフォルダー(エンジン自体のパッケージ)および/ path / to / the / engine / lib / lib / lwjgl(このエンジンで使用されるビジュアライザーパッケージ)からライブラリを追加しますケースLWJGL)。 もちろん、すべてのパッケージを追加する必要はありません。実際に使用されるパッケージだけで十分です。 次のようになります。
LWJGLパッケージのプロパティで、作業に必要なネイティブライブラリを指定します。これは、アドレス/パス/ to / the / engine / lib / lib / lwjgl / native / <your_os>にあります。 例:
最初の準備が完了したら、新しいクラス(たとえば、プログラム)を作成します。 このクラスをSimpleGameクラスの継承者にします。これはテストプログラムに適しています。 必要なすべてのパラメーターを自動的に構成し、一人称カメラを作成します。 プログラムは2つの簡単なことを行います-キューブを作成し、.objファイルからモデルをロードします。
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URL;
import com.jme.app.SimpleGame;
import com.jme.bounding.BoundingBox;
import com.jme.math.Vector3f;
import com.jme.scene.TriMesh;
import com.jme.scene.shape.Box;
import com.jme.util.export.binary.BinaryImporter;
import com.jmex.model.converters.ObjToJme;
public class Program extends SimpleGame
{
public static void main( String [] args)
{
Program game = new Program();
//
game.setConfigShowMode(ConfigShowMode.AlwaysShow);
game.start();
}
@Override
protected void simpleInitGame()
{
//
Box b = new Box( "Testbox" , new Vector3f(0, 0, 0), new Vector3f(1, 1, 1));
//
b.setModelBound( new BoundingBox());
//
b.updateModelBound();
// (rootNode SimpleGame)
rootNode.attachChild(b);
// .obj
ObjToJme converter = new ObjToJme();
URL full_mesh_path = Program. class .getResource( "mesh.obj" );
TriMesh mesh = null ;
ByteArrayOutputStream output = new ByteArrayOutputStream();
try
{
converter.convert(full_mesh_path.openStream(), output);
mesh = (TriMesh)BinaryImporter.getInstance().load(output.toByteArray());
}
catch (IOException e)
{
System.exit(1);
}
mesh.setModelBound( new BoundingBox());
mesh.updateModelBound();
mesh.setLocalTranslation(Vector3f.UNIT_Y.mult(5));
rootNode.attachChild(mesh);
}
}
* This source code was highlighted with Source Code Highlighter .
複雑なことは何もありません。 ラインに注意を払う価値があります
URL full_mesh_path = Program.class.getResource( "mesh.obj");
したがって、Program.classファイルと同じ場所でmesh.objファイルを探すようにプログラムに指示します。 これは、たとえば、ゲームリソースが.classプログラムファイルを含む.jarアーカイブ内にある場合に便利です。
これでプログラムが起動し、グラフィック設定を選択できるダイアログボックスが表示され、ウィンドウが作成され、手動で作成されたキューブとその中にロードされたグリッドモデルが表示されます。 SimpleGameクラスは、実行時統計を表示する機能を実装します。これは、F4を押すと有効になります。 もちろん、実際のプロジェクトでは、そのようなデフォルトのものは誰も必要としない可能性が高いため、ゲームの場合はHello、worldよりも深刻であり、StandardGameクラスを使用することをお勧めします。
次に、配布用のプログラムを準備します。 これを行うには、ファイル->エクスポート->実行可能なJARファイルを実行します。 表示されるウィンドウで、エクスポートされたプログラム、宛先フォルダーを選択し、「必要なライブラリーを生成されたJARにパッケージ化する」を選択します。 [完了]をクリックすると、プログラムの実行可能コードと必要なすべてのエンジンライブラリを含む.jarファイルが作成されます。 開始するには、最初に指定されたフォルダーからプログラムフォルダー(./libなど)にネイティブライブラリをコピーする必要もあります。 実行するには、実行します
java -Djava.library.path =。/ lib -jar program.jar
プログラムは、program.jarがあるフォルダーにあるか、program.jarファイルに直接ある場合、mesh.objファイルをロードできます。 任意のアーカイバを使用して、アーカイブ内にファイルを追加できます。
ここには完全に論理的な質問があります-それはどれくらい速く動作しますか?..完全に自然な答えのためにそれを見てください - あなた自身を見てください 。 このサイトには、jnlpを介してダウンロードされたデモが一定数あります。これには、この例ほど原始的なものも含まれていません。 それらについて、作業の速度を評価できます。
フィニッシュライン
この事実調査記事は、完成したとみなすことができます。 簡単な例は、jMEを使用したゲームの作成の容易さをよく示しています。 一方、彼はエンジンの実際の機能を明らかにしていませんが、オフサイトのwikiとjavadocによって明らかにされているため、興味のある人は創造性と征服するための利用可能なすべてのプラットフォームを持っています。
安全に作業します。 賢く働く。 あなたの未来はそれにかかっている©Half Life Railway