Java Game 作成履歴 〜LWJGL導入から作成まで(今後も更新します)〜

Javaでのゲーム作成を考えていますが、なかなかどうしてうまくいきません。最終的にはストーリーとか、ゲームシステムとか。。。

しかし、調べるとこまでは調べたのでそれまでのつまづいたところやわかったことをまとめます。(時系列)

Java Game作成 〜環境構築〜

Javaでゲームを作成するのに、ゲームエンジンとしてLWJGLというフレームワークを使用しますので、これをインストールします。しかし、これはイマイチしっくりこなかったので。。。
調査で終わったものです。
内容としてはZIPファイルをダウンロードしてインストールするものです。

LWJGL 開発環境セットアップ〜Maven使用〜

これはIntelliJ IDEA を使用してセットアップしたものです。
しかし。これもうまくいかず。。。
別の方法を模索することにしました。

Java 3DGame Creation LWJGL Lv1〜 Javaでゲームを作るLv1〜

結局Eclipseを使用することにしました。今回はZIPファイルをダウンロードしてやるのですが、Gitからファイルをダウンロード、セットアップ。。。とうまくいきました。
早速、実装開始です。

Java 3DGame Creation LWJGL Lv2〜 Javaでゲームを作るLv2〜

画面を赤く染めて表示するプログラムを作成しました。
色々と行ったことを記載しました。

LWJGL(Java + OpenGL + etc) 学習メモ

学習するのに参考にしたサイトのリンクが貼ってあります。

LWJGL tutorial〜ここからダウンロード〜

GitBookなるものを見つけ、そこでLWJGLのチュートリアルがあったのでそれを実行しました。
今回は、LWJGL版のハローワールドを実行しました。

設計を始める〜1.アプリイメージ〜

実際には、人工知能の実装でつまづいて(2019/12/19)中途半端になっています。しかし、LWJGLでの画面作成方法はわかったのでその部分を実装するための設計を行いました。

Java 3DGame LWJGL GitBook chapter1〜LWJGLを学習する1〜

LWJGLを使用してプログラムするためのチュートリアル1
肝心のキャプチャが消えてしまったので、イマイチな記事になっています。

Java 3DGame LWJGL GitBook chapter2-1〜LWJGLを学習する2-1〜

LWJGLでの実装を理解していきます。とりあえずは構成を見ていこうと思います。

Java 3DGame LWJGL GitBook chapter2-2〜LWJGLを学習する2-2〜

ゲームのロジック部分の理解を行います。

Java 3DGame LWJGL GitBook chapter2-3〜LWJGLを学習する2-3〜

ゲームエンジンの部分を理解していきます。

Java 3DGame LWJGL GitBook chapter2-4〜LWJGLを学習する2-4〜

タイマーとウィンドウについて理解します。

Java 3DGame LWJGL GitBook chapter3〜LWJGLを学習する3〜

画像の描画処理を行なっていきます。OpenGLの描画の最小単位は三角形のようなので、その描画を行います。
ちなみに、プロジェクトを動かした時に手間取ったのでその時の対応などを記載しました。

Java 3DGame LWJGL GitBook chapter5-1〜レンダリングについて〜

Chapterをちょっと飛ばしていますが、プログラム的には飛ばしていませんので。。。
ここでは、3Dの描画プログラムを写経して動かします。
3Dとはいえ基本は2Dの描画になるので四角を描きました。

Java 3DGame LWJGL GitBook chapter5-2〜レンダリング詳細〜

上の描画下処理の内訳について記載しています。三角形を2つ組み合わせて四角形を作成しています。
このやり方を応用して3D描画処理に持っていきます。

Java 3DGame LWJGL GitBook chapter5-2〜レンダリング詳細〜

上の「三角形を組み合わせる」という言葉の意味を記載しています。

Java 3DGame LWJGL GitBook chapter5-2〜レンダリング詳細〜

「三角形を組み合わせるための座標とり」がメインの話になります。3次元座標の話はここがポイントになります。
内容自体は2次元描画になりますが。。。

Java 3DGame LWJGL GitBook chapter6〜Projection(投影)〜

描画した画像を動かすための処理について記載しています。

Java 3DGame LWJGL GitBook chapter7-1〜Cube作成〜

いよいよ3次元描画を行います。2次元座標にZ軸分の座標を追加して3次元座標を取り立方体を描画します。

https://twitter.com/java_takunoji/status/1056869012506730498

Java 3DGame LWJGL GitBook chapter7-1〜Cube作成〜

立方体の描画を行うプログラムの内容に関して理解していきます。やっぱり、座標点を指定して3D描画を行います。

Java 3DGame LWJGL GitBook chapter7-2〜Texture〜

作成した立方体に「テクスチャ」を貼り付けます。
座標をとって立方体を作成しましたが、今度は作成した立方体にガワを貼り付けます。

Java 3DGame LWJGL GitBook chapter8〜Camera〜

作成した立方体をカメラから見ているように処理を行います。使用するクラスの名前も「カメラ」です(笑)

LWJGLを動かして理解する

チュートリアルのコードを読んだりして見たけれどイマイチ理解できないことが多かったので「動かす」ことにしました。
それが下のリンクになります。

Java 3DGame LWJGL Retry Lv1 〜動かして理解する〜

2次元描画

これは、シンプルに四角形を表示するプログラムを色々といじって見た時の記事になります。
Java 3DGame LWJGL Retry Lv2 〜動かして理解する2〜

3Dレンダリング

とりあえずで表示したものを色々と値を変更して「何がどうなってるの?」を解明しようとした時の記事です。
Java 3DGame LWJGL Retry Lv3 Texture〜動かして理解する3〜「負け越し」

Texture1

シェーダーブログラムの処理を書いていなかったので失敗していますが、シェーダプログラムとJavaプログラムの関連性がよく分かった時の記事です。

Java 3DGame LWJGL Retry Lv4 デバック〜動かして理解する4〜「黒星」

Texture2

上の記事で失敗した原因を調べた時の記事です。ここで詳細なプログラムのダメなところと良いところを明確にしました。

Java 3DGame LWJGL Retry Lv5 遊んでみる〜動かして理解する5〜「引分け」

Texture3

作成した3D(Cube)にテクスチャーを貼り付ける処理を実装しました。上記の記事にある失敗を経験したことでここまで理解できました。

Java 3DGame LWJGL Retry Lv6 遊んでみる2〜動かして理解する6〜「白星」

Texture4

上の記事のさらに掘り下げたバージョンです。作成した(テクスチャー付き)オブジェクトを複数生成して、見え方を変える(カメラ)の実装とともに表示させて見ました。

Java 3DGame LWJGL Retry Lv7 遊んでみる3〜全部テクスチャにする〜
テクスチャーを理解できたので、これを応用してカレンターみたいなものを作って見ました。

LWJGL3のセットアップ
以前作成したのと同じような内容ですが、こちらはまとまっていてスッキリしていると思います。

ゲームのためのWindowの表示
早い話が、ゲームを表示するためのWindowを作成します。
その時に学習した内容を記載しています。

画面への入力
ゲームをやるのには、入力が必要です。コントローラーのAボタンなど。。。
その入力があった時の処理を実装するという内容です。

OBJファイルのロード
実際にゲームを作成しようとした時には、キャラクターなどは別のソフト(Blenderなど)を使用します。
そして作成した3Dモデルは、OBJファイルなどに出力できるので、それを読み込んでJava側で表示する。。。ということです。

まとめ

とりあえずは、一通りチュートリアルのようなGitbookを見て学習しました。
実際には、人が紙などに書いた絵を3Dモデルに変換したいのですが、それはまた別のテクノロジーを使用するようで。。。
とりあえずは3次元描画の基本的なことを理解できました。

でわでわ。。。