ぷらこあ

ゆるふわゲームクリエイター / イベントオーガナイザーを目指してます

Unity1週間ゲームジャム(2017/11/13〜)に参加しました

Unity1週間ゲームジャムとは?

  • @naichilab さんの運営する unityroom というサイトで開催されたイベント
  • 1週間でお題に沿ったUnity製のゲームを製作する
  • 6回目である今回の課題は「space」

成果物「HayoDokeElevator」

HayoDokeElevator | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

はい私が遅刻しました

使用アセット

発想

そういえば最近、Unity認定者試験に合格しました (唐突な近況報告)

ずっと2Dゲームばかり作ってきたのですが、Unity認定者試験でライティング周り等を勉強したので、3Dゲームも何か作ってみるかなという気持ちでいました (とはいいつつ見れば分かるのですが、結局そんなにライティング頑張ってないです)。

さらに今回はエレベーターのゲームを作りたいというところが先行しています。エレベーターは「何が出入りするか分からない/階数でレベル表現が出来る/空間に限りがある」等、かなりゲームに適した題材だと思っていたので、いつかゲームを作るときに使おうと思っていました。

そこに「space」というお題を掛け合わせるのですが、エレベーターの限られた空間を有効活用するゲームにするということで、無難に倉庫番/箱入り娘といったスライドパズルを組み込んでみました。今思うとちょっと没個性だったかもしれないので、 クソ物理ゲー に倒しても面白かったかもしれない。

デザイン

MonumentValleyが好きなので参考にしました。

(MonumentValleyに限らず、ローポリであったり、抽象的/幾何学な世界観が好きです)

パステルカラー調にし、オブジェクトや装飾は最小限に、Cameraの設定はOrthographicにして平面に見えるようにしてどの角度から見てもポスターのような馴染み方をするみたいな心がけでした。そんなに複雑なものを用意しない分、アートワークは初日に落ち着きました。

実装

二次元配列のFloorクラスを用意して、初期配置/移動時にそこにオブジェクトが存在しているか否か、ゴールか否か等を管理するようにしました。 オブジェクトを1マスずつのみ移動可能にして、都度移動先に対して既にオブジェクトが存在していないかを参照しています。1マス移動なので被る可能性のあるのは上下左右のいずれかの列なのでそこだけ参照すればよいのですが、ゲームジャムクオリティでそのオブジェクトの占めるマス全て参照しています。南無。

また選択したオブジェクトがどのカメラ角度においてもドラッグ方向に移動して欲しいのです。

これが Camera.main.ScreenToWorldPoint(Input.mousePosition) だとやりにくいので、TapAreaというColliderを保有する不可視オブジェクトを敷き詰めて、ドラッグ開始時のTapAreaとドラッグ中のTapAreaを比較し、その差分を参照してオブジェクトを移動させてます。今思えばわざわざオブジェクトを敷き詰めなくても1つ当たり判定を持つオブジェクトを用意して、Ray飛ばした時のCollider座標を比較するで問題なかったですね...。

ここまで色々悩み悩みやって、結果最低限の動きができたのが金曜日でした。 クソ物理ゲー で実装する楽さを痛感しています... (ツミアゲタワーもDIGROLLもonelineも物理ゲーで2日目くらいには基本動作の実装が終えていた)

土日はあまり時間を使えなかったですが、csvからステージを生成する仕組みを用意して、ステージのレパートリーを増やしていきました。

Editor拡張でツール作るのが最高にCOOLだったのですが、イラレでステージ組んで動かして見てクリアできそうならSpreadSheetに座標/大きさ/種別を記載し、csv出力するというなんとも泥臭いフローで解消してしまいました。がっつりステージ組むツールは、スマホでリリースするときとかに取っておきます///

f:id:lycoris102:20171123114722p:plain

ステージ

時間なかったのでやっつけ感強くて申し訳なかったです...。

最初の3面くらいはチュートリアルで、あとは正直難易度に大きな差はなかったと思います。

(最後のステージだけ時間を短くして差別化してみましたが、じっくり考えられないのはストレスであまりいいやり方ではなかった)

カメラの回り込みや高低差を利用したステージを意識しましたが、フォーカスしにくい、真横にカメラをつけた時のオブジェクトの違いが分かりにくい等、UXの課題が残る感じになりました。

UI/演出

角度によって見えないのはどうかなとは思いつつ、実験的にせっかくの3DゲームなのでUIもWorldSpaceで配置してみました (がどうだっただろうか)

演出周り (移動時のカメラのシェイク/エレベータの移動/ドアの開閉) などは例によって DOTween で実装しました。いつもありがとうございます。

全体の雰囲気作りに毎度おなじみ Post Processing Stack を利用しています。Bloom(発行)/AmbientOcclusion(環境閉塞/物体の境目の暗がり)/Vignette(角を暗くし中心に視野をフォーカス)を有効にしています。

リリース後にFLStudioで適当に作って付けました。そういえば最近ガッツリ曲作ってない...。

感想

上にも書きましたが、結構実装に躓いて悶々としていたのですが さらに今回は他の人のクオリティ/レベルの高さに圧倒的に驚き、非常に焦りを感じました。 (個人的に面白いと思ったゲームの紹介も機会があったらやりたい)

何はともあれ、6回目の今回も無事に提出できて良かったです。 皆勤賞だ!遅刻したけどな!

いつもこのイベントやるたびに自分のことを (Twitterで) フォローしてくださる方がいて ゲームクリエイターとの繋がりを作る大切な機会になっています。 今回も @naichiさん、参加者の皆さんに感謝します。ありがとうございました!