ワールドのボタンで扉が開く、鏡がオン・オフできる、ゲームが遊べる——こうしたギミックを動かしているのがUdonです。この記事では、Udonが何をしている仕組みなのか、同期という最大のつまずきどころ、そして挫折しにくい学び方の順序をまとめます。
UdonはVRChatのスクリプトシステム
Udonは、ワールドに動きや反応を付けるためのVRChat公式の仕組みです。組み方は大きく2通りあります。
・ビジュアルスクリプティング — ノードを線でつないで処理を組み立てる方式。コードを書かずに済む反面、処理が増えると線が複雑になりがちです
・UdonSharp(U#) — C#風のコードで書く方式。プログラム経験がある人にはこちらのほうが読みやすく、修正もしやすいです
どちらで書いても、最終的にワールドの中で動くものは同じです。プログラミング経験があるならUdonSharpから入るのが結局早いことが多いです。
できることの例
スイッチで照明やオブジェクトを切り替える、プレイヤーをテレポートさせる、乗り物を動かす、スコアを同期するミニゲームを作る、時間で演出を変える、など。ワールド内で人が「操作できるもの」はほぼUdonでできています。
逆に言えば、動かないもの(置いてあるだけの家具や背景)にUdonは不要です。最初のワールドはUdonなしでも成立します。
同期の考え方がいちばんの山場
複数人が同じワールドにいるとき、「誰かがボタンを押した結果を全員に反映する」には同期の設計が必要です。ここがワールド制作の面白さでもあり、最大のつまずきどころでもあります。
押さえておきたい考え方は次の3つです。
1. 自分の画面だけ変わっていないか
同期を考えずに作ると、押した本人の画面でしか変化しません。必ず2人以上で確認しましょう。
2. 後から来た人にも正しく見えるか
途中参加した人の画面で、扉が開いた状態が再現されるかは別問題です。状態を保持して同期する設計が要ります。
3. 誰が変更する権利を持つか
オブジェクトの状態を変えられるのは基本的に所有権を持つプレイヤーです。全員が触るギミックでは、この扱いを考える必要があります。
挫折しにくい学び方
BOOTHなどで配布・販売されているギミック(ドア、ミラースイッチ、ペンなど)を置くだけなら、コードを書かずに導入できます。既製品を使いながら中身を覗いてみるのが、一番挫折しにくい学び方です。
おすすめの順番
1. 既製ギミックを導入して動かす(コード不要)
2. Inspectorで設定を眺め、何が指定されているか見る
3. 「押したらオブジェクトが消える」だけの単機能を自作する
4. その動作を同期させる(全員の画面で変わるようにする)
5. 二人以上でテストし、後から来た人の見え方も確認する
いきなりミニゲームを作ろうとすると、同期・所有権・UIが同時に襲ってきます。単機能を積み上げるほうが結局早く着きます。
つまずきやすいポイント
自分では動くのに他の人には反映されない
同期の設定が入っていない典型例です。一人でのテストでは絶対に気づけないので、フレンドに手伝ってもらうか、複数アカウントでの確認が要ります。
Playモードでは動くのにアップロード後に動かない
エディタ上の挙動と実際のワールドでは条件が違うことがあります。ローカルテスト機能で複数人の状況を再現して確認しましょう。
重くなる
毎フレーム動く処理を大量に置くと負荷になります。必要なときだけ動く作りを意識すると軽くなります。
よくある質問
Q. プログラミング未経験でも作れる?
A. 既製ギミックの導入だけなら不要です。自作に進む場合、ビジュアル方式から始めれば段階的に慣れられます。
Q. UdonとUdonSharp、どちらを学ぶべき?
A. 目的次第です。コードに抵抗がなければUdonSharpのほうが情報量も多く、修正しやすい傾向があります。
Q. 既製ギミックを改造してもいい?
A. 配布物の利用規約によります。改変の可否と再配布の条件を必ず確認してください。
Q. ワールドの作り方から知りたい
A. 別記事「ワールド制作を始めよう 最小構成でアップロードまで」から読むと順序よく進められます。
引用記事ワールド制作を始めよう 最小構成でアップロードまでワールド