新型コロナウイルスに関係する内容の可能性がある記事です。
新型コロナウイルス感染症については、必ず1次情報として厚生労働省首相官邸のウェブサイトなど公的機関で発表されている発生状況やQ&A、相談窓口の情報もご確認ください。またコロナワクチンに関する情報は首相官邸のウェブサイトをご確認ください。※非常時のため、すべての関連記事に本注意書きを一時的に出しています。
見出し画像

Unity1Week参戦記5

どうも。前回はこちら。今回のお題は「回」でした!

画像12

今回はnattuhanさんkugiさんにお誘い頂き、Unity1WeekGameJam(以降、u1w)にチームで参加させていただきました!
初めてのチーム開発でしたが、とにかく楽しくて最高のチーム開発を経験することが出来ました!

作ったゲームはこちらです。ジャンルはボクセルスタイリッシュガンアクションローグライトゲーム(詠唱)です。

皆様沢山遊んでくださったようで、本当にありがとうございました!楽しいといった声が多くてとても嬉しかったです!!!

さて、今回のu1w共有会も終わりましたので、私も振り返りたいと思います。主に個人的によかったと思うことをメインに書いていきますので、全体的な雰囲気等はkugiさんの発表を御覧ください!

プロローグ:チーム開発の経緯

前回のu1w共有会で皆さんとても楽しそうにチーム開発について発表されていて、とても羨ましくなりました。
共有会直後にUnityゲーム開発者ギルドで「次回は失敗しても良い人募集してチーム開発してみたいな~」的なことを投稿したんですが、kugiさんが覚えてくれていたみたいで、お誘い頂けたみたいです!(言ってみるもんだ!)

まぁ、実は最初は断ったんですけどね・・・。

画像1

仕事の兼ね合いと、u1w直後に結婚記念日の旅行が控えていたりしたので、迷惑掛けそうだなと思って断っちゃいました。
その後すぐにお誘いなんて今後無いだろうと思い、自分からやっぱり組ませておくれー!とお願いしました。

u1w前の準備

お互いなんとなく知っている関係でしたが、軽く自己紹介をしました。
自分の経歴やスキルをざっくり共有し、デザイナー1名(nattuhanさん)、プログラマ2名(kugiさん、私)の体制で進めることになりました。
kugiさんもUnity歴が浅いとのことで、どんな開発になるかな~と不安混じりにワクワクしてました。

目標の共有
それぞれ個人の目標を共有する感じになりました。これによりチーム開発の方向性が決まりました。

画像4

ツールの選定
Miro・・・ホワイトボード代わり。
・Discord・・・連絡はここで。
・UnityCloudBuild・・・kugiさんが学生なので無料!(Discordに通知)
・Github・・・ソース管理。issueを使ってタスクや障害管理も。
SilCilSystem・・・変数アセットパッケージ。後述。

ツールは殆どkugiさんが準備してくれました!感謝。
また、ステージング環境代わりとして、チーム開発用のTwitterアカウントを作り、unityroomにも連携しておきました。

Discordの準備(絵文字の作成)
Unityゲーム開発者ギルドはSlackを使っているのですが、絵文字がとにかく便利だなと思います。こんな感じで、ギルドメンバーが気軽に絵文字を付けてくれます。

画像10

今回のチーム開発ではDiscordを使うことになったので、nattuhanさんがいくつか絵文字を作ってくれました。

画像7

サッと絵文字でリアクション出来るので、何か返事しなきゃ・・・みたいなストレスが無くなります。絵文字を使ったコミュニケーションはオススメです。

画像6

絵文字があれば万事解決!nattuhanさんの気遣いイケメンすぎた。

開発環境の完成
こうして、Githubでマージし、UnityCloudBuildで自動ビルドさせ、Discordでビルドの通知を受け取り、成果物をunityroomにアップロードして確認するというイケイケな開発環境になりました。

前準備はこれくらいだったと思います。(もっと色々相談とかするのかなと思ってましたが、APEXばっかりやってました。)
あとはkugiさんの要望で、SilCilSystemを使って欲しい!ということで、個人でドキュメントを読んだりサンプルゲームを弄ったりしました。

Miro良いぞ

お題「回」の発表後、Discordを繋いでMiroで作戦会議です。
Miroを使ってアイデア出しをして、kugiさんのアイデアをベースにプロトタイプを作ってやっていくことになりました。Miroは実際に付箋を使ったようなブレストが出来てとっても良かったです!

画像3

ここでも絵文字が活躍しました。「良いね」代わりに色付きのハート絵文字をつかったり、ゲームのイメージを描いたときには下記のように敵やプレイヤーを表現したりしました。

画像11

パズル苦手な3人だったので、アクションゲームが良いねってことになり、ボクセルを使ったローグライトな2Dアクションゲームということになりました。
周回要素があったり、ステージが回転するということでお題回収もバッチリだろう!ってことでプロトタイプを作っていくことになりました。

クラス設計やってみた

ある程度方向性が決まったので、いざプロトタイプをつくろう!ということになったものの、初日の短い時間では開発方針については議論できませんでした。
それぞれゲームの作り方も全く違うはずと思い、まずは自分の実装イメージを共有しておいたほうが良いだろうと考えました。アイデア出しで決まった仕様を元に、ざっくりクラス図を書いてイメージの共有と議論のネタにしてみようと考えてクラス図を作ることにしました。

とは言ったものの、仕様も浮いているし、個人ゲーム開発ではまともに設計なんてしてこなかったのでイケてる設計なんて出来そうにもありません。クラス図を作るのも数年ぶりレベルです。

そこで、toRisouPさんの「グローバルゲームジャムでクラス設計をやった話2017」や、直近で良く使っていたCorgiEngineの設計やコードを参考にして作ることにしました。(CorgiEngineは例えば移動するためのコンポーネント、ジャンプするためのコンポーネント、ハシゴを上り下りするためのコンポーネント等、1コンポーネントに1機能のような感じで沢山コンポーネントが用意されていて、使いたい機能を対象のオブジェクトにアタッチして使う感じです。)

VSCodeの拡張機能のPlantUMLを使い、昼休みにセコセコと書いたものが下記になります。

画像5

この時点では先述のイメージ画像程度(ステージ回転、プレイヤー・敵が武器を持って攻撃できる)しか決まっておらず、クラス図の右側のアイテム関連は仕様議論の為に勝手に追加しました。共有した際には「アニメーション処理とかUIとか考慮しきれなかったので、神クラスになるとしたらCharacterCoreですかね~」とか伝えた気がする。

kugiさんの発表資料ではサクッと作ったみたいなカッコいい感じで発表してもらったんですが、全然そんなことないですからね!
しかし、こんな拙いクラス図でも役に立つもので、議論のネタになってその後の実装が円滑に出来たんじゃないかなと思います。0から会話するよりも断然早く話が進んだので、目的はバッチリ果たせました。

参考にさせていただいたtoRisouPさんのQiitaにある感想の通り、設計したほうが100倍マシだと思いました。

設計せずに行き当たりばったりに作るよりかは設計したほうが100倍マシ

ペアプログラミング

これはkugiさん提案で、開発始めの前にkugiさんと1時間交代でペアプロをしました。これによりお互いの技量についてなんとなく理解出来たので、その後の開発も円滑になったと思います!コメントの書き方とか命名規則とかもこれで大体決まりました。

ライブ感、大事

u1w中は殆ど毎晩作業しましたが、その際にはそれぞれがDiscordの画面共有を行っていました。これにより、リアルタイムで誰がどの作業をしているのか把握することが出来、ライブ感MAXな作業をすることができました。
後半はRythmを連携して、皆でYouTubeで作業BGM流してノリノリで作業したりしてました。(SOUL'd OUTがUSで再生出来ないらしく、全部NG食らって笑いました。)

画像12

作業時の画面共有について、最初はストレスになるかなと不安もありましたが、行き詰まってそうな時には声を掛けたりor掛けてもらったり、テストプレイを眺めて課題を発見したり、nattuhanさんのモデリングを見て感動したり、kugiさんがクリアしているのを見て難易度を難しくしたり、APEXしたり、とにかく毎日楽しく作業できました。

SilCilSystem良いぞ

SilCilSystemはu1wレベルの短期小規模開発においてはとても有効だと感じました。ドキュメントもしっかり作ってあって、とても分かりやすいです!

ScriptableObjectを使うので管理に注意が必要ですが、SilCilSystemで作った変数アセット(区別するためにSilCil変数って呼んでました)から、シーンビューへのドラッグアンドドロップでUIを作れる機能はとても便利でした。

画像5

敵の数、タイマー、スコアは全部SilCilSystemの機能で作りました。
その他、フェードが掛かるシーンロードや、地味にめんどくさいオーディオ関連、最低限のオブジェクトプール機能なんかも揃っています。(簡単なゲーム開発だったらまた使うかも!)

特に今回はデザイナーもいる体制だったので、インスペクタから指定出来るのも良さそうな感じでした。値の監視やイベント発火もUniRxのように扱えて、ゲーム開発に慣れてきたら是非使ってみてほしいなと思いました。

感想

とにかく楽しく開発ができて、自分でも面白いと思えるゲームが作れて大満足です!nattuhanさん、kugiさん、ありがとうございました~!

コロナ禍で恐縮ですが打ち上げもしっかりやりました。めちゃくちゃ楽しかった!

告知

3DになってNOAちゃんが帰ってきます!
Steamへの年内リリースを目標に開発中!!

画像9

また、今回お声がけ頂いたnattuhanさんの代表作「Time to GOLF」も、面白いので是非遊んでみて下さい!!(有名Vtuberにもゲーム実況されてて凄い!!)

終わり

ここまでご覧いただき、ありがとうございました。
今後ともよろしくお願い致します!

参考

※リンクのみ



この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
10
Unityにハマってます。unityroom→http://bit.ly/2U8qfGN お仕事でブロックチェーン(Bitcoin、Ethereum、NEO)に関わり、DAppsに興味があります。 よろしくおねがいします!