Advanced Programing 2012?

目次

第5回以降の趣旨

企業や研究でのプログラム開発では、開発の効率化やバグ等を減らすため
同じような処理は関数等にまとめて、ライブラリ化する事が良く行われます。
そこで今回はゲーム開発を題材にライブラリ開発の意義や方法について学びます。

ライブラリを開発するのにも別のライブラリを使用することは良く行われます.
今回の課題では、3次元物理シミュレータとしてOpen Dynamics Engineを使用して、
ライブラリの使用と開発の両方を経験する事によって、使いやすいライブラリや
開発やメンテナンスしやすいライブラリはどのようなものかを実際に作る事で考えてもらいます。

最終目標

楽しいゲームを開発しやすくするゲームライブラリの開発

サンプルコードのインストール

適当なディレクトリに移動して,以下のコマンドを実行します.

$ wget jeap-res.ams.eng.osaka-u.ac.jp/~hiroki/AdvancedPrograming2012_gamelib_ode-0.11.1_20120516.tar.gz
$ tar zxvf AdvancedPrograming2012_gamelib_ode-0.11.1_20120516.tar.gz
$ cd AdvancedPrograming2012_gamelib_ode-0.11.1_20120516
$ ./MAKE

./MAKE スクリプトによりODEの解凍、コンパイル、インストールと 今回の課題のサンプルプログラムのコンパイルとインストールが行われます。
サンプルプログラム(演習室 VineLinux? 用)へのリンク http://jeap-res.ams.eng.osaka-u.ac.jp/~hiroki/AdvancedPrograming2012_gamelib_ode-0.11.1_20120516.tar.gz

Mac OSXや最新のlinuxで行いたい場合は以下のファイルをダウンロードしてください。

$ wget jeap-res.ams.eng.osaka-u.ac.jp/~hiroki/AdvancedPrograming2012_gamelib_ode-0.12_20120515.tar.gz 

ODEの最新版を使っています。 上記と同じコマンドを実行しますが、ODEをコンパイルするためには予めMacPorts?やyum,apt-get等を用いて、
freeglut等のOpenGL関係のライブラリをインストールしておく必要があります。 (最新のODEは演習室の環境でコンパイルできず、古いODEはOSXで動作しません)
サンプルプログラム(演習室 MacOS X 用)へのリンク http://jeap-res.ams.eng.osaka-u.ac.jp/~hiroki/AdvancedPrograming2012_gamelib_ode-0.12_20120515.tar.gz

Open Dynamics Engine とゲームのサンプルプログラム

ODE付属のデモプログラムを動かしてみよう

以下のディレクトリにはODEが解凍されています

src/ode-0.11.1 # または src/ode-0.12
$ cd src/ode-0.11.1/ode/demo/ # または、src/ode-0.12/ode/demo/
$ ./demo_crash

サンプルプログラムを動かしてみよう

$ cd bin
$ ./exec.sh ./shooting_game
$ cd application/shooting_game
$ ./exec.sh ./shooting_game

サンプルプログラムの構造を理解しよう

application/shooting_game_c-lang

ディレクトリ内にはゲームアプリケーションのソースコードが入っています。
ゲームアプリケーションはライブラリを使用して具体的なゲームを構成します。

src/gamelib

にはライブラリのソースコードが入っています。

アプリケーションとライブラリのディレクトリ内にあるファイルを全てエディタで開いて、
中身を確認してください。

main.c

に、drawstuffによるシミュレーション管理のための構造体や関数が書かれており。

shooting_game.c

に、実際のゲームのロジックが書かれています。

サンプルを改造してみよう

shoogint_game.c

には

start()

という関数があり、ゲーム環境の初期化を行っています。
そこにマップを構成するための関数が書かれているので、
関数を修正してマップを変更してみましょう。
最初のマップは3x3だが、ライブラリのソースを変更するともっと大きなマップにする事は可能です。
何を変更すれば良いか、ソースコードを読んで調べてみよう。

基本的な処理を行う関数を作成し、必要に応じて引数や組み合わせを変更して、
様々なアプリケーションを作成する事を可能にするのがライブラリ開発の醍醐味です。
マップの変更はその1つなので、まず始めに挑戦してみてください。

課題

物理シミュレータ(ODE)を使ったシューティングゲームを作ろう(5月30日までの課題)

ライブラリを書き換えゲームシステムを完成させる

シューティングゲームツクールを作ろう(6月13日までの発展的課題)

最終目標へ近づく!:「楽しいゲームを作るためのゲームライブラリの開発」

注意事項

今回の課題は、今年度が初めてになります。
サンプルコードにバグがある可能性や、課題が分かりづらい等の問題点があると思います。
何か気がついた事があれば担当の森やTAに連絡をお願いします。

課題の達成方法等にあまり細かいルールは設定しません。
ライブラリを全面的に書き換えて、C++にしてもらっても構いません。
サンプルより良いゲームライブラリにしてくれれば、1つ1つの課題をクリアするよりも良い評価にします。
その代わりしっかり動く様にして来てください。

提出方法

評価方法

参考になる情報

質問がある場合


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS