ぱぴブログ

さんたろのブログ

ゲーム開発が好きな人のひとりごと

Akatsuki GAME JAM 2020に参加してきました

みなさんこんにちは。
さんたろです。

この度、Akatsuki GAME JAM 2020に参加してきました!

hackerslab.aktsk.jp

概要

当日に決められたメンバーとメンターさんと一緒に、2日間でUnityを用いてゲームを作る、というハッカソン型の内容でした。

1日目

自己紹介

自身の自己紹介を9マスに分かれた1枚のスライドで表現し、それに沿った自己紹介をしました。
Zoomのバーチャル背景として利用することで、常に自分の紹介をできるので良かったです^^
思ったよりVRの話が多かったので、驚きと嬉しさがありました。(研究で流行っているのかな...)

イデアソン

今回のテーマは、アカツキさんが10周年を迎えたということで「10」。
まず、Zoomのブレイクアウトルームを用いて、二人一組になり、各々が事前に考えてきた企画を紹介、ブラッシュアップをおこないました。
その後、チーム関係なく全員の企画を共有し、共有された企画を参考にチームで作るゲームを考える流れでした。
私は3つアイデアを考えていたのですが、自分の中でイチオシだった「CrossShooting(仮)」がブラッシュアップ時の紹介でも、全体での共有のときも好評で嬉しかったです^^
(他のチームで採用してくださり、嬉しかったです)

f:id:papyrustaro:20200916150530p:plain
CrossShooting

企画

私たちのチームは、私とAさんが「シャトルマン(仮)」を

f:id:papyrustaro:20200916150716p:plain
シャトルマン

BさんとCさんが「1 by One」を

f:id:papyrustaro:20200916150817p:plain
1byOne

をそれぞれ推していましたが、「10周年ということをプレイヤーに伝えられる」といった理由から「1 by One」を作成することになりました。

仕様定義

最初は時間制限を入れるという話だったのですが、間合い管理などのアクションと、0から順に倒していくストーリー性を重視したい、ということで廃止。
まずはストーリーのほうを実装して、余裕があれば、もっといろんな要素を増やしていこうという話に。
つまり、10の武器を持ったキャラが、0から9(あるいは10,11)までの敵を順に倒していく、2Dアクションゲーム、みたいなものを作ろうということでした。

作業計画

まず、各々が得意としていることが違ったので、得意分野に合わせて作業分担をすることにしました。
私とAさんは、プレイヤーと敵のキャラの攻撃判定の処理を、
Bさんは、プレイヤーキャラの移動とAnimationを、
Cさんは、イラスト全般を、それぞれ担当することに決めました。

プロジェクト作成

プロジェクトの管理はGitHubでおこなったのですが、私のアカウントでリポジトリ作成の際に.gitignoreにProjectSettingsを入れるのかどうか、などで時間をかけてしまいました。

もくもく作業

当初0から11までの武器を、プレイヤー側も使えるようにするという前提で進めていたので、プレイヤーからも敵からもAttackを呼べば攻撃できる、という設計のもとAさんと、10個の武器それぞれの攻撃処理を実装していました。
結論から言うと、攻撃処理の実装だけで2日目の朝まで行きます(悲報)。
Bさんはプレイヤーの基本移動と、入力に応じた処理、ステージ作成等を、
Cさんは素敵なプレイヤーや武器のイラストを描いてくれました。

2日目

夜中~朝

1日目に敵の攻撃処理の実装が終わらなく、「これはマズイ」感がすごくしたので、なんとか明日の9時には終わらせるぞ、という意気込みでやっていました。
ただ、人間なかなか生活リズムを変えることができないもので、眠気に負けて少し寝ましたが...。

それでも、敵の動きの実装は粗削りで、すぐに使用できる形ではなかったです。

午前中

Bさんが用意したプレイヤーキャラのAnimationと、Cさんが用意したプレイヤーキャラクターに、私とAさんが攻撃処理を合わせてみましたが...全然上手く動かない泣

一応攻撃判定は出ているときもありますが、ガード判定は出ず、連続で押したり走行中に押したりしても反応がない...
そして、他の人が実装した部分を瞬時に理解することも難しく、どうすればいいのかすぐにわからない...

Aさんは敵のAIを、Bさんにはプレゼン資料を、Cさんには引き続きイラストを、それぞれ作成していました。

午後~終了

とりあえず動かすものを作らなければいけなかったため、なんとかバラバラのパーツを上手く繋ぎ合わせようとしていました。
タイトルからメイン、メインからクリアorゲームオーバー画面への遷移を作るは簡単でしたが、問題はメインの中です。

数字それぞれのステージギミックは独立して動きそうだったため、敵を倒したらステージを切り替わるようにしました。
プレイヤーはどうしようもない部分は無視して、入力によるAnimation遷移と移動、攻撃をそれぞれ動くようにしました。
Aさんに作成してもらっていた敵のAIをとりあえず入れてみて...しかし、上手く動かずに、それを修正する余裕なく、ハッカソン終了となりました。

結果発表

結果は5チーム中の同率2位で、準優勝でした。
Bさんの素晴らしいプレゼンとCさんの素敵なイラストにとても支えられたと感じました。
特にプレゼンは、終了直前まで実装作業をしていたので事前に見ていなく、とても丁寧に作られていて驚きました。
また、審査員の方からの話では、ゲームとして反映まではいかなくとも、10個の武器それぞれの実装ができたという事実を評価してもらったみたいです。
しかし、世に出るゲームの評価は制作背景を考慮せず、最終的な出来や面白さのみで評価されるので、実装したものを遊ぶ形で反映できなかった点はとても大きな失敗で、反省すべき点だと思いました。
f:id:papyrustaro:20200916160527p:plain

f:id:papyrustaro:20200916160559p:plain

f:id:papyrustaro:20200916160253p:plain

f:id:papyrustaro:20200916160313p:plain

反省

初めての経験ばかりで、多くの反省がありました。
今回は私がチームのまとめ役になっていたと思うので、尚更上手く引っ張っていけずに申し訳なさがあります。
この反省は、今後に絶対活きるはずです。

一番力を入れたい部分は何か。それは実現可能か

作品の何を一番見てほしいのか、楽しんでほしいのか、伝えたいのか、と言ったことを明確に。
今回だと、「0から順に倒していくというストーリー性」という点が重視されていたと思います。
その点で、豊富なイラストによる世界観の実現は狙い通りだったと言えるでしょう。
武器毎の敵の行動実装も、それぞれの数を特徴づけるものとしては、大切なものだったでしょう。
しかし、冷静に考えてとても短い期間で、10個以上の敵の処理を実装するのは、あまり現実的ではないと考えます。
そして、すべての武器をプレイヤーも使えるという仕様まで入れるのは、流石に無理があったと思います。
今回なら、イラストだけ差し替えて、攻撃方法はどれも同じ、などの処理でいったん実装する、といった方法にするべきだったな、と今は思います。

もし、力を入れたい部分の実装がどうしても難しいのなら、他の案にすべきでしょう。
今回は作業量をあまり考えずに、仕様の決定をし、作業にとりかかってしまったので、そこが大きな問題でした。

何を優先して実装するのか

メンターの方も仰っていましたが、短期間開発なら特に、ゲーム開始から終了までの全体の流れを実装するのを最優先にすべきだと感じました。
ゲーム性の拡張や演出の追加などの前に、すべての基底のなるプロトタイプを完成させないと、バラバラなパーツのまま終わってしまう可能性があります。

誰が何をするのか

リモート故の意思疎通の難しさも実感しました。
作業分担をふんわり決めただけで、誰がどの作業をするのか具体的に決めていないまま最後まで進めたので、細かい実装を誰もやっていない、といったことがありました。
実装すべき機能の明記もしていなかったので、尚更抜けていた作業が多かったです。
短期間であったため難しい部分ですが、もう少しタスク管理をしっかりと行いたかったです。

他人の作業内容を理解しなくても、利用できる形になっているか

これはプログラミングではよく聞く話で、他人が書いたコードの中身がわからなくても利用することができる、あるいはメソッドの呼び出し側は、呼び出され側の処理を意識する必要がないといったものですが、短い期間では、疎かになってしまいがちでした。
以前GGJに参加したときに、「できればPrefab単位での共有が望ましい」という話を聞きましたが、身に染みて感じました。
Prefab単位で動くサンプルを渡すだけでも、相手側の理解の容易さが全然違う気がします。

おわりに

自分たちが主体となって、計画を立て、共同開発をすることは今回が初めてだったため、とてもとても多くの知見を得ることができました。
インターンの準備・運営してくださった社員のみなさん、本当にありがとうございました!!!

github.com