先日サイバーエージェントさんのプロトスプリントリーグに参加してきましたので、その経験をまとめていきたいと思います。
プロトスプリントリーグとは?
「3日間でお題に沿ったゲームをチームで開発し、ゲームとしての総合的な完成度の高さを競う」というものです。※公式HPより
3人1組、計5チームで、各チームに2人メンターさんがサポートについてくれるといった形でした。
キックオフから事前準備期間(2/4~2/10)
キックオフの中でチームメンバーとテーマの発表がありました。 テーマは...
「遠隔×〇〇」
でした。
うーん...難しい...
〇〇の部分は自由に決められるので実質自由テーマですね。
キックオフの後にチームごとにdiscordに集まり顔合わせ&ミーティングを行いました。初めて会う人との開発は初めてだったので緊張していましたが、チームメンバーの人たちはかなり話しやすい人たちで最終日まで本当に楽しく開発ができました!! その日はアイデア出しを行いましたが、決めきらなかったのでそれぞれで一回考えようということになりました。
準備期間中はキックオフを含めると4回集まり、アイデアの決定、ゲームの詳細な内容や仕様の決定、タスク分担、素材選定、素材作成、クラス設計、UI設計などを行いました。
不幸なことに準備期間がもろに期末試験にかぶっており、ミーティングと試験勉強を同時進行で進めなければならないというかなり鬼畜スケジュールでした...
テーマですが、私のチームは
「遠隔×宇宙」
と決めました。
具体的には
「主人公の衛星が故障してしまって使える機能は電波の発射のみ」
「自分の付近にある探査機をハッキングしていき、ネットワークを構築していく。ネットワークを広げていきながら、地球に電波を発射できる巨大通信機までのネットワークを作り、地球に救難信号を送る」
というものになりました。
↓私が描いた雑なイメージ図
3Dゲームで一人称のプレイヤーの挙動を作ったことがあるのが私だけだったので、プレイヤーの挙動、UI等を中心に担当になりました。
事前準備ではクラス設計、画面設計↓やメーター等の素材作りを行いました。
1日目(2/11)
プレイヤーのInput周りと基本挙動を完成させました。まず、操作ですが宇宙ということで360°ぐるぐるどの方向も見れていまいます。これではプレイヤーは操作しづらいですし酔ってしまいます。そこで上下方向に回転制限をつけ、横回転はワールド座標、縦回転はローカル座標にすることで違和感のない挙動にしました。 その後、衛星に接続するためにRayを飛ばして接続先の衛星の情報を取得する部分を作りました。
2日目(2/12)
プレイヤーの移動部分とUIを大体完成させました。電波を発射して情報取得後
、接続、そしてカメラ移動という部分を作成しました。UIは画面左右のメーターや画面下部の文字列をプレイヤーステータスによって更新するようにしました。
この辺から他のメンバーの担当部分とのやり取りをする部分が増えてきますが、常に通話を繋ぎ仕様の確認をこまめに行い大きな問題が発生することはなかったです。
この日のお昼に中間発表があり、その際にほかチームのメンターさんからもアドバイスが頂けました。もらったアドバイスの中で「操作が複雑そう、違和感があるのは良くない」という点には常に意識しました。
3日目(2/13)
(3日目...といいつつ寝てないので明確に区切れない)
ブラッシュアップとデバッグをメインで行いました。PostProcessingを導入したり、ユーザーが遊びやすいようにUI/UXを調整しました。また、プレイに関わる大きいバグを修正しました。
しかし、
webGLでの提出だったのですが、webGLでのビルドがうまくいきませんでした...
(正確にはビルドはできるがブラウザ上で開くとポップアップが出て動かなくなる)
おそらくAwake()などシーン再生開始時の処理が多すぎたのが問題だと思います。
最終発表会&懇親会
最終発表では他チームの完成度の高さに驚きました。アイデアがおもしろいのはさることながら、デザインや作り込みが素晴らしかったです。私達のチームはがっつりプログラマーばかりだったので、デザインが得意な人がいなかったのでビジュアル面が弱かったかなーと思います。
最終発表後、懇親会がありました。懇親会では「nonpi foodbox」というサービスでお酒とおつまみを提供していただきました。まさかオンライン懇親会で食事を用意していただけるとは思いませんでしたw
懇親会では社員さんの貴重な話を聞けたり、他チームの人との交流ができました。やはり、ゲームのインターンということでゲーム好きばかりでめちゃくちゃ楽しい懇親会でした。
まとめ
ここまで濃い3日間は大学でプログラミングを始めてから初めてでした。3日間でちゃんと遊べるゲームを作るという時点で大変ですがメンバーやメンターさんから様々な新しい知識を得られるというインプットとアウトプットが凝縮された3日間でした。
反省としては、クラス設計したのですが全くそのとおりに作れなかった点や他のメンバーに読みづらい、使いづらいコードになってしまった点です。 設計、アーキテクチャ、デザインパターンあたりの勉強を進めようと思います。
メンターさんによると優勝するチームの特徴は二日目の中間発表時点でほぼ完成しているチームだそうです。確かに今回優勝したチームも中間発表でほぼ完成していたなあ...残り時間ブラッシュアップに時間をかけられるのは確かに強いですもんね...
いやーそれにしてもやはりインターンやハッカソンに参加するのはいいですね!
チームメンバーやメンターさんから様々な知識を学べますし、なんといっても技術に対するモチベーションがとてつもなく上がります。モチベは技術力向上の最大のきっかけになります。
この記事を読んでくださって、まだインターンやハッカソンに参加したことがない人は是非参加してみてください。技術力ないからというのは気にしないでとりあえず申し込んでみましょう!必ず、技術力向上に繋がるはずです!!