ゲームエンジン・アーキテクチャ読み終わりました。アンチャーテッドの開発者が書いた本で、800ページ以上あります。
ゲームエンジンを作るために必要な機能について一通り書かれてます。丁寧に書かれているため、わかり易いです。まぁわからない箇所もあったけど、単に俺の勉強不足か。あと理論が書かれてるだけで、実装方法についてはほとんど書かれてません。
以下自分用メモとして思った事などを…
11.6
アニメーション同士を組み合わせるアニメーションブレンディングという手法でキャラクタの多様な動きをリアルタイムに作ってるんだね。怪我の度合いで動きを変えるとか、武器を構えたまま歩いたりとか。しかし不自然にならないように結構複雑な処理が必要です。
11.7
アニメーションブレンディングした後、さらに不自然なところを直すため、ポスト処理を行います。例として平らじゃない地面に身を屈めて、地面から物を拾い上げるアニメーションについて書かれてたけど、改めて考えると物凄く大変だ。
11.11.5.4
歩いてる時に地に足が着いているように見せるための処理。これもリアルさを考えると重要だね。
12.4.8.7
人が倒れる時とかの挙動の物理シミュレーションをラグドールと言います。確かにやられたアニメーションパターンを全部は用意してられないし、壁とか床とかで動き変わるから必要だね。
12.5.3.2
地形の当たり判定と見た目が違う場合、狭い隙間とかに弾を撃ち込めないというのは確かにと思った。弾を撃つ時だけはレンダリング用のポリゴン見て当たりを判断するのか。
14.4
ゲームワールドのロード方法。一度に1つのレベルを読み込む、狭い空間を通らせてる間に次の広いレベルを読み込むエアロック、ストリーミングで随時読み込むという3つの方法。
14.6.3
オブジェクトとサブシステムの相互依存性。猫を抱いてる人とか、ジープに乗ってる人が持ってる武器の弾倉とか、依存関係大変だ。
一通り読んで思ったのは「無理だw」という事。全ての機能を作る必要はないけど、それでも3Dをやるという事は思った以上に大変なんだね。
今作ってるのは2Dのゲームだからいいけど、3Dゲーム開発する時にはフリーのゲームエンジンを利用させてもらおうかな。ただUnity 3DとかIrrlichtとか色々あるみたいだけど、どれが良いんだろ。