tanaka's Programming Memo

プログラミングについてのメモ。

1週間ゲームジャム「さがす」に参加しました!

f:id:am1tanaka:20191020173914p:plain

さきほど投稿が終わったので、前回さぼったブログを~。

今回公開したのはこちら。

秒速忍者-箱入り娘編-

秒速忍者-箱入り娘編- | フリーゲーム投稿サイト unityroom

  • マウスで忍者を操作します
  • 忍者で箱を横切ると箱を叩ききれます
  • 姫やBBAが隠れている箱があり、その箱を壊すと中から隠れていたキャラが飛び出してきます
  • 姫をクリックすれば任務完了!殿様からの評価をもらえます
  • BBAを間違えてクリックすると、殿様の激昂を買って打ち首になるので気を付けてください!

といった感じです。ざっくりと開発の流れを振り返ります。

目次

参加の経緯

今回参加のきっかけはこちらの発表をしたことでした。

「素振り程度の感じでうっかり参加すると吉ですよ~」と発表した手前、そのぐらい力を抜いた参加を今回はできないか、ということでチャレンジしてみました。負担を分散するため一週間前から少しずつ動きはじめました。

フライング期間

フライングブログ1日目

am1tanaka.hatenablog.com

今回は個人的にはデジゲー博の準備、学校はDATフェスタという学園祭の準備で全然時間が避けそうにありません。が、参加はしたい。 ということで、徹底的に目的を絞った上でフライングで準備を進めて、なんとか参加することを目指します。あれこれ忘れそうなので作業メモを公開しつつ進めてみます。

昨日こそ丸一日使ってしまいましたが、今日も含めてほぼ作業しない日もあったので、これはうまくいったと自己評価しています。前日に投稿が完了するという、ずっとやりたかったこともできて満足。

当初掲げた目標です。

  • 実作業1時間+進捗メモ執筆。企画などは移動時間を活用
  • ランキング入りは目指さない!!
  • 参加者(特に初参加)のみなさんの作品をなるべく遊んで評価やコメントする
  • 実験要素を一つ導入して、あとは徹底的にコンパクトに

最初のはほぼ完遂。二番目も力を入れすぎないために意識しました。三番目はこれからやります。最後のは途中で方針変更をしました。あとはアセットの棚卸しと発案素振りで終わり。この時はまだ手持ちのアセットを使う方針でした。

フライング2日目

am1tanaka.hatenablog.com

アセットのテストをしたり、アイディアの具体化をする過程で、今回の最終的なテーマである「初級者が使える程度の技術でなんとかする」という方針が浮かびました。これにより、今回の参加の方向が決まりました。

フライング3日目

am1tanaka.hatenablog.com

1年生の夏休み前にやった内容をリストアップした上で、企画を検討していました。この時は、以前から考えていたプリミティブな図形だけで感情表現をすることを考えてました。作業らしい作業はしてません。

フライング4日目

am1tanaka.hatenablog.com

マルズラットを考えてました。タイトル案が好き。企画がいつものように無機質で無感情になっていったので、顔を出してテンションを挙げたのでした。床の解決策はすでに用意していたので、テーマ次第ではこれで作ったと思います。

フライング5日目

am1tanaka.hatenablog.com

台風を無事に生き延びてのブログ。前日は、一階が浸水する、屋根が飛ぶ、家が倒壊する、といったことを本気で想定して備えていました。とりあえずプロジェクトを作成して、必要なアセットの読み込み、ビルド、unityroomへの登録などを済ませてお題を待ちました。

そういえば、このブログを書き始めた時点ではUnity2019.1対応だったのが、ブログを書き終えて公開前のチェックをしたらUnity2019.2に対応してたのでした。

1週間ゲームジャム期間

初日!

お題が「さがす」に決定!先に考えていたマルズラットでもゴールの星を探すようにすればまあ行けるけど、とりあえず新企画の検討!

  • 「さ」が「す」になっているのを直していくとか、赤坂をさがすとか、言葉遊び系
  • 砲撃して相手の場所を探るような対戦ゲーム系
  • ランダムで適当に結果を出す診断系
  • スズメを探したり、コサギのガサガサのシミュレーションなどの生き物系
  • クラッチを元に、沢山のものを壊しまくって、あっという間に勝負を決める系

以上のようなのをつらつら考えているうちに、とにかく沢山パーティクルで散らしたれ、という最後のスクラッチアイディアが残りました。

プログラムの難易度は低い。沢山壊れるから気持ちよさそう。キャラを出してネタもできそう。

そんなことで決めました。

初日はメイン作業が押してしまったため、寝る前にちょこっとだけ作業。1時間ぐらいで以下のような原型を作って寝ました。

2日目

この日も殆ど進まず。姫のドットを置いただけでした。

3日目

3日目でようやくプログラミングっぽいことを。

今回、はじめてワンシーンでやってみました。ガチャガチャっと作るとやっぱり初期化が混乱しがちな印象ですが、遷移が速いのはいいですね。もう少しセンスよく上下左右にシーンを配するなどすると、かっこよくなりそう。今後の課題です。

4日目

ランキングを組み込んでました。

順位を表示したかったのでちょっと改造したり。ここまでゲーム動かしてないじゃん^^;

5日目

一気にゲーム部分が完成しました。

18時ぐらいから作業開始して、25時ぐらいまでやってたもよう。途中あれこれしながらだけど5時間ぐらいはやってたかな?

6日目

積み残していた、ネットランキングと画像ツイートの連携を中心に仕上げ。

この日の時点ではBBAを捕まえてもタイムロスだけでしたが、アップした動画を見て、なんか地味でネタ不足に感じたので、いっそゲームオーバーにすることにしました。タイムによってメッセージを変えたりも、この日に思いついて突っ込みました。

ということで、投稿予約!

最終日

今日です。積み残しは以下のやつ。

  • フルスクリーンにすると、アスペクト比が違うモニターで表示が崩れる問題
  • マウスを素早く動かすと、箱の切り残りが発生する
  • チュートリアルがない

マウスを素早く動かすのへの対応は、Physics2D-RaycastNonAlloc - Unity スクリプトリファレンスで瞬殺。

苦戦すると思っていたアスペクト比が違う時の対応ですが、今回利用していたPixelPerfectCameraで簡単に対応することができました!( Class PixelPerfectCamera | Package Manager UI website )

あとは、最後にゲームバランスを調整するために箱の数を減らしてカメラを調整した時に箱の大きさが相対的に大きくなってしまったので、それを修正して完成!

今回の1週間ゲームジャム、完了となりました。

アスペクト比が変わることへの対応

苦戦すると思っていたアスペクト比が違う時の対応ですが、今回利用していたPixelPerfectCameraで簡単に対応することができました!( Class PixelPerfectCamera | Package Manager UI website )

f:id:am1tanaka:20191020171130p:plain
Pixel Perfect Camera

これのCrop Frameの設定が最高で、チェックを入れておくとアスペクト比が異なる場合に、Cameraのビューポートを自動的に調整してReference Resolutionアスペクト比を維持して、画面外になる場所は黒くしてくれます。これでゲーム画面は対応完了です。

あとはUIですが、これはCanvasの下にPanelを置いて基準となる解像度にして、ボタンや文字などをそのPanelの子にすることで自動的に解決しました。

まずはお約束のCanvasCanvasScalerの設定をします。解像度を設定して、Expandにしておきます。

f:id:am1tanaka:20191020171759p:plain
Canvas Scaler

その下にPanelを置いて設定します。今回の基本解像度は960x540なので、Panelをそのサイズにしています。配置は画面中心にしています。子供の要素をこのPanelを基準にレイアウトすることで、アスペクト比や解像度が変わっても大丈夫です。

f:id:am1tanaka:20191020171610p:plain
Canvasの設定

次回に向けて

次回は1年生に積極的に参加してもらうタイミングなので、自分も参加予定だなぁと・・・。技術縛りがあったことで、企画側で何かインパクトを出さねばならない、というのを普段より意識しました。これはよい体験だったと感じたので、次回も意識したいところです。

改善点としては、土曜日に難航したツイート周りやアスペクト比への対応は、本来はゲームジャム期間前に準備できることでした。また、ツイートした時のキャッチーさが足りないのはいつものことですが、今回もダメな感じでした。ということで、一応、次回に向けて。

  • キャッチーな画面について研究
  • フレームワークを整理
  • 使えそうな技術のリサーチ

こんなところでしょうか。

まとめ

今回の最大の目的である、メインの作業であるデジゲー博の準備には殆ど影響なく参加できました。ここ最近、小難しいゲームが続いていたので、短時間でランキング競争ができる作品を作ってみたかったので、その点は欲求が満たせました。

技術的には特殊なことは殆どしていませんが、以下は1年生に教えていないものでした。

  • Pixel Perfect Camera
  • Physics2D.RaycastNonAlloc
  • Animationのイベント

Animationのイベントは取り入れようかな?と感じました。なくてもやりようはありますが、知っていれば簡単に解決できる演出や動きがあるので、知っておいた方がいいかなと思いました。

あとは、当初の目的の一つであった、参加者の皆さんの作品をあれこれ遊ぶ、というのをできる範囲ですが、やっていこうと思います。

参考・関連URL

unityroom.com

unityroom.com