こんにちは、CG^3の抹茶(@_xcipher)です.
現在、minecraftっぽい3Dゲームを作ろうとしていて、そのゲームエンジン部分を作成中です.
4月までDirectX11ベースでゲームのエンジン部分を作ってたのですが、ちょっと行き詰まったのでOpenGLに乗り換えてみました.
* 環境とか
* 使用しているライブラリとか
用途としては、ゲーム内の敵の動きを記述しようと思ってましたが、意外といろいろできそうでした.
(json形式で書かれた設定の読み込みとか)
ある程度ラップしたもの
[C++側]

[js]

[出力]

(logはcompileのときに中で埋め込んでます. 標準出力してるだけです)
* 3Dモデル読み込み
基本的に、標準でサポートされていません.
自分で解析して読み込みましょう. (白目)
C++で文字解析はつらいです
[解析手段]
そんなわけで5でやってみました.
できました.

メタセコイアっていうソフトで作られたmqo形式のモデルです.
(まだ完全ではないです.)
こっそりライティングをしていますが、この話はまた次回辺りで...
ちなみに、Debugビルドだと、解析にめっちゃ時間かかります.
Releaseならなんとか実用的かもしれないです
逆に、すぐに動くゲームを作りたいのならUnity一択な時代ですね.
Q. Luaは?
使ったことないです
比較的新しいので、ネット上の情報は少なく、書籍を参考にしたり、英語の公式ドキュメントやサンプルを読む力が必要です.
OpenGL2.0やDirectX9でも十分なクオリティのゲームを作れますし、動作する環境も多いので、わざわざ新しいものを使う必要は無いのかもしれません.
でも一番新しいもの使ってみたいですよね?
* 今後の予定
工大祭までにそれなりのものを作りたいですね...
それでは(。・ω・)ノ゙
ソースです. 汚いです. 読めないです. いじめないであげてください.
github
現在、minecraftっぽい3Dゲームを作ろうとしていて、そのゲームエンジン部分を作成中です.
4月までDirectX11ベースでゲームのエンジン部分を作ってたのですが、ちょっと行き詰まったのでOpenGLに乗り換えてみました.
* 環境とか
- Visual C++ 2012 (Nov 2012 CTP)
- OpenGL 4.0
- GLSL 4.0
* 使用しているライブラリとか
- glfw3 (GLUT的ポジション)
- glew (GLSLまわり)
- GLM (数学関係)
- FTGL (日本語フォント描画)(予定)
- LodePNG (PNG画像読み込み)
- Google V8 JavaScript Engine (スクリプティング)
Windowsでも特に苦労なくビルドできます.
* V8エンジンとは
C++で書かれたJavaScriptエンジン.
Googleが作ってるのできっと強い.
C++側に埋め込んで、JSでスクリプティングができる. わー.
主にC++の変数、関数、クラスなどとJacaScriptのオブジェクトの仲介部分を書いていく感じになります.
公式のサンプルを読めば何となく分かるので、それっぽく書くと何か動きます.
用途としては、ゲーム内の敵の動きを記述しようと思ってましたが、意外といろいろできそうでした.
(json形式で書かれた設定の読み込みとか)
ある程度ラップしたもの
[C++側]

[js]

[出力]

(logはcompileのときに中で埋め込んでます. 標準出力してるだけです)
* 3Dモデル読み込み
基本的に、標準でサポートされていません.
自分で解析して読み込みましょう. (白目)
C++で文字解析はつらいです
[解析手段]
- 頑張る → つらい
- boost::spirit::qi → ✌('ω')。o(???????????????)
- C++が読みやすいような中間データを作成する → 悪くはないかもしれない
- ライブラリを使う → 最適解
- 上記のJSスクリプティングで読み込む → 新規性を感じる
そんなわけで5でやってみました.
できました.

メタセコイアっていうソフトで作られたmqo形式のモデルです.
(まだ完全ではないです.)
こっそりライティングをしていますが、この話はまた次回辺りで...
ちなみに、Debugビルドだと、解析にめっちゃ時間かかります.
Releaseならなんとか実用的かもしれないです
* その他
Q. Unity使わないの?
ゲームエンジンも作りたいので...逆に、すぐに動くゲームを作りたいのならUnity一択な時代ですね.
Q. Luaは?
使ったことないです
Q. OpenGL と DirectX の違い
どっちもでもいいと思います.
ただ、ライブラリ面ではOpenGLの方が充実していて楽に書けると思います.
DXライブラリはDirectX9までなので、DirectX10以降を使う場合は直打ち不可避です.
Q. OpenGL4.0, DirectX11 とは
比較的新しいので、ネット上の情報は少なく、書籍を参考にしたり、英語の公式ドキュメントやサンプルを読む力が必要です.
OpenGL2.0やDirectX9でも十分なクオリティのゲームを作れますし、動作する環境も多いので、わざわざ新しいものを使う必要は無いのかもしれません.
でも一番新しいもの使ってみたいですよね?
* 今後の予定
- ライティング、影の描画など
- シェーダーでいろいろ特殊効果を実装してみる
- Defferd Shadingしてみる
- OpenALで音を鳴らしてみる
- OpenGLのいろんな機能を試す(テッセレーションとか)
- ゲーム本体を作る
工大祭までにそれなりのものを作りたいですね...
それでは(。・ω・)ノ゙
ソースです. 汚いです. 読めないです. いじめないであげてください.
github








