NetDriveでゲーム開発チームの大規模アセットライブラリをストリーミング

読了目安 6 分 use-case amazon-s3 workflows
Jay
JayTech Writer
ゲームスタジオがNetDriveでS3上のテクスチャやビルドアセットライブラリをドライブレターとしてマウントし、数百ギガバイトのバイナリをローカル同期せずに扱う方法。

中規模スタジオのテクスチャアーティストが、先週のリビジョンと比べて4Kノーマルマップの見え方を確認したいとき、共有アセットライブラリは2つのプロジェクトにまたがって3TBを超えるS3バケット上にある。全体をワークステーションに同期するのは現実的ではなく、ブラウザのコンソールから1ファイルずつダウンロードしていてはエンジンでの作業の流れが途切れてしまう。NetDriveはそのバケットをドライブレターとしてマウントするので、エンジンのアセットブラウザもアーティストのファイルエクスプローラも、それをクラウドからストリーミングされているローカルストレージとして扱える。

NetDrive drive manager showing Google Drive, S3 and pCloud mounted as drive lettersMounted clouds appearing as native drives in Windows File Explorer

アセットライブラリをドライブレターとしてマウント

NetDrive を使えば Google Drive、OneDrive、S3、SFTP、WebDAV などが Windows と macOS でネイティブドライブとして表示されます — 同期も、まるごとダウンロードも不要です。

  • S3上のテクスチャとビルドがローカルドライブとして表示 — 完全同期は不要
  • バックグラウンドのアップロードキューが大容量エクスポートをワークステーションをブロックせずに処理
  • ファイルロックにより、2人のアーティストが同じアセットを同時に上書きするのを防止
WindowsmacOS
NetDriveをダウンロード →

無料トライアル。永久ライセンスとサブスクリプションプランあり。

なぜゲームアセットには完全同期が向かないのか

同期ベースのツールは、フォルダツリー内の何かが使えるようになる前に、そのツリー全体をディスクに取り込まなければならない。これは、1回のセッションで数万ファイルのうちほんの一握りしか触らないようなアセットライブラリには相性が悪い。NetDriveのオンデマンドストリーミングはこの問題を回避する。バケットをマウントすると、ディレクトリ構造全体が即座に表示されるが、個々のファイルは実際に開かれたときにのみ転送される。Windowsエクスプローラでマテリアルフォルダを閲覧するテクスチャアーティストは、数時間かかる初回同期を待つことなく、サムネイル表示に値するすべてのアセットを目にすることができる。

これは、そもそもゲームアセットライブラリを重くしている原因となるファイル — 非圧縮のソーステクスチャ、ハイポリのスカルプトエクスポート、1つで数ギガバイトに達することもあるプラットフォーム別のビルド出力 — において特に重要になる。NetDriveの調整可能なローカルキャッシュ(100GBから1TB)は、バケット全体のローカルコピーにワークステーションのドライブをまるごと割り当てることなく、最近開いたアセットを素早く再度開けるようにする。

NetDrive drive manager showing a mounted cloud storage bucket alongside other connected drives

ビルドとソースアセットを分けて管理する

よくあるパターンとして、2つのバケットを並べてマウントする方法がある — 1つはソースアート(PSD、スカルプトファイル、生の音声)用、もう1つはCIパイプラインが自動ビルドのたびにプッシュするコンパイル済みビルド出力用だ。どちらも独立したドライブレターとして表示されるため、最新のナイトリービルドを取得するQAテスターは、アーティストがソースファイルに使うのと同じディレクトリツリーをかき分ける必要がない。各ドライブは独立して接続されるので、業務時間中にビルド出力ドライブにだけ帯域制限をかけ、ソースライブラリで作業中のアーティストのスループットには影響を与えないようにすることもできる。

Cloud storage bucket mounted as a native drive letter in File Explorer via NetDrive

共有アセットの上書きを防ぐ

2人のアーティストが同じリグやマテリアルファイルを同時に編集してしまうのは、うっかり起きやすく、後始末が面倒な衝突だ。NetDriveのファイルロック — Officeドキュメントだけでなく、あらゆるファイル形式で利用可能 — により、あるアーティストが作業中のファイルをロックすると、他の誰かがそれを開いた際にはロックが解除されるまで読み取り専用として表示される。バイナリのアートアセット用に専用のバージョン管理パイプラインを持たないチームにとって、これだけで最も多い作業消失の原因を防げる。

File lock status shown on files in a shared drive through NetDrive

共有チームドライブのセットアップ

  1. NetDriveのDrive Managerを開き、+ Add Driveをクリックする。
  2. Amazon S3(またはスタジオが既に使っている任意のオブジェクトストレージ)を選択し、アクセスキー、シークレット、バケット名を入力する。
  3. ドライブレターを割り当てる — チーム全体で統一したもの(例えば「texture」を表すT:)にしておくと、エンジンのアセットパスがマシン間で共通のまま使える。
  4. 複数のスタジオメンバーが管理ライセンスの下でアクセスする必要がある場合はチームドライブを有効化する。これにより、各ワークステーションで手作業で設定する代わりに、認証情報とドライブ設定をチームに配布できる。

エクスポートのバックグラウンドアップロード

アーティストが処理済みテクスチャの一括作業を終えたときや、CIからビルドが届いたときには、その内容をバケットに書き戻す処理はワークステーションをブロックすることなくバックグラウンドで行われる。大きなエクスポートはキューに入り、アーティストがエンジンでの作業を続けている間にアップロードされ、進捗はダイアログを開いたままにしておく必要なく、システムトレイに表示される。

Background upload queue showing file transfer progress to a mounted cloud drive

まとめ

アセットライブラリをドライブレターとしてマウントすることで、数テラバイト規模のS3バケットが、エンジンやファイルブラウザをはじめワークステーション上のあらゆるツールが通常のローカルストレージとして扱えるものに変わる — 専用の同期クライアントも、作業を始める前の完全ダウンロード待ちも不要だ。このセットアップが前提とするコラボレーション機能については、Team Drive and Shared Drives in NetDriveOffice File Locking in NetDriveを参照してほしい。

— Jay, NetDrive