PERFORCE の特徴とゲーム開発で使う理由
はじめに
バージョン管理システム(VCS)、プログラマーの必需品ですね。プログラマーなら知らない人はほぼいないかと思います。
一昔前なら Subversion(SVN)、今だと git を日々活用されているのではないでしょうか。
PERFORCE ※ もバージョン管理システムの一つです。
SVN や git に比べると認知度は低い印象ですが、海外では広く利用されているという話はよく耳にします。日本でもここ数年徐々に映像業界やゲーム業界で利用している企業が増えてきてるのでは?となんとなく感じています。
この PERFORCE ですが、私も気づけば 10 年近く触っています。
こんなに長く利用している PERFORCE なのですが、いまだに奥が深く試行錯誤することが多いです。
そんな PERFORCE についてゲーム開発に限定した部分もありますが、↓のような感じで数回に分けて記事にしていこうかと思います。 (変わる可能性があります…)
- PERFORCE の特徴と使う理由 👈今回の記事
- PERFORCE で気を付けること
- サーバースペックの決め方
- 複数サーバー構成を利用するシーン
- クライアントの最適化
※ 数年前に Helix Core に改名されたのですが、個人的には PERFORCE のほうがなじみ深く愛着があるので、PERFORCE で書かせてもらいます。
私の PERFORCE 歴
私は 10 年近く、今も PERFORCE に携わっています。
振り返ると PERFORCE を利用するために必要なことは、ほとんどやってきたなぁと感じています。
PERFORCE の全てを熟知しているわけではないですが、ここまでやっている人もマレではないかと勝手に思っています。
- サーバー機器の調達、設備やネットワークなど整備
- PERFORCE ライセンスの調達・管理
- PERFORCE サーバーの構築・運用
- PERFORCE 高速化やディスク容量確保のための構成変更
- PERFORCE トリガー実装
- PERFORCE コマンドラインツール、P4V カスタムツール、SDK を利用したクライアント環境の整備
- ユーザーサポート、トラブル対応
幸運なことに PERFORCE ユーザー数 500 人を超える開発現場で2回もこのような経験をすることができました。
この経験で学んできたことをベースに書いていきます。
あ、ちなみに私はプログラマーです。
インフラやサーバーは専門ではありません!なので間違いもあるかもしれません、悪しからず…
PERFORCE をゲーム開発で使う理由
ゲーム開発で SVN や git ではなく、何故 PERFORCE を利用していたのか?
答えはいたってシンプルで、高速だからです。Wikipedia の長所にも書いてますね。
私の経験した現場は、PS4、PS5 などのコンシューマーゲームの大型タイトルでした。
大型タイトルになるとゲームに組み込むファイルはもちろん、編集用のアセットを含めると、ファイス数は軽く数百万、ファイルサイズも合計 数 10TB を軽く超えてきます。
コンシューマー機の性能が上がれば、おのずと必要なデータもリッチになり数量・サイズも右肩上がりです。
ファイル数やサイズが大きくなると、VCS で管理するモノも増えますよね。
モノが増えるとサーバー ⇔ クライアントでのファイルのやり取りが大変になります。ダウンロードやアップロードにかかる時間が増え、ストレージへのデータの読み書きにかかる負荷も大きくなります。
バージョン管理にかかる時間が増えると、それだけ待ち時間が発生するので機会損失 ※ になりますよね。だからより高速な VCS が必要になり、選択肢の一つとして PERFORCE を選んだわけです。
※ 待ってる時間はもったいないですよね。待ち時間を減らして、もっと面白いものを作る時間に充てることができるなら、それだけゲームのクオリティを上げることができますよね。
PERFORCE の特徴
さてここで PERFORCE の特徴について見てみましょう。
私が長年さわってきた感触に基づいて書いてますので、公式のものとは異なるかもしれません。悪しからず…
〇 高速なファイル取得
PERFOCE の最大のウリです。
PERFORCE は普通に使うだけでも他の VCS より高速 ※ なのですが、これに加えて高速化のための仕組みが充実しています。
※ 数年前に SVN と速度比較をしました。履歴数もファイル数も同じだけ格納したマシンで、ネットワークも他の通信の邪魔の入らない状況で計測したら、なんと 3 倍高速でした。
〇 柔軟で拡張性の高いサーバー構成
PERFOCE が高速である秘密のひとつです。
作業場の設備や PERFORCE を利用する人数など、さまざまな状況にあわせてサーバー構成をカスタマイズすることができます。
〇 サーバー管理型
SVN や git はローカルに落としたファイルの作業状況はクライアントが持ちますが、PERFORCE はサーバーに持ちます。
これも PERFORCE が高速である理由のひとつではあるのですが、操作方法に少々クセ ※ を生む要因かなと思っています。
※ 基本的に PERFORCE はファイルを編集する前に「ファイルを編集するよ」と宣言しなければなりません。SVN や git に慣れている人にとっては、この操作が少々クセがあるものだと思ってます。
ざっとこんな感じでどれも高速化に関係するものばかりで、PERFORCE はユーザーがとことん速度を追及できてしまう柔軟性をもった製品なのです。※
この点が多量かつ大容量のファイル群を扱うゲーム開発や映像制作と相性が良く、選ばれる理由になっているのだと考えています。
※ 他にも PERFORCE を中核としたコラボレーション機能があったりするのですが、個人的には PERFORCE の最大のウリは高速であることと思ってますので、今回は外しています。
まとめ
さて今回は PERFORCE の特徴と、何故ゲーム開発で利用するのかにふれました。
繰り返しになりますが、PERFORCE は高速です。
ユーザーが高速化を追求する仕組みも充実し、多量かつ大容量のファイルを扱うゲーム開発のようなシーンとは相性が良いから利用されるのです。
ですが、PERFORCE を使う上で気をつけなければならないこともたくさんあります。
高速化を追求できる機能が充実している反面、機能が充実しているが故に使い方に工夫が必要です。
また一歩間違うと逆に遅くなったり、下手すると障害に発展するようなことにもなってきます。
次回はこのあたりを記事にできればと思います。
投稿者プロフィール
最新の投稿
- お知らせ2022.08.29slavage 更新
- お知らせ2022.08.25Slack 履歴サルベージツール slavage 公開
- お知らせ2022.08.20事務ちょっと便利ツール集 VenryGM 公開
- 技術ブログ2022.06.23PERFORCE で気を付けること(運用編)