こんにちは。記事の作成を担当するyuuです。
Ichigojam班のチームの一つとして、私たちはゲームcosmicを作りました。
Ichigojamは、ざっくり言えば15日間でゲームを作ってみようという企画です。今回の第1期製作期間は6/19~7/3になりました。
cosmicを開発したチームは、gomasio、kakuo、kamasaki、kawamoto、moware、yasu、yuuの7人になります。
cosmic
cosmicは、ブロック崩しライクなシューティングゲームです。Javaによって開発されました。
敵機が撃ってくる弾を弾き返し、逆に敵機を墜落させましょう。敵機を倒すとスコア(撃墜数)に加算されていきます。
ただし、敵機を撃ち落とせずに、画面下部まで到達させてしまうと、下の赤いバーが減っていきます。これが無くなると、ゲームオーバーになってしまいます。
ゲームオーバーにならないように敵機を撃ち落としていき、残りカウントが0になるとゲームクリアです。
時折、画面上部に仲間が現れて、アイテムを渡してくれます。
しかし、仲間もたまにポカをやらかして、弱体化してしまうアイテムを渡すこともあります。うまく見極める必要があります。
アイテムは、右から巨大化、縮小化、スピードアップ、スピードダウンです。
上手にアイテムを使って、ゲームを有利に進めましょう。
cosmicはここからダウンロードできます。
開発記
cosmicは7人のチームで、うち1人がドット絵を担当し、残りの6人がプログラマーを担当しました。
6人中5人までが初めてのプログラミング言語によるゲーム開発ということで、その勉強と並行して進めていきました。
開発開始
開発の初めは、アイデア出しを行いました。
その際、ブロック崩しとシューティングという案が出たので、これらをまとめたゲームを作ることになりました。
ここで問題になるのが、6人のプログラマーの割り振りです。筆者はJavaゲーム開発の経験があったため、以下のような割り振りになりました。
シーンなどのメイン処理 | gomasio | |
自機 | kamasaki | |
敵機 | moware | |
弾 | kakuo | |
ステージ | yasu | |
監査・指揮 | yuu |
こうして初日は、仕様の決定と、仕事の割り振りについて話し合って終わりました。
開発初期
開発初期は、担当が各々のプログラムについて設計しました。
そうして完成したプログラムをgitで管理し、監査の役割を負っている筆者はそれを見てコードレビューとともに指示を出していきました。
この時点では各々のプログラム同士の連携は疎であり、ほぼ独立した開発になっています。
開発初期は開発とともに勉強機関でもあったため、一般に進捗は芳しくはありませんでした。しかし、Javaを体系的に学習するのではなく、実際に書きながら必要になった内容を自習と、コードレビューにより教えるという形になったため、ゲーム開発に必要な知識を効率的に得られた模様です。
開発中期
コードレビューと指示によってやや慣れてきたメンバーは、それぞれ独自に仕様の完成と拡充に取り組みました。
時間が取れなかったメンバーも、コードレビューを通して指示を出し、徐々に完成形が見え始めてきました。
開発中期には完成形が見え始めてきたため、各自の担当との連携の指示が出るようになりました。
しかし、連携となると一気に難易度が上がり、なかなか思うように進捗できません。
開発後期
開発後期になると、監査役だった筆者もプログラムに参加しました。
レビューもかねて、各プログラムのリファクタリングを行いつつ、難しかった連携の例を出していきました。これにはgitのブランチという機能が使われています。
また、この時期にドット絵が上がってきて、一気にゲームらしさが増しました。
開発最終日にはできる限りの人数で集まって、最後の進捗を行いました。
直接指示が出せるということもあり、そこで一気に進捗を進め、何とか完成にこぎつけました。
反省
15日でのゲーム開発では、様々な反省点が見つかりました。
最後の進捗会は非常に有意義でしたが、こういった進捗会をあまり設けられませんでした。はじめに集まった際、もっと全員のスケジュールをすり合わせることに重きを置くべきでした。
また、仕様の決定も十全ではなく、その結果各自がやるべきことがやや不明瞭になってしまいました。コードレビューやイシューによってある程度補完できましたが、やはり初めの仕様決定は不十分だったと言わざるを得ません。
加えて、Javaの初めての開発の上、gitというシステムも初めての実践導ということもあり、これらへの慣れも問題になりました。どこかで一度、まとめて教えられる機会を作るべきだったかもしれません。
最後に、メンバー同士のコミュニケーションが疎でした。チームレベルでなく、個々人レベルでもホウレンソウをきっちりと行う必要があったでしょう。
得られたもの
一方で、このゲーム開発で得られたものもあります。
まず何よりも、ゲームが完成したということは大きいでしょう。完成したという事実は、成長につながります。
また、コードレビューが役立ったようです。これがJavaの勉強に役立ちました。
後記
15日のゲーム開発ということで慣れないことも多くありましたが、完成までたどり着いたことで成果としては十分であるように感じます。
短期製作は様々なことを学ぶいい機会です。第2期製作はHack Uというイベントへの参加になりますが、各自今回学んだことを生かせるように祈っています。