09:30:42)追加された行はこの色です。削除された行はこの色です。[#sdeef366]企業や研究でのプログラム開発では、開発の効率化やバグ等を減らすため~同じような処理は関数等にまとめて、ライブラリ化する事が良く行われます。~そこで今回はゲーム開発を題材にライブラリ開発の意義や方法について学びます。Engineを使用して、~ライブラリの使用と開発の両方を経験する事によって、使いやすいライブラリや~開発やメンテナンスしやすいライブラリはどのようなものかを実際に作る事で考えてもらいます。スクリプトによりODEの解凍、コンパイル、インストールと今回の課題のサンプルプログラムのコンパイルとインストールが行われます。Linuxにて動作確認しています。OSXや最新のlinuxで行いたい場合は以下のファイルをダウンロードしてインストールして下さい。スクリプトによりODEの解凍、コンパイル、インストールと今回の課題のサンプルプログラムのコンパイルとインストールが行われます。ODEの最新版を使っています。Linuxの場合と同じコマンドを実行しますが、~ODEをコンパイルするためには予めMacPortsやHomeBrew等を用いて、~freeglut等のOpenGL関係のライブラリをインストールしておく必要があります。[#x417a3a3]インストールしたライブラリ等の解説は次のページに詳しく書いてあります。./shooting_gameサンプルプログラムでは、敵(enemy_agent)がランダムに動いており、~弾を撃って当てるとhit_pointが減少し、0になると消滅します。Clearが表示され、ゲームが終了されます。Overが表示され、ゲームが終了されます。[#l7537f9f]-全てのファイルをエディタで見てみよう。application/shooting_gameディレクトリ内にはゲームアプリケーションのソースコードが入っています。~ゲームアプリケーションはライブラリを使用して具体的なゲームを構成します。src/gamelibにはライブラリのソースコードが入っています。アプリケーションとライブラリのディレクトリ内にあるファイルを全てエディタで開いて、~中身を確認してください。main.cに、drawstuffによるシミュレーション管理のための構造体や関数が書かれており。shooting_game.cに、実際のゲームのロジックが書かれています。start()という関数があり、ゲーム環境の初期化を行っています。~そこにマップを構成するための関数が書かれているので、~関数を修正してマップを変更してみましょう。~最初のマップは3x3ですが、ライブラリのソースを変更するともっと大きなマップにする事は可能です。~何を変更すれば良いか、ソースコードを読んで調べてみよう。基本的な処理を行う関数を作成し、必要に応じて引数や組み合わせを変更して、~様々なアプリケーションを作成する事を可能にするのがライブラリ開発の醍醐味です。~マップの変更はその1つなので、まず始めに挑戦してみてください。[#hc80dada]ライブラリを書き換えゲームシステムを完成させる。~下記項目を全て行う。~自由度の高い課題は自分なりのアイディアを実現して良いですが、~思いつかなければ(例)の一つを実現して下さい。Agentを作成enemy_agent.cとenemy_agent.hをコピーして新しいファイルを作成し、書き替える。Agentに向かって撃つ。BossAgentをEnemyAgentのファイル(enemy_agent.c,enemy_agent.h)を参考に作成する。--ゲームの終了条件の変更-新たなマップ要素を追加する~--例)坂道--例)ジャンプでしか移動できない段差--例)移動しずらいデコボコがある。Pointが減少する毒沼-同じゲームライブラリを使用して複数のステージを作成する.~ディレクトリを改めて作成して(shooting_gameディレクトリを丸のままshooting_game2等とコピーして)、その下で開発する。--例)マップが異なっている.--例)敵の種類(数)が違う.--例)難易度が変わる。工夫して、自分なりのゲームシステムを持つライブラリとアプリケーションを作成して下さい。~提出時に全員の前で、作成したゲームを見せながらプレゼンしてもらいます。~独創的なシステムやキャラがあるほど評価を高くします。~-マウスやゲームパッドを使って操作できるようにする。Agentの場所によって動きを変える。Agentにトラップを仕掛ける。Point等の状況によって動きや色、形を変える、等...-一つのステージをクリアしたら、別のステージを遷移できるようにする。--例)同一のバイナリファイルでステージを作り直す。--例)スクリプトでバイナリを複数作成してステージを切り替える。Agentを待ち構えている坂がある。[#mef4a474]サンプルコードにバグがある可能性や、課題が分かりづらい等の問題点がある可能性もあります。~何か気がついた事があれば担当の遠藤やTAに連絡をお願いします。課題の達成方法等にあまり細かいルールは設定しません。~ライブラリを全面的に書き換えて、C++にしてもらっても構いません。~サンプルより良いゲームライブラリにしてくれれば、1つ1つの課題をクリアするよりも良い評価にします。~その代わりしっかり動く様にして来てください。