Version: 2022.3
言語: 日本語
Dedicated Server の要件
専用サーバーの最適化

Dedicated Server の Player 設定

Dedicateed Server Player (専用サーバープレイヤー) の Player 設定は、Desktop target の Player 設定のサブセットです。Player 設定に関する一般的な説明については、Player 設定 を参照してください。

Dedicated Server の Player 設定
Dedicated Server の Player 設定

Dedicated Server はヘッドレスでありサーバーアプリケーションである性質上、Other Settings (その他の設定) セクションのオプションのみが該当します。ドキュメントは Other Settings のセクションで参照できます。

以下のオプションは該当しません。

  • Icon
  • Resolution and Presentation
  • Splash Image
  • Publishing Settings

Other Settings (その他の設定)

このセクションでは、以下のグループに分類されたさまざまなオプションをカスタマイズできます。

Configuration

プロパティ 説明
Scripting Backend 使用したいスクリプティングバックエンドを選択します。スクリプティングバックエンドは、Unity がプロジェクトで C# コードをどのようにコンパイルおよび実行するかを決定します。
Mono C# コードを .NET 共通中間言語 (CIL) にコンパイルし、その CIL を Common Language Runtime (共通言語ランタイム) を使用して実行します。詳細は Mono を参照してください。
IL2CPP C# コードを CIL にコンパイルし、CIL を C++ に変換し、その C++ をネイティブのマシンコードにコンパイルし、これがランタイムで直接実行されます。詳細は IL2CPP を参照してください。
API Compatibility Level プロジェクトでどの .NET API を使用可能にするか選択します。この設定は、サードパーティ製ライブラリとの互換性に影響します。ただし、エディター固有のコード (Editor ディレクトリ内のコードやエディター固有の Assembly Definition) には影響しません。

ヒント: サードパーティ製アセンブリに関する問題がある場合は、下記の API Compatibility Level セクションに提案されている方法を試してみてください。
.Net Framework .NET Framework 4 (これには .NET Standard 2.0 プロファイルの全てと、追加的な API が含まれます) との互換性があります。.NET Standard 2.0 に含まれていない API にアクセスするライブラリを使用する場合はこのオプションを選択してください。作成されるビルドのサイズが大きくなり、利用可能な追加的 API は、全てのプラットフォームでサポートされるとは限りません。詳細は 追加のクラスライブラリアセンブリの参照 を参照してください。
.Net Standard 2.1 作成されるビルドがより小さくなり、完全なクロスプラットフォームサポートが提供されます。
Editor Assemblies Compatibility Level Editor アセンブリにどの .NET API を使用するか選択します。
.NET Framework .NET Framework 4 (これには .NET Standard 2.1 プロファイルの全てと追加的な API が含まれます) との互換性があります。.NET Standard 2.1 に含まれていない API にアクセスするライブラリを使用する場合はこのオプションを使用してください。作成されるビルドのサイズが大きくなり、利用可能な追加的 API は、全てのプラットフォームでサポートされるとは限りません。詳細は 追加のクラスライブラリアセンブリの参照 を参照してください。
.NET Standard .NET Standard 2.1 との互換性があります。作成されるビルドが小さくなり、完全なクロスプラットフォームサポートが提供されます。
IL2CPP Code Generation Unity が IL2CPP コード生成を行う方法を定義します。このオプションは、IL2CPP スクリプティングバックエンドを使用する場合にのみ利用可能です。
Faster runtime ランタイムパフォーマンス用に最適化されたコードを生成します。この設定はデフォルトで有効になっています。
Faster (smaller) builds ビルドサイズとイテレーション用に最適化されたコードを生成します。この設定では生成されるコードがより少なくなり、ビルドが小さくなりますが、ジェネリックコードのランタイムパフォーマンスが低くなります。変更の反復処理を行う場合など、ビルド時間の高速化が重要な場合にこのオプションを使用してください。
C++ Compiler Configuration IL2CPP 生成コードのコンパイル時に使用する C++ コンパイラー設定を選択します。
Debug Debug 設定は全ての最適化を無効にします。これにより、コードのビルドがより素早くなりますが実行がより遅くなります。
Release Release 設定を使用すると最適化が有効になるため、コンパイルされたコードの実行がより速くなり、バイナリサイズがより小さくなりますが、コンパイル時間がより長くなります。
Master Master 設定は、考えられる全ての最適化を有効にし、パフォーマンスを可能な限り向上させます。例えば、MSVC++ コンパイラーを使用するプラットフォームでは、このオプションによって、リンク時のコード生成が有効になります。この設定を使用したコードのコンパイルは、Release 設定を使用した場合と比較して、大幅に時間がかかる可能性があります。Unity は、ビルド時間の伸長が許容範囲内であれば、ゲームの公開版は Master 設定でビルドすることを推奨します。
IL2CPP Stacktrace Information スタックトレースに含める情報を選択します。情報のタイプに関する詳細は、IL2CPP によるマネージスタックトレース を参照してください。
Method Name スタックトレースに各マネージメソッドを含めます。
Method Name, File Name, and Line Number スタックトレースに、各マネージメソッドを、ファイルおよび行番号の情報とともに含めます。 ノート: このオプションを使用すると、ビルド時間と、ビルドされたプログラムの最終的なサイズの両方が、増加する可能性があります。
Use incremental GC インクリメンタルガベージコレクターを使用します。これは、ガベージコレクションを数フレームにわたって分散させ、フレーム中におけるガベージコレクション関連のスパイクを減らします。詳細は 自動メモリ管理 を参照してください。
Allow downloads over HTTP HTTP によるコンテンツのダウンロードを許可するかどうか指定します。デフォルトのオプションは Not allowed です。これは、推奨されるプロトコルが、より安全な HTTPS であるためです。
Not Allowed HTTP によるダウンロードを一切許可しません。
Allowed in Development Builds HTTP によるダウンロードを、開発ビルドの場合にのみ許可します。
Always Allowed 開発ビルドとリリースビルドの両方で、HTTP によるダウンロードを許可します。
Target minimum macOS version サポートされる最小の macOS バージョンを指定します。これは 10.13.0 です。

API Compatibility Level

全てのターゲットに関して Mono の API 互換性レベルを選択できます。サードパーティ製 .NET ライブラリは、.NET 互換性レベル外の機能を使用することもあります。そのような場合に、何が起きているかを理解し、最善の修正方法を把握するためには、以下を試みてください。

  1. Windows 用 ILSpy をインストールします。
  2. 問題のある API 互換性レベルの .NET アセンブリを ILSpy にドラッグします。これらは Frameworks/Mono/lib/mono/YOURSUBSET/ の下にあります。
  3. サードパーティ製アセンブリをドラッグします。
  4. サードパーティのアセンブリを右クリックし、Analyze を選択します。
  5. 分析レポートの中で、Depends on セクションを調査します。このレポートでは “そのサードパーティ製アセンブリに依存するが、選択した .NET 互換性レベルで使用できないもの” が全て強調表示されます。

Shader Settings

プロパティ 説明 
Shader precision model シェーダーで使用するサンプラーのデフォルトの精度を選択します。詳細は シェーダーのデータ型と精度 を参照してください。
Strict shader variant matching シェーダーバリアントがない場合に、エラーシェーダーを使用して、コンソールにエラーを表示します。
Keep Loaded Shaders Alive ロードされた全てのシェーダーを保持し、アンロードを防ぎます。

Shader Variant Loading Settings

これらの設定を使用して、ランタイムにシェーダーが使用するメモリの量を制御します。

設定 説明 
Default chunk size (MB) 全てのプラットフォームに対して、ビルドされたアプリケーション内に Unity が保存する圧縮シェーダーバリアントデータチャンクの最大サイズを設定します。デフォルトは 16 です。詳細は シェーダーロード を参照してください。
Default chunk count 全てのプラットフォームに対して、Unity がメモリに保持する解凍チャンク数のデフォルト制限を設定します。デフォルトは 0 で、これは制限がないことを意味します。
Override このビルドターゲットの Default chunk sizeDefault chunk count のオーバーライドを有効にします。
Chunk size (MB) このビルドターゲットの Default chunk size (MB) の値をオーバーライドします。
Chunk count このビルドターゲットの Default chunk count の値をオーバーライドします。

Script Compilation

プロパティ 説明 
Scripting Define Symbols カスタムコンパイルフラグを設定します。

詳細は 条件付きコンパイル を参照してください。
Additional Compiler Arguments 追加的な引数を Roslyn コンパイラーに渡すために、このリストにエントリーを追加します。追加の引数それぞれに対して新しいエントリーを 1 つ使用します。
新しいエントリーを作成するには、Add (+) をクリックしてください。エントリーを削除するには Remove (-) をクリックしてください。

全ての引数を追加し終えたら、Apply をクリックして追加的な引数を未来のコンパイルに含めます。Revert をクリックすると、このリストが最後に適用された状態にリセットされます。
Suppress Common Warnings C# の警告 CS0169 および CS0649 を表示するかどうかを示します。
Allow ‘unsafe’ Code 事前に定義されたアセンブリ (例: Assembly-CSharp.dll) 内の ‘unsafe’ C# コード のコンパイルのサポートを有効にします。
アセンブリ定義ファイル (.asmdef) の場合は、.asmdef ファイルのいずれかをクリックし、表示される Inspector ウィンドウでオプションを有効にします。
Use Deterministic Compilation -deterministic C# フラグでのコンパイルを防止するかどうか指定します。この設定を有効にすると、コンパイルされたアセンブリは、コンパイルされるたびにバイト単位で同じになります。

詳細は Microsoft のドキュメント 決定的コンパイラーオプション を参照してください。

Optimization



プロパティ 説明
Enable Dedicated Server optimizations Dedicated Server ビルドで追加的な最適化を行う場合はこのオプションを有効にしてください。
Prebake Collision Meshes ビルド時間に メッシュ に衝突データを追加します。
Preloaded Assets プレイヤーが起動時にロードするアセットの配列を設定します。
新しいアセットを追加するには、Size プロパティの値を大きくしてから、新しく表示された Element ボックス内に、ロードするアセットへの参照を設定してください。
Managed Stripping Level 未使用のマネージ (C#) コードを Unity がどの程度積極的に除去するかを選択します。提供されているオプションは、MinimalLowMediumHigh です。
アプリケーションのビルド時に、Unity リンカーの処理によって、プロジェクトの使用するマネージ DLL から、使用されていないコードを取り除くことができます。コードを取り除くと、実行ファイルのサイズが大幅に小さくなりますが、使用されているコードが誤って削除されることがあります。

これらのオプションと、IL2CPP によるバイトコードストリッピングに関する詳細は、ManagedStrippingLevel を参照してください。
Vertex Compression チャンネルごとの頂点圧縮を設定します。これはプロジェクト内の全てのメッシュに影響します。
通常は、Vertex Compression は、メモリ上のメッシュデータのサイズを縮小して、ファイルサイズを縮小し、GPU パフォーマンスを向上させるために使用されます。

頂点圧縮の設定方法と、この設定の制限に関する詳細は、メッシュデータの圧縮 を参照してください。
Optimize Mesh Data このオプションを有効にすると、ビルドに使用されているメッシュから、使用されていない頂点属性が取り除かれます。このオプションはメッシュ内のデータ量を削減し、ビルドサイズ、ロード時間、およびランタイムメモリ使用量の削減に役立ちます。

注意: この設定を有効にした場合は、マテリアルやシェーダーの設定をランタイムに変更しないようにしてください。

詳細は PlayerSettings.stripUnusedMeshComponents を参照してください。
Texture MipMap Stripping 全てのプラットフォームでミップマップストリッピングを有効にします。これにより、ビルド時に、使用されていないミップマップがテクスチャから取り除かれます。Unity は、ミップマップの値を現在のプラットフォームの Quality Settings と比較することによって、使用されていないミップマップを特定します。ミップマップの値が現在のプラットフォームの全ての Quality Setting から除外されている場合は、Unity は、ビルド時にそれらのミップマップをビルドから削除します。QualitySettings.masterTextureLimit に、取り除かれたミップマップ値が設定されている場合、Unity は、取り除かれていない最も近いミップマップ値をそこに設定します。

Stack Trace

各 Log Type に対応するオプションを有効にして、希望のログタイプを選択します。

プロパティ 説明 
None ログが記録されません。
ScriptOnly スクリプト実行時のみログが記録されます。
Full 常にログが記録されます。

詳細は スタックトレースのログ を参照してください。

Legacy

SkinnedMeshRenderers のブレンドシェイプのウェイトの範囲を固定するには、Clamp BlendShapes (Deprecated) オプションを有効にします。

Capture Logs

Capture Startup Logs オプションを有効にすると、スタートアップログがキャプチャされ、後で処理できるようになります。

その他の参考資料

Dedicated Server の要件
専用サーバーの最適化