【インターンシップ接触編3期生】コミュニケーションが重要

皆さん初めまして。プログラマー志望の池谷公紀です。

前回の上遠野さんに引き続き、インターンシップ接触編の様子と、
その中で感じたことをお伝えしていきます。

同じプログラマーを目指す方だけではなく、それ以外の志望の方にも
参考になるブログを目指して頑張りたいと思いますので、よろしくお願いいたします。

開発が始まりました

前回のブログにて紹介された仕様書も完成し、2週目の末からいよいよ開発に入りました。

今回私たちが開発するのは、「増殖」「連鎖」といったキャラクターの能力をうまく活用して、
様々なギミックをクリアしていく2Dパズルアクションゲームです。

キャラクターやマップなどのグラフィックは上遠野さんが、プログラムに関しては私が、
それ以外の部分に関しては2人で協力して開発を進めています。

▲それぞれの開発の様子です。

スケジュール

開発をスタートするに当たって、まずはタスクの割り出しと、
全体スケジュールの作成を行いました。

▲今回使用しているスケジュール表(ガントチャート)

タスクの割り出しとは…
ゲームを作るために必要な作業(タスク)と、
その作業を終わらせるのに必要な時間を全てリストアップすることです。

ここで漏れがあると、そもそも正しいスケジュールを作成することができません。
しっかりと取り組む必要があります。

次にスケジュール作成です。
割り出した全てのタスクについて、どういった順番で、いつどれをやるか、を決めていきます。

どの機能をいつ作るか、画像はどれを先に作って欲しいか、
これはこの後でないとできないから先にこちらを済ませる必要がある、
といったように多くのことを考えながら、スケジュールを立てる必要があります。

私も上遠野さんもスケジュールを立ててゲーム開発に取り組むのは初めてであり、
どの作業にどれ位の時間がかかるのか、優先度はどのように付ければ良いのかなど、
想像できないことはたくさんありました。

そこで、過去にインターンシップに参加されていた方や社員の方に話を伺い、
作業にかかる時間の目安や実際の開発における作業の順序例を教えていただき、
それらを参考にして無事にスケジュールを立てることができました。

実際にスケジュールを立てて開発を進めていくと、
次に行う作業がわかっていることや、現在の状況が
進んでいるのか、または遅れているのか把握しやすく、
開発をスムーズに進められています。

コミュニケーション

複数人数によるゲーム制作においては、コミュニケーションが重要となります
それぞれのイメージや優先順位が違ったまま開発を進めてしまうと、
作成している途中や作成後に修正が必要になってしまい、
その分開発が遅れてしまいます。

実際に今回の開発を開始したとき、画像をどのような形で
やり取りするのか、という点でコミュニケーションが足りませんでした。

その結果、一度作成した画像を別の形で作り直してもらう、
という作業が発生し、その後予定していた作業が遅れてしまいました。

そのため、予め決められる部分は話し合って決めておき、
また開発の途中で新たに発生した疑問点なども出来るだけ
早めに相談するようにしています。

▲アニメーションのイメージや優先順位を話し合っています。

キャラクターを動かす

今回の開発で最初に取り掛かったのは、
プレイヤーが操作するキャラクターの動作です。

今私が一番苦戦しているのは、キャラクターと、地面や壁といった
地形がぶつかった場合の当たり判定、及びぶつかった場合の処理です。

当たり判定に関しては発動編2期生の杉川さんのブログ
詳しく書いてありますので割愛させていただき、
今回はぶつかった場合の処理の重要性についてお話しします。

たとえばキャラクターが壁にぶつかった場合、次のような動作が考えられます。

・作用反作用の法則で、壁と反対方向に弾かれる
・壁にくっついた状態で壁を押し続ける

これらは一例であり、他にも色々な動作が考えられますが、
キャラクターやゲームのシステムなどを考慮して、一番合っていると
思ったものを選択していきます。

当然アニメーションを作るときにも考える必要がある部分ですので、
2人でどのようにするか予め話し合った上で、
ある程度形になったところで確認を行うようにしています。

これは上で述べたように、それぞれのイメージを共有することで
イメージのズレをなくすこと、また実際に動いているものを見ることで
おかしな部分を見つけること
、の2つを主な目的としています。

ソースコードチェック

サイバーコネクトツーのインターンシップでは、今回作成した
プログラムをプロのクリエイターの方々に実際に確認していただき、
様々な意見をいただくことが出来ます。

今回のチェックでは主に以下の2つの指摘をいただきました。
「なぜそのようなプログラムを書いたのか」
 「ただ動くから」、というだけで書くのではなく、
 「ここはこういう処理だから、この方法が良い」というように
 しっかり理由を考えることが大切とのことです。

「他の人にとって分かりやすいプログラムを書く」
 プログラムにコメント(説明)が無い、名前を見ても動きが想像できない、
 といった他の人が見てわかりにくいプログラムを書いてしまうと、
 実際に仕事をするときに多くの問題が発生してしまいます。

この2点はどちらもゲームを作る上だけでなく、プログラマーとして
プログラミングを行う上で重要な基礎の部分であり、
出来る限り早く身につけたいと思います。

最後に

まだ始まったばかりという印象が強いインターンシップですが、
すでに4週目に入り、半分が過ぎようとしています。

そろそろα版の提出日も近づいて来ていますので、
インターンシップ生2人で力を合わせ、サイバーコネクトツーの
クリエイターの方々から様々な意見をいただき、
より良いゲームを作り上げたいと思います。