eスポーツ、FPS、MOBA、ゲーミングデバイスの最新情報を紹介する個人ニュースサイト

Sourceエンジン Pure Servers解説ページ和訳

SourceEngine
Valve Developer Communityに掲載されている『Pure Servers』解説ページの和訳です。
誤っている部分がありましたらご指摘ください。

Pure Servers (Pure Serversとは)

‘pure server’とは、サーバー上のコンテンツを全てのクライアントに強制的に適用するサーバーのことです。
これにより、クライアントはサーバーでゲームコンテンツを改変することによる不正行為をすることができなくなります。

非pure serversでは、クライアントは改変した素材、サウンド、モデルなどによって、ゲームにおいてアドバンテージを得ることができます。
これにより、壁を透けてみることや、敵のモデルを大きくしたり光らせたり、音を大きくすることによって、ゲーム中にアドバンテージを得ることができます。

Basic Usage(基本的な使い方)

サーバー上でpure serverモードを使うためには、sv_pureを1に設定します。
サーバーは、次のマップが読み込まれたときに、クライアントのコンテンツ(マテリアル、モデル、サウンドなど)をサーバー上のコンテンツに置き換えはじめます。

サーバーが適用するコンテンツのリストは、ゲームディレクトリ内にある「pure_server_whitelist.txt」とよばれるファイルで指定されます。
サーバーは、このファイルを編集することで、クライアントによる改変を許可するコンテンツを変更することができます。

例えば、サーバーがこのファイルにおいてクライアントがマテリアルやモデルを改変することを許可し、音声ファイルを改変することを許可するかもしれません。

注意:
クライアントは、pure_server_whitelist.txtを開くことはできないので、サーバーの設定を編集してハックすることはできません。

サーバーは、標準では、サーバーがクライアントに適用しようとするコンテンツ以外を使用しているプレーヤーをキックします。

もし、サーバーがクライアントに警告を出したい、もしくはクライアントがどのような”impure(不純な)”コンテンツを使っているかを見たいだけならば、sv_pure_kick_clientsを0に設定してください。

Whitelist File Format(ホワイトリスト ファイル フォーマット)

「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つの方法です。

  1. from_steam クライアントがディスク上にカスタムコンテンツを持っていたとしても、Steam cacheからファイルのセットを読み込みます。

  2. allow_from_disk この属性が指定された場合、クライアントはディスクから指定されたファイルをロードすることができます。
    それらは、サーバー上のコンテンツとマッチする必要はありません。
    それらのファイルは、完全に保護されません。

  3. allow_from_disk+check_crc
    この属性が指定された場合、ライアントはディスクから指定されたファイルをロードすることができます。しかし、ディスク上のファイルはサーバー上のファイルとマッチしなくてはなりません。

Examples(例)

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

Default Attributes(標準属性)

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がほとんどのコンテンツに適用されるでしょう。

Default pure_server_whitelist.txt File(標準のpure_server_whitelist.txtファイル)

ゲームとともにリリースされる標準の「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
}

Stacking(積み重ね)

ファイルの属性は、「pure_server_whitelist.txt」ファイルにおいて、トップダウンオーダーで適用されます。
これによって、大きなファイルの設定と、それらのファイルへの部分的に異なる属性を適用することができます。
例えば、models\MyModディレクトリ下のモデル全てを対象外とし、全てのモデルをSteamから適用させたいのならば、「pure_server_whitelist.txt」に下記のように書くことで実現できます。

models\… from_steam
models\MyMod\… allow_from_disk+check_crc

Advanced Usage(高度な使い方)

sv_pureを2に設定すると、サーバーは「pure_server_whitelist.txt」を読み込まなくなります。
代わりに、from_steam属性を全てのマテリアル、モデル、サウンドに適用します。

これは、1つのチームが試合用のゲームをホスティングしている時に役立ちます。
ゲームをホスティングしていないチームは、ラウンド開始時にサーバーが使用しているsv_pureモードをコンソールから見ることができます。
もし、サーバーがsv_pure 2を使用しているならば、その時、ゲームヲホスティングしていないチームは、ホスティングしているチームがカスタムコンテンツを使用していないことを知ることができます。

Performance (パフォーマンス)

sv_pureがパフォーマンスに影響するところが2つあります。

  1. sv_pure 1に設定されているサーバーが最初のマップをロードした時に、allow_from_disk+check_crcによってマークされた全てのファイルのCRCを事前計算しなければなりません。
    一般的に、このファイルの設定は最小にセットされるべきです。
    もし、「pure_server_whitelist.txt」が以下のようになっていた場合。

materials\… allow_from_disk+check_crc

サーバーは初めてマップを読み込んだときに、ゲームの全てのシングルマテリアルのCRCを計算するので、長時間停止するでしょう。

sv_pureを2に設定すると、サーバーはCRC計算の必要がないので、パフォーマンスには影響を与えません。

  1. クライアントがマップを読み込んだ時とsv_pureの値が変更された時に、クライアントはpure serverのルールに従うために必要なすべてのコンテンツを再読み込みします。
    したがって、もしクライアントが前のサーバーでカスタマイズされた多くのマテリアル、モデル、サウンドを持っていたならば、次にpure serverに接続したときに、クライアントは全てのマテリアル、モデル、サウンドを再読み込みしなければならないでしょう。

一般的に、クライアントに与えるパフォーマンスは、pure serverに接続する時にいくつかのファイルをフラッシュするので、取るに足らないものでしょう。

Other Notes(その他の注意)

多くの場合、ディスク上で改変したコンテンツを持つクライアントでさえ、pure serverでプレーすることができます。
Source Engineは、クライアントがpure server上でプレーする時、クライアントのディスク上にあるコンテンツにかわって、Steamからのコンテンツを使用するでしょう。

よって、クライアントはpure server上でプレーする前に、ゲームディレクトリの古いコンテンツを削除する必要はありません。
代わりに、サーバーにジョインし、正しいコンテンツが自動的に適用されます。

情報元

この記事を書いた人
Negitaku.org 運営者(2002年より)。Counter-Strikeシリーズ、Dota 2が大好きです。 じゃがいも、誤字脱字を見つけるのが苦手です。

https://twitter.com/YossyFPS/
SNSでフォローする
YouTube

取材動画、ポッドキャスト等配信中。チャンネル登録をお願いします!


アフター6ジャンクション出演時アーカイブ