ゲームプログラマになる前に覚えておきたい技術を改造し、スクリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践でluaを組み込み、MMD、MMEを使えるようにした。
このDemoが重いです。ロードが完了するまでお待ちいただければ幸いです。

自分でゲームエンジンを作ってみたかった。 一からゲームエンジンを作るのは大変すぎるので、ゲームプログラマになる前に覚えておきたい技術を改造して書くことにした。詳しい解説もあるのでC++でゲームがどう動いているのかを深く理解するのはこの選択肢が一番だと思った。ただ当初はここまで作り込む気は全くなかった。
自分はプログラマなので素材をできるだけ流用したかった。よってMMD,MMEを組み込むことにした。どういうゲームを作りたいというのをあまり決めずに作ってしまったのが悪手だった。。
さらにそこからゲームの仕様を決めずにLuaに仕様決定を任せた辺りが決定的な間違いだと思っています。
意思決定をコンピュータに任せるのではなく前もって行うことが非常に重要だと感じています。
ただ、本を読んだり、様々なゲームを分析したり、ゲームデザインを勉強していて感じるのは面白いゲームを作るのは非常に難しいということ。 仕様決定と面白いゲームデザイン、ここに大きくはまってしまったかなと思います。
-
MMD
-
pmd、vmdデータの読み込み
-
トゥーンレンダリング
-
セルフシャドウ
-
LPSM(Light Space Perspective Shadow Maps)
-
ディファードレンダリング
-
ポイントライト
-
IK(インバースキネマティクス)
-
シェーダー側でのボーンの操作
-
DrawCallを少なくした効率的なデータ構造
-
物理演算
-
vmd形式のカメラの読み込み
-
アニメーションのブレンドウェイト
-
MME
-
ディファードレンダリング
-
SSAO
-
AutoLuminus
-
Lua
- 組み込むことにより動的なレベルデザインがビルドなしで行えるようになった。
-
Xファイルの読み込み、表示
-
字幕システム
-
playerが視錐台からでないようにあたり判定チェック
-
設計について考えたこと
-
リソースシステムについて
- ゲーム中でもできるだけ止まらないように
- XmlFileLoaderでのモデル、当たり判定、GameObjectのパラメータのリソースの管理
- Luaと組み合わせてステージのビルドなしの動的なレベルデザインの変更
-
ゲームオブジェクトを継承構造で持つかコンポーネント構造で持つか?
- 当初は継承構造でやっていたがに2つ合わせたような感じにした。 参考: ゲームプログラミングC++
-
3つの数学ライブラリ(DirectX, BulletPhysics, GameLib)
- 行列の 列優先表現、行優先表現の変換
- 右手座標、左手座標
-
-
フォルダ構成
├Bin : Debug, Release毎の実行ファイル
├Data : Gameデーター
├Lib : 各種ライブラリ
├Licence : 各種ライセンス、ファイル毎に置いておくとあとでまとめてみたいとき困るので
├Media : 未加工のリソースファイル
├Obj : Debug, Release毎の中間ファイル
├Project : 各種プロジェクトファイル
├Recycle Bin : ゴミ箱、再利用したくなるようなリソース、ソースコードをとりあえず入れておく
├Script : Luaファイル
├Shader : 各種シェーダー
├Source : ソースコード
└Tool : 各種ツール
- lua 5.1
- bullet physics3 2.85
- boost 1.62
- Direct X
- GameLib(改良点あり)