Inhaltsverzeichnis

Fastdownload

Die Geschwindigkeit der direkten Downloads bei Gameservern mit der HL1- und HL2-Engine ist begrenzt, damit der Gameserver durch die Downloads nicht beeinträchtigt wird. Da bei der HL2-Engine sehr große Downloads vorkommen, hatte Valve den Fastdownlod eingeführt. Der Download der Customdateien wird auf einen Webserver umgeleitet. Dies wird nur durch eine Konsolen-Variablen (sv_downloadurl) definiert. Seit der HL2-Engine wird auch die Bz2-Kompression unterstützt. Maps lassen sich so um die Hälfte verkleinern. Der Serveradmin kann selber entscheiden, welche Dateien er komprimiert und welche nicht.

Voraussetzungen

Für den Fastdownload wird ein Webserver benötigt. Es wird nur das HTTP-Protokoll unterstützt und kein anderes. Durch den Fastdownload kann ein hohes Trafficaufkommen verursacht werden. In der Regel eignen sich kostenlose Webspaceprovider nicht für den Einsatz das Fastdownloads. Viele limitieren die Dateigröße, verbieten bestimmte Dateitypen und erlauben keine direkten Downloads usw. Die meisten setzen sehr wirkungsvolle Techniken ein um dies zu verhindern und haben dies auch in ihren AGB ausdrücklich verboten. Bei http://www.webhostlist.de/ gibt es eine Übersicht vieler kostenpflichtiger Provider.

Erläuterung

Jegliche Dateien, die heruntergeladen werden, müssen sich auf dem Webspace im gleichen Verzeichnis befinden, wie auf dem Gameserver. Das Wurzelverzeichnis ist das Verzeichnis der Modifikation. Durch die Konsolen-Variablen sv_downloadurl wird die URL zum Webspace angegeben, welches dann als Wurzelverzeichnis für den Download verwendet wird. Bei einem Wurzelverzeichnis, handelt es sich um ein Verzeichis, dass sich logisch in der höchstem Ebene der Verzeichnisstruktur befindet. Es muss sozusagen die Verzeichnis- und Dateistruktur des Gameservers nachgebildet werden. Da immer nur der veränderte Inhalt heruntergeladen wird, brauchen nur diese Dateien auf den Webspace hochgeladen werden. Die anderen Dateien haben die Spieler ja bereits in ihrem Steam-Zwischenspeicher. Durch ein Beispiel lässt sich der Vorgang einfacher verstehen.

Beispiel
In diesen Szenario haben wir einen „Half-Life 2 Deathmatch“-Server mit der Map dm_DamFacility laufen. Die Konsolen-Variablen sv_downloadurl wurde auf http://sourceserver.info/abc gesetzt. Die Map befindet sich wie alle Maps im Verzeichnis maps. Verbindet sich ein Spieler mit dem Server, der diese Map noch nicht hat, leitet der Server den Download automatisch auf http://sourceserver.info/abc/dm_DamFacility.bsp.bz2 um. Befindet sich die komprimierte Version nicht auf dem Webserver, wird danach die nicht komprimierte Datei http://sourceserver.info/abc/dm_DamFacility.bsp angefordert. Befindet sich diese Datei auch nicht auf dem Webspace, kann der Client die Datei nicht herunterladen. In diesem Fall würde könnte der Spieler sich nicht mit dem Server verbinden, da er die Map nicht hat. Da der größte Teil der Webserver in Deutschland auf einem Linux-Server laufen, wird hier zwischen Groß- und Kleinschreibung unterschieden. Es ist darauf zu achten, dass die Schreibweise korrekt ist. Windows unterscheidet Pfade nicht mit Groß- und Kleinschreibung. Das ist der häufigste Fehler der gemacht wird.

Ressourcen-Datei

Eine Vielzahl von Maps bringen benötigen auch noch andere Dateien. Das sind eigene Models, Sounds und Texturen. Diese Dateien werden nur heruntergeladen, wenn diese auch in der .res-Datei definiert sind. Fehlt die Ressourcen-Datei, werden die zusätzlichen Dateien nicht heruntergeladen. Ausgeschlossen sind die Navigationsdateien für Bots und Geiseln. Diese werden immer heruntergeladen, wenn sie existieren.

Kompression

Einzelne Dateien können nach Wunsch auch im bzip2 Format komprimiert werden. Es können nicht mehrere Dateien in einem Archiv zusammengefasst werden. Mit Bzip2 können auch nur einzelne Dateien komprimiert werden. Bei einer komrpimierten Datei wird immer das Suffix .bz2 am Dateinamen angehängt. Aus de_testmap.bsp wird dann de_testmap.bsp.bz2.

Tools

Scripts

Linux

Unter Linux kann man mit einfachen Trick entweder alle oder nur bestimmte Dateitypen mit bzip2 komprimieren. Alle Dateien komprimieren und Originaldateien erhalten:

find /pfad/ -exec bzip2 -9k  '{}' \;

Dateien mit der Endung bsp, mp3 und wav komprimieren und Originaldateien erhalten:

find /pfad/ -name *.bsp -exec bzip2 -9k  '{}' \;
find /pfad/ -name *.mp3 -exec bzip2 -9k  '{}' \;
find /pfad/ -name *.wav -exec bzip2 -9k  '{}' \;

Lässt man bei bzip2 den Parameter k weg, so werden die Originaldateien nach erfolgreicher Kompression gelöscht.

Es gibt noch das Tool pbzip2, welches mehrere CPU-Kerne zur Komprimierung der Dateien verwendet. Der Client kann diese Dateien aber leider nicht vernünftig entpacken. Es ist deswegen von der Verwendung von pbzip2 abzuraten.

Windows

FIXME

Traffichijacking unterbinden

Viele Admins haben Angst davor, dass ihr Fastdownload auch für andere Server durch dritte ausgenutzt wird und dadurch Traffic erzeugt wird, der durch den Mieter des Webspace bezahlt werden muss. Bei allen Angeboten gibt es freie Kontingente an Traffic, die kostenfrei sind. Da auf den meisten Webservern der Apache Webserver verwendet wird, kann durch eine .htaccess-Datei das herunterladen von Dateien auf eine IP im Referer beschränkt werden. Bei dem Fastdownload wird vom Clienten immer der Referer mit der aktuellen IP des Gameservers über den HTTP-Header übergeben.

Beispiel

Bei diesem Beispiel könnte ein Client nur Dateien vom Webserver herunterladen, wenn er sich zum Server mit der IP 192.168.0.1 verbindet. Wichtig ist dabei, dass Punkte mit dem Zeichen \ geschüzt werden, da sie ansonsten falsch verarbeitet würden.

SetEnvIfNoCase Referer hl2://192\.168\.0\.1 allow_download
Order Deny,Allow
Allow from env=allow_download
Deny from all

Fastdownload Auf einer LAN

Der Fastdownload kann auch auf einer LAN verwendet werden, da auch auf einer LAN der Download des Gameservers gedrosselt ist. Wichtig ist hierbei jedoch, dass der Webserver sich auf der LAN befindet. Der Webserver kann lokal auf dem gleichen PC laufen, auf dem sich der Server befindet oder auf einem extra dafür bereitgestellten PC.

Software für Webserver

Es gibt viele kostenfreie Software für Windows. Unter Linux kann mit der Paketverwaltung der jeweiligen Distribution bequem ein Apache2-Webserver, LightHTTPd oder andere eingerichtet werden.

Windows

Paket/Programm Beschreibung
Light HTTPd Ein kleiner aber schneller Webserver
Apache-Webserver Der Apache1- und Apache2-Webserver wird dort angeboten.
XAMPP Fertiges Paket eines Apache2-Webservers mit Zusätzen für Linux und Windows

Fehlerquellen