24年新卒ゲーム開発研修【五右衛門の猫娘】

24年新卒ゲーム開発研修【五右衛門の猫娘】

はじめに

僕たちは新卒Bチームとして運営1人、デザイナー2人、エンジニア2人の5人チームでゲームを作成しました。
今回のブログではまず一番最初にゲームの説明を軽くして、5人それぞれの担当したこと、研修を通して学んだことについて書いていきたいと思います。
最初のゲームの紹介は、運営の照井が書きます。

今回作ったゲームについて


今回のゲーム制作では、企画の一番最初の段階は5人全員で相談して決めました。
研修の前に何時間か時間をとっていただき相談したのですが、ゲームのジャンルすらなかなか決まらなかったです。
途中で「もうそろそろ決めないとまずい」となって、わりとごり押して決めた覚えがあります(笑)
ただゴリ押したのも悪いことだとは思っていなくて、全員の考えを広く聞くのもいいですが意見をある程度聞いたら、だれかがゴリ押して中身を詰める時間をもっととってもよかったなとは少し思います。
「船頭多くして船山に登る」ということわざがあるように、5人そろうとみんな経験や知識も違うのでだれかが多少強引にでも方向を示さないとチームで物事を決めるのは難しいと感じました。

ジャンル

盗賊ビルドRPG


企画を考えるにあたって、まずどんなゲームジャンルにするかを決めました。短い制作期間しかないですが、楽にできるものでなく、しっかりやりごたえのあるゲームにしたいということで、要素さえ作ってしまえば組合せでおもしろくして行けるビルドのあるゲームを作ろうということになりました。はじめはローグライクだったのですが、制作期間の都合や社員のかたに遊んでいただける試遊時間が短いという理由から、周回要素を
削りました。
もう一つの要素である盗賊のほうなのですが、ただ敵を倒してビルドでは独自性がたりないということで、倒すかビルドするかの選択肢をもたせることにしました。ポケモンのように相手の装備を盗んだら、戦闘に勝利でき、かつポケモンとは違いミニゲームで相手の武器が盗めるか決まるところにこのゲームの新しさがあります。

世界観・テーマ

五右衛門の物語x擬獣化した世界

ゲームジャンルに盗みという要素をいれたので、世界観にも盗みの要素を入れたいということになり昔の日本の義賊である五右衛門を登場させ、五右衛門の娘を主人公にしました。
けもの要素はデザイナーが決めてくれました。全体的に和風でかわいい感じになり、けもの化してよかったなと感じてます。

ターゲット

10~30代
ある程度RPGに慣れ親しんでる人
ビルドの要素を楽しみたい人

ここはとってつけたようにあとから考えました。ただもう少し早めに決めておくと企画や難易度設定の指針にもなったかなと思います。

ゲームの売り

上の要素からこのゲームの売りはしたの二つになりました。

RPGx盗みシステム

敵の武器を盗んで、リソースの組み合わせで多様な体験を作ることができる

和風xケモノ

戦国時代を舞台にして、擬獣化したキャラクターたちが登場する

あらすじ

元忍者で義賊のゴエモンとその娘モモは悪い人から宝を盗んで、貧しい人々に配っていた。次のターゲットは、太閤秀吉。秀吉は民衆からバナナや宝を無理やり奪い取り、バナナを独占していた。独占されたバナナを盗みにゴエモンとモモは秀吉の城に侵入するが、その途中でゴエモンがモモをかばい捕らえられてします。何とか逃げ出すことができたモモは、父を助けに行くことを決意する。果たしてモモは無事に父を助けることができるのか!

ゲームサイクル

企画 照井

改めまして、第一事業部運営の照井です。このチームにはプランナー職が居なかったため、今回のゲーム制作研修では企画、ディレクターを担いました。今回は私が担当したことや企画ディレクターとしての反省点、ゲーム制作研修を通して感じたことについて書いていこうと思います。

担当作業

・仕様書作成
・データ周りのプログラム
・バランス調整
・進行管理

上記のことを中心にいろんなことをやっていました。
仕様書作成は、研修で教えてもらってはいたもののはじめての作業だったので網羅しきれず、作業が進むにつれ、網羅しきれていない部分、抜けている部分が浮き彫りになってしまいました。
これは仕様書レビュー会を行えば防げたかなと思います。
またゲームにデータを入れるプログラミングも行いました。大学院ではそこそこプログラミングをしていたのでもうすこしかけるかなと思いましたが、チーム制作やゲーム制作特有の流儀があり、なかなか苦戦しました。一方でエンジニアたちが設計をしっかりやってくれていたのもあって、どこにデータを入れれば動くかがわかりやすかったのでそのあたりはやりやすかったです。エンジニアさんたちには逆に手間をとらせてしまいましたが、いままでしっかり考えてこなかった設計やモデルについて学ぶことができとても楽しかったです。また新卒研修で学んだGitの使い方やプログラミングの考え方も作業やエンジニアさんとのコミュニケーションをとるうえで役立ちました。
バランス調整は本当に大変でした。今回作ったゲームがローグライク要素の強いゲームとあって調整するパラメータが多かったです。正直この短い期間ですべてをバランスよくするのは難しいため、まずどこを中心にバランス調整をするか考えました。自分は「困難を乗り越える」ときにこそゲームのおもしろさを感じられると考えたので、今回はボスを中心にバランス調整を行いました。結果として少し難しくしすぎたので、やはりバランス調整は一筋縄ではいかないのだなと実感しました。

企画ディレクターとしての反省点

作業をやりすぎた

企画をやったことないため、何をしていいのかわからなかったので、エンジニアの作業をやることが多くなってしまいました。そのため自分の目の前のタスクのことでいっぱいいっぱいになり、ディレクターとして行うべきチームの考えの統一や進行管理が甘くなってしまいました。結果、制作の最後のほうではゲームには盛り込めないタスクもいくつか出てしまいました。自分の手元の作業がないと不安になりますが、ディレクターは作業をやらずに心の余裕をもって全体の把握に務めるのがよさそうだと感じました。

口頭でおこなった相談は文章としても残しておくべき

口頭で相談をよくしていたのですが、記録をのこしていなかったため齟齬が生じました。自分でも言ったかどうか、何処まで言ったかはわすれてしまうためしっかり文字として記録することが大切だと実感しました。

ゲーム制作研修を通して感じたこと

チームでものを作ること、ゲームを作ることはたのしいなと感じました。自分の考えたことがエンジニアのコードやデザイナーの絵で形になっていき、一人ではとても完成できないものを作り上げることができて感動しました。制作終盤がこのゲームが本当に面白いものになるのか不安なタイミングもいくつかあったのですが、手触りやバランスの調整をこつこつとおこなっていくことで、「おっ、このゲームちゃんとおもしろいじゃん!」となっていったときはすごくうれしかったです。このゲーム自体にもやり残したものはありますし、この研修で味わった感覚をまた味わいたいので、今後もたくさんゲームを作っていきたいです。

エンジニア 神原

第一事業部、クライアントエンジニアの神原です。
今回の開発で担当した作業の内の、マップの設計について簡単に書かせていただきます。
また、開発全体を通しての良かった点や反省点も書いていこうと思います。

やりたいこと

進めるマスが複数存在し、その中の1つのマスを選んで進むといった仕様になっているため、マスに選べるかどうかの状態を持たせる必要があります。
また、そのマスがどんなマスなのかをアイコンで示すので、アイコンの表示も必要です。

設計

表示する要素とデータを連動させたいため、MVRPパターンを使いました。
ライブラリとしてUniRxやUniTaskを入れていたため、実装しやすい環境だったのも決め手の1つです。
主な流れは、マップシーンに遷移したあと、MonoBehaviourを持つPresenterにModelを流し込み、それを見てViewを更新し、アイコンの表示や次のマスまでの道の表示をしています。
また、渡されたModelに応じてマスが選ばれたときに任意の処理を発火する処理を仕込みます。
例えば、敵と戦うマスが選ばれたらバトルシーンへ遷移する、といった感じです。

良かった点

序盤から、ある程度きれいな設計を意識しながらコードを書けたので良かったです。
特に恩恵を感じたのは、バグが起きた際にどこが悪いのかはっきりした点です。
クラスや関数の責任をはっきりさせることで、修正すべきコードがすぐに見つかり、作業時間の短縮に大きく貢献しました。
また、研修でペアプロやモブプロについて学んだのですが、設計をするときやPRのレビューをするときに学んだことが活かせたと思うので良かったです。
特に、思考の順序や基準、気を付けていることや避けている書き方などが分かり、その後の設計やレビューがより効率的になりました。

良かった点

研修の中で行ったペアプロ/モブプロに近いことを、開発研修でも出来たのは良かったと思います。特に実装時に何を考えてコードを書いているのかを知ることが出来、知らない技術などを学ぶ機会になりました。

反省点

開発期間に対してやりたいことが多すぎたので、実装しきれなかった仕様がいくつかありました。
特に反省すべきだと思うところは、機能や仕様のそぎ落としを開発中盤〜終盤にかけて行ってしまったことです。
せっかくデザイナーさんに書いていただいた絵がゲーム内に出てこないなど、エンジニアの都合で実装できなかったものが多く、申し訳ない気持ちでした。
開発期間を見て工数を見積り、序盤や企画段階で仕様のそぎ落としをしていれば、このような事態にならなかったのだと思います。
また、序盤に作ったきれいな設計に引っ張られて、中盤以降も序盤と同じくらい設計を吟味していました。
時間が足りなくなっているので設計のレベルを落として開発速度を上げるべき場面でしたが、当時はその判断ができませんでした。
さらに、終盤になって急にレベルを落とし始めたので、初心者のようなコードが残ってしまいました。
この日からはレベルを落とすことを許容する、といったように速度を上げる期間を明確に決めておけば良かったと思います。

感想

全体を通してかなり楽しめたと思います。
エンジニアとして楽しかったことは、コードを書いているときはもちろん、PRのレビューや設計、実際にコード通りにゲームが動くところです。
また、チームの一員として楽しかったことは、ゲームの仕様を考えたり、非エンジニアにgitを教えたり、デザイナーさんに仕上げていただいた素材を見たりすることです。
ゲームを作ることは大変だと思いますし、今回も大変でしたが、優秀なチームメンバーのおかげで良い作品に仕上がったと思います。
チームの皆さん、本当にありがとうございました。

エンジニア 武藤

第一事業部でクライアントエンジニアをしている武藤です。
担当した箇所の説明をすると複雑になりそうなので、今回は攻撃した場合のバトルの流れについて簡単に説明していきます。

バトルの入力処理

やりたいこと

前提として、このゲームはバトル中に、行動を決めるフェーズと実行処理を行うフェーズがあります。
実行処理を神原君が担当してくれるということで、入力処理ではユーザーによって決定された行動を渡すという実装になっています。
前述のように、攻撃のみの説明になるためザックリとしたクラス図を書いてみました。(初めてクラス図を書いたので、大目に見てもらえると幸いです)
それをもとに説明していきます。

バトルの全体をまとめるTurnControllerがBattleInputPresenterの入力待機の関数を呼び、結果が返るまで待機します。
Viewは複数のButtonを持っており、Buttonが押されると対応した武器のModelがBattleInputPresenterを経由してTurnControllerに返されます。
ここで返ってきた武器のModelがBattleStateControllerに渡され、その後の実行処理で使用されることになります。
実行処理を終えるとTurnControllerが再度、入力待機の関数を呼ぶという感じになります。

行動を決めるフェーズには攻撃のほかに、敵の武器を盗むアクションがありますが、そちらも同じようなことをやっています。

反省点

期間と工数

今回は1か月という短い期間の開発だったのですが、未実装のまま終わってしまった要素が多くありました。期間に対して設計の時間を多く取りすぎてしまったというのが原因です。
開発期間から逆算して、実装にかける工数を決めることに慣れていなかった為、これが上手く出来ていれば、もっといい開発が出来たのかもしれないと思いました。
使われなかった素材たちを供養したい…

コードレビューは急がば回れ

バージョン管理をGitで行い、エンジニアがPRを確認するやり方で開発を進めていたのですが、マージ後に問題が起きることがありました。PRの確認を丁寧にしていなかったことが原因です。
スケジュールが押していて急ぎたい気持ちだったのですが、結果的にマージ後の問題対応をすることで、さらに遅れが生じることになりました。少ない時間の中で、どこに時間を掛けなくてはいけないのかを考える必要があったと思います。

デザイナー 宓

担当分野

第一事業部、デザイナーのミです。

今回のゲーム開発研修でビジュアル担当の二人はともに2Dデザイナーですが、それぞれの得意分野や経験を活かし、お互いの不得意な部分を補完し合うことで作品を完成させました。

私は昔2Dアニメーションでゲーム制作した経験があるので、アニメーションを描く際の注意点や、Unityでの実装操作をスムーズに行うことができます。一方、チンさんはゲームジャムに参加した経験があり、キャラクターデザインやステージの背景などを短時間で高クオリティのイラストを完成させることができるので、全てを任せました。

これからは、それぞれ工夫した内容や反省点、感想をお話します。

アニメーション

アニメーション担当のミです。 今回のゲーム制作では、主に以下の四つのアニメーションに分かれています。

・キャラクターアニメーション
・エフェクト
・異常状態
・背景アニメーション

一番時間がかかったのは、当然ながらキャラクターアニメーションです。主人公は16種類の武器のアニメーションに加え、待機やHPが削られた時などのアニメーションも描く必要がありました。元々は全ての敵にも待機アニメーションをつける予定でしたが、締め切りが迫っているため、割愛し、ボスのアニメーションだけ用意しました。

主人公アニメーションは、下記の流れで制作しました。

先ず、アニメーションスプライトを準備します。注意点としては、全てのスプライトのイラストが同じサイズであることと、キャラクターが同じ位置に配置されていることが重要です。これにより、アニメーションを切り替える際にずれがないようにします。

また、主人公だけで計19体のアニメーションがあり、一つ一つ丁寧に描く時間がなかったです。短期間で完成させるように、以下の2点を工夫しました。

1.アニメーションを分けて制作する
2.アニメーションを再利用する


1.攻撃アニメーションは、「武器を取る」、 「武器で攻撃する」、 「武器をしまう」の三つのアニメーションに分けて制作しました。武器を出す際に不自然さを解消するため、一度手を後ろに隠し、次のフレームで武器が現れるようにしました。これにより、アニメーションをスムーズに見せるだけでなく、作業量も削減することができました。

2.似たような攻撃動作、例えば投げ道具のクナイと石、を同じアニメーションで利用し、武器だけ入れ替えました。また、短刀と草刈りは全く異なる武器ですが、同じアニメーションを使っても違和感なく使っていました。
ただ、その中に絶対に妥協できないこだわりがあります。例えば刀と短刀、大筒と小筒。これらは同じ種類の武器ですが、重量や跳ね返りの影響を受けるため、両手で武器を持つことや、体の重心が後ろになるアニメーションに変更する必要があります。

その後はUnityで作業を進めます。上記の画像通りに、一連の作業をUnityで行い、すべてのアニメーションを完成させました。指定された武器のボタンを押すと、待機アニメーションから攻撃アニメーションに切り替えることができます。

上記の画像通りに、一連の作業をUnityで行い、すべてのアニメーションを完成させました。指定された武器のボタンを押すと、待機アニメーションから攻撃アニメーションに切り替えることができます。

反省点

説明の仕方

チームメンバーに何かをお願いする時に、いつも自分の視点で考えてしまっていました。デザイナーとしてビジュアル面にこだわりがある一方で、他の職種が理解しにくい内容もあり、説明が不十分でした。聞き手が理解しやすいようにするため、先に追加や修正を行う理由を具体的に説明したり、内容をまとめて書き留めたりすることが良いかもしれません。

優先順位の設定

ゲーム制作において、やりたいことは山積みです。例えば、プレゼン資料の背景やレイアウト、グッズなど優先度の低い作業がほとんどでしたが、「面白い」、「納得できない」という気持ちから、最終日にも多くのタスクが残ってしまいました。優先順位を最適化するため、チーム内で共有や、緊急の課題に優先的に取り組むよう努め、ガントチャートの活用、制作期間を明確に決めておいたほうが良いでしょう。

感想

初めてチームでゲーム制作を経験して、良い作品を完成できたことがとても楽しかったです!デザイナーの作業内容だけでなく、研修で学んだGit、GitHub、Mayaなどの知識を実際の制作に活かすことができたのも嬉しいです。これからもさらに成長し、業務に入っでも活躍できるよう努力していきたいと思います。お疲れ様でした!

デザイナー 秦

第一事業部、デザイナーのチンです。
今回の開発では主に2D関連の部分を担当しました。多分担当分野からも分かる感じなのですが、デザイナーの仕事内容は強みには分けていなく、お互い意見なども出し合い共に作業する内容も多い感じでした(世界観設定やUIなど)。
設定では「けもの」でしたので、キャラクターの個性(役目?)や動物の特徴などを重視してデザインをしました。
ゲーム開発前の研修で色々学ぶことができて助かりました。特にGITの構成や原理、プロセスなど事前に把握することで、実際触る時に慌てるのを少し緩めることができました。レポートをしっかり取ることで、重要な内容や使い方を復習できました。自分はデザイナーなのですが、講義でゲームの遊び方(ゲームならではの重要な所)を「ウリ(魅力)」に繋げることを学び、ゲームクリエイターとしての意識をより深めることができたと思いました。
最後まで楽しく作業できました!

良かった点

タイムリーなコミュニケーション

タイムリーなコミュニケーションをとることで、繰り返し作業や無駄な作業を控えることができました。そしてその時間を有効活用しゲーム全体のビジュアルをより良く仕上げることができました(ブラッシュアップなど)。「自分では分からない、理解できない」の場合、タイムリーにほかのメンバーに聞くことも重要なことです!勉強になりました!

重要度を元にスケジュールを立てる

作業内容の優先順位を事前に決めて、自分の作業効率を図ったうえで、時間の配分をバランス良く調整しました。(→緊急度と重要度のマトリクス←)スケジュールでは、最後の修正(ブラッシュアップ的な)の時間を予備することで、万が一のトラブル発生に対応できます。

反省点

作画に時間配布過ぎ

時間が殆ど作画に取られ、ほかの仕事をする余裕があまりありませんでした。色々な所で(gitは特に…勉強になりました)チームのメンバーに助けてもらいました。本当にありがとうございます!色々細かい作業内容(アニメーションとかエフェクトとか)も機会があったら作ってみたいです。

デバッグの説明がざつ

デバッグの時に、初めは気になる部分を口頭で伝えていました。その内容を文章にまとめて伝える方が良かったと思いました。

感想

自分としては、ほかのメンバーと共に同じ目標を目指してそれを達成できたので、今回のゲーム開発研修は素晴らしい体験だと思いました。絶対に一人では出来ないことを、仲間がいたからこそ、ここまでたどり着くことができたと思っております。Bチームの皆さん、サポートやご指導などしてくださったメンターさん方、本当にありがとうございます!この一か月間お疲れ様でした!今後もよろしくお願いいたします!

最後に

改めまして、この企画を企画していただいた人事、第一事業部の皆様、そして日々の日報から制作中の技術サポートまで様々なところで力を貸してくださったメンターの方々に感謝を申し上げます。
一か月間ありがとうございました。
また一緒にゲームを作ってくれたチームメンバーにも深く感謝しています。
この一か月間大変なこともありましたが、たのしかったです。また機会がありましたらこのメンバーでゲーム作りたいです。