チームで作っていたゲームが完成しました

Jul 3, 2019 11:43 GameDev Development

サークルで作っていたゲームが無事完成しました。開発期間は大体1年くらいです。

この記事では開発中苦労したこととか楽しかったことを書いていきたいなあと思います。

どういうゲーム?

ぱぱぷ! というタイトルのパズルゲームです。詳しいことはサークルのブログに書いてあります。ステージ数は50くらいですが、難易度が結構高いのでパズルゲーとか好きな人はぜひ。

ダウンロードも上のページからできます。

チームについて

8人で作っていましたがそのうちの4人がプログラマでした。更に10月頃に1人増えました。しかもその人含めぼく以外は今年入ってきた1年生です。

他の内訳はプランナー1、デザイン1、サウンド2です。デザインの人はしかも大学生活の方が多忙だったので、終始画像が大変だ~って言っていました。その結果いろんな人が作った画像が取り入れられています。中には仮として追加された画像がそのまま正式版まで行ってしまったものも……?

技術的な話

プログラム初心者でもやりやすそうな Unity をチョイスしました。結構UI面が大変で、途中で爆発したのでリファクタリングをしながら UniRx を導入しました。パズルゲームというか、UIをポチポチする感じのゲームとは非常に相性がよいという感じがします。

ぼくたちはそのライブラリを使って MVP(Model - View - Presenter) という思想に則って開発を進めていました。ModelView は互いにそれぞれのことを知らなくて、 Presenter がそこら辺をいい感じに取りまとめるという感じの奴です。この考えのもとだとボタンのViewに割り振る責務は見た目の変更とイベントの発行になるんですけど、 UniRx だとイベント周りを非常に簡潔に記述することができて最高でした。

最初のうちはUIの方への適用だけだったのですが、メソッドチェーンで簡単に複雑な処理が書けたのでだんだんとオブジェクトの方にも導入されていきました。簡単なものだとUpdateをストリーム化して意味でブロックを分けたり、コライダーの衝突をストリーム化してほしいオブジェクトとの衝突だけをイベントとして発行したりみたいな使い方をしていました。

また複雑なところで言うと、boolが流れてくるストリームで流れてくる値が2f安定したらみたいな処理等もこれを使って書いています。何も考えなくて書けるので最高です。導入コストに見合う性能がありました。

プログラムの進め方の話

うちのチームのプログラマーは4人(後期から5人)でしたが、そのうちの3人(4人)が1年生でした。Unityでの開発も初めてです。

プロジェクトを完成させるだけならぼくが一通り書いた後にオブジェクトとかの個別の処理を任せればよかったのですが、今回は基盤部分からガッツリ書いてもらいました。基盤といってもファイルの読み込みとかそこら辺はぼくが用意したのですが、ゲーム画面の構成などは1年生主体で書いてもらいました。

なんでかというと、一回自分でスパゲッティコードを生成しないとデザインパターンや設計といったところに目がいかないと思ったから、というのと、コードレビューやリファクタリングを通して良い例と悪い例を同時に例示できるので効率が良さそうだなって思ったからです。

実際、この狙いはうまくいって、最終的にはちゃんと整ったコードがPRで飛んでくるようになりました。多分、初期の方のコードを今本人に見せたら悶絶するんじゃないかな? って感じがします。本当に最初の頃はやばかったです(想定通りなのでいいんですが)

最初のうちはPRをずんずん手直しさせるのも違うかなあって思って、すぐ直せそうな細かいスコープの指摘だけをレビューでしていました。従って全体像は見て見ぬふりをしていたのですが、この方式で進めていたら開発2カ月あたりでもう読むのが厳しすぎるコードになりました。長期でチーム制作をするなら初心者同士のチームはやめたほうがいいと強く思います。

そうなってくると当然機能実装が厳しくなってくるので、リファクタリング会というのを開いてオフラインで設計の話をしたりしつつ、なるべく元のコードを維持しながら可読性を上げていく作業をしました。大体ここら辺から1年生のコードがより良くなってきたなあという感じがします。

それ以降は割と普通な感じで進行していきました。みんな進捗をしっかりしてくれたので終始和やかなムードで制作できたと思います。個人的には所属していて一番楽しかったプロジェクトでした。

この制作が楽しかった理由

色々あると思うのですが、個人的に思っているのはここら辺です。

  • 作っているゲーム自体が面白く、完成させるモチベが高かった
  • 1年生がすごいスピードで成長してくれた
  • 毎週集会があり、顔を合わせたり通話する環境があった
    • しかもその雰囲気が和気藹々としていて最高だった
  • 部内SNSで交流が盛んだった

この1年間の癒しみたいなプロジェクトでした。作業量自体は結構あったのですが、そんなのどうでもよくなるくらいここに入ってよかったなあってなっています。

ゲームとして面白いというのはちょっぴり主観的ですが、実際GAME^3というゲーム展示イベントで30チームくらい展示している中、全体4位が取れたりしました。良くできていると思います。後1票もらえれば2位だったんですよね。

なんかまとまりに欠ける文章になってしまいましたが、残しておきたいことはこんな感じですね。ぜひ遊んでみてください!!!