これは読んでおくべき・・・とは言っても、さすがに遊んでいないゲームの、しかも巨大なソースコードを読むのはツライ。
そこで私がおすすめしたいのが、Q3 と同系列の『EnemyTerritory』(*1)。ゲーム本体は完全無料であり、ソースコードも公開されている。言語は C で、構造体をバリバリに使ったアクターモデル、といった感じの作り。
入門者の福音になりそうなのが、ゲームループと描画ループを分離する考え方。
具体的には、ゲームループは 20FPS 固定だが、描画ループの FPS はクライアント PC の性能に応じて上限がない。どういうことかというと、物体の座標や遷移状態の計算に積分を用いている。つまり、始点・移動開始時間・移動ベクトルなどがわかれば、N 時間後の座標がわかるので、クライアント側では 20FPS 以上で計算して滑らかに描画することができる。(*2)
Enemy->X += Enemy->MoveX; Enemy->Y += Enemy->MoveY;
のようにゲームを作っていたり、分離するにしてもフレームスキップ(*3)な段階の人間には、それなりに衝撃的だと思う(経験済み)。
EnemyTerritory がよくわかるところ:
- http://www.forest.impress.co.jp/article/2003/05/30/wolfensteinet.html
- http://wolfet.oops.jp/
- http://www.splashdamage.com/ (開発元)
ゲーム的に本当にお勧めしたいのは EnemyTerritory の前作、RtCW なんだけど、まあ、それは言うまい。
*1 こう書くとゲーム的には語弊があるが。
*2 とはいえ、割り切るべきところは割り切って、ざっくり計算していたりする。こういう取捨選択も参考になるかもしれない。
*3 N フレーム同時ステップなども含む。これも積分といえば積分か。
[本] ゲーム開発のための数学・物理学入門
[本] DirectXゲームグラフィックスプログラミング Ver. 2.0
[本] Game Programming Gems

コメントする