Unity
主にゲームを制作するための統合開発環境、およびゲームエンジン
なに?
Unityとは、主に2D・3Dゲームを制作するための統合開発環境、およびそれを内包したゲームエンジンです。
アバター改変をするVRChatユーザにとって、Unityは「アバター改変ができるけど、やたらと難しいツール」という印象を持つ方が多いかもしれません。
Unityの役割は大きく分けて2つあります。1つは「ゲームを作るためのソフトウェア(=統合開発環境)」であり、もう1つは「ゲームを動かすための土台(=ゲームエンジン)」です。 たとえば、皆さんが普段アバターを改変する時の画面は「ゲームを作るためのソフトウェア」という側面ですが、VRChatをプレイしているときは「ゲームを動かすための土台」という側面を見ていることになります。
Unityは主にプロ向けに使われている開発ツールであり、様々なゲームがUnityで作られてきました。 有名なものを挙げると3Dゲームでは「原神」「Fall Guys」、2Dゲームでは「Hollow Knight」、スマホアプリでは「ウマ娘」「シャドウバース」などがあります1 2 3 。
また、設計思想においてはUnityでは「オブジェクト指向」型言語の1つであるC#をサポートしています。そのうえで、Unityではオブジェクト指向の欠点である「機能が増えると依存先が増える」ことを解消するために「コンポーネント指向」を採用しています4 。
プロ向けに使われている開発ツールのためUnityが持つ機能は多岐にわたり、そのため画面を構成するUIも複雑です。これはUnityが難しいと感じる原因の一つとも言えます。より詳しくはUnityはなぜ難しいのかも参照してください。
なぜ?
どうして我々はもっと簡単な「専用のアバター改変ツール」のようなものでなく、ゲームを作る必要もないのにやたらと高機能なUnityというソフトウェアを触らなければならないのでしょうか?なぜVRChat社はもっと簡単なツールを提供しないのでしょうか?
理由はVRChat本社の偉い人のみが知っているか、あるいは誰も知らないのかもしれません。誰も知らないというのは、ソフトウェア開発の現場ではたまにあることで、当時の意思決定をした人がチームから抜けた等があります。 ここからは仮説に基づきますが、「専用のアバター改変ツールではなくわざわざ改変のためだけにUnityを使わせている」理由を考察してみましょう。
まず考慮すべき背景として、「VRChatは2024年現在も早期アクセスとされている5 」という点です。Steamの「早期アクセスにした理由」には、以下のようなことが書かれています。
We are constantly adding more building blocks and features to our app and SDK.
日本語だと「アプリとSDKに、より多くの構成要素と機能を継続的に追加しています。」でしょうか。すなわち、VRCSDKはこれからも常に変化し続けるもの、という前提が考えられます。
仮に、VRChat公式から簡単な「専用のアバター改変ツール」が提供されていたとしましょう。このツールはVRCSDKを使ったアバター改変を、もっとシンプル分かりやすい画面で操作できるようなイメージです。 これならアバター改変をするユーザはもっと手軽に、難しく考えずにアバター改変ができそうです。
ところが、ツールの核となるVRCSDKに大きな変更があったとしましょう。VRChatの開発チームは、VRCSDKを変更するたびに「専用改変ツール」にも変更を加えなければなりません。そうしないと古い仕様に則ったままの「専用改変ツール」は壊れて使えなくなってしまうからです。 これはかなりの手間でしょうし、開発者の人的資材は有限なので注力できる部分は限られています。一般に、ソフトウェアの機能は増やせば増やすほど「保守コスト」が増大するのです。
VRChat自体も作っているツールである「Unity」を最大限そのまま使ってアバター改変が出来れば、SDKを改修するたびに発生する手間は大幅に削減できるかもしれません。
つまり、「早期アクセス、すなわち開発期間のため改変のための仕様が頻繁に変わりツールの改修コストが高くつくこと」「VRChat本社側のリソースが限られていること」が、「専用のアバター改変ツール」を提供することなくUnityを直接使わせていることの理由の一つではないかと、あくまでも仮説ではありますが考えることができます。