Ein „pure server“ ist ein Server, der allen Clienten auf dem Server erzwingt den gleichen Inhalt zu haben, wie der Server. Clienten (Spieler) welche auf dem Server spielen, können durch Modifizierung des Spieleinhalts nicht cheaten.
Ohne „pure server“ können Clienten/Spieler ihre Texturen, Geräusche, und Modelle verändern um sich einen Vorteil zu verschaffen. Es erlaubt ihnen durch Wände zu sehen, gegnerische Spieler größer und heller darzustellen oder verschiedene Geräusche lauter zu machen.
Um „pure server“ auf einem Server zu nutzen, setzen sie die Konsolenvariable „sv_pure“ auf 1. Nach dem nächsten Kartenwechsel beginnt der Server mit der Wahrung der Übereinstimmung des Inhaltes (materials, models, und sounds) der Clientrechner mit Inhalt auf dem Server.
Die Liste mit dem Inhalt, was der Server erzwingt, ist in einer Datei namens „pure_server_whitelist.txt“ festgelegt, welche im Spiel-Verzeichnis enthalten ist. Auf dem Server kann diese Datei angepasst werden, um die Liste der erzwungenen Inhalte zu ändern. Zum Beispiel kann der Server angeben, dass es den Clienten erlaubt ist Geräusche zu verändern, aber keine Texturen oder Modelle zu verändern. Anmerkung: Clienten öffnen nicht die Datei „pure_server_whitelist.txt“, was sie daran hindert die Servervorgabe durch bearbeiten der Datei zu umgehen.
Standardmäßig kickt der Server Clienten, welche andere Inhalte verwenden als das, was der Server erzwingen möchte. Wenn ein Server den Clienten nur eine Warnung wegen „unsauberen“ Inhalt geben soll, dann kann „sv_pure_kick_clients“ auf 0 gesetzt werden.
Die Datei „pure_server_whitelist.txt“ legt Eigenschaften für Gruppen von Dateien fest. Jede Zeile bestimmt eine Datei oder Gruppe von Dateien und die Eigenschaften dieser Dateien.
Hier ein Beispiel:
materials\... from_steam
Der erste Teil ('materials\…') legt die Dateien fest. In diesem Fall werden alle Dateien im Verzeichnis materials Rekursiv eingeschlossen. Der Zweite Teil ('from_steam') legt die Eigenschaften für die Dateien fest. In diesem Fall heißt es, dass alle Dateien von Steam kommen müssen. Wenn also Clienten eigenen Inhalt in ihrem materials Verzeichnis haben, wird der Inhalt nicht genutzt und anstelle wird der Inhalt von Steam verwendet.
materials\models\props\cs_assault\wirepipe.vtf
materials\models\props\cs_assault\*.*
materials\models\...
materials\models\player\... allow_from_disk sound\... from_steam models\MyMod\... allow_from_disk+check_crc materials\MyMod\Customizable\*.* allow_from_disk materials\models\props\cs_assault\wirepipe.vtf from_steam
Wenn „sv_pure“ auf 1 gesetzt ist, ist für alle Dateien die Standardeigenschaft „allow_from_disk“. Wenn also eine leere „pure_server_whitelist.txt“-Datei vorhanden ist, und „sv_pure“ auf 1 gesetzt ist, hat es keinen Unterschied zu „sv_pure 0“. Anmerkung: Die Standard-„pure_server_whitelist.txt“-Datei wird mit Steam geliefert, welche schon Einstellungen besitzt. Wenn die Datei nicht bearbeitet wurde, wird der meiste Inhalt erzwungen.
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 // // Allow custom spray decals. // materials\temp\... allow_from_disk materials\vgui\logos\... allow_from_disk materials\vgui\logos\ui\... 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 }
Die Eigenschaften für Dateien werden in der „pure_server_whitelist.txt“-Datei von oben nach unten angewandt. Auf diesem Weg kann eine Eigenschaft auf
Die Eigenschaften für Dateien werden in der Reihenfolge von oben nach unten in der „pure_server_whitelist.txt“-Datei angewandt. Auf diesem Weg kann eine Eigenschaft auf eine große Auswahl von Dateien und davon eine Teilmenge dieser Dateien gesetzt werden. Wenn sie z.B. alle Modelle (models) von Steam erzwingen wollen ausgeschlossen Modelle unter (models\MyMod), können sie diese Zeilen ihn ihrer „pure_server_whitelist.txt“-Datei hinzufügen:
models\... from_steam models\MyMod\... allow_from_disk+check_crc
Wenn die Konsolen-Variable „sv_pure“ auf 2 gesetzt ist, lädt der Server nicht die „pure_server_whitelist.txt“-Datei. Anstelle dessen wird die Eigenschaft from_steam auf alle Texturen, Modelle, und Geräusche angewandt. Das kann sehr nützlich für Wettkämpfe sein, bei denen ein Team den Server stellt. Das Team, welches den Server nicht stellt, kann in seiner Konsole beim Rundenstart sehen welchen „sv_pure“-Modus der Server verwendet. Wenn der Server „sv_pure 2“ verwendet, wird das Nicht-Hostende Team wissen, dass das andere Team, welches den Server stellt, keine eigenen Inhalte verwendet.
Es gibt zwei Orte an denen es Auswirkungen auf die Geschwindigkeit gibt.
materials\... allow_from_disk+check_crc
Der Server wird nach der ersten Karte für eine sehr lange Zeit pausieren, weil er die Prüfsummen für jede einzelne Textur-Datei im Spiel berechen muss. „sv_pure“ auf 2 zu setzen wird sich auf die Servergeschwindigkeit nicht auswirken, weil der Server keine Prüfsummen berechnen muss.
In den meisten Fällen, selbst wenn Clienten eigenen Inhalt auf ihrer Festplatte besitzen, ist es ihnen erlaubt auf einem Pure-Server zu spielen. Die Source Engine wird sicherstellen, dass der Inhalt von Steam (anstelle des Inhaltes der Festplatte) verwendet wird, wenn ein Client auf einem Pure-Server spielt. Auf diesem Weg müssen die Clienten nicht durch die Spieleverzeichnisse gehen um Verzeichnisse vom altem Inhalt zu bereinigen, bevor sie auf einem Pure-Server spielen. Stattdessen müssen sie nur auf den Server kommen und der richtige erlaubte Inhalt wird automatisch verwendet.
pure_server_whitelist.txt
whitelist { // // Standardmäßig werden alle Dateien von Steam verwendet // materials\... from_steam models\... from_steam sound\... from_steam // // Erlaubt es eigene serverseitige Spielermodelle zu verwenden. Sie müssen aber mit dem Server übereinstimmen. // Wenn ein Client eigene Modelle und eigene Texturen für Modelle besitzt, kann dieser nicht auf den // Server kommen, bevor er diese löscht. Diese Einstellung verhindert das Verwenden Clientseitig eigener Modelle. // // models\player\... allow_from_disk+check_crc // materials\models\player\... allow_from_disk+check_crc // // Erlaubt es eigene Spielermodelle zu verwenden. // models\player\... allow_from_disk materials\models\player\... allow_from_disk // // Benutzerdefinierte Spraylogos erlauben // materials\temp\... allow_from_disk materials\vgui\logos\... allow_from_disk materials\vgui\logos\ui\... allow_from_disk // // Mapwerbung und Spraylogos von Mani erlauben // materials\decals\custom\... allow_from_disk sound\admin_plugin\... allow_from_disk // // Erlaubt eigne Geräusche aus dem Verzeichnis sound/misc // sound\misc\... allow_from_disk }