2022/10/29。Udonの歴史と現状【VRChat】

はじめに

この記事は別の記事の補助として執筆した、Udonをこれから勉強したい人向けの記事となっています。Udonに手を付ける前に読んでほしいタイプの内容です。

現在初心者がUdon(特にUdon Sharp)を勉強するにはちょっとばかりしんどい、混沌とした状態になっています。

それでもやりたいことのためにUdonを勉強する必要がある人のために、この記事を書いておきます。

記事内用語補足:
v1.x.x : プログラム界隈などでよく使われるバージョンを意味する記述です。一番最初のvがversionの頭文字で、後ろにあるxは数字が入ります。したがって、v1.x.xはバージョン1.0.0以上を意味します。
v0.x.xと併用される場合がありますが、その場合のv0.x.xが指し示す範囲は一番最初のバージョンからバージョン1.0.0が出る直前のバージョンまでです。
今回の記事でもところどころで併用されているので注意してください。

2022/10/30 大幅に文章の表記について修正しました。「公式」「正式」という呼称を記事内で使っていたのですが、違和感があるという指摘を受けたためです。naqtnさんありがとうございました。

(2023/10/16 追記 Udon SharpがVRChat SDKに統合されたので、Udonのインポート周りで悩む必要はなくなりました。最新のVCCでワールドプロジェクトを作ればOKですが、折角なので記述は削除せず残しておきます)

Udonは二つある

まず知っておいてほしいのが、現在Udonには、VRChatがサポート・提供しているものとして『Udon Node Graph』と『Udon Sharp』の二つがあるということです。


前者は「ノードを繋げてプログラミング」、後者は「コードを書いてプログラミング」することでギミックを作成するものです。

私の主観ではありますが、Booth等で販売されているギミックを見る限り、『Udon Sharp』のほうが主流です。

もしあなたが『Udon Node Graph』のほうを勉強したいのであれば、この記事を読む必要はないかもしれません。『Udon Node Graph』はそもそもワールド用SDK3とセットなので、導入がシンプルだからです。

一方で『Udon Sharp』を勉強したいのであれば先にこの記事を読んで、『Udon Sharp』の混沌とした現状を理解しておいたほうがいいでしょう。

『Udon Sharp』の現状について

まず知るべきはUdonの大雑把な歴史の流れです。何故かというとUdon Sharpは、過去にVRChat公式ではなく個人によって開発・リリースされ、現在はVRChat側も開発に協力しているという事情があるからです。それにより混乱が生まれています。

以下に大雑把な年表を書きました。ざっと調べた感じなので、間違っている部分もあるかもしれませんが、大幅に違うということはないと思います。

2020.1 VRChat公式がUdon Node Graphのα版を公開する
2020.2 Merlin氏がUdon Sharpをリリース
2020.4 SDK3とともにUdon Node Graphが正式にリリース
2020.12 Merlin氏がVRChatに雇われる。
2021.9 Udon Sharp v1.0.0のベータテストが開始
2022.4 Udon Sharp v1.0.0がリリース
2022.5 VCCのベータテスト開始
2022.8 VCC正式リリース

これを見てわかる通り、Udonを取り巻く環境は変わりつつあります。
特にUdon Sharp v1.x.xやVCCのリリースは今年の話です。

ですが、新しい記事が増えているかというとそうではありません。
流れが速いというのもあるとは思いますが、Udon Sharpの実装面については大きめの変更も少しはあるのですが、ほぼ変わっていないため既存の記事で十分だからだと思います。

一方で、導入記事については古いものが検索上位を占めています。
これは非常に初心者を困惑させる要素になっていると思います。
現在、Udon Sharpの最新版の導入にはVCCを経由することが推奨されていますが、以前はGithubのページからダウンロードしてくる方式だったため、記事の内容が現状と相違しているのです。

じゃあ『VCC 導入』で検索するように初心者を誘導すればいいかと言われると、もう一つ説明しなくてはいけないことがあり、とてもややこしいです。

事態を複雑にしているのが、現在古いUdon Sharpがまだ利用できることと、古いUdon Sharp(v0.x.x)と新しいUdonSharp(v1.x.x)の間に互換性がないことの2点です。

新しいUdon Sharpが出ましたが、古いUdon Sharpはまだ依然として使える状態です。
ただし、古いUdon Sharpでは、新しいUdon Sharpで作られたプログラムが利用できません(エラーで動かなくなります)

一方で新しいUdon Sharpでは、古いUdon Sharpで作られたプログラムを自動でアップグレードしてくれる仕組みがあるのですが、複雑なものは稀に失敗することが分かっています。

現在BoothではImportするだけで使えるUdon Sharp製のギミックが沢山販売されていますが、その多くは古いUdon Sharpで書かれたプログラムです(UdonSharp v1.x.x対応バージョンをリリースしてくれている親切な人もいますが、ごく一部でしょう)
当然、新しいUdon Sharpが入っているプロジェクトでは、アップグレードに失敗する可能性があります。
このことも初心者を困惑させる一因になると思われます。

つまり、初心者が躓きそうなパターンを列挙すると以下の通りです。
①『Udon Sharp 導入』で検索し、古い記事を参考にして、古いUdon Sharpを入れてしまう。
→新しいUdon Sharp製のプログラムをインポートし、エラーが起きる。
②VCC+新しいUdon Sharpを利用していて、booth等で買った古いUdon Sharp製ギミックをインポートする。
→アップグレードに失敗して、エラーが起きるor上手く動かなくなる

事情を知っていれば何ともないのですが、知らないと謎の理不尽なエラーが起きたと思ったり、使いたいギミックが使えなかったりして苦しむかもしれません。

結局どうすればいいの?

とはいえ、新しくワールドを作るのであればVCCを導入して、最新版のUdon Sharpでやるべきでしょう。いずれVRChat側で古いUdon Sharpが使えなくなる可能性は十分にあるからです。
ただし、古いUdon Sharp製のプログラムについては、アップグレードに失敗する可能性は念頭に入れておく必要があります。

アップグレードに失敗して、壊れたギミックについては、作者が対応してくれるのを待つか、自分で修理するか、もしくは諦めるかです。
(正確にはもう一つ手はあって、古いUdon Sharpを使うという手はあるのですが、Merlinさんがもうメンテナンスしないことを宣言しているので、徐々に壊れていく可能性があることや新しいUdon Sharp製のギミックが使えないデメリットなどがあります)←(2023/03/07追記 アップデートでホームページで配布されているSDKがVCC仕様になったため、古いUdon Sharpをそのまま使う方法はほぼなくなりました)

導入はVCC関係の記事を参考に導入するといいでしょう。

実装に関しては、古い記事や動画を参考にしてもいいと思います。
v1.x.x以降の記事は黒鳥さんの記事しか私は見かけていません(初心者向けの話ではないですが)

もっと複雑なギミックを実装したいのであれば、パフォーマンス改善をする必要がありますが、それについては一般のUnityC#向けの記事もある程度参考になるでしょう。Udon関連だと『Udon Sharp GC Alloc』で調べてもいいかもしれませんね。

余談:私見によるUdonの歴史解説

多分間違っているところも多々あるかもしれませんが、暇つぶしの読み物程度の感覚で読んでいただければ幸いです。

まず最初にVRChat公式がSDK2のVRC_Trigger等の旧式ギミックの代わりとして、『Udon Node Graph』を出しました。これは「ノードを繋げることでプログラムを作成できる機能」でした。

初心者でもできるようにという意図でのノードベースだったと思うのですが、複雑なギミックを組む際にはかなり複雑化してしまうというデメリットがありました。また、α版でのリリースでしたので当時はバグも多く内包されていたようです。

それから少し経った後にMerlinさんという方が『Udon Sharp』を出しました。『Udon Sharp』は「プログラミング言語C#で書かれたプログラムを、Udonのプログラムに変換」してくれます。

つまり、C#でプログラムが書けるため、C#でプログラミングができれば複雑なギミックを実装しやすくなりました(厳密には制限がかなりあるため、C#そのままというわけではありませんが)

驚くべきことにこの時MerlinさんはVRChat運営というわけではなく、ただの1ユーザーでした。そのため、『Udon Sharp』が全てカバーできていたかというと、そうではありませんでした。

この時点でユーザーには『Udon Node Graph』か『Udon Sharp』の二つの選択肢がありました。

しかしながら、これらはSDK2の旧式ギミックとの共通点はほとんどなく、学習コストから、今までSDK2の旧ギミックに慣れ親しんでいたプレイヤーにとっては移行のハードルが高いものとなっていました。
また、初心者にとっても直感的に理解できるかといわれると全くそんなことはなく、勧めづらいものとなっていました(そして残念ながら、現在でも状況は変わっていません)

幸いにして、『Udon Node Graph』や『Udon Sharp』で作られたギミックは配布することができます。そのため、Booth等で様々なUdonギミックが販売されており、初心者はそれらをインポートするだけでギミックを利用することが出来ます。

一方で既存のワールドをSDK2からSDK3に移行したいワールド製作者は、非常に困っていました。何故ならSDK2の旧式ギミックをUdonに自動で変換してくれる都合のいい機能はなかったからです。

そんな時、ほぼ同時期にユーザーメイドのUdonプログラム作成支援ツールが2つ作られました。

一つはほけさんが出しているTrigger2to3です。こちらは旧式ギミックであるVRC_Triggerとほぼ同じ使用感でギミックを作成することが出来ます。

もう一つはCyanさんが出しているCyanTriggerです。こちらはVRC_Triggerに似たインターフェースではあるものの、VRC_Triggerとは異なった使用感でギミックを作成することが出来ます。

どちらもSDK2からSDK3への自動変換を試験的に導入していたため、SDK2からSDK3への移行のハードルは幾分か下がった状態になりました。

その後はUdon Sharpの大型アップデートなどはありつつも大きな変化はなく、安定期のような状態が訪れます。

2020年12月にMerlinさんがVRChatに雇われることになりました。おそらくVRChat公式側にMerlinさんを雇うことで、サポート体制を手厚くしようという意図かなと推測できます。

そして今年2022年にVCCとともに、Udon Sharp v1.x.xが公開されました。
これによりUdon Sharpの導入方法がガラッと変わったため、現在は再び混迷期のような状態になっています。

ここからは将来的な話になりますが、いずれSDK3やUdon Sharpなどの配布物は全てVCC経由になり、2022年年末にホームページからの配布を止めることがアナウンスされています。

恐らくそのタイミングで古いUdon SharpのGithubページも閉鎖される可能性はあるかなと個人的な予想をしています。

Merlinさん自身は古いUdon Sharpであるv0.x.xのメンテナンスはもうしないとおっしゃっているため、いつかは古いUdonで作られたギミックはほとんど壊れてしまう可能性があります。
boothに個人が出品しているギミック等はUdon Sharp v1.x.x対応してくれる保証はないので、適切な時期に移行すべきでしょう。

おわりに

以上、Udonにまつわる一連の話でした。

意外と説明しようとすると一つ一つに関連性があるため、いっそそのあたりを全部説明してしまうかと思い書き出してみましたが、普通に記事1個分の分量があり、大変でした。

この記事が役に立てばよいなと思うものの、VRChatの意外性のあるアプデにより古くなっちゃうんだろうなと思いつつ、文章を締めたいと思います。

読了していただき、ありがとうございました。


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