Unity (ゲームエンジン)

Unity（Unity3D）は、Unity Technologies（日本法人はユニティ・テクノロジーズ・ジャパン株式会社）が開発・販売している、IDEを内蔵するゲームエンジンである。主にC#を用いたプログラミングでコンテンツの開発が可能である。PC（Windows、macOS）だけでなくモバイル（iOS、Android）やウェブブラウザ（WebGL）、家庭用ゲーム機（PlayStation 4、Xbox One、Nintendo Switch等）といったクロスプラットフォームに対応しており、VR/AR/MR機器向けのコンテンツ開発にも対応している。 2004年にデンマークで設立されたOver the Edge Entertainment （OTEE）が2005年に公開したゲーム開発ツールで、2007年に社名がUnity Technologiesに変更された。Unityを使って開発または運営したコンテンツの月間アクティブユーザー数は28億人を超えており、主にモバイルゲームで大きなシェアを持つが家庭用ゲーム機やゲーム以外の様々な業界、産業でのアプリケーション、テクノロジーなどで幅広く利用されている。 グラフィックエンジンはDirect3D (Windows)、OpenGL (Mac, Windows, Linux)、OpenGL ES (Android, iOS)、Metal (macOS, iOS, tvOS)、Vulkan (Android)、プロプライエタリのAPIを使用。バンプマッピング、環境マッピング、視差マッピング、スクリーンスペースアンビエントオクルージョン（SSAO）、シャドウマップ（英語版）を使ったダイナミック・シャドウ、テクスチャレンダリング（英語版）、フルスクリーンポストプロセッシングエフェクトに対応している。 また、3ds Max、Maya、Softimage、Blender、modo、ZBrush、3D-Coat、Cinema 4D、Cheetah3D、Adobe Photoshop、Adobe Fireworks、Allegorithmic Substanceのアートアセットとファイル形式に対応しており、これらのアセットをゲームプロジェクトに追加したり、Unityのグラフィカルユーザーインターフェースで管理することができる。 ShaderLabの言語はシェーダーのために使用され、固定機能パイプラインとGLSLやCg/HLSLで書かれたシェーダープログラム両方の宣言型「プログラミング」に対応している 。シェーダーは複数のバリエーションや宣言されたフォールバック仕様を含むことができるため、Unityは現在使用しているビデオカードに最もよいバリエーションを検出したり、互換性が無い場合でも性能を出すために機能を犠牲にできる代替のシェーダーにフォールバックすることができる。また、NVIDIA（かつてはAgeia（英語版））のPhysX物理エンジンを内蔵サポートしており、Unity 3.0では任意メッシュおよびスキンメッシュでのリアルタイムクロスシミュレーション、シックレイキャスト、衝突レイヤーへの対応が追加された。 Unityはレンダリングパイプラインとしてbuilt-in Rendering PipelineとScriptable Render Pipeline（SRP）をもつ。SRPを用いればC#によってレンダリングパイプラインを構築できる。Unity社による構築済みSRPとしてUniversal Render Pipeline（URP）とHDRPが提供されている。 Universal Render Pipeline（URP）はライティングで特徴づけられる4タイプのシェーダーを提供している。 物理ベースシェーディング（Lit & Particles Lit） エネルギー保存則と微細形状（反射/屈折） シンプルシェーディング（Simple Lit & Particles Simple Lit） Blinn-Phongモデル 焼き込みLitシェーディング Bakedライトのみを反映するシェーダー Unlitシェーディング（Unlit & Particles Unlit） ライティングなし Unityではプログラミング言語C#を用いてプログラム（Scripts）を書くことで、Unityが提供する機能の拡張をおこなうことができる。これをスクリプティングという。 UnityはC#を実行するために以下のフレームワーク（Scripting Backend）を提供している。 Mono .NET IL2CPP すべてのScripting Backendにおいて、フロントエンド（C# to CIL）にはRoslynが用いられている。Unity 2019.2現在のC#バージョンはC# 7.3である。 IL2CPPはUnity社が独自開発したScripting Backendである。IL2CPPを用いた場合、フロントエンドによって生成されたILはネイティブコードに（JITあるいはAOTで）変換されるのではなく、C++コードへといったん変換される。その後C++コンパイラによってネイティブコードにコンパイルされる。 最適化されたC#スクリプトを対象にしたコンパイラバックエンドとしてBurst（Burst Compiler）がある。 BurstはUnity 2019.1から正式提供されているバックエンドである。BurstはILをLLVMを介してネイティブコードへコンパイルする。いくつかの制限が課せられたC#（HPC#）スクリプトを書きBurstコンパイラを用いることで、従来（例: Mono）に比較して最大10倍程度の高い性能を得ることができる。内部的には、BurstはILからLLVM IRへのトランスパイルを担っており（つまりLLVM目線ではBurstはCIL to IRのコンパイラフロントエンド）、以降の段階でLLVMによる最適化・ネイティブコード生成をおこなうことで非常に高い性能を実現している。 C# Job SystemはUnity 2018.1より導入された、C#スクリプトの並列計算支援システムである。C# Job Systemを用いることで、並列計算につきまとう競合やデッドロックを避けながら高い演算性能を利用することができる。 IJobと NativeContainerを基本的な型とする。IJobを継承した構造体であるJobのExecuteメソッドで処理を定義し、インスタンス化したJobのScheduleメソッドをメインスレッドにて呼ぶことで、Unityが内部的に提供するJob QueueへJobが登録される。計算結果はJobへの入力として渡したNativeContainerを介して取得できる。NativeContainerはガベージコレクションの対象外であるため、結果取得後はNativeContainerを破棄する必要がある。 C# Job SystemはBurstコンパイルとの共用を念頭に設計されており、C# Job Systemで並列化したコードをBurstコンパイルによって最適化すれば非常に高い並列演算性能を得ることができる。2010年代からコンピュータのコア数は増加傾向にあるため、高い並列演算性能を生かして経路探索やアニメーションなどで有効利用できる。例えばAnimation Rigging パッケージのコンストレイント（IKなど）はC# Job Systemを用いて実装されている。 かつてはC#以外にUnityScript（ECMAScriptの影響を受けた構文のカスタム言語）およびBoo（Pythonの影響を受けた言語）も使用可能だった。しかしUnity2018.3をもって完全に廃止されている。また3.0のリリースが始まり、Unityはデバッギングスクリプト向けにMonoDevelopのカスタマイズバージョンを公開した。現在ではMonoDevelopの利用は廃止されている。 UnityにはまたUnity Asset Serverという開発者のゲームアセットとスクリプト向けバージョンコントロールソリューションが含まれている。これはバックエンドにPostgreSQLを使用し、オーディオシステムはFMODのライブラリ（Ogg Vorbis圧縮オーディオの再生が可能）で構築され、ビデオ再生はTheoraコーデックを使用、地形と植生エンジン（樹木のビルボーディングやUmbraを使ったオクルージョンカリングに対応）、Beastを使った内蔵ライトマッピングやグローバルイルミネーション、RakNetを使用したマルチプレイヤーネットワーク、内蔵パスファインディングナビゲーションメッシュを使用している。 複数のプラットフォームに対応しており、プロジェクトにおいて、開発者は携帯機器、ウェブブラウザ、デスクトップ、ゲーム機への配信をコントロールすることができる。また、ゲームが対応している各プラットフォーム用のテクスチャ圧縮（英語版）や解像度設定を指定することができる。 2010年11月にスタートしたUnity Asset StoreはUnity editorで利用可能なリリースである。このストアには3Dモデル、テクスチャ、マテリアル、パーティクルシステム、音楽、効果音、チュートリアル、プロジェクト、スクリプティングパッケージ、エディタエクステンション、オンラインサービスといった4,400以上のアセットパッケージがある。 また、多くのエクステンション、ツールやタシャレン・エンターテインメントによるNGUI: Next-Gen UIのようなアセットパッケージ、デトックス・スタジオのuScriptといったビジュアルスクリプティングエクステンション、Tidy Tile Mapper、ドップラー・インタラクティブの2D/3Dタイル型ゲームデザインエクステンション、FingerGesturesという入力スクリプティングパッケージもストアで入手できる。 最初のバージョンは2005年にAppleのWorldwide Developers Conferenceで提供が開始された。Mac上で機能やプロジェクトを構築するもので、他のプラットフォーム用のエンジンやツールの開発を継続するのに十分な成功を得た。2010年9月にUnity 3が公開、これはハイエンドなスタジオが所有しているツールを多く導入することに力を入れたものだった。また、自社がインディーズや小規模チームにゲームエンジンを手頃な価格のパッケージとして提供しながら大手の開発企業の関心を取り込むことができた。2012年終わり頃に公開されたバージョン4.0ではMecanimアニメーションやDirectX 11などへの対応がなされた。 Unity 3.5はUnityの開発プラットフォームに向けた最も大規模なリリースの1つで、既存技術向けに新機能や改善が図られ、Shurikenパーティクルシステム、経路探索（英語版）向けのNavMesh、障害物回避、線形空間（ガンマ補正）ライティング、HDRレンダリング、マルチスレッドレンダリング、ライトプローブ、Google Native Clientへの対応、再記述されたオクルージョンカリング（英語版）、詳細度（英語版）のビルトイン対応、Adobe Flash Playerのアドオンプレビュー、GPUプロファイラー、指向性ライトマップがそれに当たる。 2012年6月18日に発表されたUnity 4では当初の公開ではいくつかの新機能が追加されることになっていた。リリースサイクルは過去のリリースのようにライフスパンの過程で機能追加などの複数のアップデートがされる予定だったが、将来の4.xのアップデートにより新しいGUIが保留となり、結局リリースされたのは2012年11月14日だった。 DirectX 11の対応やMecanimアニメーションといった新機能が加わった。モバイルグラフィックの機能強化として、リアルタイムシャドウ、スキンメッシュのインスタント化、ライトマップをベイク（焼き込み）したときに通常のマップを使用する機能、GPUプロファイラーの改善が実行された。さらに、Adobe Flashのアドオン対応もなされたが、既にUnity 3.5互換のベータ版ツールで可能となっていた。それでも対応アドオンの最終版ではUnity 4でしか動作しないようになっている。 Unity 4にはまた、デスクトップにゲームを公開するためのオプションも搭載された。アドオンを展開する時は潜在的にLinuxの様々な形式で動作し、主にUbuntuで動作させることに主眼を置いている。この展開オプションは追加料金無しでUnity 4の全ユーザーに提供される。Unityを使う技術者はゲームの標準的なチームにおいてUbuntuを使って作業をしている。バージョン4以降、自身のUnity Web Playerを通したソーシャルプラットフォームで改善したUnityのエクスペリエンスを立ち上げるためにFacebookを使った協働作業が行われている。 2015年3月3日にリリース開始。主な変更点は以下の通り。 Unity 4までは有償版のみ使用可能だった機能が、無料版でもすべて使用可能になった ライセンス体系がUnity 4までの「Unity Free」（無料版）と「Unity Pro」（有償版）から、「Personal Edition」（無料版）と「Professional Edition」（有償版）に変更された グラフィックス強化 エディタの64ビット対応 IL2CPPの導入によるマルチプラットフォームのサポート強化 Unity Cloud Build（開発者のためのクラウドサービス）の開始 2017年7月11日にリリース開始。今まではUnity3,Unity4,Unity5とバージョンで続いて来たがこのサイクルは終了し、Unity2017と発表された。今後はUnity2017.xのサイクルとなる。 Timeline SpriteMask Spriteベースのパーティクルアニメーション .NET 4.6の対応 ビルディングオプションでScript Only Buildが可能 MecanimとはUnityのアニメーション技術で最初の数年間は同名企業が手がけていたが、その後買収によりUnityのカナダオフィスが手がけている。この技術は効率的なインターフェイスでキャラクターを流体的かつ自然的に動かすように構築している。またMecanimにはステートマシンやブレンドツリー、IKリギングを生成するツールが含まれ、Unity editorでアニメーションを自動的にリターゲットできるようになっている。 加えて、リターゲット可能なアニメーションのアレイはツールの起動時にUnity Asset Storeで入手できるようになっている。これらのアニメーションファイルの多くはモーションキャプチャーで使用され、ユニティ・テクノロジーズによって無料で提供されている。 Shurikenパーティクルシステムは外力、ベントノーマル、自動カリングに対応している 3Dテクスチャ対応 ナビゲーション:動的障害物や回避優先度 UnityGUIのパフォーマンスやメモリ使用のメジャーな最適化 HTMLのような記述方式を使った、全プラットフォーム向けのダイナミックフォント Unity Web Playerの遠隔デバッギング 新しいプロジェクトのウインドウワークフロー 反復ライトマップベーキング 改善されたコンポーネント型ワークフロー カスタムクラス向けの拡張インスペクター パイプラインにインポートするキューブマップの改善 巨大なメモリとパフォーマンスの節約のためにジオメトリデータを改善 メッシュを効率的に非三角形ジオメトリのレンダーポイントとラインで構築 プロジェクトウインドウからの検索、ライブプレビュー、Asset Storeでのアセットの購入 2018年5月2日にリリース開始。主な変更点は以下の通り。 グラフィックス性能の向上 スクリプタブルレンダーパイプライン（プレビュー版） シェーダーグラフ（プレビュー版） - プログラマブルシェーダーをGUIで作成する機能 ポストプロセッシングスタック v2 C# Job System - マルチコアプロセッサによる並列処理機能 ECS (Entity Component System), Burst Compiler（いずれもプレビュー版） によるコード生成の最適化 Unityエディタの多言語対応 C#6.0、.NET standard 2.0、.NET 4.6対応 ProBuilder, PolyBrush - レベルデザイン機能の強化 2019年4月15日にリリース開始。主な改善、変更は以下の通り。 AR Foundation（プレビュー） グラフィックスの強化 LWRP（軽量レンダーパイプライン）でのAR Foundationのサポート（プレビュー） ステレオレンダリングモードの自動フォールバック エディターの改善 ダークテーマエディターが全ユーザーで利用可能（2019.4.8f1～ ） HD レンダーパイプライン（HDRP、プレビュー） Input System（プレビュー） 2020年7月22日にリリース開始。主な改善、変更は以下の通り。 パッケージマネージャーの改善 開発者ツールの改善 エディターの改善、強化 バッググラウンドタスクウィンドウ プロファイラツールの改善 2D Physicsの強化 2020年12月15日にリリース開始。主な改善、変更は以下の通り。 C#8.0対応 Unity セーフモード スタンドアロンプレイヤーでのApple Siliconのネイティブサポート またUnity2020.xより、今までの年3回のリリースから年2回のリリースサイクルに変更されている。 2021年3月23日にリリース開始。主な改善、変更は以下の通り。 Visual Scriptingのエディター統合 パフォーマンスの向上 2Dシステムの改善 2021年10月26日にリリース開始。主な改善、変更は以下の通り。 Apple Silicon用エディターをサポート C#9.0対応 2022年5月9日にリリース開始。主な改善、変更は以下の通り。 エディターワークフローの向上 パフォーマンスの改善 プラットフォームの最適化 Androidデバイス上でのパフォーマンスの向上 2022年12月7日にリリース開始。主な改善、変更は以下の通り。 ECS for Unityの正式サポート DirectX 12のサポート Magic Leap 2、PlayStation VR2、Meta Quest Proへのサポート 個人向けとして無料のUnity Personal、Unity Student、主に法人向けとして有料のUnity Plus、Unity Pro、Unity Enterpriseのプランがあり、いずれもサブスクリプション形式となる。基本的な機能、ユーザーインターフェースは同一で無料プランであっても機能のほぼ全てを利用することができ、PC（Windows、Mac）のほかiOSやAndroid、WebGL等のプラットフォームへのビルドも可能である。有料プランではスプラッシュスクリーンのカスタム化やチーム開発に適したサービスや機能（Unity Teams Advanced）の利用が可能となる。また、Unity Personalは過去12ヶ月（前年）にUnityを利用して得られた収益や資金が10万米ドル以下、Unity Plusは同20万米ドル以下であることが利用条件となるため、スタートアップや個人開発ではない一般的な企業が無料プランを使い続けることは禁止されている。 家庭用ゲーム機へのビルドに関しては、プラットフォームを提供している企業とのライセンス契約などが別途必要となる。 2024年1月1日から本エンジンを導入しているメーカーに対して、全てのゲームを対象に1ダウンロードにつき最大0.20米ドルの利用料の支払いを義務付ける「Unity Runtime Fee」の導入を発表。 この利用料は再ダウンロードに対しても対象としており、この方針に対して各メーカーは大反発。Unityの使用を取りやめて別のゲームエンジンへ変更を宣言するメーカー、基本無料のゲームが基本無料の中止を発表するメーカー、代替のゲームエンジンの制作を支援するメーカーが続出するようになった。 反発の声を受け、Unity Technologiesは「Unity Runtime Fee」の適用ポリシーを見直し、ダウンロード数・収益額は利用者の自己報告制に改めた。 Unityはコンピュータゲーム以外のソフトウェアの製作でも使用されており、このようなソフトウェア開発の事例は「Unityソリューションカンファレンス」というイベントの中でも紹介されてきた。 たとえば、2013年にチームラボが発売したアプリ「teamLabBody」の開発にはUnityが使われており、生きた人間の骨格の動きや人体の形態を学ぶことができる。 また、アイドルグループ・妄想キャリブレーションの2014年のシングル『魔法のジュース』のミュージックビデオにおけるメンバーのスカートは歌に合わせてスカートを光らせる仕組みになっており、リアルタイムの音声解析にはUnityが用いられた。さらに、2015年に発売された同グループの『幻想恋花火』のミュージックビデオでは番傘に花火や文字を光らせる場面でUnityが使われたほか、制作時はUnityで撮影現場と似た空間を作ったうえでシミュレーションを繰り返した。 東映アニメーション制作のテレビアニメ『魔法つかいプリキュア!』後期エンディングの動画制作にUnityが使われた。 また、VR環境向けのアバターやワールド、アイテムの作成にUnity Editorの使用を前提としたものがあり、VRChat、バーチャルキャスト、clusterなどがある。 2013年12月16日、ユニティ・テクノロジーズ・ジャパンは「ユニティちゃん」（Unity-chan）という女性キャラクターを公開した。このユニティちゃんは、一般のUnityユーザーが自らの開発ゲームに利用できる3Dキャラクターモデルで、Unityアセットストア利用規約に準じる形で2014年4月7日から無料配信が開始された。 2015年12月22日、ヤマハはVOCALOIDの歌声を用いたコンテンツをUnity上で利用可能とする開発キット「VOCALOID SDK for Unity」の無償提供を開始したが、このキット向けとして、ユニティちゃんのオリジナルボイスを用いた歌声ライブラリ「Unityランタイム版VOCALOID Library unity-chan!」も併せて提供されている。2016年1月14日には、そのハイクオリティ版である「VOCALOID4 Library unity-chan!」が発売された。 2023年8月5日には、「Unity」エディター上で簡単にボイス素材を合成できるエディター拡張機能「A.I VOICE for GAMES」のリリースに合わせ、A.I.VOICEによるテキスト読み上げ用ソフト「A.I.VOICE ユニティちゃん」が発売された。 3Dモデル素材ならびにVOCALOID等は、利用条項とガイドラインを守れば二次創作を行うことも可能であるため、ユニティちゃんは「オープンソース系ヒロイン」とも呼ばれる。 これまで説明した「ユニティちゃん」は、以下の大鳥こはくのことを指す。 このほか、大鳥こはくに関係する多くのキャラクターが設定されており、ユニティちゃん公式サイトには人物相関図とメインキャラクターの紹介文が掲載されている。 大鳥 こはく（おおとり こはく） 声：角元明日香 誕生日：8月13日 年齢：17 血液型：AO 大鳥財団CEOの一人娘。友人のみさきから「ユニティちゃん」というあだ名がつけられた。 活発な性格でアクション俳優を夢見る。流されやすいようだが、すぐ腹をくくる。カレーコロッケが好物。 神林 ゆうこ（かんばやし ゆうこ） 声：大森日雅 誕生日：6月9日 年齢：17 血液型：AB こはくの同級生。愛用のマイクロビーズのバランスボールの上で眠っては落っこちるので、みさきから「らっこ」というあだ名がつけられた。 退屈するとすぐ眠ってしまう一方、かなりのゲーマーで、インディーゲームをよく見つけてくる。 藤原 みさき（ふじわら みさき） 声：大島美咲 誕生日：4月21日 年齢：17 血液型：O こはくの同級生。クラスはこはくたちと異なる。愛称は「ミサキチ」。 生徒会長を務めるほどの優等生だが、家ではいい加減。 特記がないものはユニティちゃん（大鳥こはく）のみ登場する。 乖離性ミリオンアーサー（2014年、スクウェア・エニックス） - 期間限定イベントでボスキャラクターおよびクリア記念ユニットとして登場。 Runbow（2015年、13AM Games） - プレイヤーキャラクターの一人として登場。 COGEN: 大鳥こはくと刻の剣（2022年、ジェムドロップ） - 大鳥こはくを主人公とするアクションゲーム。 白き鋼鉄のX2 -（2022年、インティ・クリエイツ） - 上記のCOGENとのコラボレーション用DLCで、大鳥こはくがボスキャラクターとして登場。 The Phantom Knowledge（2017年、ユニティ・テクノロジーズ・ジャパン） - メインキャラ3人などが登場。この作品はUnity2017.1を用いて制作されたもので、プロジェクトファイルが無料配布されている。 バーチャルさんはみている（2019年、TOKYO MX） - 作品内の1コーナー「ユニティちゃんはコロがりたい」に登場。 踊ってミタ（2020年、東映ビデオ） - VTuber「ハイドランちゃん」役