Unity (ゲームエンジン)

IDEを内蔵するゲームエンジン

UnityUnity3D)は、Unity Technologies(日本法人はユニティ・テクノロジーズ・ジャパン株式会社[5])が開発・販売している、IDEを内蔵するゲームエンジンである。主にC#を用いたプログラミングでコンテンツの開発が可能である。PC(WindowsmacOS)だけでなくモバイル(iOSAndroid)やウェブブラウザ(WebGL)、家庭用ゲーム機(PlayStation 4Xbox OneNintendo Switch等)といったクロスプラットフォームに対応しており、VR/AR/MR機器向けのコンテンツ開発にも対応している。

Unity
開発元Unity Technologies英語版
初版1.0 / 2005年6月8日 (18年前) (2005-06-08)
最新版
2023.2.3f1 / 2023年12月5日 (4か月前) (2023-12-05)[1]
最新評価版
2023.2.0b13 / 2023年10月10日 (6か月前) (2023-10-10)[2]
プログラミング
言語
C/C++[3](エンジン内部)
C#(スクリプト)
対応OS
プラットフォームx86-64, ARM
対応言語英語
種別ゲームエンジンゲームクリエイションシステム英語版
ライセンスプロプライエタリ
公式サイトhttps://unity.com/ja
テンプレートを表示

2004年にデンマークで設立されたOver the Edge Entertainment (OTEE)が2005年に公開したゲーム開発ツールで、2007年に社名がUnity Technologiesに変更された。Unityを使って開発または運営したコンテンツの月間アクティブユーザー数は28億人を超えており[6]、主にモバイルゲームで大きなシェアを持つが家庭用ゲーム機やゲーム以外の様々な業界、産業でのアプリケーション、テクノロジーなどで幅広く利用されている。

機能

レンダリング

グラフィックエンジンはDirect3D (Windows)、OpenGL (Mac, Windows, Linux)、OpenGL ES (Android, iOS)、Metal (macOS, iOS, tvOS)、Vulkan (Android)、プロプライエタリのAPIを使用。バンプマッピング環境マッピング視差マッピング、スクリーンスペースアンビエントオクルージョン(SSAO)、シャドウマップ英語版を使ったダイナミック・シャドウ、テクスチャレンダリング英語版、フルスクリーンポストプロセッシングエフェクトに対応している[7]

また、3ds MaxMayaSoftimageBlendermodoZBrush3D-CoatCinema 4DCheetah3DAdobe PhotoshopAdobe Fireworks、Allegorithmic Substanceのアートアセットとファイル形式に対応しており、これらのアセットをゲームプロジェクトに追加したり、Unityのグラフィカルユーザーインターフェースで管理することができる[8]

ShaderLabの言語はシェーダーのために使用され、固定機能パイプラインとGLSLCg/HLSLで書かれたシェーダープログラム両方の宣言型「プログラミング」に対応している[9] [10]。シェーダーは複数のバリエーションや宣言されたフォールバック仕様を含むことができるため、Unityは現在使用しているビデオカードに最もよいバリエーションを検出したり、互換性が無い場合でも性能を出すために機能を犠牲にできる代替のシェーダーにフォールバックすることができる[11]。また、NVIDIA(かつてはAgeia英語版)のPhysX物理エンジンを内蔵サポートしており、Unity 3.0では任意メッシュおよびスキンメッシュでのリアルタイムクロスシミュレーション、シックレイキャスト、衝突レイヤーへの対応が追加された[12]

Unityはレンダリングパイプラインとしてbuilt-in Rendering PipelineとScriptable Render Pipeline(SRP)をもつ。SRPを用いればC#によってレンダリングパイプラインを構築できる。Unity社による構築済みSRPとしてUniversal Render Pipeline(URP)とHDRPが提供されている[13][14]

Universal Render Pipeline

Universal Render Pipeline(URP)はライティングで特徴づけられる4タイプのシェーダーを提供している。

物理ベースシェーディング(Lit & Particles Lit
エネルギー保存則と微細形状(反射/屈折)[15]
シンプルシェーディング(Simple Lit & Particles Simple Lit
Blinn-Phongモデル[16]
焼き込みLitシェーディング
Bakedライトのみを反映するシェーダー
Unlitシェーディング(Unlit & Particles Unlit
ライティングなし

スクリプティング

Unityではプログラミング言語C#を用いてプログラム(Scripts[17])を書くことで、Unityが提供する機能の拡張をおこなうことができる。これをスクリプティングという。

UnityはC#を実行するために以下のフレームワーク(Scripting Backend[18])を提供している[19]

すべてのScripting Backendにおいて、フロントエンド(C# to CIL)にはRoslynが用いられている[20]。Unity 2019.2現在のC#バージョンはC# 7.3である[20]

IL2CPP

IL2CPPはUnity社が独自開発したScripting Backendである[21]。IL2CPPを用いた場合、フロントエンドによって生成されたILはネイティブコードに(JITあるいはAOTで)変換されるのではなく、C++コードへといったん変換される[22]。その後C++コンパイラによってネイティブコードにコンパイルされる。

Burst

最適化されたC#スクリプトを対象にしたコンパイラバックエンドとしてBurst(Burst Compiler)がある[23]

BurstはUnity 2019.1から正式提供されているバックエンドである[24][25]。BurstはILをLLVMを介してネイティブコードへコンパイルする[26]。いくつかの制限が課せられたC#(HPC#[23])スクリプトを書きBurstコンパイラを用いることで、従来(例: Mono)に比較して最大10倍程度の高い性能を得ることができる。内部的には、BurstはILからLLVM IRへのトランスパイルを担っており(つまりLLVM目線ではBurstはCIL to IRのコンパイラフロントエンド)、以降の段階でLLVMによる最適化・ネイティブコード生成をおこなうことで非常に高い性能を実現している[27]

C# Job System

C# Job SystemはUnity 2018.1より導入された、C#スクリプトの並列計算支援システムである[28][29]。C# Job Systemを用いることで、並列計算につきまとう競合やデッドロックを避けながら高い演算性能を利用することができる。

IJobNativeContainerを基本的な型とする。IJobを継承した構造体であるJobのExecuteメソッドで処理を定義し[30][31]、インスタンス化したJobのScheduleメソッドをメインスレッドにて呼ぶことで、Unityが内部的に提供するJob QueueへJobが登録される[32]。計算結果はJobへの入力として渡したNativeContainerを介して取得できる。NativeContainerガベージコレクションの対象外であるため、結果取得後はNativeContainerを破棄する必要がある。

C# Job SystemはBurstコンパイルとの共用を念頭に設計されており、C# Job Systemで並列化したコードをBurstコンパイルによって最適化すれば非常に高い並列演算性能を得ることができる。2010年代からコンピュータのコア数は増加傾向にあるため、高い並列演算性能を生かして経路探索やアニメーションなどで有効利用できる。例えばAnimation Rigging パッケージのコンストレイント(IKなど)はC# Job Systemを用いて実装されている[33]

廃止されたスクリプティング言語・機能

かつてはC#以外にUnityScript(ECMAScriptの影響を受けた構文のカスタム言語)およびBoo(Pythonの影響を受けた言語)も使用可能だった[34]。しかしUnity2018.3をもって完全に廃止されている[35]。また3.0のリリースが始まり、Unityはデバッギングスクリプト向けにMonoDevelopのカスタマイズバージョンを公開した[36]。現在ではMonoDevelopの利用は廃止されている。

アセットトラッキング

UnityにはまたUnity Asset Serverという開発者のゲームアセットとスクリプト向けバージョンコントロールソリューションが含まれている。これはバックエンドにPostgreSQLを使用し、オーディオシステムはFMODのライブラリ(Ogg Vorbis圧縮オーディオの再生が可能)で構築され、ビデオ再生はTheoraコーデックを使用、地形と植生エンジン(樹木のビルボーディングやUmbraを使ったオクルージョンカリングに対応)、Beastを使った内蔵ライトマッピングやグローバルイルミネーション、RakNetを使用したマルチプレイヤーネットワーク、内蔵パスファインディングナビゲーションメッシュを使用している[37]

プラットフォーム

複数のプラットフォームに対応しており、プロジェクトにおいて、開発者は携帯機器、ウェブブラウザ、デスクトップ、ゲーム機への配信をコントロールすることができる[38]。また、ゲームが対応している各プラットフォーム用のテクスチャ圧縮英語版や解像度設定を指定することができる[38]

アセットストア

2010年11月にスタートしたUnity Asset StoreはUnity editorで利用可能なリリースである。このストアには3Dモデル、テクスチャ、マテリアル、パーティクルシステム、音楽、効果音、チュートリアル、プロジェクト、スクリプティングパッケージ、エディタエクステンション、オンラインサービスといった4,400以上のアセットパッケージがある。

また、多くのエクステンション、ツールやタシャレン・エンターテインメントによるNGUI: Next-Gen UI[39]のようなアセットパッケージ、デトックス・スタジオのuScriptといったビジュアルスクリプティングエクステンション、Tidy Tile Mapper、ドップラー・インタラクティブの2D/3Dタイル型ゲームデザインエクステンション[40]、FingerGesturesという入力スクリプティングパッケージ[41]もストアで入手できる。

バージョン

最初のバージョンは2005年にAppleWorldwide Developers Conferenceで提供が開始された。Mac上で機能やプロジェクトを構築するもので、他のプラットフォーム用のエンジンやツールの開発を継続するのに十分な成功を得た[42]。2010年9月にUnity 3が公開、これはハイエンドなスタジオが所有しているツールを多く導入することに力を入れたものだった。また、自社がインディーズや小規模チームにゲームエンジンを手頃な価格のパッケージとして提供しながら大手の開発企業の関心を取り込むことができた。2012年終わり頃に公開されたバージョン4.0ではMecanimアニメーションやDirectX 11などへの対応がなされた。

Unity 3.5

Unity 3.5はUnityの開発プラットフォームに向けた最も大規模なリリースの1つで、既存技術向けに新機能や改善が図られ[43]、Shurikenパーティクルシステム、経路探索英語版向けのNavMesh、障害物回避、線形空間(ガンマ補正)ライティング、HDRレンダリング、マルチスレッドレンダリング、ライトプローブ、Google Native Clientへの対応、再記述されたオクルージョンカリング英語版詳細度英語版のビルトイン対応、Adobe Flash Playerのアドオンプレビュー、GPUプロファイラー、指向性ライトマップがそれに当たる[44]

Unity 4

2012年6月18日に発表されたUnity 4では当初の公開ではいくつかの新機能が追加されることになっていた。リリースサイクルは過去のリリースのようにライフスパンの過程で機能追加などの複数のアップデートがされる予定だったが、将来の4.xのアップデートにより新しいGUIが保留となり、結局リリースされたのは2012年11月14日だった[45]

DirectX 11の対応やMecanimアニメーションといった新機能が加わった。モバイルグラフィックの機能強化として、リアルタイムシャドウ、スキンメッシュのインスタント化、ライトマップをベイク(焼き込み)したときに通常のマップを使用する機能、GPUプロファイラーの改善が実行された。さらに、Adobe Flashのアドオン対応もなされたが、既にUnity 3.5互換のベータ版ツールで可能となっていた。それでも対応アドオンの最終版ではUnity 4でしか動作しないようになっている[46]

Unity 4にはまた、デスクトップにゲームを公開するためのオプションも搭載された[47][48][49]。アドオンを展開する時は潜在的にLinuxの様々な形式で動作し、主にUbuntuで動作させることに主眼を置いている[50]。この展開オプションは追加料金無しでUnity 4の全ユーザーに提供される[51]。Unityを使う技術者はゲームの標準的なチームにおいてUbuntuを使って作業をしている[52]。バージョン4以降、自身のUnity Web Playerを通したソーシャルプラットフォームで改善したUnityのエクスペリエンスを立ち上げるためにFacebookを使った協働作業が行われている[53]

Unity 5

2015年3月3日にリリース開始[54]。主な変更点は以下の通り。

  • Unity 4までは有償版のみ使用可能だった機能が、無料版でもすべて使用可能になった[55]
  • ライセンス体系がUnity 4までの「Unity Free」(無料版)と「Unity Pro」(有償版)から、「Personal Edition」(無料版)と「Professional Edition」(有償版)に変更された[54]
  • グラフィックス強化[54]
  • エディタの64ビット対応[54]
  • IL2CPPの導入によるマルチプラットフォームのサポート強化[54]
  • Unity Cloud Build(開発者のためのクラウドサービス)の開始[54]

Unity2017

2017年7月11日にリリース開始[56]。今まではUnity3,Unity4,Unity5とバージョンで続いて来たがこのサイクルは終了し、Unity2017と発表された。今後はUnity2017.xのサイクルとなる。

新バージョンの追加機能

  • Timeline
  • SpriteMask
  • Spriteベースのパーティクルアニメーション
  • .NET 4.6の対応
  • ビルディングオプションでScript Only Buildが可能

Mecanim

MecanimとはUnityのアニメーション技術で最初の数年間は同名企業が手がけていたが、その後買収によりUnityのカナダオフィスが手がけている。この技術は効率的なインターフェイスでキャラクターを流体的かつ自然的に動かすように構築している。またMecanimにはステートマシンやブレンドツリー、IKリギングを生成するツールが含まれ、Unity editorでアニメーションを自動的にリターゲットできるようになっている[57]

加えて、リターゲット可能なアニメーションのアレイはツールの起動時にUnity Asset Storeで入手できるようになっている。これらのアニメーションファイルの多くはモーションキャプチャーで使用され、ユニティ・テクノロジーズによって無料で提供されている。

他の機能強化

  • Shurikenパーティクルシステムは外力、ベントノーマル、自動カリングに対応している
  • 3Dテクスチャ対応
  • ナビゲーション:動的障害物や回避優先度
  • UnityGUIのパフォーマンスやメモリ使用のメジャーな最適化
  • HTMLのような記述方式を使った、全プラットフォーム向けのダイナミックフォント
  • Unity Web Playerの遠隔デバッギング
  • 新しいプロジェクトのウインドウワークフロー
  • 反復ライトマップベーキング
  • 改善されたコンポーネント型ワークフロー
  • カスタムクラス向けの拡張インスペクター
  • パイプラインにインポートするキューブマップの改善
  • 巨大なメモリとパフォーマンスの節約のためにジオメトリデータを改善
  • メッシュを効率的に非三角形ジオメトリのレンダーポイントとラインで構築
  • プロジェクトウインドウからの検索、ライブプレビュー、Asset Storeでのアセットの購入

Unity2018

2018年5月2日にリリース開始。主な変更点は以下の通り[58][59]

  • グラフィックス性能の向上
    • スクリプタブルレンダーパイプライン(プレビュー版)
    • シェーダーグラフ(プレビュー版) - プログラマブルシェーダーをGUIで作成する機能
    • ポストプロセッシングスタック v2
  • C# Job System - マルチコアプロセッサによる並列処理機能
  • ECS (Entity Component System), Burst Compiler(いずれもプレビュー版) によるコード生成の最適化
  • Unityエディタの多言語対応
  • C#6.0、.NET standard 2.0、.NET 4.6対応
  • ProBuilder, PolyBrush - レベルデザイン機能の強化

Unity2019

2019年4月15日にリリース開始。主な改善、変更は以下の通り[60]

  • AR Foundation(プレビュー)
  • グラフィックスの強化
    • LWRP(軽量レンダーパイプライン)でのAR Foundationのサポート(プレビュー)
    • ステレオレンダリングモードの自動フォールバック
  • エディターの改善
    • ダークテーマエディターが全ユーザーで利用可能(2019.4.8f1~ [61]
  • HD レンダーパイプライン(HDRP、プレビュー)
  • Input System(プレビュー)

Unity2020

2020.1

2020年7月22日にリリース開始。主な改善、変更は以下の通り[62][63]

  • パッケージマネージャーの改善
  • 開発者ツールの改善
  • エディターの改善、強化
    • バッググラウンドタスクウィンドウ
    • プロファイラツールの改善
  • 2D Physicsの強化

2020.2

2020年12月15日にリリース開始。主な改善、変更は以下の通り[64][65]

  • C#8.0対応
  • Unity セーフモード
  • スタンドアロンプレイヤーでのApple Siliconのネイティブサポート

またUnity2020.xより、今までの年3回のリリースから年2回のリリースサイクルに変更されている。

Unity2021

2021.1

2021年3月23日にリリース開始。主な改善、変更は以下の通り[66][67]

  • Visual Scriptingのエディター統合
  • パフォーマンスの向上
  • 2Dシステムの改善

2021.2

2021年10月26日にリリース開始。主な改善、変更は以下の通り[68]

  • Apple Silicon用エディターをサポート
  • C#9.0対応

Unity2022

2022.1

2022年5月9日にリリース開始。主な改善、変更は以下の通り[69]

  • エディターワークフローの向上
  • パフォーマンスの改善
  • プラットフォームの最適化
    • Androidデバイス上でのパフォーマンスの向上

2022.2

2022年12月7日にリリース開始。主な改善、変更は以下の通り[70]

  • ECS for Unityの正式サポート
  • DirectX 12のサポート
  • Magic Leap 2、PlayStation VR2、Meta Quest Proへのサポート

ライセンス

個人向けとして無料のUnity Personal、Unity Student、主に法人向けとして有料のUnity Plus、Unity Pro、Unity Enterpriseのプランがあり、いずれもサブスクリプション形式となる[71]。基本的な機能、ユーザーインターフェースは同一で無料プランであっても機能のほぼ全てを利用することができ、PC(Windows、Mac)のほかiOSやAndroid、WebGL等のプラットフォームへのビルドも可能である。有料プランではスプラッシュスクリーンのカスタム化やチーム開発に適したサービスや機能(Unity Teams Advanced)の利用が可能となる。また、Unity Personalは過去12ヶ月にUnityを利用して得られた収益や資金が20万米ドル以下であることが利用条件[注 1]となるため、スタートアップや個人開発ではない一般的な企業が無料プランを使い続けることは禁止されている。

家庭用ゲーム機へのビルドに関しては、プラットフォームを提供している企業とのライセンス契約などが別途必要となる[72]

Unity Runtime Fee導入発表による騒動

Unity Technologiesは2023年9月13日に、本エンジンを導入しているメーカーに対して、ダウンロード数やインストール数が一定のしきい値を超えたゲームを対象に1ダウンロードにつき最大0.20米ドルの利用料の支払いを義務付ける仕組み「Unity Runtime Fee」を2024年1月1日より導入すると発表した。導入の理由としてUnity Technologiesは「ゲームがダウンロードされる毎に、Unity ランタイムもインストールされるため」と説明している[73]。実際に支払いが発生する対象は、成功を得たごく一部の利用者に限られるとみられている[74]

この発表は、大きな方針転換であるにもかかわらずUnityの利用者の意思を確認せず突然行われたため、非常に多くの反発を招くことになった。『Among Us』の開発元Innerslothは「Unity Runtime Fee」が導入された場合に同作を別のゲームエンジンに移植することを示唆し、『Cult of the Lamb』の開発元Massive Monsterは「Unity Runtime Fee」が導入される2024年1月1日に同作をストアから削除すると発表、『Papers, Please』開発者のルーカス・ポープ英語版は「Unityが正気に戻ってくれることを願う」とコメントした[74]

2023年9月23日、Unity Technologiesは、社長のMarc Whittenの謝罪とともに「Unity Runtime Fee」の適用規定の変更を発表した。この中では、無料プランの「Unity Personal」への導入が完全に撤回され、同時に、同プランの利用条件となっている過去12か月の収益・調達資金の上限が、従来の10万米ドルから20万米ドルに引き上げられた。また、有料プランの「Unity Pro」と「Unity Enterprise」には「Unity Runtime Fee」が導入されるが、支払い基準に達した利用者は、インストール数に応じた「Unity Runtime Fee」を支払うか収益の2.5%を支払うかのどちらかを選択でき、インストール数と収益金額は利用者自身で報告して支払う方式となった。これらの発表について、開発者からはおおむね好意的な意見が寄せられている[75]

使用例

コンピュータゲーム

PC・モバイル・VR・ARなど様々なゲームを開発可能[76]

ゲーム以外での使用例

Unityはコンピュータゲーム以外のソフトウェアの製作でも使用されており、このようなソフトウェア開発の事例は「Unityソリューションカンファレンス」というイベントの中でも紹介されてきた。

たとえば、2013年にチームラボが発売したアプリ「teamLabBody」の開発にはUnityが使われており、生きた人間の骨格の動きや人体の形態を学ぶことができる[77]

また、アイドルグループ・妄想キャリブレーションの2014年のシングル『魔法のジュース』のミュージックビデオにおけるメンバーのスカートは歌に合わせてスカートを光らせる仕組みになっており、リアルタイムの音声解析にはUnityが用いられた[78]。さらに、2015年に発売された同グループの『幻想恋花火』のミュージックビデオでは番傘に花火や文字を光らせる場面でUnityが使われたほか、制作時はUnityで撮影現場と似た空間を作ったうえでシミュレーションを繰り返した[78]東映アニメーション制作のテレビアニメ魔法つかいプリキュア!』後期エンディングの動画制作にUnityが使われた[79]

また、VR環境向けのアバターやワールド、アイテムの作成にUnity Editorの使用を前提としたものがあり、VRChat[80]バーチャルキャスト[81]cluster[82]などがある。

visionOS向けの開発キットも配布されており、Unity Technologiesは産業界でのApple Vision Pro利用を促進している[83]

マスコットキャラクター

映像外部リンク
【VOCALOID SDK for Unity demo】unity-chan!!ライブステージ - Candy Rock Star - VOCALOID Edition

2013年12月16日、ユニティ・テクノロジーズ・ジャパンは「ユニティちゃん」(Unity-chan)という女性キャラクターを公開した[84][85]。このユニティちゃんは、一般のUnityユーザーが自らの開発ゲームに利用できる3Dキャラクターモデルで、Unityアセットストア利用規約に準じる形で2014年4月7日から無料配信が開始された[86]

2015年12月22日、ヤマハVOCALOIDの歌声を用いたコンテンツをUnity上で利用可能とする開発キット「VOCALOID SDK for Unity」の無償提供を開始したが、このキット向けとして、ユニティちゃんのオリジナルボイスを用いた歌声ライブラリ「Unityランタイム版VOCALOID Library unity-chan!」も併せて提供されている[87]。2016年1月14日には、そのハイクオリティ版である「VOCALOID4 Library unity-chan!」が発売された。

2023年8月5日には、「Unity」エディター上で簡単にボイス素材を合成できるエディター拡張機能「A.I VOICE for GAMES」のリリースに合わせ、A.I.VOICEによるテキスト読み上げ用ソフト「A.I.VOICE ユニティちゃん」が発売された[88]

3Dモデル素材ならびにVOCALOID等は、利用条項とガイドラインを守れば二次創作を行うことも可能であるため[86][87]、ユニティちゃんは「オープンソース系ヒロイン」とも呼ばれる[86]

メインキャラクター

これまで説明した「ユニティちゃん」は、以下の大鳥こはくのことを指す。
このほか、大鳥こはくに関係する多くのキャラクターが設定されており、ユニティちゃん公式サイトには人物相関図とメインキャラクターの紹介文が掲載されている[89]

大鳥 こはく(おおとり こはく)
声:角元明日香
誕生日:8月13日 年齢:17 血液型:AO
大鳥財団CEOの一人娘。友人のみさきから「ユニティちゃん」というあだ名がつけられた。
活発な性格でアクション俳優を夢見る。流されやすいようだが、すぐ腹をくくる。カレーコロッケが好物。
神林 ゆうこ(かんばやし ゆうこ)
声:大森日雅
誕生日:6月9日 年齢:17 血液型:AB
こはくの同級生。愛用のマイクロビーズのバランスボールの上で眠っては落っこちるので、みさきから「らっこ」というあだ名がつけられた。
退屈するとすぐ眠ってしまう一方、かなりのゲーマーで、インディーゲームをよく見つけてくる。
藤原 みさき(ふじわら みさき)
声:大島美咲
誕生日:4月21日 年齢:17 血液型:O
こはくの同級生。クラスはこはくたちと異なる。愛称は「ミサキチ」。
生徒会長を務めるほどの優等生だが、家ではいい加減。

登場作品

特記がないものはユニティちゃん(大鳥こはく)のみ登場する。

ゲームソフト

アニメ

  • The Phantom Knowledge(2017年、ユニティ・テクノロジーズ・ジャパン) - メインキャラ3人などが登場[94]。この作品はUnity2017.1を用いて制作されたもので、プロジェクトファイルが無料配布されている[95]
  • バーチャルさんはみている(2019年、TOKYO MX) - 作品内の1コーナー「ユニティちゃんはコロがりたい」に登場[96]

実写映画

脚注

注釈

出典

外部リンク