見出し画像

【VRChat】初めてのワールドアップロード!知っておきたい基本的な話について

はじめに

『ワールドをアップロードしてみたいけど難しそう……』
と思っている方は意外と多いんじゃないかなと思います。

実はワールドをアップロードするだけなら、アバターのアップロードとそんなに変わりはありません。アバターをUnity2022でアップロードしたことがある人であれば、大体の人がすぐできます。

この記事ではその最初の一歩目をサポートするために、アップロードのやり方と色々な予備知識について解説したいと思います。

特に、最近のVCCで作るUnity2022用ワールドプロジェクトは、VRChat側が既に用意してくれているデフォルトがあるので、シンプルな床だけのワールドであれば、とっても簡単にアップロードすることが出来ます。

『あ!意外と簡単なんだ!』って思っていただけたら幸いです。


ワールド制作の一歩目について

まずは物は試しということで、実際に床だけのワールドをアップロードしてみましょう。

前提として以下の四つを満たしている必要があります。
・トラストランクがNew User以上
・Unity2022.3.22f1をインストール済み
・VCC導入済み
・VRChatアカウント作成済み(Steamアカウントでのログインでは駄目)

UnityやVCCの導入については良い記事が色々転がっていますので、割愛させていただきます。

正直なところ、ワールドとアバターの差異はトラストランクくらいなので、もしUnity2022.3.22f1でアバターをアップロードできているなら、すぐにでもできます。
(逆に言うと、VCCやUnityのインストールについては、アバターをアップロードするための記事とかでも参考になります)

一つ注意点としては、一応古いほうであるUnity2019.4.31f1でもワールドプロジェクトを作れますが、そちらはVRChatが用意してくれたデフォルトのシーンが無いので、この後説明するやり方は適応できません。ご注意を。

以下手順です。プロジェクト開いたり、アップロードにかかる時間を加味しても5分程度でできると思います。

まずは文章だけ見たい人向けに、文章だけで書いたのが以下の通りです。
①VCCの最新版を開く(開いたときに、VCCの左下にUpdateって出ている場合はUpdateしてください。これは常にやっておくと良いです)
②Unity2022のワールドプロジェクトを作成する
③プロジェクトを開く
④上のほうにあるVRChat SDKタブからShow Control Panel
⑤ログインが求められたら、ログインする
⑥Buildタブを開き、ワールド名を決める
⑦途中のサムネイルを決める(こだわりが無ければCapture From Sceneボタンを押して、出てきたCaptureを押すとScene画面をキャプチャした画像になります)
⑧タブ一番下のOnline Publishingのところでチェックマークを付ける
⑨出てきたBuild and Uploadを押す

次に画像に文字を入れ込んだバージョンです。

VCCを開いたときの画面
Create New Projectを押したときの画面
Create Projectを押して、しばらく待った後に出てくる画面
Unityが立ち上がった後の画面
上のメニューの中にあるVRChat SDKから選択
VRCSDKのログイン画面
Builderタブの画面
上の②でCapture From Sceneを押すとその部分がこの画面になります 
黄色の④をやるとアップロード完了時に
ウィンドウの下に出てくるポップアップです
(右上のDismiss押すと消えます)

上記でワールドのアップロード完了です。

2024/09/01時点において、VCCで作ったUnity2022のワールドプロジェクトでは、ただプロジェクトを作って、開いて、アップロードするだけで、床だけのワールドがアップロードできます。

従来はVRCWorldってやつを置いたりする必要があったり、歩くための床(コライダー)を用意したりする必要があったのですが、それらが既に用意されている状態なのでそのままアップロードできる形になっています。

こうしてアップロードしたワールドはPrivateワールドとなっています。

privateワールドは自分、またはリンクを渡された人だけが開ける非公開ワールドです。非公開ではありますが、friendやfrined+などで開けば、インスタンスを立てた人以外も入ることが出来ます。

ここから誰にでも行けるワールドにするためにはPublic化する必要があり、トラストランクがUser以上である必要があります。

Public化とCommunity Labsについて

Public化はBuildタブの下の当たりにWorld Visibilityという欄でPublish to Community Labsという項目があります。ここを押してYes, do it!を押下するとコミュニティラボのワールドとして公開されます。

コミュニティラボは、正式にPublic化される前段階の状態です。1週間に1ワールドだけコミュニティラボに投稿することが出来ます。

この時に批判レポートが多いと公式からの調査が入り、利用規約コミュニティガイドラインへの違反が認められるとワールドの除外、最悪のケースはワールドのアップロードが出来なくなります。
(余談:ユーザーごと居なくなってるケースも見るので悪質な場合はBANされてるのかもしれませんが、憶測にすぎません)

ここからレポートできるようになってる

逆に人気なワールドであれば自動的にPublic化され、誰からでも見ることが出来るワールドになります。ようはワールドを訪れたユーザーの反応によってワールドの審査を行っている形です。

コミュニティラボワールドは、設定の"Comfort and Safety"から”Show Community Labs”を有効化したユーザーにしか見えない仕様……だったと思ったのですが、無効化して色々チェックしてみたのですが、プロフィール欄から見るとフレンド・非フレンド問わず見えるようですね。あくまでワールド検索タブのCommunity Labsの欄を閲覧できるかどうかの設定になったのかもしれません。
(もしくは一度有効化するとずっと見えるようになるのかも?)

コミュニティラボに入っているワールドの見分け方としては、ワールドのサムネイルの右上にフラスコマークがついています。またドロップしたポータルでは左上にフラスコマークとポータルの周りに緑の帯があります。

適当に目についたワールドのサムネイルを使用させていただきました
左上のフラスコマークと緑の帯がある

コミュニティラボを抜けてPublic化されると、これらのフラスコマーク等は消えます。このラボ抜けの条件は明記されていませんが、データをまとめてくださっている記事がありましたので、引用させていただきます。

この記事にも書いてますし、私の体感的にもそうなのですが、割と初動でどれくらい人に来てもらえるかが大事なので、しっかりラボ抜けしたいのであれば宣伝はしましょう。宣伝方法はXやmisskeyがメジャーなイメージです。

アップロードしたワールドの開き方

いくつかやり方はありますが、私がいつもやっているやり方を説明します。

まずメニューを開いたときに、メニュー左上にある自分のアイコンをクリックします。

そうすると自分のプロフィール欄に飛べます。

その後スクロールしていくとUploaded Worlds(日本語UIだと"アップロードされたワールド")という欄が出てきて、ここに自分のアップロードしたワールドが載っています。自分には非公開のも見えていますが、人からは非公開のは見えないので安心してください。

余談ですが、『目の前の人がどんなワールド上げてるのかな?』って思った時も、レーザー当ててその人のサムネイルをクリックしていくと同様にプロフィールに飛べて、公開ワールドを確認することが可能です。

次のワンステップとして

床だけのワールドをアップロードできたら、今度は自分のホームワールドが欲しいですよね?

勿論自分でモデリングするような人であれば、自分の好きなものを置いていくといいと思いますが、アバターと同じようにBooth等の販売サイトで販売されているワールドを購入することが出来ます(無料のものもいくつかあったはずです)

それらの販売ワールドは基本的にすぐに使えるような形になっていますので、初心者の方にお勧めです。とはいえ、アバターと違うところがあるので気を付ける必要があります。

それはアバターはPrefabをHierarchyにドラッグ&ドロップすればOKというのが一般的だと思いますが、ワールドはSceneファイルというのを開いてアップロードする形が一般的です。

SceneファイルはUnityにおけるセーブデータみたいなものなので、知らない人は是非以下の記事を読んでおくと良いです(手前味噌であれですが)

『なぜPrefabではなく、Sceneファイルなのか?』を軽く説明すると、ワールドの場合はSceneファイルにしか紐づけられないデータがあるからです(具体的にはライトベイク結果などがそれにあたります)

そこから先は、自分でモデリング等で作ったものを置いたり、Boothにある3Dモデルやワールド向けギミックを購入して置いたり、Unityアセットストアでアセットを買っておいてみたり等自由です!
(UnityアセットストアはVRChat向けに作られてないので、物によっては使えないなど、別の注意点があります。私の"Unityアセットストアの注意点・コツなど"という記事に目を通しておくと良いかもしれません)

特にBoothにはVRChat向けに作られたワールドアセットが無料のものから有料のものまでいろいろありますので、無料のものを試しに置いてみたりするのも良いと思います(以下は無料のもので絞り込んでみたリンクです)

最後に一つだけ注意点ですが、基本的に更新履歴で『VCC対応済み』みたいな文言が無い場合は、大体2022年以降ぐらいに出てるアセットで、可能であればUnityのバージョンが合っているものを買うと良いと思います。

それより昔のアセットはエラーが発生して動かない可能性がかなり高めなので、そこら辺を自前で解決する手腕が問われます。自信がない人は新しめのVCC対応済みアセットを買ったほうが良いです。
(補足:ただの3Dモデルとかは問題ないのですが、ギミック関係はVRChatの更新によって互換性が無くなっている可能性が非常に高いので避けたほうが無難でしょう)

基本的な流れとしては以上ですが、色々補足するためにここから細かいことについて書いていこうと思います。

初心者向け知識集

ワールドの評判を確認する方法

ある程度人が来て(=Visit数)、Favoriteしてくれるとコミュニティラボを抜けることが出来ますが、これらの情報は二通りの方法で確認できます。

一つはVRChat内でワールドのインスタンスを立てられる画面の下側に、Visit数やFavorite数などの情報が載っていますので、そこで確認できます。

もう一つはVRChatのWebページから確認する方法です。
VRChatのWebページの左側にあるMy Worldsという項目を押すと、今までアップロードしたワールドが表示されます。

その後、サムネイルをクリックすると、そのワールドの詳細情報を見ることが出来ます。右下のDetail欄でVisit数やFavorite数などを確認できます。

その下側にあるEditボタンを押すと、ワールドについての詳細情報のページが出てきますが、このページになるとHeatというVRChat独自の人気指数のような物が出てきます。炎マークが多いほど人気のワールドになります。

WebページからワールドのPublic化や非公開化をする方法

上記でも出てきたEditボタンを押して出てくる、詳細のページの下側に赤枠で囲われた部分があります。

ここはワールドのPublic化を行ったり、逆に公開していたワールドを非公開にしたり、ワールドのデータを削除したりできる部分になります。

同じワールドを別ワールドとしてアップロードする方法

以下の記事にまとめていますが、Blueprint IDというのを新規に割り振ることで別ワールドとしてアップロードすることが可能です。

Unity上でのデバッグ方法

現在はワールドプロジェクトを作成すると、ClientSimと呼ばれるシミュレーターによってワールドのデバッグを行うことが出来ます。

Unity上で再生ボタンを押してみてください。

特に何も出ずに次のようなウィンドウが出てきたのであれば、あとはClose Menuを押してウィンドウを閉じると、そのままデスクトップでVRChatをプレイする要領でデバックすることが出来ます。

上のようなウィンドウが出てこなかった場合、ClientSimがまだ有効化されていないので、有効化する必要があります。

上記のVRCSDKからUtilitiesのなかにClientSimというボタンがあります。これを押すとClientSimの設定を行えるウィンドウが出てきます。

この一番上にClientSimを有効化するチェックマークがあるので、ここにチェックを入れてもう一度再生ボタンを押すとデバッグできるはずです。

たまに次のような文章が出てきて、再生モード(上の再生ボタンが青くなっている状態)に入れないことがあります。

この場合は、Udon Sharpがエラーを起こしているので、解消するまではClient Simでのデバッグはできません(おそらくアップロードも出来ないでしょう)

ですのでエラーを解消する必要がありますが、そのやり方についてはトラブルシューティングのやり方、という章である程度説明しています。

VRChat上でのデバッグ方法(ローカルテスト)

VRChatにアップロードしたワールドを、VRChat上で確認したい時、いちいちログインしたり、ホームワールドから移動したりするの面倒ですよね?

それらの手間を省ける方法として、ローカルテストというのがあります。これはログインなどはなく、すぐにVRChatが立ち上がって、テストワールドに行くことができます。
(注意:Quest単体は非対応で、PC版のみの機能となっています)

テストワールドはオフラインで行われますので、誰かを招待したりは出来ませんが、複数起動することが出来るので同期のテストなどを行うことが出来ます。

ワールドをアップロードするボタンの一つ上にOffline Testingという項目があり、そこの右下にある『Build& Test New Build』ボタンを押下することでテストワールドに行くことが出来ます。

左側に『Test Last Build』というボタンがありますが、こちらは前回ビルドしたデータのテストワールドを立ち上げるボタンで、基本的にあまり使用することはありません。

またいくつかあるオプションについて説明すると、以下の通りです。
①Number of Clients
同時に立ち上げるウィンドウの数です。それぞれ別プレイヤーとして操作することが出来るので、2以上の数を入れると複数ウィンドウが立ち上がり、ギミックの同期テストなどが出来ます。
ウィンドウを立ち上げてる状態で、Number of Clientsを0にすると右下のボタンが『Build & Reload』に切り替わります。このボタンを押すと、立ち上がっているウィンドウがそのまま新しいテストワールドへと更新されるので、ウィンドウを消さなくても継続できます。
②Force Non-VR
チェックマークを入れてるとデスクトップモードで起動します。外すとVRで起動するので、HMD等を用意しておく必要があります。
③Enable World Reload
①で説明したNumber of Clientsを0にした時に、更新する機能を有効化・無効化する項目です。チェックが入ってると更新されますが、外れていると更新されません。

VRC Quick Launcherについて

VCCの左側のToolsからVRC Quick Lancherというツールが使用可能ですが、こちらでもローカルテストが可能です。

VRChatには起動オプションがいくつかあって、デバッグ用のログを出すオプションとかもあるのですが、このツールではそれらのオプションをチェックマーク付けていくだけで適応できます。

正直筆者はあまり有効活用できてないので、詳しい説明は割愛します。
(上で示したNumber of Clientsの数を増やしてのデバッグで十分だと考えています。アバターの同期テストを自分だけでやる場合とかは便利だと思います)

VRCWorldについて

今回紹介したやり方だと既にVRCWorldが配置済みですが、ない場合は自分で置く必要があります。

VRCWorldの場所はちょっと分かりづらい位置にあるので、検索を上手く利用すると良いです。

Projectタブの右上に検索欄があります。

ここにvrcworldと入力します。そうすると左側に検索範囲を選べる場所が出てきます。All、In Packages、In Assets、”現在開いてた場所”の4つから検索できます。

VRCWorldはPackage内にあるのでAllまたはIn Packagesを選びましょう。出てきたPrefab(箱型アイコン)を左上のHierarchyにドラッグアンドドロップすることで配置できます。

少しだけ注意が必要なのは、VRCWorldの位置がリスポーン位置になるということです。床(コライダー)がないところに置いてしまうと、無限落下地獄が発生しますのでご注意を。

あと最初のうちに覚えておくといいのは、リスポーンする高さを弄れるところがついていたり、プレイヤーのジャンプ高さや各種速度、アバタースケーリングに関する項目がいじれたりします。

リスポーン高さ
上がジャンプ高さや各種速度、下がアバタースケーリング

ワールドのQuest対応について

こちらもアバターと同様に、プロジェクトをQuest向けのものに変更してアップロードすることでQuest対応版をアップロードすることが出来ます。

上記項目でも触れているBlueprint IDをPC版と一致させることで、PCとQuest両対応ワールドにすることが可能です。

また、滅多にありませんが、Quest版のみをアップロードしてQuest単体専用ワールドというのも可能です。

ただし、Quest版には『ワールド容量が100MBを切らないとアップロードできない』という制約があります。
(これでも昔は上限50MBだった時期があるのでマシにはなったのですが)

あとはPC版では使用可能な一部のシェーダーが正しく描画されなかったり、使えなかったりします。軽くまとめると以下の通りです。初心者の方は具体例の部分だけ覚えておくと良いでしょう。
①ジオメトリシェーダー
具体例:一部の草シェーダーなど(補足:ポリゴンごとの操作やポリゴン自体の増減が出来るので、いわばシェーダーで草を生やしたりができます。したがって『自由に草の形状や本数を変えられます』みたいなのは怪しいです)
理由:QuestのGPU的には使えるはずだが、VRChat側の仕様(ビルド設定?)で使えない模様。
②深度を使うシェーダー
具体例:水や霧などで使われる、奥行きに依存して色や濃さが変わるもの。
理由:Questではプレイヤー視点の深度を有効化する方法が無い。
(非初心者向け補足:プレイヤーのカメラはVRCの制約でスクリプトからアクセスできないので、スクリプトによる深度有効化は出来ない。またPC版で良く行われる影付きリアルタイムライトによる副次効果的な深度有効化も、リアルタイムライトがQuestで使えない設定となっているため不可)
③Grabpassを使用するシェーダー
具体例:水やガラスなどで使われる、奥側に見える景色を歪ませたりぼかしたりする効果を持つもの。
理由:Unityのバグ。2022では直っているらしいので、もしかしたら今は問題ないかもしれません(未検証)

①~③は『そのシェーダーの機能が使えない』だけなので、それらの機能を使っていないシェーダーであれば使用可能です。ですので代替となるシェーダーに切り替えるのが良いでしょう。

以下のサックーさんの記事は2021年のものになっていますが、大部分はそのまま今でも参考になるので、一読しておくと良いでしょう。


注意が必要なことについて

今はもう使えないアセットの見分け方

VRChatのアセットを調べると古いものから新しいものまであります。その中には古すぎてもう使えないものもあります。

特にギミック関係や、ギミック込みのワールドアセットはインポートしてもエラーで動かなくなってしまうことがあります。

ギミックが動くかどうかは、アセットの説明文の文言から、ある程度見分けることが出来ます(例外はあると思うので、鵜呑みにせず、参考程度にお願いします)
VCC または VCC対応 → OK。全く問題ありません。
SDK3 → VCCは問答無用でSDK3なので、SDK2かSDK3を選べた頃のアセットの可能性が少しあります。大体は問題ないはずですが、稀に自動更新時に壊れたりする可能性有り。
SDK2 → 廃止済みなのでアウト
VRC_Trigger → SDK2の機能、廃止済み
VRC_Panorama → SDK2の機能、廃止済み
VRC_WebPanel → SDK2の機能、廃止済み
Udon Sharp 1.xx → 大体動きますが、自動更新時に壊れたりする可能性が稀にあります。特にPrefab関係。
Udon Sharp 0.xx → 古いので強制的に自動アップグレードされますが、互換性が薄いため、アップグレード過程で壊れる可能性がそれなりにあります。
UdonSharpをダウンロード(or インポート)→ しないでください。SDK 3.4.0以上のバージョンでは、SDKにUdonSharpが組み込まれています。つまり、最新のVCCでワールドプロジェクトを作成すれば自動的に用意されています。
UdonSharpテンプレートを作成 → 一つ上で説明した通りSDKにUdonSharpが組み込まれたため、UdonSharpテンプレートはなくなりました。最新のVCCでワールドプロジェクトを作成すればOKです。
Unityのバージョンが違う → Unity2019.4.31f1より古いワールドアセットはUdon Sharpが同梱されていてエラーが発生するケースがあります。削除すれば問題なく動くかもしれません。Unity2018以前だと流石に厳しいと思います。
Udon Node Graph → リリース当初からSDK3の機能の一部となっているため、大体問題なく動くはず(使っている人が少なくて詳細不明)
公開日または最終更新日時が2023年以降 → VCC完全移行・SDK2完全廃止が2022年年末だったので安心です。
公開日または最終更新日時が2020年初頭~2022年末 → Udonが公開されてからVCCになるまでの間のギミックで、中には現在のものと互換性が薄く、強制アップデートで壊れるものもあります。
公開日または最終更新日時が2020年初頭以前 → Udon公開以前なので、SDK2のギミックになります。動かない可能性が高いです。

自分の公開ワールドに人が沢山訪れると、爆速でトラストランクが上がってしまう

ワールドに訪れた人のトラストランクが加味されているのか、ワールドを公開するとすぐにトラストランクが上がる傾向にあります。

何が言いたいのかというとNew UserやUserくらいまでは集会とかに参加しても初心者として親切にしてもらえたりしますが、Trusted Userになるとその初心者ブースト的なものがなくなります。

人によって楽しみ方は色々なので余計なお世話かもしれませんが、ワールドの公開は、色々な集会に一通り顔を出してみてからでも良いと思います。公開せずにPrivateワールドでも十分ワールド製作は楽しめますので。

(余談:筆者は初めてワールド公開したすぐ後にknown Userになって、『ようやくknown Userになった~!!』と喜んでいたのですが、その3日後にはTrusted Userになってしまったので、唖然としたのを覚えています)

VRCWorldを二つ以上置かない

VRCWorldは一つしか置くことが出来ません。二つ以上置くとアップロードできなくなります。

異なるSceneを同時に開いている時にそれぞれにVRCWorldがある場合も駄目です。その場合はどちらか必要ないSceneを閉じましょう。

パソコンのユーザー名を日本語にしてはいけない

Windows起動したときの、『ようこそ、○○』の○○が日本語だとユーザー名が日本語になっています。

基本的にパソコンのユーザー名が日本語だとそもそもアップロードできないと聞いていますので、ワールド以前にアバターのアップロード時にぶち当たっている問題だと思いますが、一応載せておきます。

Edgeを削除するとVCCが起動できなくなる(筆者未検証)

らしいです。

試しに検証目的で削除してみようかなと思ったら、アプリと機能でアンインストールボタンがグレーアウトしてたので、めんどくさそうだったので検証してません。

UdonSharpをインポートしない

繰り返しになりますが、現在はVRCSDKにUdonSharpが融合しているため、UdonSharpをインポートする必要がないです。

GUIDについての注意点

Unityは同じ名前のファイルであっても、基本的に上書き保存はしません。Unityでは全てのファイルにGUIDというIDを割り振っていて、このGUIDが異なっていれば別ファイルとして扱います。

GUIDはUnityのプロジェクトをWindowsのエクスプローラーから開いたときにある同名の.metaファイルに保存されています。つまり、あるファイルと同名metaファイルは一組のセットになっているということです。

エクスプローラーから見るとこの通りです

Unity側での削除・複製・インポート等の色々な操作は.metaファイルを自動的に生成したり削除したりしてくれますが、エクスプローラー上から削除する場合は手動で両方同時に削除する必要があります。

『.metaファイルはセット』ということを頭に入れておいてください。

何も変更されてないことでアップロードに失敗する

たまにパラメータの値をいじっただけで、何もオブジェクトとか追加していないときに、何も変更されてないよと怒られてアップロードに失敗することがあります。

空のゲームオブジェクトを追加したり、オブジェクトの位置をずらすだけでもアップロード可能になるので、それで対処しましょう。



ここからはトラブルシューティングなので、問題が起こった時に見ると良いと思います。

トラブルシューティングのやり方

最初にすべきこと:エラーの特定

ちょっと考えてほしいのですが、アップロードするデータはワールドにせよアバターにせよ、キチンと動作するものでないと困りますよね?

ですので、正しく動作しないレベルのエラーが発生している場合は、歯車の間に挟まったゴミのように動作を邪魔し続けるので、解消するまでアップロードが出来ません。

では、問題となっているエラーの見つけ方をお教えいたします。
①Unity下側からConsoleタブを開く。
②Clearボタンを押す。
これで残ったものがアップロードを妨げています。

出ているログは時系列順となっているので、基本的に一番上を直すことで解消するケースが多いです。
(補足:ドミノ倒しのように、一つ目のエラーによって残りのエラーが引き起こされているケースもあれば、複数のエラー要因がある場合もあります。前者は一つ直せば終わりですが、後者は順番に直していく必要があります)

補足:Clearボタンで判別できる理由
ClearボタンはConsoleタブに溜まったエラーの履歴を消去するためのボタンですが、一度真っ新になっても常に発生しているエラーのログは即座に出てきます。

ですので、Clearボタンを押すことで常に発生し続けているエラーを探し出すことが出来るわけです。

次にすべきこと:SNS等での検索

出てきたエラー文や症状の一部(または全て)をGoogleやEdgeのような検索サイトで検索しても、VRChatとは全く無縁の環境下で発生したものが検索上位に出てくることがあります。役に立つこともありますが、役に立たないこともあります。

なぜなら環境が違うからです。
環境が違えば、全く異なる原因であっても、全く同じエラー文が出てくることはあります。

小学校の科学の時間を思い出してください。
比較するための実験をやる時、実験の条件を出来るだけ同じにしますよね?それと一緒です。

ですので、VRChatをやっている人の対処法を参考にするために、検索サイトでは『vrc (エラー文の一部)』で検索をかけましょう。

一方で、VRChat民はよくSNSを利用する傾向にありますので、XのようなSNSで検索をかけるのも非常に有効です。
(その場合は検索ワードから『vrc』を抜いたほうが良いかもしれません)

それでも分からなかった場合

2つほどやり方があると思います。
①自分で模索する
②人に聞く
です。それぞれ解説していこうと思います。

①自分で模索する方法

ワールド制作に関して言えばこちらの能力を鍛えたほうが間違いなく良いでしょう。

というのも、エラーに限った話ではないのですが、ワールド制作なんて試行錯誤の連続です。自分である程度解決できなければ、何処かで行き詰るでしょう。

"鍛える"という言葉をあえて使いましたが、これにはコツのような物があります。このコツについて、解説していこうと思います。

・きっかけを探す

今まできちんと動いていたものが動かなくなるのには、必ず理由があります。直前に何をしたのかを思い出して、心当たりを列挙しましょう。

具体例:Unitypackageをインポートした。VCCからパッケージを追加した。Unityをアップグレード(Migrate)した……等々。

・きっかけとなる物事に詳しくなる

きっかけとなる物事をした結果、何が起こるのかについて、きちんと理解する必要があります。

例えば、あるUnitypackageをインポートしたらおかしくなるのであれば、Unitypackageについて知るべきでしょう。

この例であれば、
『Unitypackageとは何なのか』
『そのUnitypackageをインポートしたら、何が起こるのか(=フォルダ・ファイルが追加される)』
『追加されるフォルダ・ファイルはどこにあるのか』
『フォルダ・ファイルはどんな構成をしているのか?』
『各ファイルはどのような役割を果たしているのか?』
などなど色々ありますが、調べれば簡単に分かることについては、把握しておきましょう。

調べても良く分からないことや難しいことについては、ざっくりと『こんなものがあるっぽい?』くらいの温度感で大丈夫です。ざっくりとでも理解しておくと、必要な時により詳しく調べるための足掛かりになります。

・影響範囲と依存関係を特定する
とあるUnitypackageをインポートしたところ、アップロードが出来なくなったとします。

ですが、果たしてそのUnitypackageが悪いのでしょうか?
答えは『それだけでは分からない』です。

身近なもので例え話をすると、台所の蛇口からお湯が出なくなったとして、『蛇口が壊れている!』と決めつけるのは時期尚早ですよね?

ボイラーが壊れてお湯だけでないのかもしれませんし、水道管が漏水しているかもしれませんし、そもそも水道料払ってなくて水を止められただけかもしれません。

上流が壊れていれば、その影響は末端にまで及びます。
Unityも一緒で、ワールドをアップロードするまでには様々な上流となる要素があります。

『どこから壊れているのか』という影響範囲と、『どこが関係しているのか』という依存関係が分かれば、調べる範囲を絞ることが出来るので、原因を特定しやすくなります。

ここで一部の人には驚きの事実(?)を話しますが、エラーはそのためのヒントになります。

何せエラーは『問題が起こっているファイルの場所』も指し示していますので、我々がすべきことはそのファイルの影響範囲や依存関係を洗い出して原因を特定することです。

上記の例で少し説明すると、”/”または"\"で区切られている場合、階層関係を表しています。つまり"/"または"\"が出てくるとファイルやフォルダの場所である可能性が高いです。

仮に、この場合のファイル位置を日本語にすると
『Assetsフォルダ内の、UdonSharpフォルダ内の、UtilityScriptsフォルダ内のBoneFollower.csファイル』
が問題を起こしていることが分かります。少しくどいですね(笑)

その後ろはエラーの原因が書かれています。上記はわざと起こしたものなので、自分でプログラミングしない限りはほとんど見ることがないと思います。

では次に影響範囲や依存関係を洗い出しやすくするためのテクニックです。

・影響範囲や依存関係を小さくする

複雑に絡み合った紐やケーブルをほどくのって、大変ですよね?
Unityも一緒です。もっと小さな構造を作ってテストしましょう。

例えば、VCCで新しいプロジェクトを作成して、問題となるUnitypackageを追加した時にエラーが出るのであれば、
『Unityの問題』『VCCの問題』『Unitypackageの中身の問題』
という3つで考えることが出来ますよね?
(もっと言うと『パソコン自体の問題』というさらに上流もあり得ます)

このように簡易的なものを作って、テストすることが非常に大事です。

また、あるファイル・フォルダの影響範囲を知りたい時、それを削除してみて発生していたエラーがどうなるか確認する、というのも有効な手段です。

エラーに変化があれば依存していると捉えられますし、変化が無ければ依存が無いと捉えられます。

Unity上では[Ctrl]キー+[z]キーで一つ動作を戻すことが出来ますので、
『選択したものを[Delete]キーで削除して、様子を見たのちに、[Ctrl]+[z]で削除の動作を無かったことにして元通りにする』
という一連の動作でテストすることが出来ます。

正直、地味ではありますが、エラーというヒントが与えられているので、しらみつぶしにやっていけば結構何とかなるものです。

・時には根本的な原因もある

これで最後ですが、VCCやUnityが壊れている時もあるんだよ、という事例を話しておこうと思います。

VCCやUnityをインストールしたり、VCCやUnityが何かを保存しようとしている時、パソコンはデータの書き込みを行っています。

仮に、まさに丁度その時、停電が起こってパソコンの電源が切れてしまったとしましょう。

何が起こるかというと、そこには『書きかけのデータ』が残ります。

ではこの不完全な『書きかけのデータ』で正しい動作が果たしてできるでしょうか?

大体はエラーを出して、動作をストップします。

でも、エラーが出るようにVCCやUnityを作るのは人間ですので、その人間が想定していない『書きかけのデータ』によるエラーが発生した時どうなるかというと、VCCやUnityはまさに"音もなく"壊れるでしょう。

上記の例では停電による例を挙げましたが、セキュリティソフトによるブロックやパソコンの不調など色々要因はあり得ます。

滅多にしなくてよいと思いますが、明らかに壊れたかのような変な動作をする場合は、VCCやUnityの再インストールが必要なケースもあるということを覚えておいてください。

(余談:ゲームをやっている人には次の文言はお馴染みですよね?『セーブ中にゲームを終了しないでください。セーブデータが破損する可能性があります』)

②人に聞く


重要なこととして、これは慎重にやってください。

『分かる人に聞くほうが簡単じゃん?』
って思うあなたは、もしかしたらまだ学生さんとかかもしれませんね。

最近はVRChatに若い人も来るようになったので、あえて書こうと思いますが、『教えてもらうという行為』は教える側に一定の負担を強いることを認識しましょう。

学校の先生や仕事の上司・同僚に聞くのとは違います。何故なら彼らは金銭によって、質問に答えることが業務の一部になっているからです。

一方でVRChat内における質問はどうでしょうか?
基本無償なので『ボランティア』というのが実態だと思います。

よって安易に分からないことを人に尋ねるのは
『無償のボランティアを相手に強要する』
行為だと私は考えています。

もちろん、教える側に『質問者と仲良くなりたい』という意図があれば、利害関係の一致があると思いますが、そうでなければ、教える側の時間を無償で奪っているのは事実です。

例えばVRChat内で会ったことも、SNS上で話したこともない人に、突然
『このエラー分からないんで、教えてください』
って言われてどう思うかって話ですよね。

私は『はぁ?』ってなります。なりました。

最近のは、失礼ですよ!とたしなめた上で、ヒントを上げましたが、正直無視しようか悩みました。返答の文章を書くだけでも労力なんですよね。
(補足:ちなみにじゃあなんで記事書いてるの?って言われると、『VRChatに対する無形の恩返し』と『面白いワールド作ってくれる人に力を与えるため』です。つまり自分の為です)

初対面の人に『このエラーについて教えて欲しい』なんて言うのは、その人を『聞いたら何でも答えてくれる機械』扱いしているようなものです。ChatGPTにでも聞いてろって話ですよ。

アバターの向こう側に居るのは"人"ですので、礼節を持ってください。
都合よく相手を使おうとする人間は嫌われますよ?

さて、釘を刺したうえで、じゃあどうやって質問したらいいの?って話ですが、まず自分で調べましょう。

『分からない→すぐ聞く』をしてる人間は、少し調べれば分かる知識さえないので、『下調べしてないんだな』ってはっきり分かります。

教える側は手間が増えますし、その時点で悪感情ですよね。
(逆に私は丁寧に下調べしてあると好感が持てて、教えてあげようかなって気持ちになれます)

助けを求めるのは、
『自分で調べて色々頑張ってみたけど、もうどうしようもない時』
が良いと思います。

この事は話している内容から自然と伝わるので、結果として『天は自ら助くる者を助く』になるでしょう。

ですが、それに関連してもう一つ気を付けてほしいことがあります。

それは質問は明瞭にするということです。

『(エラーの文章)。こんなエラーが出た!助けて!』
という質問と
『○○を目的として、●●をやったんだけど、××というエラーが出て、上手くいきませんでした。△△という状況から□□かなと思って◇◇と■■はやってみたけど解決しませんでした。どなたか助けて頂けませんか?(+スクリーンショット等)』
という質問があったら、どちらを助けたいですか?

まぁ当然後者ですよね。
前者は情報が皆無ですので、聞き出すところからスタートしなければいけません。これは教える側にさらなる負担をもたらします。

上は恣意的すぎるかもしれませんが、同じSOSでも、ボロボロの掠れた不明瞭な文字のものと、鮮明ではっきりと識別できる文字のもの、救出されやすいのは後者ですよね?

さて、後者のような質問を書くためには、自分で状況把握できる程度に模索する必要がありますが、頑張り方は①の自分で模索する方法に書いたつもりですので、割愛します。

ログのスクリーンショットについては、個人情報とか映らないか心配する人もいると思うんですが、以下の記事で紹介しているConsoleLogSaverがオススメです。

最後に、親切に時間を割いてくれた人に、お礼を必ず言いましょう。

お礼を言われて嫌な人間は基本的にいませんので、多少過剰でも良いと思うのではっきり気持ちを伝えましょう。世の中を渡りやすくするコツだと思います。


さて、重要なことは喋ったので、何処で質問すると良いかについて書こうと思います。

まず一つ目はDiscordサーバーに参加して質問することです。

とはいえ私はワールド制作の質問が出来そうなDiscordサーバーにあまり詳しくなかったので、Xで質問させていただいたところ、以下の3つを教えてもらいました。
(『うちのサーバーでも結構やってるよ!』ってところがあれば教えてください。覗きに行って良さそうであれば載せておきます。逆に掲載を止めて欲しい場合もご一報ください)

まずは総合的に色々質問できそうなサーバーです。

次にギミック(基本的にUdon Sharp)について質問できそうなサーバーです。


もう一つは集会に参加することです。

ワールド製作関係であれば『ワールド製作初心者交流会』というイベントがあります。金曜日21:00~22:00で毎週開いていますが、こちらのイベントでは掲示板があって、そこにお困りごとを書き込んでおくと暇な誰かが答えてくれる……かもしれません(そこはボランティアなので)

ただしエラーの解決には不向きです。

理由はエラーのスクリーンショット等の共有が難しいからです。そのためどちらかというと、○○のやり方が知りたい!みたいなのを聞くのに適していると思います。

謝辞

この記事を執筆するにあたって実施したXでの質問に、回答して頂いた方々に感謝いたします。ありがとうございました。
(穏やかに過ごしたい人もいるかなと思い、名称は控えさせていただきました。名前の載せて欲しいという要望あれば載せますので、こっそり教えてください)

おわりに

随分と色々書いてしまいましたが、全部一気には無理だと思いますので、少しずつ読み返したりして見てください。

最近はワールド製作初心者交流会にも、New UserやUserの方が続々来るのでこのような記事も需要があるかな~と思い執筆してみました。

面白いワールド……増えると良いですね。
長文を読んでさぞかしお疲れだと思いますので、今回はあっさり目に締めようと思います。

あなたの真面目さに敬意を表して、文章を閉じさせていただきます。
長文読了お疲れさまでした。


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