Ownway.Info
 
HOMESDL + OpenGLによる3Dブロック崩し(開発中) → そもそもの始まり
そもそもの始まり

1: DirectXによる3Dブロック崩し

3Dブロック崩しは、 DirectX を覚えるために始めたプログラムである。 せっかくグラフィックスを覚えるんだから、簡単でダイナミックに動く何かを作りたかった。 動作のモデルとして、衝突判定を一点に絞ったモデルをまず作ろうと言うことで 単純にブロック崩しを作ろういうのが始まりである。 しかし、途中から他に思わずはまったプログラムがあったためそのままになってたんだけど。

ソースコードのセット(BallGameCodeSet.lzh
コンパイル環境が無い人のためのバイナリ(BallGameBinary.lzh

このプログラムを動かすためにはDirectX 8.0が必要だ。 入っていない人はWindows Updateを利用してDirectX 8.0を入れて動かしてみよう (もしくは、コンパイルしてみよう)。 中央にあるボールを矢印キー(もしくは、ゲームパッド可)で動かせる。 インターフェースの関係上二次元的にしか動かせないが、 プログラム上もちろん三次元的な動作が可能である。 このサンプルでは、周りのブロックが完全な四角形をしているが、 任意平面を組み合わせて表現できる任意凸物体をフィールドに配置することができる。 ただし、フィールド要素の定義は手動で (物体モデルと、その表示モデルの両方を個別に)プログラミングしなければならないから面倒だ。

2: SDL + OpenGLによる開発再開

以上のDirectXによる開発が停止して約一年が経過し・・・。 DirectXで書いたプログラムをSDL・OpenGLという二つのライブラリを使って書き直そうと決心した。

OpenGLというのは、ハードウェア・OS非依存の3Dグラフィックスインターフェイスのこと。 これを使えば環境非依存の3Dグラフィックスを作って遊ぶことができる。 DirectXとの違いは、インターフェイスが単純で扱いやすいこと。

SDL(Simple DirectMedia Layer)というのは、 ハードウェア・OS非依存のマルチメディア開発用APIのこと。 ゲームとか作るための基本的なAPIを提供してくれる頼もしい僕らの味方だ。 今回はOpenGLのフロントエンドとし働いてくれる。 OpenGLのフロントエンドとしてはAUXとか GLUT(OpenGL Utility Toolkit)が有名だ。 今回はフロントエンドとしてでは無く簡単なソリッドモデルを使うために一部GLUTを利用している。

ソースコードのセット(codeset.lzh
コンパイル環境が無い人のためのバイナリ(binary.lzh

上のプログラムは、今までDirectXで開発してきたプログラムを、 SDL + OpenGLにそのまま書き換えたものである。 DirectXで開発してきたプログラムから変わった点は以下のとおりである。

今までDirectXで行われてきた3Dブロック崩しの開発では、 ビュー(描画部)とモデル(衝突判定部)をクラス的に分離してきた。 従って、今回の主な書き換えはビューに相当する部分だけでほぼ済んだ。 唯一モデルに対して行った変更点は、 DirectXに用意されていたD3DXVECTOR3クラスが使えなくなったので、 それを独自のVector3クラスに置き換えたことだけである。

なぜか同じ色を指定してもDirectXとOpenGLでは違う色になるみたいなのはなぜだかわからなかった。

現在の開発状況

そして、現在はさらに開発が進んでいる。

戻る: SDL + OpenGLによる3Dブロック崩し(開発中)