2016 ソフトウェア設計及び演習用の班Wiki

16::gr07::発表

プロジェクト名

岩のがんちゃん

プロジェクト説明

概要

がんちゃんが主人公の横スクロールアクションゲーム
理工学部の各学科にちなんだ力を使って、ステージに散りばめられた単位を拾いながらゴールを目指す

ステージ構成

易しいコースと難しいコースの2つ
大きさはそれぞれ高さ480*幅3600(px)

がんちゃんの特殊能力

  • 電電
    電撃を放つ。
  • 機械
    歯車を投げて攻撃する。
  • 環境
    足場のオブジェクトを作る。

操作方法

キーボードに対応

ジャンプ Aキー
特殊能力1(電電) Sキー
特殊能力2(機械) Dキー
特殊能力3(建設) Fキー
移動 矢印キー
タイトルへ ESCキー

がんちゃんの操作関連

  • 移動に慣性が適用される
  • 一撃でも敵の攻撃を食らうとゲームオーバー(留年)
  • 自機の攻撃は、電撃のほうが威力が高く、敵を一撃で倒せる(歯車は3撃必要)。

ものと操作の洗い出し

ヘッダーファイル

プログラムの流れ

program.png

プロトタイププログラム

タイトル画面

title.jpg
『ゲーム』を選択すると、ゲームモード(Easy、Hard、通信)を選択できる
ゲームの難易度選択では選んでいる難易度のハイスコアを表示
『Windowモード』を選択すると、WindowモードかFull Screernモードかを選択できる
各種ボタンを選択後、Back SpaceキーでMENU画面に戻る
セレクトのアイコンをがんちゃんにしました

メイン画面

実装している操作

・がんちゃんの移動(それに伴う画面スクロール) ・がんちゃんの特殊能力使用
→各特殊能力に当たり判定を実装
 →各特殊能力の発生方向は、自機の向いている方向に依存
・地面、敵、単位それぞれに当たり判定を実装
・グラフィックの描画(がんちゃん、敵、単位)
 →敵のグラフィックは位置(地上、空中)で変化
・BGM,SEの実装
 →画面(タイトル、メイン、リザルト(新旧、留年))毎にBGMを変化
 →がんちゃんの行動に合わせて、グラフィックを変化させると同時に、それぞれSEを再生
 ※BGMは佐々木 誠による自作

<電気攻撃時>
eatk.png
<歯車で攻撃時>
matk.png
<ブロック設置時>
block.png

リザルト画面

<クリアしたとき>
result_clear.jpg
<クリアできなかったとき>
result_r.jpg
ゲームをクリアしたかどうかでresult画面を切り替え
結果(留年or進級)・スコア・取得単位数を表示
クリアできなかった場合は結果のみを表示
 スコア=1000-(カウント)+(単位)*100
ハイスコアが出た場合は「Newrecord」と表示

敵側制御プログラム

通信モードを選択したプレイヤーのゲーム画面に出現する敵の動きを制御
通信にはソケット通信を利用し、プレイヤー側と相互にデータの送受信を行う
enemy_controler.png

ソケット通信

winsock2によるソケット通信モジュール
プレイヤー側(サーバ)と敵側(クライアント)間での通信ができるようになった

グラフィック関連

  • がんちゃんイメージ図
    runR.gif runL.gif jumpR.gif jumpL.gif magicR.gif magicL.gif bwalk.gif credit.gif
  • ステージ構成
    Easy
    map_e small.png
    Hard
    map_h small.png
担当

個々人の感想

日山 拓海(班長)

今回の演習では班長という立場だったため、指示を出しつつ、メインプログラマとして多くのモジュールを開発しなければならず大変でした。しかし、班員がみな優秀だったため、すべてのモジュールを完成させることができました。
今回はGLibではなくDxlibraryを用いたため、多少慣れた環境での開発をさせていただきました。しかし、統合時に変数のキャストが異なっていたり、二重インクルードなどの問題が発生したりと思うような進捗が得られないことが多々あり、グループ開発の難しさを感じました。
ともあれ、無事プログラムを完成させることができてよかったです。

佐々木 誠

今回の演習ではステージ構成をメインにがんちゃんや敵のグラフィックの作成,BGMの作成などを担当させていただきました。
メインのステージ構成は480×3600のサイズのマップをCSVファイルにより0を空間,1を敵(5×5),2を地面,3を単位(5×5)として,EasyとHardの2種類の面を作成しました。
ステージHardの難易度をいい感じに難しく設定することが出来ました。
後半はがんちゃんの被弾エフェクトプログラム作りをさせてもらいました。
被弾したとき爆発を一瞬表示させることは出来ましたが爆発のエフェクトを徐々に拡大させたり凝ったエフェクトにできなかったことが心残りです。
ともあれ、無事ステージ構成を完成させることができてよかったです。

槇 翔史

今回の演習ではGlibではなくDXlibraryを使用して行いました。
懇切丁寧に説明して頂いたGLibを一切使わず申し訳ないです。
このようなゲームを作ったのは初めての経験ではなかったのですが、やはり個人での作業と違い、グループプログラミングは統合での問題など、苦労する点も多いと感じました。
また、プログラムの作成に時間がかかってしまったりと、班の皆にも少なからず迷惑をかけてしまったと思います。
班Wikiの編集についても、自分たちのプログラムをわかりやすく簡潔に説明するのは難しいと感じました。 ともあれ、無事プログラムを完成させることができてよかったです。

菊田 真基

今回の演習ではあまり経験することのなかったグループプログラミングの大変さを感じることができました。
通信が必要となるため通信モジュールの完成を待ち、そのモジュールを使用してプレイヤー側と試行錯誤を繰り返した経験は今後の役に立つものだと思いました。
担当した敵側のプログラムでは、実装が必要な機能の検討や操作・表示がわかりやすいように工夫する作業に多くの時間を割きました。
通信モジュールの実装やプログラムの統合の際に生じたエラーは1人で解決することができず、とても苦労したという印象が強いです。
ともあれ、無事プログラムを完成させることができてよかったです。

近藤 一晟

今回の演習ではタイトル画面とリザルト画面の作成・プログラミングを担当しました。
ゲームを実際に作成するのは初めてだったので、画面の作成、プログラミングともに苦労しました。
プログラミングに関しては実力が足りていないこともあり、教わりながらの演習になったのですがプログラミングの知識も身につけることができました。メニュー画面のセレクトアイコンのがんちゃんは、かいいくていいアイデアだったと思います。また統合など、グループプログラミングの難しさも学ぶことができました。
ともあれ、無事プログラムを完成させることができてよかったです。

渡部 雅博

今回の演習では通信プログラムを担当しました。
ソケット通信に関しては全く知識の無い状態からのスタートで、大変苦労しました。
しかし、そのおかげで新しいスキルを身につけることができ、とても良い経験ができたと思います。
また、グループプログラミングの難しさも感じることができました。
特に、プログラムの統合では予期せぬエラーが多発し、うまくいかないことの方が多かったように思います。
ともあれ、無事プログラムを完成させることができてよかったです。


最終更新日:2016/08/10 23:31:12