Unityroom1週間ゲームジャムに参加しました

最近、ゲームを作る趣味を始めました。
初心者ということもあり、短期で集中してできるイベントないかなー、
できればオフラインじゃなくってオンラインならうれしいなー

っと思っていたところに、
Unityroom1週間ゲームジャムというものが開催されるそうではありませんか!
これは乗っかっていこう!

体験記

お題が発表されるまで

3Dゲーム、少なくともグラフィックが3Dで描画されるゲームに
チャレンジすることは決めていました。
3Dグラフィックはやりたいと思いつつも
ずーっと後回しにしてきたもので、
この機会をとらえて集中してやってみようと思ったのでした。

しかし全く無知の予習なしで飛び込んでも撃沈してしまうでしょう。
いちおう、Unityのチュートリアルのうち、
玉転がしとシューティングだけはやっておきました。
しかし、なぜこうも3Dだけは譲らないつもりだったのかというと......

出会い

時は少しさかのぼり、Asset Storeをぼーっと眺めているときのことでした。
こんなAssetを見つけてしまったわけです。

The Notes
https://assetstore.unity.com/packages/3d/characters/the-notes-17964

か、かわいいーーーーー
かわいすぎるーーーーーーー
このぴょこぴょこ感!
良すぎるううぅぅぅ
ぜったいこれいつか使う!

......ということがあったのでした。

1週間という期間

1週間というのは初心者がゲームを「完成」させるには
あまりにも短い期間だということもわかっていました。
なので「絶対に無理はしない」ということを考えていました。
こだわるのは「3D」だけ。ほかのあらゆる部分で妥協を惜しまず、
音符モデルを使いたいという欲望も必要なら捨てる、
という心構えをしておきました。

1日目:お題「10」

お題が発表されました!
まずは企画です。
10秒・10ステージ・足し算や引き算を用いるパズル.....いろいろありますが、
構想にかけられる時間は多くても1日だとわかっていました。
なんとか音符モデルを使えないか、1日考えたところ、

10種類の音符とかくれんぼをする

が一番よさそうだと思ったので、それで行くことにしました。

2日目:音符を隠す

とりあえず10種類の音符を出してみて、
それらが隠れる場所(木や石)をもう10か所、
合計20のオブジェクトを出してみると、
それら20個をすべて画面内に収めることが困難なことがわかりました。

ここで2つの代替案が浮上します。

  • 音符と同じ位置にシリンダーが出てきて、回転したり入れ替わったりした後にお目当ての音符の入っている位置を当てる
  • ランダムな位置に出てきたいろんな種類の音符たちの中から時間内にお目当ての種類の音符を当てる

時間がないので、あまり悩む時間はありません。
すこしだけ悩んだ末、
「ランダムな位置に出てきたいろんな種類の音符たちの中から時間内にお目当ての種類の音符を当てる」
を選びました。

3日目:カメラ

3日目はランダムに出てきた10種の音符たちを全部視界に収めつつ、
音符っぽさも失わないようにするためのカメラ位置の模索に費やされました。

10種の音符たちは全部床の上に出現するので、
上から見下ろさないと容易に音符同士が重なってしまい、
後ろの音符が見えなくなってしまいます。

そこで、必然的にカメラは見下ろしになりました。
見下ろす角度を大きくすればするほど、音符が前後で重なりにくくなりました。

しかし、見下ろす角度を大きくすればするほど、
音符が音符に見えなくなってしまいました。
音符の棒部分は縦に細く長いので、上から目線になればなるほど、
ちんちくりんの何かに見えるようになってしまいました。

カメラをああでもないこうでもないと動かしたり、
音符自体を後ろに傾けてみたり、やっぱり戻してみたり、
カメラの角度を45度にすることで心が決まったところで、3日目は終わっていました。

4日目:クリック

シーンにEvent Systemを追加して、CameraにPhisics Raycasterをアタッチすれば
カメラの方向からRayが飛んで、ぶつかったColliderを見ることで、
マウスポインタが指しているオブジェクトを取得できることはわかっていました。

しかし、具体的にどのようにすれば選択している感触が再現できるのかは
わかっていませんでした。
後ろにオーラを出すような方法は大変そうだったので、
自分が光ればいいのかな?

ということで、MaterialのColorを取得し、明度を25%上げてEmissionに設定してみたら
いい感じに光ったので、これでいくことにしました。
さらに、普段も少しだけ自己発光させておくと蛍光色パステルカラーっぽさが出て
かわいくなることがわかったので、そうしておくことにしました。

クリック時にGame Controllerに通知する機能もつけました。

5日目:ルール

音符の挙動とカメラワークにかなり時間をとられて、ゲームのルールの実装が全く手つかずでした。
焦りますが、クリック検出まではできているのです。
「絶対に無理はしない」を心に留めてやっていきました。

とりあえずスコアと探しべき音符の種類を指定するUIをつくりました。
Text Mesh Proを使ったのですが、使い方を微妙に忘れていて意外に時間を食いました。

10個の音符を出現させる→正解はどれか決めておく→クリックを待つ→
→正解か間違いか判定する→正解/間違いアニメーションが再生される→
→残りの音符が引っ込んでいく
までを1Waveとして、とりあえず10Waveほど繰り返しました。

こういう制御はコルーチンの出番!ということでガシガシ書いていきました。
これで、ひとまずプレイできる状態になりました。

まだタイトル画面もリザルト画面もないですが、ここでいったんアップロードしました。
最悪、出来上がらなくても努力が完全に無に帰すことはない、
という安心感的なものを確保するのはだいじです。

6日目:UI

あれだけ悩んで45度と決めたはずなのに、実際にプレイしてみると
カメラワークの問題で音符の種類が見分けづらいのなんの!

とくに、2分音符の穴や符点を見間違える事故がテストプレイ中に何度も起こりました。
角度がついているので、下のほうにある穴や点は(とくに手前側にあるときは)
かなり見えづらくなっていたのでした。
正直かなり気持ち悪い間違え方なので(だって見えないんだもん)、
結局カメラを正面に下げる機能をつけることにしました。

そろそろ床や壁もテクスチャを貼りたいころです。
ファンシーなかわいい感じにしたかったのは山々でしたが、
ここは「無理をせず」木の壁とカーペットの床で妥協しました。

リザルト画面やBGMも必要です。
ここも"かわいい路線"を目指す以上世界観を構築する大事な要素だとわかっていましたが、
ある程度のところで妥協していきました。

タイトル画面をとりあえずでっちあげたところで、6日目は終わったのでした。

7日目:難易度

何をするか結構悩んだのですが、
もうちょっとゲームっぽく難易度をつけようと決断しました。

とくに音符の名前というものを全く知らない人には
「なにしていいのかわからない」と言われても仕方ないゲーム性だったので、
音符の種類を紹介する「かんたん」モードは必要だと思ったのでした。

「かんたん」ができたところで、やっぱり

可能なら歩き回る音符を見てもらってかわいさを伝えたい!

という思いが出てきてしまったので、
時間の限り「むずかしい」を制作することにしました。

壁際で方向転換させることにかなりてこずり(rotationむずかしい!)
Transform.LookAt()を使えばいいというところに行きつくまで結構時間がかかってしまいましたが、
どうにか間に合ったのでした。

感想

つかれた!たのしかった!

今こうして振り返ると、
1画面に収まらないのならプレイヤーが動けばいいのだからかくれんぼ諦める必要なかったなあ
とか
シリンダーで隠してシャカシャカ路線のがよかったかなあ
とか
出来上がったゲームはあんまりテンポがよくないものになっちゃったなあ
とか
いろいろ思うところはあります。

でも得るものもだいぶ多かったのです。
3Dグラフィックのゲームを実際に作ってみるという当初の目標はぶれずに最後まで持っていられましたし、
Material, Shader, Camera, Lighting, Animator, Character Controller......などなど、
いろんな概念についても知ることができました。
次以降に活かしていきたいですね。

宣伝

実はUnityroomで開催されているもう1つのイベントにも参加してるよ!
みんなやってね!
伝奇もののノベルゲーだ!すごく面白いぞ!
f:id:gforest_shade:20181128152051p:plain:w128
喰人記 | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

ふるさとで、好きな仕事で輝きたい。
富山県魚津市ゲームクリエイター育成プロジェクト、
つくるUOZUプロジェクト の詳細はこちらから
つくるUOZUプロジェクト