Benutzer-Werkzeuge

Webseiten-Werkzeuge


pure-server

Pure Server

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.

Einfache Verwendung

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.

Whitelist Dateiformat

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.

Dateien bzw. Dateigruppen festlegen

  1. Nur der Dateiname. Dieser Modus legt nur eine Datei fest.
    materials\models\props\cs_assault\wirepipe.vtf
  2. Alle Dateien in einem Verzeichnis
    materials\models\props\cs_assault\*.*
  3. Alle Dateien in einem Verzeichnis und deren Dateien in den Unterverzeichnissen (alle Dateien rekursiv).
    materials\models\...

Eigenschaften festlegen

  1. from_steam
    Das erzwingt alles aus dem Steamspeicher zu laden, auch wenn eigene Inhalte auf der Festplatte sind.
  2. allow_from_disk
    Wenn diese Eigenschaft festgelegt ist, laden die Clienten die festgelegten Dateien von Festplatte. Sie müssen auch nicht mit den Inhalt auf dem Server übereinstimmen. So sind die Dateien komplett ungeschützt.
  3. allow_from_disk+check_crc
    Wenn diese Eigenschaft festgelegt ist, laden die Clienten die festgelegten Dateien von Festplatte. Die Inhalte müssen aber mit dem Server übereinstimmten.

Beispiele

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

Standardeigenschaften

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.

pure_server_whitelist.txt

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
}

Stapelung

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

Fortgeschrittene Nutzung

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.

Geschwindigkeit

Es gibt zwei Orte an denen es Auswirkungen auf die Geschwindigkeit gibt.

  1. Wenn der Server die erste Karte nach dem Setzen von „sv_pure“ auf 1 lädt, hat er die Prüfsumme für alle Dateien, welche mit der Eigenschaft „allow_from_disk+check_crc“ gekennzeichnet sind, vorher zu berechnen. Wenn z.B. die „pure_server_whitelist.txt“-Datei folgende Zeile beinhaltet:
    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.

  2. Wenn ein Client eine Karte lädt und der Wert von „sv_pure“ geändert wurde, lädt der Client jeden notwendigen Inhalt neu um den Pure-Server-Regeln zu gehorchen. Wenn also ein Client sehr viele eigene Texturen, Modelle und Geräusche besäße, welche auf dem vorherigen Server benutzerdefiniert waren und sich dann zu einem Pure-Server verbände, hätte der Client alle Texturen, Modelle und Geräusche neu zu laden. Generell ist der Geschwindigkeitsverlust auf dem Clienten vernachlässigbar, weil beim Verbinden zu einem Pure-Server nur ein paar neue Dateien gecheckt werden.

Weitere Anmerkungen

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.

Wissenswertes

  • Die Datei „pure_server_whitelist.txt“ befindet sich standardmäßig im Verzeichnis “./hl2“. Einstellungen dieser Datei wirken sich auf das aktuell laufende Mod aus. Wenn z.B. „Counter-Strike: Source“ läuft, werden die Einstellungen von “./hl2/pure_server_whitelist.txt“ geladen. Wird zusätzlich eine „pure_server_whitelist.txt“ im das Modverzeichnis vom aktuell laufenden Mod (z.B. cstrike) erstellt, wird die Datei in “./hl2“ ignoriert. Das ist von Bedeutung, wenn man bei einem Provider ist, der gleich mehrere Mods auf dem Gameserver installiert hat.
  • Benutzerdefinierte Texturen von Karten werden genauso wenig wie eigene Modelle und Geräusche funktionieren, wenn sie nicht in der Whitelist enthalten sind und das Attribut „allow_from_disk“ oder „allow_from_disk+check_crc“ besitzen.
  • Saysounds usw. werden mit sv_pure 2 nicht funktionieren. Bei sv_pure 1 müssen sie in der Whitelist stehen (z.B. sound\admin_plugin\… allow_from_disk)
  • Linuxnutzern wird sicherlich aufgefallen sein, dass in der Whitelist als Pfad-Trenner der umgekehrte Schrägstrich (\) verwendet wird. Es kann aber genauso gut der normale Schrägstrich als Pfad-Trenner verwendet werden. Es ist sogar eine gemischte Nutzung möglich.
  • Wird die Option „allow_from_disk+check_crc“ Verwendet, werden nach Änderung auf „sv_pure 1“ beim Laden einer Map die Prüfsummen der Dateien erstellt und im Zwischenspeicher abgelegt. Wird der Server neugestartet muss wieder alles neu berechnet werden. Das sollte berücksichtigt werden. Steht „sv_pure 1“ in der autoexec.cfg, werden die Prüfsummen der eingetragenen Dateien vor dem Laden der ersten Map berechnet.
  • Spieler können durch Eingabe von sv_pure in der Konsole herausfinden in welchem Pure-Modus der Server sich befindet. Bei dem Pure-1-Modus werden Eigenschaften (from_steam, allow_from_disk und allow_from_disk+check_crc) von Verzeichnissen und Dateien ausgegeben.

Beispiel für Mani-Admin-Plugin und benutzerdefinierten Spielermodellen

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
}
pure-server.txt · Zuletzt geändert: 2009/11/03 08:54 von Godzilla