VTuberがUnity1週間ゲームジャムに参加した話

はじめまして、朝霧きいねです。普段はちょっと玄人好みのゲームを遊ぶ配信をしています、いわゆるVTuberです。チャンネルはここ。みんな見てくれよな。

今回はじめてUnity1週間ゲームジャムに参加して、ゲームを1本完成させることができたので、そのことについてまとめました。なお実力については「Unity完全に理解した」です。(※VRChatのアバターがアップロードできる程度)
Unityについては上記の通りですが、Basicでは辛うじてゲームを完成させたことはあります。

ところでUnity1週間ゲームジャムに参加したVTuberって他にいますかね?全一名乗ってもよいでしょうか?(全一?)

経緯

たまたまTwitterで見かけたツイート。

unityroomnoteの連動キャンペーンで、条件を満たした方全員に「ユニティちゃんデスクトップフィギュア」と「Unity Asset Store 10%割引クーポン」がプレゼントされるそうです。タダで貰えるなら頑張るか!ということで今回の参加に至りました。

なお、このツイートがされたのが12/23(水)の夜、
ゲームジャムの開催期間は12/21(月)00:00~12/27(日)20:00です。
木曜から作業するとして3、4日程度の時間しか取れない計算ですが、脳内のイマジナリー木之本桜ちゃんが「絶対だいじょうぶだよ」と言ってくれたのでとにかく手を動かすことにしました。さくらを、前から、撮るんや!(知世のビデオ大作戦)

1日目 12/24 物理演算 完全に理解した

少し前に、バーチャルマーケット5というイベント向けにローポリ朝霧きいねという3Dモデルを作っていたのと(1000円です。買ってね)、それをラグドールにして飛ばしたのが楽しかったのでゲームもそんな内容にすることにしました。
ちなみに上の動画では、飛ばし方が分からなかったためコライダを体内にめり込ませることで実現していました。

さすがにそれはおかしいので調べたところ、Rigidbody.AddForceという関数を使うのが真っ当な手段らしく、実験してみた動画が上です。

ば く は つ  するーーー!

1日目はこれで終わりました。不安でいっぱいですがイマジナリー木之本桜ちゃんが励ましてくれているので大丈夫です。

2日目 12/25 無理をしない

1日目の爆発しそうなローポリきいねが怖すぎたので、AddForceは諦めてコライダをぶつけて飛ばすことにしました。CubeのMesh Rendererをオフにしてコライダだけ利用しています。時間がないので綺麗に作ることよりも完成させるのが大事という精神で進めます。

床は移動先につぎつぎ生成するのは重くなりそうだと思ったので、プレイヤーの位置に合わせて移動させ、テクスチャのUVスクロールで進んでいる感を出しました(これは賢いと思う(自画自賛))。他にはライトの設定などをしてデフォルトのSkybox丸出しにならないようにしましたが精神と時の部屋みたいになりました。

…このあたりでゲームジャムのお題が「あける」だと知り、お題にこじつけつつゲームを完成させる方法を考えながら進めることにしました。短期間のゲームジャムで企画を変更するのはエターナる可能性が高いですし避けたいところです。不安でいっぱいですがイマジナリー木之本桜ちゃんが励ましてくれているので大丈夫です。

3日目 12/26 少しずつ強くなっていく それがいいんだ

(これ終わらないですね…?)って書いてる…。

Basicでゲームを作った時の経験上、タイトル画面やゲームオーバーの処理を後回しにすると初期化などが綺麗に書けずで苦労するのが分かっていたのでゲーム内容はそこそこにして作りました。

各画面に変数を割り振って(タイトルならGameMode=0、ゲーム部分は1みたいな)、表示物を出し分けたりキー入力の処理を分けたりしています。これは昔見た誰かの方法の真似なのですが、もっと綺麗な方法があるような気もしないでもないです。

複数のスクリプトファイル内にInput.GetMouseButton(0)を書いたせいで同時にクリック処理が走ってしまったり、クリックしたときの処理が一度にたくさん走るのを解消の仕方が分からず間隔をとるためのカウンタを用意したり、Unityなんもわからん故の問題もチラホラ出てきました。

Basicなら上から順番に処理が走るからこんな問題も起きないのにと不安でいっぱいですがイマジナリー木之本桜ちゃんが励ましてくれているので大丈夫です。

4日目 12/27 開催日だよ、みんな踊れ

とうとう当日です。

ゲームにならない致命的な部分は直さないとということで、コライダをぶつけて飛ばしていたのをAddForceで飛ばすように修正しました。コライダだとぶつけるときの角度を変えてもプレイヤーの飛ぶ角度が安定せず理不尽感があったのですが、ラグドールの親につけていたスクリプトを適当な子につけたらAddForceできるようになって無事解決しました。親にRigidbodyを付けていても駄目だったのはよく分からないけど、動けば良しです。

また、最初にプレイヤーを箱に入れることで、箱に囚われた朝霧きいねを助けるというストーリーにしてゲームジャムのお題「あける」に沿ったゲームになりました

最終的にはこうなった。
最後の方で一気に完成度が上がるのは創作あるあるだと思います。
(特に何か奇跡的にスムーズに進行したとかそういうわけでもなく、ただはちゃめちゃに頑張ったおかげで体調がズタボロになりました)

道中にも箱をいっぱい出しました。取ると命と爆弾が回復します。ただのCubeにしか見えませんが、日本には見立ての文化があるので大丈夫です。さくらちゃんも言っている。いいね?

拘りポイント

・命が少ないほど箱がたくさん出るよ
 諦めずにがんばれば粘れる感じになったと思います。
・高く飛ぶほどカメラが引くよ
 カメラのZ座標にプレイヤーのY座標を足しただけですが地面が見やすくなりました。優しい気配りを感じて遊んでください。
・類似ゲームと差別化できた
 
ナナカクラッシュとかバリキ・ジャンプとか。差別化できてるよね…?
 「死」は思いっきりパクりました。ネコ忍者コアさんリスペクト
・エフェクトと効果音をちゃんと入れられた

 あると無いとでは手ごたえが結構変わるので入れられてよかったです。

困ったポイント

・キー入力したときの処理めっちゃ走る
 記事を書きながら調べて気付いたのですが、GetMouseButtonじゃなくてGetMouseButtonDownを使えばよかったっぽい…?そのうち直すかもしれません。
WebGLがクッソ重い
 
というより、GoogleChromeが重い?Firefoxだと全然快適なのが解せぬ。他のゲームだとChromeで全然軽いものもあったので、事前に知っていれば軽く作ることもできたのかも…。
12/31追記:「ハードウェア アクセラレーションが使用可能な場合は使用する」を有効でFirefoxと同等のパフォーマンスになりました

まとめ

タダで「ユニティちゃんデスクトップフィギュア」が欲しい、がきっかけで作ったゲームでしたが予想以上に苦労したため、作業量を自給換算して「普通に買った方が安上がりだったのでは…?」と思うこともありましたが、いろいろな方に遊んでもらえたりハイスコアに熱中してもらえたりするのを見ると作った甲斐がありました。VTuber活動もゲーム制作も、人に喜んでもらえると自分まで嬉しくなるのは同じですね!

unityroomは、ブラウザでゲームが実行できる手軽さに加えて、自分のゲームを遊んでくれた人の作品に飛べる仕組みのおかげで、製作者同士が評価しあったりコメントを付けあったりと盛り上げるための循環ができているのがよいです。

恥ずかしながら、今回のキャンペーンに釣られるまでunityroomのこともゲームジャムのことも全然知りませんでしたが…。

初心者がつまづきやすそうなビルドの方法や、twitterに投稿する機能なども公式から提供されているので、私のようなUnity浅パチャ勢でもなんとかゲームを完成させられましたし、Flashのサポートが2020年末で終了してしまう今、ちょっとしたゲームを手軽に遊んでもらうのに最適なサービスなのではと思いました。

最後に

みんなもUnityでゲームを作ろう!
あとYouTubeのチャンネル登録とTwitterフォローの方もよろしくお願いします(Vなので)

この記事が気に入ったらサポートをしてみませんか?