「しばらくこのブログも使ってなかったなー」と思い出したので、先日作成したワールドについて振り返ってみようと思います。
作成したワールドの名前は「Enjoy squats! - スクワットを頑張る部屋」です。
ワールドを作ったきっかけ
ある日話をしてた時に思い付いた「幼女に煽られながらスクワットをするワールドがあったら面白いなー」という気持ちだけで作りました。
12/25に着手して、1/8にラボにアップ。そして1/15にラボ抜けしました。訪問者さんたちありがとう。
「Enjoy squats! - スクワットを頑張る部屋」の概要
ワールドにインすると、UdonChipsを一定額以上持っていないと出られない小部屋に放り込まれる。
※UdonChipsとは、VRChatで使える「ワールド内通貨」の共通規格
Udonchipsはワールドギミック「スクワットマシーン」を使って稼ぎ、部屋から脱出する。
スクワットマシーンがある部屋はガラス張りになっているので、先に脱出した人は中に残っている人を眺めることができる。
UdonChipsを稼いでスクワット部屋から脱出した後は、CashBlasterなどUdonChipsのギミック類でお金を増やしたり減らしたり。
手持ちのUdonchipsが一定額以下になると、スクワット部屋にワープさせられる。そして、またスクワットでお金を稼ぐ……。
ワールド作成について
内装
ガラス張りの部屋でスクワットをしている人と、それを眺める人という作りがいいなーと思って、仮でCC0の画像を使って壁と床を作っていたころ。
スクワット用ワールド、ガワはこんな感じですかねぇ。UdonChips用ドアに合わせて出入り口を抜いた壁を作らねば。 pic.twitter.com/GSzeNpJKw4
— Hitton(ヒットン) (@hitton74214051) 2021年12月23日
ワールドにインした時・スクワット時などに幼女の声が流れるのに、これではちぐはぐな感じがする。内装も声に合わせた方がよさそう。
……と思って、保育園・幼稚園のインテリアを参考に壁飾りや棚、テーブルなどをBlenderで作ってみた。
Blenderで壁飾りを作って、スクワットルームの模様替え中 pic.twitter.com/lzo4IPqTTT
— Hitton(ヒットン) (@hitton74214051) 2022年1月1日
初めてやったこと
U#ソースの改変
Udon Sharp(U#)のソースを改修して、スクワットマシンに下記機能を追加。
- スクワットスタート時にランダム音声再生
- スクワット中にランダム音声再生
- スクワット終了時にランダム音声再生
そのほか、UdonChips StarterSetにあるギミック類を改修して、任意のタイミングで音声が再生されるようにもした。
U#をいじるのって、正直ハードル高くないですか?
C#の書き方でUdonをいじれるとはいえ、そもそもC#の経験はない。ソースをいじるのだるいなーというのが正直な気持ちだった。
ワールド作成中にemuさん主催の制作弱者の鍛錬場のイベントがあって、そこでU#を触ってみたら……あれ?意外と何とかなるのでは……?という気持ちに。
何かしらのプログラミング言語経験があれば、ちょっとしたU#の改修はそれほど難しくはなさそう。私は遥か昔にCとC++をちょろっとやって(今は忘れた)、近年Excel VBAしか触ってない程度の経験です。
ボイスの発注
ワールド内で流れる幼女の声はiikoeというサイト経由でフリー声優の柊まどかさんに発注しました。 iikoe.org
用意されていたボイスサンプルからイメージに近いものを選び、「生意気な幼女がプレイヤーを煽る感じで」と依頼しました。
ボイス台本は1行ずつセリフを分けて書いたものを渡して、1行ごとに無音の部分を入れてもらいました。無音の部分を入れることで、ソフトを使って分割できるようにという考え。
サイト自体がチケット制のため支払額によっては微妙に残額が出てしまうのがちょっとね~~~~って感じなので、次にフリー声優さんに頼むなら必要な分だけ払うサイトがいいな~~~。(サイトを介さない発注は、揉めた時に困るので✕)
スクワット中のセリフのバリエーションを増やしたく、なめさんに協力いただきました。とても助かりました。
初めて知ったこと
PickUpアイテムでの衝突設定
「ワールドに置いてあるさすまたは、壁を通り抜けずに押さえつけられるようにした方がよいのでは?」という声があったので、壁への当たり判定をつけた。
設定方法を教えてくれたアナゴさんありがとうございます。
設定方法はこちら。
Unityの上部メニューEdit→Project Settings→Physicsと進んで、Layer collision Matrixで当たり判定をつけるLayerが交わるところにチェックをつける。
デフォルトで設定されているLayerのチェックをいじるとワールドアップロード時にエラーになることがあるので、壁やアイテムは新しいLayerを作って設定しておいた方がよさそう? 壁にぶつける方のアイテムは、Rigid BodyのIs Kinematicのチェックを外す。
Quest単体だとカメラが真っ黒になる件
Quest単体でワールドに入ったときに、ある方向にカメラレンズを向けるとカメラ画面が真っ黒になる事象が発生した。
ワールドに置いてあるアイテム全てをQuestで使えるシェーダーにしても、カメラ画面は真っ黒のまま。
色々探した結果、見た目をU#で操作していると思われるアイテムをワールドから除外したら解消した。
他のワールドでも同様にカメラ画面が真っ黒になることがあったので、再現性がある事象っぽい。
Quest向けワールドにちょっと変わったことをするアイテムを置くときは、カメラが使えるか実機で確認したほうがよさそう。
大変だったこと
ワールドのデバッグのために延々とスクワットしたこと。
スクワットしないと小部屋から出られないワールドを作り始めたものの、デバッグのためにスクワットしまくらないといけないことに気が付いてひぃひぃ言ってるこんちゃん pic.twitter.com/zRemEytJWK
— Hitton(ヒットン) (@hitton74214051) 2021年12月25日
スクワットマシンの各種設定の調整をするたびに、スクワットをして確認。
— Hitton(ヒットン) (@hitton74214051) 2021年12月25日
小部屋外でのUdonChipの減り具合の調整をするたびにスクワットをしてUdonChipを貯める。
まさかこんなことになるとは。 pic.twitter.com/QyzLaHXpMY
U#をいじって追加した音声周りの確認のほか、スクワットマシーン自体の設定調整のたびにスクワットが必要になるのがきつかった。
デバッグ中は回数減らしておけばいいんじゃないの?っていう声もあったけど、本番と同じ状態にしないと確認できないこともたくさんあるんだ。
公開後に手を入れたところ
スクワットマシンの説明書
ワールド入室時に流れる音声を聞きつつ、スクワットマシンの使い方を読んでくれれば……という狙いだったのだけど、意外とスクワットマシンの使い方に気が付かない人が多かったこと。
分かりやすいように、現在はスクワットマシンの左隣に使い方の説明を移動した。
UdonChipsの稼ぎ方
スクワットルーム外に置いたCashBlasterで、大量のUdonChipsを稼ぐ人が続出。
ネタバレになるので詳細は記載しませんが、面白かったのでヨイコノさんの案をいただくなどして調整しました。
それでもヌルいようなら、更なる調整をします。スクワットを頑張る部屋なので……。