「3days ゲームクライアント向け開発型インターンシップONLINE」参加後のまとめ

#はじめに
こんにちは、現在大学4年のおかたくです。今回チーム開発の経験を積む目的と、ゲーム業界の現場の雰囲気を社員さんから感じ取るという2つの目的で、CyberAgent主催の「3days ゲームクライアント向け開発型インターンシップONLINE」に参加し、チームで3日間ゲーム開発をしました。まずは、最終的に何を開発したのかを紹介し、次に三日間どのような内容で進んでいって、何を感じたのかを書いていきたいと思います。是非最後まで読んでいってください！
では、スタート！

#内容
#####タイトル
Matrix(マトリックス)
#####仕様
cyber空間が世界観の、**FPS3Dシューティングゲーム×マトリックス**のゲーム。
生存時間と破壊スコアにより最終スコアが決まる。ログイン機能とランキング機能も付いている。
#####特徴
　映画マトリックスでおなじみ、時間を操ることで弾を避ける要素をシューティングゲームに取り入れた。マトリックスを使うと、世界の時間が遅くなっているかのようにあらゆるものがスローモーションになります。プレイヤーはこれを利用して敵の弾を確実に撃ち落とすことが出来ます。マトリックス可能時間は右下のゲージによって確認でき、途中飛んでくる水色のオブジェクトを撃ち落とすと回復します。また、**スコアは近くで撃ち落とせば高くなる**という仕様にしていて、リスクとポイントのバランスをとりつつプレイする必要があります。
#####実際のプレイ画面

![スクリーンショット 2021-03-16 214241.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671703/4359b6c4-98c1-baab-97cc-0fba696893b0.jpeg)
cyber空間の世界観で統一していますね。
![スクリーンショット 2021-03-16 214031.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671703/c41ec378-9c89-7c93-958f-68c1cdbcb067.jpeg)
近くで撃ち落とせば高得点！
![スクリーンショット 2021-03-16 214105.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671703/87b27900-dd68-cf56-153d-6b06eceb76fd.jpeg)
マトリックスゲージを貯めておくことも重要！
#進行
##開発2日前
###説明
事前にチーム分けがされ、クライアントサイド4名、サーバーサイド1名の5人チームが決まりました。開始2日前に自己紹介がてらzoomで顔合わせをし、お互いの得意なことや過去の作品をシェアしました。また、この日に今回の成果物のテーマが全体に発表され、3Dシューティングゲームを作る方針で各自次の日までに案だしをしました。案出しの共有は**miro**というサイトを使いました。これを知れただけでも参加した意味があるほど神サービスなのでチーム開発している方は是非触ってみて下さい！
https://miro.com/app/dashboard/
![スクリーンショット 2021-03-16 192621.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671703/6f1f2184-939f-26ac-53b2-68970a324944.jpeg)

###振り返り
　短期間のチーム開発で知っている機能やサービスを導入するのは、チームの学習コストの面から否定派でしたが、開発を終えて言えることは、**できるやつはどんどん導入していった方がいいです。**また、自分が機能やサービスの導入を提案する立場であれば、それについてはしっかりと理解して責任をもって教えられる必要があり、それらの一つ一つの責任がリーダー性というものに繋がってくると感じました。
　自己紹介や雑談が一通り終わり、案出しをする必要があるという話の流れになったところで、メンバーの一人が、**「今日はこれでいったん終わって明日また各自案出ししたものを踏まえて話し合おう」**と言ってくれました。自分は案出しをその場でする気満々でしたが、これを言われた瞬間にそっちの方がいいと思いました。**”集中のON/OFF”や、”チームでやること/各自でやることのON/OFF”といった切り替えが自分にはなかったと感じました。**

##開発1日前
###説明
 各自案出ししたものを一つに絞り、開発するにあたり必要なタスクを優先順位別で列挙していき、担当を決めました。ちなみに自分はインゲームの全般を担当させていただきました。全体の話し合いが終わった後は、インゲーム担当のもう一人と細かい仕様の共有と、どうやって作っていくかを軽く話してこの日は終わりました。
![スクリーンショット 2021-03-16 191811.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671703/b8760842-e4e2-356c-f1cd-5a59fe61881b.jpeg)
![スクリーンショット 2021-03-16 195739.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671703/673a0387-f42c-9169-9208-de46ad716806.jpeg)


###振り返り
　この日で準備が終わっているのがベストだとすれば、自分のチームのスタートはベストとは言えなかったと思います。ゲームの細かい仕様を全体で深く考えられていなかったのと、Git周りの最低限の知識やチーム開発をする上での約束事を全員が十分に理解していれば、もっと時間をこだわりたいところに使えて、ゲーム全体の完成度も上がったのかなと思います。とはいえ、メンバーの一人がGithubのissueにチーム開発をする上での約束事をまとめてくれたので、とても助かりました（ありがとう）。
　役割分担はその場ではとてもスムーズに決まり、各々やりたいことがやれてよかったと思っていましたが、後から話を聞くとチームのことを考えたうえでの選択をしてくれたメンバーもいたそうで、頭が上がりません。**チーム開発はチーム全体の効率を上げるための選択が常にできる人が重宝される**ということを身に染みて感じました。
##開発1日目
###説明
　ついに開発がスタートしました。午前中がsourcetree周りの環境構築にみんな時間をとられ、本格的に開発し始めたのは午後からになってしまいました。その後の開発は、前日に細かい仕様の共有が出来ていたためスムーズに進めることができました。
###振り返り
　午前中やったことを前日に済ませておくべきでした。一人ひとりの責任感がまだ弱かったと思います。調べたら分かることを人に聞くことは人の時間を奪っていることなので、自分で解決する力は絶対的に必要と感じました。逆に仕様等は積極的に意見交換や相談をする必要があると思いました。
##開発2日目
###説明
　2日目は中間発表に向けてモックアップを昼までに完成させました。個人面談の際に困っていることをしっかり伝えられたため、欲しかった回答をメンターさんから頂くことができ、それ以降の開発を効率よく進めることが出来ました。夜にメンバーに進捗報告をしたところ、良い評価をもらえることが出来ました。メンターさんのアドバイスを持ち帰ってみんなでそれを解決する案出しを手伝ってもらいました。この機会を作れたことはよかったと思います。夜以降は、作ってもらったUIの画像を踏まえてSEやパーティクルを探して一部編集し、その都度フロントエンドを担当しているメンバーにfbをもらいながらビジュアルやサウンドを決めていきました。（結果的にここがとても評価された！）
![スクリーンショット 2021-03-16 210255.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671703/f551f112-c131-fe6d-7e7b-9bf3406feec1.jpeg)

###振り返り
　午前中インゲームの二人の中で、**”チームでやること/各自でやること”をもう少し分けられたら効率よく開発できた**と思います。インゲームチームは自分たちのタスクに追われすぎているがあまり、別のメンバー達に目を向けてあげれられなかったことが反省点です。困っていることや、仕様の共有をする機会をもう少し多く作る必要があったと思います。
　お昼の個人面談が自分の中で重要で、そこから **"ただゲームっぽいゲームを作る" から "楽しんでもらえるゲームを作る"** に頭を持って行けた気がします（いざ開発に集中するとわかっていてもユーザー目線を忘れちゃう）。しかし、ここに使う時間をもっと確保したかったです。また、**ストレスポイントを探すおもてなしの心が無かった**のも反省点です。それが気付いたら時間が過ぎているゲームの作り方だと感じました。
　テストプレイもほとんどしてもらえず、インゲームの二人の肌間でレベルデザインを済ませてしまったのが反省点です。**次回があれば、テストプレイの時間を最初に決めてしまい、それまでの状態でテストプレイをしてもらう機会を作ろうと思います。**

##開発3日目（最終日）
###説明
　ついに最終日です。様々なシーンの遷移とサーバーとのつなぎ込みを通しで確認できていない状態でこの日を迎えたのは正直不安でしたが、結果的にはなんとか時間ギリギリに通して完成させることが出来ました。担当しているインゲームに関しては、最終調整と、前後のシーンとの遷移確認や、ゲーム内で使っている変数の共有（スコアやマウス感度）をしました。
###振り返り
　インゲームの完成度もまだまだ高められる状態だったので悔しさが残りました。レベルデザインもfbをほぼもらえていない状態だったので、もったいなかったなと思います。サーバーサイドはまかせっきりでしたが、しっかりと問題なく動かせていて頼もしかったです。
　最終発表のfbとして、カメラの自由度が高すぎるというアドバイスを頂きました。自分としては自由度は可能なだけ広げることで、不快になるユーザー数が減るという考え方をしていましたが、**無駄な機能は削ぎ落とせ**という考え方を教えて頂きました。

#まとめ
　
　**楽しかった。**時間を忘れて打ち込めた3日間でした。開発時間が終了してメンバーが作ったゲームプレイしている間もうまくいかなかったところを修正している自分に驚きました。ただ反省点も多く、自分の実力の無さも痛感しました。チーム開発でいうと、**チームへのホスピタリティーが全体の完成度に繋がる**という言葉をメンターさんから頂き、それの意味を経験を通して理解出来ました。**ただ、確実に成長できた3日間と言えます。**もしこれを見て頂いている中にゲーム業界志望の学生の方がいれば、「3days ゲームクライアント向け開発型インターンシップONLINE」等ハッカソンへの参加を全力でをお勧めします。デメリットはありません。是非！

##追記
一緒に開発をしたメンバーも記事を書いているようなので良ければ飛んで見に行ってください！
https://qiita.com/inproduction36/items/b16c4944ab64a24e3d3c
https://konichallengelog.com/ca_proto/
https://note.com/julien_12/n/ne8da5ded54b7#I7T6n