OpenGLを使ってゲームを作ろう 3Dゲームプログラミングに挑戦
こんにちは、oyasです。今回は、OpenGLを使ってのゲーム作りに挑戦します。 といっても、参考サイトの紹介と開発環境の構築の説明になります。
本題のゲーム作りは、解説がおそらくできませんが、簡単なゲームを作りましたので、そのコードを追っかけながらやっていくといいでしょう。 丸投げですみません。一応コードにコメントは書いてあるので、それを見ながらやっていってください。
本当は、去年の文化祭で作ったゲームの解説をやりたかったのですが、 量が多いのと、流れをつかむだけなら、簡単なゲームを作りながらやったほうがいいのではないかと思ったので、 今回はそうします。
もちろん、OpenGLのゲームの実装の方法はいろいろあるわけで、今回紹介する方法が一番いいというわけではありません。 ほんの一例と捉えてください。 どんなゲームを作るかによってだいぶかわったりもしますし。 ある程度分かってきたら自分で考えてみると楽しいと思いますよ。
この講座を読むにあたって、予備知識としては、C/C++の知識がいります。 しかし、ここではC++はクラスの機能くらいしか使わないので、C言語ができればほぼ問題ないです。 そもそも僕がこのゲーム作りに取りかかったときは、C言語の知識しか持っていませんでした。 C++とOpenGLは、作りながら習得していった感じで、あまり深いことはしてないので、C言語さえ完璧ならいけるとおもいます。 分からない場合は調べながら進めていくといいでしょう。
参考サイトの紹介
GLUTによる「手抜き」OpenGL入門
OpenGLの入門サイトです。ここから読み始めるといいでしょう。
ここの内容をひと通り読み終えたら、下のゲームのコードを読むことができると思います。
OpenGL入門
詳しいです。僕はわかないことが出てきたらよくここで調べていました。
OpenGL de プログラミング
サンプルコードがたくさんあります。
Project Asura
いろいろなことをやっています。高度なエフェクトとかも。
Xファイル読み込みの実装の時にも参考にさせてもらいました。
ゲームプログラマーを目指すひと
Xファイル読み込みの実装の時に参考にさせてもらいました。
OpenGLプログラミングメモ
現在も更新中。僕はほとんど見なかったのですが、だいぶ参考になると思います。
ゲームつくろー!
いろいろ詳しいです。衝突判定はここを参考にしました。
OpenGLと行列について
OpenGLをやってると目にする「行列」や、OpenGLの内部処理に興味を持ったら見てください。
コンパイルできる環境の用意
OpenGLのゲームを作るために必要なものを揃えましょう。
必要なもの(下のサンプルゲームを動かすだけなら最初の2つだけでOK)
- g++ ・・・ C++のコンパイラ。
- GLUT ・・・ ウィンドウの表示。OpenGLの補助機能。今回は互換性のあるfreeglutを使う。
- ALUT ・・・ サウンド再生。BGMの再生用。
Ubuntuにインストール
端末を開いて、以下のコマンドを入力してください。
$ sudo apt-get install freeglut3 freeglut3-dev g++
これで下で紹介するサンプルゲームは動きますが、「SKSunshine」を動かしたい場合は、さらにOpenALのインストールが必要です。端末で続けて以下のコマンドを実行します。
$ sudo apt-get install libalut-dev
Windowsにインストール
MinGWのインストール
WindowsではMinGWを使ってコンパイルしたいと思うので、まずそれをインストールしてください。 MinGWは、フリーのコンパイラであるGCCを、Windowsアプリケーションの開発のために利用できる。(Wikipedia)とあります。GCCはUbuntuに標準で含まれているコンパイラです。 要は、WindowsでもUbuntuと同じように開発できるようにしましょう、ということです。
参考サイト http://yoshiiz.blog129.fc2.com/blog-entry-383.html
インストール手順
-
MinGWのサイトでインストーラーを入手
http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/
中程にある「Looking for the latest version?」の横にあるリンクからダウンロードページへ行ってください。2013/05/12時点では「Download mingw-get-inst-20120426.exe(662.7kB)」というリンクになっています。 -
インストーラーを起動。
ダウンロードした実行ファイルを起動するとこんな感じです。
-
NEXTを押しまくる
Welcome to The MinGW-Get Setup Wizard
↓ NEXT
Administrator Install
↓ NEXT
Repository Catalogues
パッケージを最新版のにするか聞かれるが、最新のインストーラーなら必要ないのでそのままにしておく。↓ NEXT
License Agreement
「I accept the agreement」を選択する。↓ NEXT
Select Destination Location
MinGWのインストール先フォルダを聞かれる。初期設定でいいと思います。 (1.9GB以上の空き領域が必要だそうです)↓ NEXT
Select Start Menu Folder
スタートメニューに指定した名前のフォルダを作ります。 そこへ「MinGW Shell」へのリンクが作られます。 下のチェックボックスにチェックをいれると、フォルダを作りません。↓ NEXT
Select Components
「C++ Compiler」「MSYS Basic System」「MinGW Developer ToolKit」の3つにチェックをいれます。 ちなみにここで選択しなかったものも後でmingw-getコマンドで追加できます。↓ NEXT
Ready to Install
↓ NEXT
黒い画面が出ますが、怖がらずに見守りましょう。
↓
Completing the MinGW-Get Setup Wizard
↓ Finish
終わり。最後のチェックをいれてると、黒い画面に表示されてた内容がテキストエディタで開かれます。
-
環境変数の設定
しなくても大丈夫ですが、設定すると、コマンドプロンプトからMSYSと同じコマンドが使えたり、DLLを実行ファイルと同じフォルダに入れておかなくても、C:\MinGW\bin等へ入れておけばいいようになります。
システムのプロパティ→「詳細設定」タブ→「環境変数」ボタン から設定できます。環境変数「PATH」の最後に「;C:\MinGW\bin;C:\MinGW\msys\1.0\bin」を追加します。
-
実行できるか確認
スタートメニューの「MinGW」→ 「MinGW Shell」 でMSYSが起動すればOK。
fleeglutのインストール
以下のページからバイナリファイルをダウンロードしてきましょう。
http://www.transmissionzero.co.uk/software/freeglut-devel/
「freeglut 2.8.1 MinGW Package」のとこの「Download freeglut 2.8.1-1 for MinGW」のリンクをクリックするとダウンロードできます。 バージョン番号は変わっているかもしれません。
展開したあと、中身の「bin」「lib」「include」をC:\MinGW\以下へコピーしてください。 このとき各フォルダの中の「x64」フォルダは、コピーしないでください。 (僕の環境は64bitでしたが、うまく動かなかったんで、今回はどの環境でも「x64」フォルダの中身は使わないことにしましょう。)
これでfreeglutのインストールは完了です。
ここまでで、下に載せたサンプルゲームは動きます。
その他のインストール
これで下で紹介するサンプルゲームは動きますが、「SKSunshine」を動かしたい場合は、さらにOpenALとGLEWのインストールが必要です。
OpenALのインストール
参考サイト http://achapi2718.blogspot.jp/2013/02/c-openal-windowsxp-mingw.html
まずは、以下のサイトから必要なものをダウンロードします。
http://connect.creativelabs.com/openal/Downloads/Forms/AllItems.aspx
「OpenAL11CoreSDK」と「ALUT」フォルダ中の「freealut-1.1.0-bin」をダウンロードして解凍してください。
まず、「freealut-1.1.0-bin」の中にある、
include\ 以下を C:\MinGW\include\ へ、
lib\alut.lib を C:\MinGW\lib\ へ、
lib\alut.dll を C:\MinGW\bin\ へ、
それぞれコピーしてください。
次に、「OpenAL11CoreSDK」の中のインストーラーを実行してください。 基本的に全部標準のままでいいと思います。
最後に聞かれる、「Do you want to launch the OpenAL redist installer?」 というのは、「oalinst.exe」を実行するかどうかということです。 yesにして実行しておかないとゲームは動きません。
noにしても、あとでC:\Program Files\OpenAL 1.1 SDK\redistにある「oalinst.exe」を実行すれば動きます。 または上記のサイトからとってきてもOKです。 別のPCでただ動かしたいだけならこの「oalinst.exe」を実行してインストールしましょう。
その後、C:\Program Files\OpenAL 1.1 SDK の中の、
include\ 以下を MinGW\include\AL\ へ、
libs\Win32\OpenAL32.lib を MinGW\lib\ へ、
それぞれコピーしてください。
これでOpenALのインストールは終わりです。
GLEWのインストール
続けてGLEWも入れておきましょう。GLEWはUbuntuではいりませんが、WindowsではOpenGLの拡張機能を使うために必要です。
から、「Source」のとこの、「ZIP」をダウンロードして展開してください。
MSYSから以下のように打ってビルドします。展開したフォルダのアドレスは”"を”/”に変え、ドライブ名”C:”を”/c”に変えてください。
$ cd (展開したフォルダのアドレス)
$ make
そのご、そのフォルダの「lib」以下にできる拡張子「.a」のファイルを「C:\MinGW\lib\」以下にコピー、拡張子「.dll」のファイルを「C:\MinGW\bin\」へコピーしてください。 そして、「include」の中身をまるごと、「C:\MinGW\include\」へコピーしてください。
これでインストールは完了です。
簡単なゲーム
ソースコードはここにおいておきます。
OpenGLGame
詳しい解説はできませんが、根気よくやれば読めるはずです。
とりあえず動かしてみよう
まずは、上に載せたリンク先で、ソースコードをダウンロードします。 「OpenGLをつかった簡単なゲーム」と書かれたとこの下の「ZIP」をクリックすればダウンロードできます。
Ubuntuで動かす
端末を開いて、先程ダウンロードしたZIPを展開したディレクトリに移り、以下のコマンドを実行します。
$ make
$ ./a.out
これでゲームが起動すれば成功です。
Windowsで動かす
展開したものを「C:\MinGW\msys\1.0\home(ユーザー名)\」へ移します。 フォルダ名は「OpenGLGame」に改名してください。 MSYSを起動し、以下のコマンドを入力します。
$ cd OpenGLGame
$ make win
$ a.exe
これでゲームが起動すれば成功です。
ちなみに、操作方法は以下のとおりです。
w : 前進
s : 後退
a : 左回転
d : 右回転
スペースキー : ジャンプ
時間内にどれだけ多くの赤い箱をとれるかというゲームです。
ソースの読み進め方
tagを使って追う
図の赤い四角で囲まれたとこを順にクリックしていきます。タグ一覧が表示されるので、読みたいタグをクリックしてください。すると、そのときのリポジトリに変わります。
特定のtagのときのソースをダウンロードできます。
commitを追う
図の赤い四角で囲まれたとこをクリックします。
commit一覧が表示されます。今黄色くなっているコミットでいうと、「Makefile追記」または「fid48685f9」をクリックすると、前回のコミットとの差分が表示できます。 赤い四角で囲まれたとこをクリックすると、そのときのソース全体が表示できます。
OpenGLは、機能としてはほぼ「ポリゴンを表示する」しかないので、モデルファイルを読み込むことや、物理運動をさせることなどは、すべて自分で実装しなければなりません。そこが大変で楽しいところです。 ぜひ、いい3Dゲームを完成させてください。
blog comments powered by Disqus