ただの下手の横好きの記録

なんてことない現状を書いただけの記録日誌

絶対やってはいけないunity1week1週間ブートキャンプ(お題「ふえる」)

2020年08月10日(月) 00:00 〜 2020年08月30日(日) 20:00に開催。「unity1週間ゲームジャム(通称unity1week)」にて参加した記録です。ブログ書くのは初になります。

 

unity1weekとはUnityを使って1週間でゲームを作り、web上にて遊ぶイベントのことです。今回の開催したunity1weekのページはこちらです。

Unity 1週間ゲームジャム お題「ふえる」 | フリーゲーム投稿サイト unityroom

 

今回作成した自分の作品はこちらです。

ピコハンクライマー | フリーゲーム投稿サイト unityroom

ピコハンクライマー

 

参加したunity1weekは今回で5回目となります。今回はゲーム数がかなり多かったため、審査期間が2週間に伸ばされ(元は1週間)実質unity3weekという形になってます。自分も開発後ゲームしてましたが、ホント2週間の評価期間じゃなかったらあまり出来なかったと思います。コレはコレで楽しかったですが何せ時間が無いもので…。

さて、今回作ったゲームですが、実は事前準備をしてました。そのあたりから語ろうと思います。

 

0日目:お題発表以前

具体的な日付は忘れましたが7月後半の話。

unity1week主催者のnaichiさんからunity1weekの開催日が発表された日のことでした。

 

「次何を作ろうか?」と思ったところ、自分でどうしても作りたいジャンルがありました。それは横スクロール(2D)アクション系(いわゆるプラットフォーマーのゲームです。

ただ自分は横スクロールアクションのノウハウが全く無かったので、下準備を行うことにしました。正確に言えば「サンプル拾ってそこから基礎を学んで、お題発表時にイジる」という計画です。

いろいろ試しましたが、最終的にこれになりました。

 

「【Unity 入門】【チュートリアル】2D アクションゲームを作る」

「コレならイジれそう」と思い、まずはコレでサンプルを作成することに。とりあえずジャンプの部分までのサンプルはあっさり完了。あとはコード見て色々ロジックを覚えていきました。

特に気になったのが、raycastで着地判定を取っている点。参照として該当ページの「移動」または「ジャンプ」などのController2D.csで、縦と横を別々に判定を取っているという箇所です。

普通コライダー系列で判定を取ると、特に工夫なしだと当たったか外れたかの判定しか取れないのですが、この場合は縦横が別なので、縦だと着地や頭ぶつけ、横だと側面接触をダイレクトに取れるので簡単でした。

1つ注意点を挙げるとすれば、この処理はコライダー部分で処理してるわけではなくUpdate系列で処理してるので、Object実行順次第では処理判定が前後する可能性があるのでその辺りは一工夫要るという点ですね。

(ちなみにこのコードはUpdate内で実行してますが、今回は物理移動の関係上FixedUpdate内で実行してます。)

というわけでこのサンプルにあれこれ付け加え、お題発表まで待ちます。

 

1日目直後:お題発表から

発表されたお題「ふえる」

毎回お題に沿ったゲーム作る時に自分が思ってるのは「内容のダブリは避けたい」です。でも大体簡単なお題だと簡単な発想でダブるのは避けられない上、自分は斬新なことを考えると1日中思いつかない性格なもので、結局方針としては「まず自分が好きなものを作って、その上でお題に沿ったものを載せる」というこじづけをやることに。

ということで自分が好きなもので思ってることを作ることにします。

 

まず、ジャンプってどうやるんだ?という点です。

ボタン押せばジャンプするということではありません。物理的にどうやってジャンプしているかという話です。「人だと足で飛ぶ」「地面から飛ぶ」等。

もうちょっと考えてみましょう。「足なので地面を蹴っている」「その時足は?」「膝曲げている」「膝が曲がって伸ばした時に飛ぶ…」・・・「バネっぽい

なるほど、ということはバネがあればジャンプアクションは成立するということですね。でもバネだけだと味気ないと思い、いろいろ考えた末、1つ思いつきました。

「・・・ピコピコハンマー!

これはポップそう、しかもハンマー使ってるアクションは結構ある上、これを地面に叩いて飛ぶという発想は無かったかもしれない。いやあったかもしれないけど、とにかく時間あまりかけたくないので強行することにしました。これ作成後就寝。(多分深夜2時)

f:id:niya3rd:20200831210719g:plain

1日目直後:サンプルから付け加えたピコピコハンマー

 

 

1日目:一気に基礎作り

今回は時間が結構あったので、この日で一気に基礎を作り込みます。

  • ピコハン書き直し、及び判定を振り上げ部分と振り下ろし部分で分ける
  • 操作性を整える
  • ブロックを叩くと消えて、着地すると復活するようにしてみた
  • 画面端をウロウロできるようにした
  • 着地せず何回か叩いた状態でピコハンボタン長押しすると高跳び
  • 旗取るとクリアとする(まだクリア部分は作ってない)

ポップさを前に出すためピコハンのドット絵を更に書き込み、判定を振り上げ部に当たると急降下、振り下ろし部はジャンプと言う風に分けます。またヒットストップも作り、数フレーム後硬直して移動できるように操作性を良くします。

その他操作性に関しては「慣性移動は悪!ただし慣性移動なしも良くないので少し残す」「落ちる速度は控えめに(ライト層対策)」「上昇がしなくなる辺りで浮遊するように重力をゆるめに調整」を心がけます。これで大分ジャンプアクションとしてやりやすくなりました。やはり自分がゲーマーである故か、この辺り結構凝りました。

ブロックを叩くと消える箇所は「パズルくさそう」と思っただけで、これだけではまだ意味がありませんが、とりあえず付けることにします(大雑把)。

画面端をウロウロする箇所ですが、ちょっと苦労しました。というのは画面端で半分ずらした時、ずらした箇所の反対側にあるピコハン叩ける場所が叩けないのです。キャラをループしたところで叩くことが出来ません。そこで、ダミーを画面端分の位置に配置して、そこも判定を取ることにしました。…ただこれだけだと正しい判定が返って来ないので、実行手順も本体→ダミーの順で取り、その結果を本体へ値を返し再度実行という結構ヤケな手順を取って一旦解決ということにします。

高跳びの仕様はそこら辺のプラットフォーマーでもよくありがちという点もありますが、後で話すやり込み層を分けるためでもあります。

あと流れとして旗取るとクリアという過程を作り(クリア自体はまだ作ってない)、この日の作業は終わりです。作業時間は夜10時まで。

 

f:id:niya3rd:20200831211214g:plain

1日目:基礎完成

 

 

2日目:最低限のデザインを書き込む

ゲームの流れの基礎が出来たので、今度は絵のデザインをしこたま入れます。時間の都合上この日は最低限しか入れてません。

デザイン元の大半はOpenGameArt.orgから参考した物が多いです(特にFantasyやPlatformerで検索したものが多め)。

というわけでこの日はキャラデザイン含め、背景及びタイル部分を一気に入れました。特にタイル部分はリソース圧迫の関係もあったため、リソースは少なめでタイルは2重に貼り付けることで色々なタイルの配置パターン出せたかなと思っています(例えば後ろに繋ぎの背景つける工夫など)。

あとキャラのコンセプトは「登山家っぽくなさそうなファンタジーキャラ」という感じでドット絵を書いてます。パターン数にして総計28。ただし全体の色数最適化せずそのまま入れてしまいましたが、直すのも面倒になるので仕方なく現行のままで行くことに。

この日も作業時間夜10時まで。

 

f:id:niya3rd:20200831211734g:plain

2日目:存在しない花

 

 

3日目:「ふえる」をひらめく

この日も引き続きゲーム作りや絵のデザイン書きながら色々やってましたが、とうとうお題「ふえる」に対して1つゲーム性をひらめきます。

 

「順番に叩いてアイテムを取ると点数がふえる!」

 

何回かゲームデバッグ作業してて思ったのですが、途中からブロックの遠い部分とか難しそうな箇所を叩くのが面白かったので、これでやっとお題を消化できそうなので作業開始。

  • ブロックに番号を表示する
  • アイテムを追加(星)
  • 取ると点数追加の作業

これでとりあえずお題消化完了。さらにゲーム内容をどんどん追加していくことにしました。

  • 旗を早く取ると高い点数が取れる
  • ブロックが普通に(視認性のため)分からないので光の点滅を追加
  • 叩かないと通れないブロック、乗れない丸ブロック追加
  • タイム追加してゴールまでタイム計れるように
  • その他エフェクト類(ブロック破壊や戻し、背景に鳥追加とか)

ここまででも十分作成しましたが、他に自分のやりたかったこともここで作成しました。それは以下になります。

  1. ライト層とやり込み層をどうしても分けたかった
  2. 高跳びをちゃんと理解できているか(やりこみ関連)

1に関してはunity1weekやっててずっと思ってたことなんですが、ライト層で判断する評価とやり込んだ後の評価って大体違うと思うんですよ(ライト層って種類いっぱいいる)。なにぶん自分もそれなりのゲーマーだけあって最初の薄皮だけで名作か駄作って評価されたくないし、1回そのアンケートの意味もあって最低ジャンプ量のみでクリアできるように旗を配置しました。そして更に上をやり込み向けの配置にしています。これは2の高跳びも関連することなのですが、その時の点数で評価見ようと思ったのです。まぁ後々、予想通りでした。真面目にクリアした人はデータ見てると1~2割ぐらい、そこそこ頑張ってた人も数割はいました。そんな感じです。

就寝直前の時はすでに1面作成を終えました。思いつけばもう早いです。作業時間夜11時弱まで。コンセプトまで作るのに時間かけ過ぎかもしれません。

 

 

f:id:niya3rd:20200831211502g:plain

3日目:順番に叩いて星を取ると高得点

 

4日目:ステージごとの雰囲気変え

各ステージごとを盛り上げるため、背景をステージごとに別々にするようにします。普通に背景を1から書いたものもあれば、流用して色変えただけの絵もあります。

これを考えたのは背景同じだと手抜き扱いされるのを恐れステージの起承転結を作るためで、最初は始まりだから入り口をイメージ、次はちょっと難所を用意、その次は変化をつけて最後にクライマックスな感じにします。

コンセプトが決まったので怒涛のごとく一気に開発スピード上げます。2面以降から。

 

f:id:niya3rd:20200831212953g:plain

4日目その1:岩に当たる

2面のコンセプトはちょっと難所を作るので何か用意しようと思います。今回は障害物となる岩を用意しました。これの特徴は主に「当たるとキャラが硬直して操作不能のまま落下」「ピコハン当てるとちょっと硬直する」という感じ。動き方が岩なのかただの浮遊物か分からないですけど結果良しとしましょう。時間無いのが理由ですけど。

岩に当たった時の箇所でちょっと時間食ってました。なぜなら画面端で本体とダミーの判定をどこまでにするか迷ったためです。当たってないのに当たってる?→実はダミーが当たっていたという風にならないようにしたかったのですがコレの線引き難しかったです。

 

f:id:niya3rd:20200831213137g:plain

4日目その2:セミアンルーレット

3面は何か変化を持たせます。なんとなく夏なのでセミを追加しました。しかしセミをピコハンで叩くっていう何ともなシチュエーションかつ、このセミ、デカすぎますね…。

とりあえずステージ作成。セミは乗れないブロック扱いにしましたが、それ以外にもう1つ特徴を加えました。それは「動きをつける」。たったこれだけです。現状回転しかしないし配置がちょっと問題あるかもしれませんが、これだけでも変化があると思い良しとします。

余談ですがこのステージの名前を「セミステ山」にした自分はもう狂ってたかもしれません…。

 

f:id:niya3rd:20200831213449g:plain

4日目その3:固定配置ではありません

4面はクライマックス風に夕焼けを背にもうすぐ終わりといった感じを。

2面と3面にあったギミックも持っていき、終盤風の配置にしていきます。特に力入れたのはやりこみ場面の「岩石登りの配置」「最後のランダム配置」です。

特にランダム配置に関しては、「左右どちらかにブロック配置をする」と「ある程度端に行ったら戻す」の処理の2つのみです。これだけでもある程度飽きずにメリハリつくと思ってます。

やりたかったことは固定配置のみではつまらないだろうから実力があるかのテストをどこかでしたかったのもあります。まぁおかげでやり込んだ人がちゃんと最後までやってくれたのが良かったです。

 

この日はリソースがすでに出来たのもあって、無心で配置作業を自由にやってました。多分作ってて楽しかった日だと思います。だからこそここまで進めれたのもありますね。就寝11時半過ぎ。

 

 

5日目:サプライズを加える

作ってない項目をどんどん作ります。まずチュートリアル

f:id:niya3rd:20200831003455p:plain

5日目その1:さっさと済ませる雑なチュートリアル

当然この間も時間がないので、チュートリアル自体は前回の「VirtualGHost」みたいに丁寧にやるのは諦めて普通に文字貼って進ませる方針へ。時間にして2~3時間。これ後で考えたら判断ミスの気がします。やはり丁寧にやるべきだったかもしれませんね。(特に高跳びの部分)

 

そしてチュートリアルが終わった後、ステージ追加したかったこともありまして…。

 

f:id:niya3rd:20200831110943g:plain

5日目その2:わしが育てたサプライズ

 

あの4面で終了するのもちょっと歯切れ悪いので、もう1ステージ追加することにしました。コンセプトはゴールの先の楽しみを味わう人向けという感じ。当然ライト層の方はスタート地点にある旗で帰らせるという形に。

追加したのは星ブロック(着地できないブロック)。そして登った人だけが見れる星座(わし座)。

なぜわし座を選んだかと言うと順番ブロックと星アイテムを合わせて恒星が10個あるという理由です。他にもあると思いますけど唐突で即採用。最終面だし順番が9で合わせられるのがここしか無いなと思ったので。

 

この後、ランキング機能、ツイート機能を追加した結果表示も作ってました。

この日はここまで。就寝10時。明日以降のために体力温存。

 

 

6日目:SE関連の作り込み

ここまででまだやってないところがあります。そう、SEがまだ作ってない

そういうわけで今日中に片付けたいと思います…が、いかんせん時間がないので、最悪BGMは前に温めていたものを持っていくことになりました。

BGMに関しては2つほどすでに作ってあったものを持ってきます。持ってきたのはチュートリアルのBGMとメインのBGM。チュートリアルBGMは前作「VirtualGHost」の時にもう1つ思いついたBGMで、メインBGMはコミカルなプラットフォーマー系っぽいのを考えた時のイメージといった感じで。これでいいかなと思ったのですが、これでやると5面の雰囲気がちょっと明るめになるのはどうかと思って、5面BGMは今日中に作成することにしました。好きなイメージは出来てたので早かった…。

SEに関しては基本チップチューン。流用部分に付け加えしてましたが、唯一ピコピコハンマーの振る音だけちょっとチップチューンらしからぬサイン波を弄ったものを採用。あと単調にならないようにパン割り振りをやってみたのですが、これでもバリエーションが無いと思い、フレーズパターンが違う効果音を複数作ってました(基本3種類、モノにより7種類)。基本的にピコハン振る音、叩く音、星アイテム、旗、番号ブロックの正解や間違い、落ちる音が主です。星ブロックが散る音もあったかな。

 

全て作成しゲームに入れてテスト行ってこの日は終了。この日から時間感覚が無くなってきました。就寝は不明。多分夜中まで?

 

 

7日目:仕上げ、そして公開(後悔)へ

この日にやったことを大雑把ですが、

  • クリア時の処理(キャラが登る感じとか)
  • やりこみ層向けのためのランキング(星すべて取るのが条件)追加
  • マップ調整
  • タイムボーダーをライト層向けに少し余裕を持たした
  • WebGLテスト

基本的に仕上げのための演出作成。

クリア時のエフェクトは「VirtualGHost」で出来上がってたのでちょっと手直ししたものを付加。タイムボーダー(旗取った時のタイムボーナス部分)が自分用のクリアタイムになってしまってるので、これをちょっと簡単にしておきます(約5秒ぐらい余裕を持たせる)。デバッグやり込んでるとこういうのが分からなくなってくるのですよ。開発続けてるとありがちですね。ライト層も意識しないといけないので。

本当はもっと細かいところ(バグ潰しとか)もやってますが基本ここまで。そして公開。

f:id:niya3rd:20200831112332p:plain

 

 

8日目以降:反省など

まぁ今回に関しては色々考えなければならないことありました。

  • webページの操作方法にチュートリアルで書かれてることが足りない(高跳び)
  • やり込み層向け過ぎた
  • 最小限のグラフィックにしたため、色数最適化とかしなかった
  • BGM、SEも細かいのが欲しかった
  • 1週間で作るクオリティじゃない(←?)

 

致命的なのが高跳びをちゃんと解説できていない点。コレが分かってないとゲームの半分は遊べてないも同然。慌てて修正しようと思ったのですけど時既に遅し。やり込み層に関してもそうで、2面の最初の星は高跳びしないと取れない等、説得に欠けた部分はありました。それ以前に高跳びの「着地せず何回か地面叩かないと高く飛べない」仕様も疑問に思ってはいましたが、思いつきで入れたが最後。無計画ってこうなっちゃうんですね。

コレを1週間で作ったという点ですが、私生活多少犠牲にしてまでどこまでできるかをやってみた結果です。

  1. とにかく気が散る情報は基本無視(SNS系が主)
  2. 1週間生活の計画に食事+休憩を1時間ぐらいはまず取る
  3. 今日やったことと明日やることを計画して睡眠はしっかり取ること
  4. 最悪休憩部分は動作デバッグとかの手を動かさない作業のみOK

1週間とはいえ、貴重な自分の人生なので無理な徹夜とか無意味な行動は慎みましょう(特に2と3)。病気の元です。やるならギリギリでも計画はちゃんと考えることですね。

 

あとここに書いてませんが、他のゲームを見て「ゲーム中に説明が出る」案も考えてはいましたが、プレイヤー側が学んで欲しいと思ってそのままにしたのがダメだったかもしれません。自分は何も説明がない方がクドくなくて気が楽という考えでしたが(探るという楽しみがあるため)。

ただ評価してくださった方も結構いたので、その辺は素直に感謝することにします。

 

 

結果

f:id:niya3rd:20200831015658p:plain

総合:7位

楽しさ25位

絵作り14位

サウンド9位

操作性22位

雰囲気41位

斬新さ15位

でした。(注:2020/8/30 20:00時点の結果です。変動の可能性もあります。)

評価してくださった方々、ありがとうございました。コレが出た時に手の震えが小一時間止まらなかったです…。まず全項目が圏内って初(50位まで拡張した理由もありますが)。斬新であるってのがまさかと思いました。苦手分野なのに…。多分満点つけた人もいるからその点含めでしょうけど。

楽しさが25位なのは間違いなく高跳びをちゃんと解説してない(または高跳びの仕様が難しそうな)点でしょうね。これはもうこっちの判断ミスです。勿体無いことをしました。

ともかく丸1週間で作成した甲斐があるというものです。よく体がもったもんですよ。2度とできないですけどねこんな事。

 

 

終わりに

最近思うのですよ。ゲームは人それぞれ好きなのが別々だと思うのです。なので結果ランキングは別の見方すると、unity1weekに来た人たちの人気投票でもあると。

そう考えると「こっちのゲームの方が面白いのに上位じゃない」のも、情報の撒き方が上手いかで決められるのかなと思います。商売とかで言えば宣伝(SNSだとバズ)ですね。そうなると自分は結構不利な立場ですね。やっぱり信頼(の数)がデカイのだと思います。

そんな中で順位取れたのも今回のunity1weekで信頼がふえて良かったのかなと思います。ある人はツイートし、ある人は動画で紹介させてもらったり、自分にとってはビックリだらけでした。unity1weekでは最高の日々だったかもしれません。

順位取れたとはいえ、それでもその他の皆さんの作品の方が楽しい作品が多いです。絶対自分より上だと思う作品あると思ったんですけどね。紹介してもいいですけどこういうのは個人の好みの話になるので自分の心の中に留めておきましょうか。

 

もう1つ。unity1weekやってて思ってるのは、あくまでゲーム作りを楽しむためのイベントをやるためで、人によっては順位は2の次3の次というのもあると思うのですよ。例えば1度でもバズったら勝ち組のような。「試合に負けたけど勝負に勝った」そんな感じでしょうか。突き詰めればゲーム作りを通じて人との繋がりがふえればそれだけで勝ちだと思うんです。話すのが苦手であれば人のゲームでランキングに記入するとか、評価がふえるとかでもいいです。本当に怖いのは無視されることなのでまずは少しでも接触してみることを心がけてはいかがでしょうか?(と、思いたい)

 

こんな形ですが締めたいと思います。ゲーム作った皆様も、プレイした皆様も、unity1weekお疲れさまでした。

 何よりもこのゲームを作るきっかけである、去年unity1week作品でハマってた「To Sides(作:アブクデさん)」、及び今年RTAをやり込んだ「リバースダイバー(作:がむしゃらさん)」両名に感謝致します。この2作無くしてこのゲームは生まれていません。

 

「To Sides(アブクデ)」(お題「さがす」公開作品)

To Sides | フリーゲーム投稿サイト unityroom

 

「リバースダイバー(がむしゃら)」(お題「逆」公開作品)

リバースダイバー | フリーゲーム投稿サイト unityroom

 

では。

 

f:id:niya3rd:20200831023321p:plain