見出し画像

unity1week 「回」を振り返る

前回に引き続き、2/22より開催されていたunity1weekに参加しました!
今回も振り返りを書き残しておこうと思います。
↓ つくったものはコチラ

↓ 前回の振り返り

事前準備

今回はあまり大した事前準備はしませんでした。
(Valheimが楽しすぎて・・・)
とりあえず汎用アセットとしてDOTweenUniRxをインポートしました。
次にシーン遷移時のトランジションの仕組みを用意しました。
以下のページを参考にさせていただきました!

【Unity】Unityでトランジションを使用した綺麗な場面転換(uGUI対応版) - テラシュールブログ

2/22(1日目) テーマ発表

テーマは「回」ということで、早速ゲーム内容を考えます。
回という漢字を見たときに、四角が大小2つという形が面白いなーと思ったので、それを活かしたゲームを作ろうと考えました。
(前回も似たようなことを考えていたような・・・)
自分の中をくぐらせて「回」、敵の中をくぐって「回」というのが良いかなぁと思ったので、それをスターフォックスのような奥スクロールシューティングみたいな形で実装することにしました。

ゲームの中身はなんとなく想像できたので、この時点でゲーム全体の設定やゲームタイトルを決めます。
このあたりを先に決めておくと素材探しが楽になります。
四角形の何かと戦うゲームになるので、それを仰々しく「対四角型生命体決戦兵器」みたいな感じにすることにしました。
ただ、「四角型生命体」だといまいちゴロが良くないような・・・。
「口(こう)型」「口(く)型」などいろいろ悩んだ結果、兵器などに「イ号」「ロ号」「ハ号」のようにイロハがついているイメージがあったので「対ロ(ろ)型生命体決戦兵器 回」に決めました。

(ロ号で検索して出てきたWikipedia)
 横廠式ロ号甲型水上偵察機 - Wikipedia

この日は仕事もあったので、実装は次の日から始めることにしました。

2/23(2日目) タイトル作成~自機移動、敵の黄弾作成

それっぽいフォントを探してきてタイトル画面を作成します。
無骨で力強い雰囲気を出したかったので、毛筆フォントを探します。
今回は衡山毛筆フォントを使用しました。
ついでにメニュー周りで使用するためのフォントも一緒に探します。
ほのかに近未来感を出したかったので、細身で直線的なせのびゴシックを使用しました。
また、今回はタイトルの読み方がわかりにくいのでルビを振ります。
以下のページのコンポーネントをそのまま利用させていただきました。

TextMeshProの漢字テキストにルビを振るコンポーネント【Unity】|アマガミナブログ

それとskyboxも変更しておきます。
skyboxはゲームの雰囲気に大きく影響するので、早めに決めておきます。
AllSky - 200+ Sky / Skybox Setから良さげなものを選びます。
今回は高高度の青空か宇宙のどちらかにしようと考えていたので、とりあえず青空にしておきました。
(最終的にAllSkyのskyboxは使いませんでしたが、製作中にゲームの雰囲気を掴むのに役立ちました)

タイトルができたので、次にゲーム部分を作成します。
まずは自機を作成します。
とりあえずCubeを4つ組み合わせて四角を作ります。
これで自機と敵と敵弾のモデル完成です!
(きっとたくさんの人が同じことをしたんだろうなぁ・・・)
次に自機の移動処理を書きます。
このあたりはUniRxでサクっと実装します。
(サクッとと言いつつ今回初めてUniRxを使ったので、いろいろ調べながら見様見真似での実装になり、そこそこ時間がかかりました・・・)
このあたりの実装は以下のスライドを参考にしました。

はじめてのUniRx
https://www.slideshare.net/torisoup/uni-rx

そして敵の黄弾を作成します。
これもDOTweenでまっすぐ移動させるだけです。
敵の弾を光らせたかったので、ここでMKGlowをインポートしました。
黄弾のマテリアルをいじって、それっぽく光るようになりました。
最後に当たり判定を取って敵弾を自機の中にくぐらせる処理を実装します。
これでなんとなくゲームの形が見えてきました。

2/24(3日目) 

この日は仕事が忙しかったので、作業できませんでした・・・。

2/25(4日目) 敵実装、攻撃判定実装、雲表示

自機はそれっぽく動くようになったので、次は敵を作成します。
敵はDOTweenのSequenceを使って制御するようにしました。
移動用Sequence、弾発射Sequenceを作成して、それらをJoinで同時に再生しています。
行動パターンの作成はもっと苦労するかと思っていましたが、DOTweenが非常に優秀なおかげで想像していたより簡単に作成できました!

ここまでできたら、次は敵への攻撃処理を実装します。
黄弾を自機にくぐらせるのと同様に、敵の中をくぐる処理を実装します。
くぐったら敵を破壊します。
とりあえずRigidBodyでふっとばして破壊してる感を出しました。
物理エンジンの力は偉大・・・!

また、自機へのダメージ判定もここで作成しました。
敵、弾と自機の外枠で当たり判定を取ります。
外枠が当たったら、HPを減らして自機を揺らします。
自機の揺れにはDOShakePosition、DOShakeRotationを使ってみました。
簡単に揺れ表現ができるのでかなり便利です!
ここまででゲーム部分の基礎が8割ほど完成しました。

ここで画面全体の動きが少なく地味なことが気になったので、雲を流してみることにしました。
(自分の中ではDanceDanceRevolution Aのタイトル画面をイメージしていました。音ゲー好きです)
手元のアセットを探してみたところ、Massive Clouds Atmos - Volumetric Skyboxというちょうどいいアセットがあったので使ってみました。
簡単にきれいな空の表現ができてとても便利です!
軽くパラメータを調整するだけで、想像に近い雲の表現を行うことができました。

2/26(5日目) 赤弾作成、細かい表示調整

この日も仕事で遅くなってしまったので、あまり大きな作業はせず細かい作業を行いました。

今のままだとゲームがシンプルすぎるので、吸収できない赤弾を作成します。
黃弾を大きくして色を変えるだけで完成です。
敵の行動パターンに組み込むのは後日行うことにしました。

また、表示物をいろいろ調整します。
弾吸収時や敵攻撃時のエフェクトを作成したり、弾の色合いや光り方を調整したり、雲の流れるスピードを調整したりなど、細々した作業を行いました。

2/27(6日目) UI作成、ポーズメニュー作成

そろそろゲームループを完成に持っていきたかったので、その前準備としてUIとポーズメニューを作成します。
UIの表示物はHP、エネルギー、スコア、コンボくらいなので、uGUIでパパッと作成します。
円状のゲージが使いたかったので、以下のページを参考に作成しました。

Unityで円形ゲージを作成(HPゲージ、パワーゲージ) - プログラム初心者がUnityでゲームアプリとか作ってみた……い!

ポーズメニューは一番シンプルなTime.timeScaleを0にする方法で作成しました。
ここからリトライとタイトルに戻る処理を作成しておきます。
シーン遷移するだけなので簡単です。
正しくリトライとタイトルに戻る処理が動いていることを確認して、この日は作業終了です。

2/28(7日目) ゲームループ完成、サウンド追加、その他いろいろ

ゲームクリア、ゲームオーバーを作成してゲームループを完成させます。
それぞれ画面を作成し、条件に合わせて表示するだけなので簡単です。
・・・と言いたかったのですが、この画面で表示される文字を装飾するのが楽しくなってしまい、無駄に時間がかかることに。
TextMeshPro楽しい・・・!

↓ このときつくったもの

画像3

画像4

なんとかゲームループが完成したので、忘れないうちにランキングツイート機能を実装します。(このあたりは事前準備するべきでしたね・・・)
本当に簡単に実装できるのでとても助かります!

その後、サウンドをつけていきます。
とりあえず手元のアセットに使えそうなものがないか見たところ、Grand Orchestra Collection Vol.1というアセットが目に入りました。
試聴してみるとどの曲もメチャクチャかっこいい!
BGMはこれに即決しました!
SEは前回と同様、かつてHumbleBundleのバンドルで手に入れた素材から見繕いました。
また、Ultimate Sound FX Bundleからも素材を使用しています。
サウンドの再生制御にはMaster Audio: AAA Soundを使用しました。

この時点で20時が来てしまい、遅刻が確定しました・・・。

3/01(8日目) 敵パターン作成、チュートリアル作成

前日から引き続いて徹夜作業です。
事前に有給を取っておいたので、こうなったらもうこのまま完成させてやる!という感じでした。
最後に残っていた作業は、一番時間がかかる敵のパターン作成です。
(なぜ先に終わらせておかなかったのか・・・)
ひたすた移動パターンと弾発射パターンを作っていきます。
頭があまり回っていなかったのもあり、調整に時間がかかりました・・・。
ある程度作ったところでキリがないと感じたので、ステージ後半はそこまでに作ったパターンをランダムで再生するようにしました。
うーん・・・、なんとなくそれっぽくはなったかな・・・。

どうせ遅刻するなら作れるところまで作ろうと思い、チュートリアルを作ることにしました。
あまり難しいことはできなさそうだったので、Coroutineで適当にメッセージを切り替えるようにしました。
ついでにチュートリアル用の敵パターンを作成して、メッセージに合わせて出現させるようにしました。

朝7時半ごろ、ようやくゲームが完成!
アップするためにアイコンを作成します。
今回はScreenToGifでタイトル画面をキャプチャし、直接GIF画像にしてアイコンを作成しました。
トリミングなどの簡単な編集も行えるので便利です!
アイコンができたらunityroomにアップして終了です。

(このあと寝て起きたら17時でした。生活リズムが・・・)

3/02(アップデート) BGMループ修正

WebGLビルドだとBGMがうまくループしないことに気づいたので修正しました。
もともとWAVファイルにループポイントが設定されていたのですが、WebGLビルド時にAACに変換されてループ情報が消えたのかな?と予想しています。
(そもそもWebGLだとポイントループできない?
あまり詳しくはわかっていません・・・)
仕方ないのでSoundEngine Freeでイントロ部分とループ部分を切り分けました。
まだ時々ループ部分がずれることがありますが、これ以上手が打てないのでひとまずこれで解決としました。

3/05(アップデート) 自機表示調整、エネルギー表示

コメントにて自機が移動しているかどうかわかりにくいという意見を頂き、自分も同じように感じていたので修正することにしました。

とりあえず移動方向に傾くようにしました。
これだけでもだいぶ雰囲気が変わります。
少なくともボタンを押したことがちゃんと反映されていることを表現できたと思います。

また、せっかくなのでもうちょっと自機をカッコよくしたいと思ったのでパーティクルでブースターのような表現を行いました。
これによって移動時に残像が残るようになったので、さらに移動表現が強まったように感じます。

ついでに、敵の弾を吸収してエネルギーが溜まっていることと、攻撃時にエネルギーを消費していることが分かりづらいかなぁと思ったので、エネルギー量に応じて自機を光らせるようにしました。

3/14(評価期間終了)

画像1

62件の評価をいただきました!ありがとうございます!
評価結果は以下のようになりました。
(せっかくなので前回からの差分も記載します)

【楽しさ 】3.597 ( -0.094)
【絵作り 】3.790 (+0.025)
【サウンド】3.629 (+0.172)
【操作性 】3.290 ( -0.377)
【雰囲気 】3.806 (+0.102)
【斬新さ 】3.710 (+0.537)

平均値は3.637 (+0.061) となりました。
わずかではありますが、どうにか前回の結果を超えることができました!

・斬新さ大幅アップ!
前回は元ネタありきでしたが、今回はそうではなかったので斬新さは大きく上がりました。
あるいは、自機の外側と内側で「回」を作るという部分を評価してもらえたのかもしれません。
なんにせよ、自分としては嬉しい結果です!

・サウンド、雰囲気アップ!絵作りも少しアップ!
絵作りやサウンドについてはアセットの力を頼りまくったので、それが結果として数値アップに結びついたのかなと思います。
特に空の表現とBGMについてはお手軽にカッコいいものになったので大変助かりました!
ただ逆を返すと、アセットに頼ってこの数値ということは、現状の自分の力量ではこれ以上の数値を狙うのは難しいかもしれません・・・。
これまでとは違ったアプローチでスキル向上などを図る必要があるかもしれないですね・・・!

・楽しさがダウン、操作性は大幅ダウン・・・
これについては、単純にコアゲーム部分の練りが甘かったの一言につきます・・・。
最初に試作したものからほとんど調整せずに完成としてしまったので、ここは大きな反省点です。
また、表示物の調整に時間を使いすぎて、ステージ作成に使える時間がなくなってしまったのも良くありませんでした。
思いついた順に手を付けるのではなく、ちゃんと作業の優先度を考えて作業をすすめるべきですね。

以上、振り返りでした!
都合が悪くなければ次もぜひ参加したいです!
次の目標は、いずれかの項目で評価4以上を獲得すること!
難しい目標だと思いますが、達成できるよう精進したいと思います!

(それはそれとして、とりあえずValheimやってきます)