uVersion
日本語
ダウンロード →

Wiki

検証ルール

Unreal エディタからのチェックイン時に実行されるアセット検証チェック : 9つの組み込みルール、error / warning / info の重要度、JSON設定、エクスポート / インポート / リセット、そして知っておくべき制限。

はじめに

検証ルールは、Unreal エディタからのチェックイン時に実行される Unreal アセットの チェックです : 命名、テクスチャサイズ、依存関係の欠落など。コンテンツがリポジトリ(サーバー上で バージョン管理されるプロジェクト)に入る前に、スタジオの規約を自動的に強制するためのものです。設定は リポジトリごとに行います。

ルールが実際に適用される場所

検証は Unreal エディタが行い、サーバーは行いません ここで設定したルールは、エディタから送信する時点でUnreal Engine 用 uVersion プラグインによって ダウンロードされ実行されます。サーバー自体は、コミットを記録するときにルールを一切参照しません。頼りに する前に知っておくべき帰結 : デスクトップクライアントコマンドラインuversion checkin)、または Rider プラグインから行った送信は、エラーもなく痕跡も 残さずに検証ポリシーを完全に迂回します。

これはあなたの設定ミスではありません : 現在の仕様です。ルールは Unreal アセット(.uasset.umap)を対象としており、その検査にはプロジェクトを読み込んだ状態でエディタが開いている必要があります。 したがって、これらはエディタで作業するアーティストのための安全策として扱い、誰も越えられない障壁として は扱わないでください。

実務上の2つの帰結 :

  • ある規約を単に推奨するだけでなく保証する必要がある場合は、追加の管理(レビュー、ビルド側の検証)を 用意してください : ルールだけではそれを保証しません。
  • 誰かのところでルールが「まったく発火しない」場合は、まずその人がどこから送信しているかを確認して ください。デスクトップクライアントから送信するアーティストは、設定がどうであれ検証を一切見ません。

アクセスとロール

ルールタブは、スーパー管理者と、自身が管理するリポジトリ上の project_admin が利用できます。

自動シード、ただしすべて無効 9つのデフォルトルールは、リポジトリの作成時に自動的に作成されます(作成されなかった場合は、ルールを1つも持たない リポジトリの Rules タブを初めて開いたとき)。これらは無効の状態でシードされます : 新しいリポジトリで は、管理者が望むルールを有効にするまで検証は一切動きません。完全なセットから始めて、有効化と調整を 行います。

重要度

重要度は、有効なルールが失敗したときに Unreal エディタで何が起こるかを決めます。

重要度Unreal エディタからのチェックイン時の効果
errorチェックインをブロックします : 検証ウィンドウが開き、Proceed ボタンはグレーアウトされ、OK のみがクリック可能なままです。アセットを修正する必要があります。
warning送信を妨げませんが、黙って通過することはありません : 検証ウィンドウはそれでも開き、警告を一覧表示し、ユーザーは続行するために Proceed をクリックする必要があります。
info純粋に情報提供のみ : それ単独ではウィンドウを開かず、何も中断しません。
Unreal エディタの Pre-Checkin Validation ウィンドウ。検出結果の一覧と Proceed ボタンが表示されています。

9つの組み込みルール

ルールデフォルトチェック内容
blueprint_compilationerrorチェックイン前に Blueprint がエラーなくコンパイルされること。
naming_conventionwarning命名プレフィックス(Allar UE5 スタイル): T_ テクスチャ、M_ マテリアル、BP_ ブループリント、SM_ スタティックメッシュ、WBP_ ウィジェットなど。
max_texture_sizewarningテクスチャの最大サイズ : デフォルトは 4096 × 4096、2の累乗が必須。
material_complexitywarningマテリアルの複雑さ : デフォルトで最大 256 命令、16 テクスチャサンプル。
import_settingswarning準拠したインポート設定(テクスチャ、メッシュ)。
missing_dependencyerror依存関係の欠落がないこと(デフォルトでエンジンコンテンツを無視)。
circular_dependencyerror循環依存がないこと(デフォルトの探索深度は 20)。
unreferenced_assetinfo参照されていないアセットを報告します(デフォルトでマップとウィジェットを除外)。
duplicate_assetwarning重複したアセットを検出します(デフォルトで .umap を無視)。

有効化と設定

1. Rules タブを開く

管理パネルで、まず PROJECT 行のセレクターでリポジトリを選び、次に同じ行の Rules タブを開きます : ルールは一度に1つのリポジトリを対象とします。9つのルールが1行に1つずつ、展開用のシェブロン、 スイッチ、ルール名、重要度、説明とともに表示されます。

9つの検証ルールの一覧 : 各行にシェブロン、有効化スイッチ、ルール名、重要度、そして右側の Error / Warning / Info ドロップダウンメニュー。

2. ルールを有効にする

名前の左にあるスイッチをクリックします。保存は即座に行われます : この操作に保存ボタン はありません。これは忘れられがちなステップです : 新しいリポジトリではすべてのスイッチがオフで、オフのルールは重要度が 何であれ誰にも何も伝えません。

3. 重要度を選ぶ

行の右側のドロップダウンメニューは ErrorWarningInfo を 提供し、ここでも即座に保存されます。実際にチェックインをブロックするのは error だけです : 重要度を参照。

4. パラメータを調整する(JSON)

行頭のシェブロンをクリックしてルールを展開します。Configuration (JSON) フィールドに そのパラメータが含まれています。それらを編集して Save Config をクリックします。無効な JSON は保存を ブロックし、フィールドの下にエラーの詳細(Invalid JSON: ...)を表示します。その場合、ルールは以前の状態の ままです。

Configuration (JSON) エディタを展開したルール : 入力エリアのパラメータテキストと右下の Save Config ボタン。

例 : モバイルプロジェクト向けに max_texture_size を 2048 に下げる、または厳格に強制するために naming_conventionerror に切り替える。

エクスポート、インポート、リセット

Rules タブの右上のツールバーには3つのボタンがあります :

  • Export : すべてのルールの状態(有効化、重要度、設定)を含む rules.json ファイルをダウンロードします。
  • Import : rules.json を再読み込みし、各エントリを対応するルールに適用します (不明なキーは無視されます)。
  • Reset to Defaults : すべてのルールをデフォルト値に戻します。カスタム設定は失われます (確認が求められます)。

エクスポート / インポートは、あるリポジトリから別のリポジトリへ検証ポリシーを複製したり、オフラインでバージョン管理する のに使います。

リポジトリ内の rules.json

コミットされた rules.json は誰にでも適用されるわけではない コミットされた .uversion/rules.json ファイルは、コミットの作者が manage_rules という名前の権限(「ケイパビリティ」、つまりロールに紐づき、サーバー全体で有効な権限)を保持している場合にのみ、 リポジトリのポリシーに適用されます。そうでない場合、ファイルは保存されますがルールは変わりません。これは保護策です : そのパスに書き込み権限を持つ貢献者が、ファイルをコミットして検証を無効化することはできません。

よくある落とし穴

Unreal エディタでチェックインがブロックされる

error のルールが失敗しました : 検証ウィンドウが検出結果を一覧表示し、Proceed ボタンは グレーアウトされたままです。アセットを修正するか、(そのルールが自分の状況には厳しすぎる場合は)重要度を warning に下げるか、無効にしてください。

リセットで自分の設定が消える

Reset to Defaults はカスタム設定に対して破壊的です。元に戻せるようにしたい場合は、先に Export を行ってください。

ルールが何もしていないように見える

この順序で3つの確認を :

  1. その人はどこから送信していますか? デスクトップクライアント、コマンドライン、または Rider プラグインからは、ルールは一切評価されません(ルールが実際に適用される場所を参照)。
  2. ルールは有効になっていますか? 新しいリポジトリでは、最初はすべて無効です。
  3. その重要度は正しいですか? チェックインをブロックするのは error だけです。 info は何も中断しません。