大雑把に言うと
VRChatのSDK3で追加された、ギミック作成のための仕組みです。
SDK3でのワールドギミックの殆どはUdonで作られていると思って問題ないでしょう。
もう少し詳しく
Udonはプログラミング言語で、作った処理をGameObjectに付けて動作させることが出来ます。
有名な作成方法は幾つかあり、
-
UdonGraph
SDK3に備え付けの方法です。
任天堂の「はじめてゲームプログラミング」みたいな感じで、処理・データ同士を線で繋いで作ります。
こちらで作ってみたい方は、私の入門記事が参考になるかもしれません。サンプルはBoothにも無料で配布しています。
【VRChat】Udon Graph 入門【SDK3】 -
UdonSharp
別途アセットを導入することで使える方法です。(SDK3.4.0からはSDK側に1.x系が統合されるという話があります)
テキストベースでUdonの処理が書けるため、プログラミングに馴染みのある方はこちらを好む傾向にあると思います。
VCC以前で利用されていたのは0.x系、VCC経由で導入可能なものは1.x系であり、互換性があまり無いため注意が必要です。(自動変換は付いていますが、上手く変換されずに壊れることがあります)
VCCから導入出来るSDKをご利用の方は1.x系を利用しましょう。
旧リンク: https://github.com/MerlinVR/UdonSharp/
新リンク: https://github.com/vrchat-community/UdonSharp/
などがあります。
更に詳しく
「Udon」と一口に言っても、文脈によって意味合いが少し異なります。
そのため、ここまでに出した単語についても改めて記述したいと思います。
"Udon"とUdon VMについて
一般に"Udon"というと"SDK3でのワールドギミック作成手段"のことを指しますが、厳密には、UdonはUdon Assembly(後述)から生成されたバイトコードを実行するVMであり、文脈によってはこちらを指す場合があります。
UdonGraphもUdonSharpも、実際には全てUdon Assemblyに変換(コンパイル)され、実行されています。
そのため、Udon AssemblyやVM用のバイトコードに変換する機構(Unityエディタ拡張)を作成することで、自由に言語を作ることが出来ます。
実際に、UdonSharp以外にもUdonを扱う方法を有志が作成しており、例えばCyanTriggerなどがあります。
なお、私が知っているUdon VMの重要な仕様として、変数512個分しかヒープ領域が用意されていない、というものがあります。
他にも色々あるかもしれません。
Udon Assemblyについて
Udon Assemblyはアセンブリ言語のようなプログラミング言語です。
Udon VMで実行するためのバイトコードに対応しているため、自作コンパイラはバイトコードを直接生成せずにUdon Assemblyを中継することが出来ます。
Udon Graphについて
UdonGraphは公式が提供するノード型のビジュアルプログラミング言語です。
VRChatが用意したAPIやUnity/C#のメソッド等をノードで扱います。
複雑なものを作ると、ノードを置くたびに数秒待たされることになったりするため、本格的なものを作るにはあまり向いていない面もあります。
Udon Sharpについて
UdonSharpはMerlin氏が作成した、C#風に記述できるプログラミング言語です。
Udonの仕様上、本来のC#ほど自由には記述出来ませんが、それでも非常に有用です。
複雑なものを作るための方法として選ぶ人は多いです。