Valve Developer Communityに掲載されている『Pure Servers』解説ページの和訳です。
誤っている部分がありましたらご指摘ください。
‘pure server’とは、サーバー上のコンテンツを全てのクライアントに強制的に適用するサーバーのことです。
これにより、クライアントはサーバーでゲームコンテンツを改変することによる不正行為をすることができなくなります。
非pure serversでは、クライアントは改変した素材、サウンド、モデルなどによって、ゲームにおいてアドバンテージを得ることができます。
これにより、壁を透けてみることや、敵のモデルを大きくしたり光らせたり、音を大きくすることによって、ゲーム中にアドバンテージを得ることができます。
サーバー上でpure serverモードを使うためには、sv_pureを1に設定します。
サーバーは、次のマップが読み込まれたときに、クライアントのコンテンツ(マテリアル、モデル、サウンドなど)をサーバー上のコンテンツに置き換えはじめます。
サーバーが適用するコンテンツのリストは、ゲームディレクトリ内にある「pure_server_whitelist.txt」とよばれるファイルで指定されます。
サーバーは、このファイルを編集することで、クライアントによる改変を許可するコンテンツを変更することができます。
例えば、サーバーがこのファイルにおいてクライアントがマテリアルやモデルを改変することを許可し、音声ファイルを改変することを許可するかもしれません。
注意:
クライアントは、pure_server_whitelist.txtを開くことはできないので、サーバーの設定を編集してハックすることはできません。
サーバーは、標準では、サーバーがクライアントに適用しようとするコンテンツ以外を使用しているプレーヤーをキックします。
もし、サーバーがクライアントに警告を出したい、もしくはクライアントがどのような”impure(不純な)”コンテンツを使っているかを見たいだけならば、sv_pure_kick_clientsを0に設定してください。
「pure_server_whitelist.txt」ファイルは、ファイルのグループに属性を指定します。
それぞれの行に、一つのファイルもしくはファイルのグループとそのファイルの属性を指定します。
materials\… from_steam
最初のパートの’materials...’では、ファイルを指定します。
このケースでは、materialsディレクトリ以下の全てのファイルを指定します。
2番目のパートの’from_steam’では、それらのファイルに属性を適用させる指定をします。
このケースでは、それらのファイルがSteamから読み込まれなければならないことを意味します。
もし、クライアントが、自身のmaterialsディレクトリにカスタムコンテンツを持っていたならば、そのコンテンツは使用されません。
そして、コンテンツはSteamキャッシュから代わりに使用されるでしょう。
以下は、ファイルグループを指定する方法です。
1.ファイル名のみ。このモードは、1つのファイルのみ指定します。
Ex: materials\models\props\cs_assault\wirepipe.vtf
2.すべてのファイルが、決まったディレクトリに指定されます。
Ex: materials\models\props\cs_assault\*.*
3. あるディレクトリにある全てのファイルが、ディレクトリ下のディレクトリと同様に指定されます(再帰的に指定される)
‘Ex: materials\models\…’
以下は、属性を指定する3つの方法です。
allow_from_disk+check_crc
この属性が指定された場合、ライアントはディスクから指定されたファイルをロードすることができます。しかし、ディスク上のファイルはサーバー上のファイルとマッチしなくてはなりません。
materials\models\player\… allow_from_disk
sounds\… from_steam
models\MyMod\… allow_from_disk+check_crc
materials\MyMod\Customizable\*.* allow_from_disk
materials\models\props\cs_assault\wirepipe.vtf from_steam
sv_pureが1に設定されているならば、全てのファイルの標準属性はallow_from_diskとなります。
そこで、もし「pure_server_whitelist.txt」ファイルが空だったならば、sv_pure 0の設定と違いは全くありません。
注意: Souce Engineと共にリリースされるデフォルトの「pure_server_whitelist.txt」ファイルは、事実上、設定をしてあります。そこで、もしあなたがデフォルトの「pure_server_whitelist.txt」ファイルを設定しないでも、sv_pure 1がほとんどのコンテンツに適用されるでしょう。
ゲームとともにリリースされる標準の「pure_server_whitelist.txt」ファイルはこれに似ています。
whitelistファイルへの変更を行いたいのならば、このようにに始めることができます。
whitelist
{
//
// 3 modifiers are allowed on file specifications:
//
// from_steam – only check the Steam cache for the file (ignore anything on disk)
// allow_from_disk – allow the file to come from disk
// check_crc – used with allow_from_disk – server does CRC checks on the client’s file to make sure it matches
//
// The default modifier on all files is allow_from_disk. Thus, all files can come from disk and don’t need CRC checks unless
// allow_from_disk can be set at the same time as check_crc. Use the + character in between them to signify this: allow_from_disk+check_crc.//
// Three types of file specifications:
//
// 1. directory\*.* – refers to all files under the directory
// 2. directory\… – refers to all files under the directory and all directories under that (recursively)
// 3. directory\filename – refers to a single file//
// By default, when in pure server mode, most content file types are only allowed to come from Steam.
//
materials\… from_steam
models\… from_steam
sound\… from_steam//
// Allow custom player models. Don’t do CRC checks on them because the clients may all
// have different custom models and the server won’t have them all.
//
models\player\… allow_from_disk
materials\models\player\… allow_from_disk//
// (Uncomment and edit these for mods).
// Allow mod resources to come from disk.
//
// materials\mymod\… allow_from_disk+check_crc
// models\mymod\… allow_from_disk+check_crc
// sound\mymod\… allow_from_disk+check_crc
}
ファイルの属性は、「pure_server_whitelist.txt」ファイルにおいて、トップダウンオーダーで適用されます。
これによって、大きなファイルの設定と、それらのファイルへの部分的に異なる属性を適用することができます。
例えば、models\MyModディレクトリ下のモデル全てを対象外とし、全てのモデルをSteamから適用させたいのならば、「pure_server_whitelist.txt」に下記のように書くことで実現できます。
models\… from_steam
models\MyMod\… allow_from_disk+check_crc
sv_pureを2に設定すると、サーバーは「pure_server_whitelist.txt」を読み込まなくなります。
代わりに、from_steam属性を全てのマテリアル、モデル、サウンドに適用します。
これは、1つのチームが試合用のゲームをホスティングしている時に役立ちます。
ゲームをホスティングしていないチームは、ラウンド開始時にサーバーが使用しているsv_pureモードをコンソールから見ることができます。
もし、サーバーがsv_pure 2を使用しているならば、その時、ゲームヲホスティングしていないチームは、ホスティングしているチームがカスタムコンテンツを使用していないことを知ることができます。
sv_pureがパフォーマンスに影響するところが2つあります。
materials\… allow_from_disk+check_crc
サーバーは初めてマップを読み込んだときに、ゲームの全てのシングルマテリアルのCRCを計算するので、長時間停止するでしょう。
sv_pureを2に設定すると、サーバーはCRC計算の必要がないので、パフォーマンスには影響を与えません。
一般的に、クライアントに与えるパフォーマンスは、pure serverに接続する時にいくつかのファイルをフラッシュするので、取るに足らないものでしょう。
多くの場合、ディスク上で改変したコンテンツを持つクライアントでさえ、pure serverでプレーすることができます。
Source Engineは、クライアントがpure server上でプレーする時、クライアントのディスク上にあるコンテンツにかわって、Steamからのコンテンツを使用するでしょう。
よって、クライアントはpure server上でプレーする前に、ゲームディレクトリの古いコンテンツを削除する必要はありません。
代わりに、サーバーにジョインし、正しいコンテンツが自動的に適用されます。