見出し画像

CyberAgentさん主催 『プロトスプリントリーグ』 に参加した話

 本記事では,CyberAgentさん主催の開発型インターンシップにおける学びや開発過程を記録していく記事になります。

 開発したゲームにテーマは『組み合わせ』でした。このテーマをゲームにどの様に消化させていくのか事前準備で話し合い開発を進めていきました。以下の動画は完成作品です。


1.プロンプトリーグとは

初日に与えられたテーマを基に,チームでの事前準備期間は7日間コーディング期間は3日間で,ゲームを完成させるイベントが行われました。このイベントは,ゲームクライアント向けの開発型インターンシップでありゲームとしての総合的な完成度を競うものです。各チームは5人編成で協力して開発に取り組むという内容になります。

2.開発の流れ

2-1.開発事前準備段階

顔合わせはDiscordでカメラオンにして自己紹介した後,メンターさんを含めてはZoomで顔合わせを行っていました。事前準備から本番まで含めて進捗の洗い出し等を含めてMiroというツールを使って進めていきました。

書き出した内容です(拡大しないと見えない🙏)

ここで出したアイデアは以下の通りです!

  1. ボタンを組み合わせて行動する。例えば ” ジャンプ+攻撃 → 踊る+テレポート” のような動作。

  2. 戦車を自由にカスタマイズして対戦する2人対戦ゲーム。

  3. 気候変動によって荒廃した世界を探索するゲーム。その場に落ちているリサイクル品を組み合わせて、新しいものを作る。

個人的には2人で対戦するゲームが気になっていたもののの,作業分担などの振り分けや実際に触れてもらうのがローカル環境であること,3日間での作業での実現性などを加味し話し合った結果1つ目のアイデアを深掘りしていくことで方向性が定まりました。この時,全員が初対面であったために自分はまとめる時に皆の出してくれたアイデアを否定するのではなく,代案を出しつつここはこうじゃないか等メンバーが発言しにくくなる空間を避ける事を一番に心がけていました。その結果,企画の方向性は以下のようにまとめる事ができました。

  • 開始時点でゴールからスタートまでカメラが動く事でパラメータ割り振りの想定ができる。

  • 体力・スピード・ジャンプ力という3つのステータスをパズルのミノ数で割り当てる。

  • 障害物等を回避しながらゴールを目指す。

2-2.開発1日目

開発初日は自分は必要素材のイラストを描きながらプレイヤーの挙動(ジャンプ・移動・体力など)を作成していきました。他には各シーン内で使用しているUIの作成やインゲーム内でのスコアがあるアイテムの作成を行いました。同じゲーム作りをメインにしているプログラマー同士の交流が初めてだったので,コードの書き方なども調べながらやる事になったので良い刺激になりました。
良かったこと
⒈同メンバーにinterfaceというものの存在を教えてもらい,ダメージ処理などで活用する簡易的な方法を学ぶ事ができた。
2.メンターさんと共に一緒にお昼休憩でカメラオンにしながら食事ができた!
改善したいこと
1.チーム開発におけるコードの書き方(ステータスの数値等)
2.自分のことに手一杯となり,メンバーの進捗把握が疎かになった。
3.想定しているものの共有が疎かになり,認識のずれを生み出す原因を作ってしまった。

2-3.開発2日目

開発2日目は急遽必要になったイラスト素材を描きながらタイトルシーンのパーティクルなどを制作していきました。また,メンターさんからのFBを通して開発における心持ちを教えていただきました。仕様書はあくまで手段であり,コンセプトなどを軸とすることとする事で仕様書変更になったとしても白紙には戻らない事やアイデアが新鮮なうちに一言で表したりユーザー体験をメモしておく事の重要性について教えていただきました。他にも初日とは別メンバーに外部から隠蔽するコーディングにおけるカプセル化という,変数を直接変更すると2つの場所から同時にアクセスされた場合,どちらが先に処理されるか不確定となります。そのため、変数を直接変更することは避けるために変数をprivateにし,関数をpublicにするという理由について教えて貰いました。これのお陰で関数を介してアクセスする設計にすることで,複数のアクセスがあっても順番待ちの処理を行えるような書き方が少しですができるようになりました!
良かったこと
⒈カプセル化について教えてもらったお陰で,チーム開発におけるコーディング意識を変える事ができた。
2.情報を受け渡すときのコードの基礎(int → float)等を実践を通して学べた。(教えてくれてありがとう!)
3.ゲーム作りに対する心持ちや進行についてメンターさんに教えてもらえた。
4.昨日以上にコミュニケーションをとりつつ情報伝達ができた事。(前日の改善点を即座に改善できた!)
改善したいこと
1.素材制作の時間を短縮すること(時間をかけ過ぎてしまった)。
2.事前のスケジュール把握と共有が疎かになったこと。
3.チーム開発に関するコーディング知識(長期的な話)。これは,今後もたくさんチーム開発経験を行い身につけること。

2-4.開発3日目

開発3日目は主にパズルで設定したパラメータの数値をゲーム開始時にプレイヤーに受け渡す箇所やカメラ挙動,ゴール演出などの細かい箇所の修正を行いました。ただ,変数受け渡しの時unityの仕様なのか[SerializeField]を使ってゲームオブジェクトに割り当ててるスクリプトの関数にある数値を引数として持ってこようとしたところ,関数は呼ばれるのに数値が引き出せないという状況に直面したのでメンバーに頼ったりメンターさんに聞いたりして助けて貰いながらpublicにしたら直ったので,とりあえずはクリアしました。後になってから調べてみたら公式はpublicを推奨しているらしいですね。もう少し詳しく書きたいのですが,それはまた別の機会に。
良かったこと
⒈このチームメンバーで成果物を出せた事。
2.周りのメンバーに支えられながらコードを書き進める事ができた。
改善したいこと
1.チーム開発における技術力を磨くこと。
2.もっと技術を伸ばす機会に触れる事を心がける。
3.自分の能力値パラメータが占める面積を広げること。

2-5.メンターさんからの総評

コーディング期間中何度かメンターさんと面談する機会がありました。その時の評価をメモしていきます。
・フォロワーシップが凄く良かった。
→大学に入るまで苦手で,色んなチーム企画を立てて頑張った甲斐があった!!現場で働く人達に褒められてめちゃくちゃ嬉しい!
・自分に足りない技術力を認識してもっと磨く事。サポートありきではなく,技術も強くなると無茶苦茶強いぞ!!
→やっぱり技術力の低さが自分の問題点としてあったけど,一人集中して”本を読む”や”悩みながら作品を作る”を繰り返すというアドバイスのおかげでどうやって今後取り組んでいいか明確になった。

3.まとめ

今回人生初のインターンシップ参加で緊張しっぱなしでしたが,メンターさんとメンバーのサポートのお陰でなんとか最後まで走り抜ける事ができました。入賞することは叶いませんでしたが,次回以降参加する事が叶えば入賞を狙っていきたいと思っています。

大学の同年代で本気でゲーム作りに取り組んでいる人があまりいなかったため,とてもいい刺激になりました。現時点での問題点も多く見つかり,この後の学習に対する方針が具体的に定める事ができました。イベント参加だけでなく,じっくり時間をかけて学習を兼ねて制作に取り組んでいこうと思うきっかけとなりました。

今回のメンターさん達との懇親会や全体が終了した後のお疲れ様会で話を聞いているうちによりゲーム作りを仕事にしたいと思いつつ,その為にもチーム開発におけるコーディング技術を学習していかなくてはと強く思えました。

-追記-
下書きのまま温めること3ヶ月でした。定期的に下書き保存の確認が必要ですね。けど,振り返って全文見るとあの時の記憶が鮮明に呼び起こされたので記録をとっておく事の重要性を再認識するいい機会にはなりました。(公開設定を押していない事にはもっと早く気づくべきではある。)

この記事が気に入ったらサポートをしてみませんか?