Warum es bei uns keine aktualisierten Installationspakete gibt - und: zukünftige Service Packs

Generelles rund um WCS: The Darkest Dawn (Deutsch)

Moderatoren: Kalumet, Joker

Benutzeravatar
Luke
Developer
Developer
Germany
Beiträge: 3067
Registriert: Do 14. Aug 2014, 15:18
Wohnort: Sourcecode
Team-Rang: Entwickler
Fachgebiet: Implementierung
Spezialisierung: Programmierung

Warum es bei uns keine aktualisierten Installationspakete gibt - und: zukünftige Service Packs

Beitrag von Luke » Fr 2. Dez 2016, 23:17

Ich werde seit Release immer mal wieder darauf angesprochen, warum es bei uns keine aktualisierten Installationspakete gibt. Ich habe mich schon vor dem Release bewusst dagegen entschieden und verfahre stattdessen genauso, wie seinerzeit das WCS Team mit dem original Wing Commander Saga. Auch dort gibt es ein Basis-Paket dessen Installation dann mit einem Update aktualisiert werden kann.

Die Hauptgründe für diese Entscheidung
  • Die WCSD Updates sind hinsichtlich Dateigrösse als echte Patches ausgelegt und damit hochgradig effizient. Das heisst ein WCSD Update enthält nur die tatsächliche Differenz zwischen zwei Versionen. Bei Änderungen werden also die geänderten Dateien nicht komplett in das Update gepackt, sondern nur die Änderungen selbst. Damit wird dem Umstand Rechnung getragen, das es auch heute noch Benutzer gibt, die mit einer sehr mageren Internetverbindung auskommen müssen. Nach wie vor gibt es Anschlüsse die weniger als 2 MBit aufweisen, manchmal sogar weniger als 1 MBit. Solche Benutzer habe ich selber im Bekanntenkreis. Diese Benutzer holen sich - sofern möglich - das grosse Installationspaket einmalig bei einem Freund, Kollegen oder Nachbarn und freuen sich dann über möglichst kleine Updates, die sie in akzeptabler Zeit selber herunterladen können.
  • Ohne Patches müssten jedes Mal über 2 GB bewegt werden. Zuerst von uns auf den Webserver, dann von unserem Webserver zu den Mirrors und schlussendlich von den Mirrors zu den Spielern. Das wäre bei kleinen Änderungen - bei denen nur ein paar hundert KB bis ein paar MB anfallen würden - höchst unökonomisch und unnötige Verschwendung von Resourcen. Mit den Patches sind wir dagegen in der Lage, bei kleinen Änderungen auch kleine Updates anbieten zu können. Somit werden sowohl Mirrors als auch Spieler bezüglich Datenverkehr entlastet. Aktuell hat das kleinste Einzel-Update übrigens 80 KB und das grösste gerade mal 5.3 MB. Die komplette Installation von WCSD umfasst aktuell 2.7 GB.
  • Die Erstellung des Basis-Pakets erfolgt manuell und ist Zeitintensiv, was auf das packen der Daten bezogen ist. Die Patch-Erstellung ist dagegen automatisiert und erheblich schneller, weil das Patch-System nur die Dateien bearbeiten muss, die sich tatsächlich auch geändert haben oder neu dazugekommen sind.
[+] Technische Hintergründe zu den Patches

Mit Wikipedia Patches sind bei uns gemeint: Differenz-Updates zwischen 2 spezifischen Versionen. Das Patch-System das ich für WCSD eingerichtet habe, macht keinen Unterschied zwischen simplen Text-Dateien (z.B. Skript oder Readme) und Binär-Dateien (z.B. einem Programm, PDF oder Bild). Wenn ein Skript z.B. 100 KB hat und eine Änderung lediglich 1 KB umfassen würde, dann enthält der Patch tatsächlich nur die Differenz, also dieses 1 KB plus einige extra Bytes für die Informationen wo und wie die Daten beim Zielcomputer geändert und/oder eingefügt werden müssen. Genauso verhält es sich mit jeder anderen Datei. Auch bei einer EXE - bei uns z.B. bei der Engine - stellt das Patch-System fest, wo es Gemeinsamkeiten bei alter und neuer EXE gibt und liefert dann nur die Differenz aus.

Bei den Videos gilt grundsätzlich das gleiche, jedoch ist hier die Patch-Effizienz nicht so ausgeprägt wie bei anderen Dateiformaten. Bei WCS wird das Videoformat Wikipedia Theora verwendet, in Kombination mit dem Container-Format OGG. Dieses Videoformat weisst eine sehr hohe Wikipedia Entropie auf bei gleichzeitig sehr niedriger Wikipedia Redundanz - wie bei allen Videoformaten mit Kompression, egal ob Verlustbehaftet oder Verlustfrei. Auch bei kleinen Änderungen der Untertitel ist immer die gesamte Datei betroffen, da der Video-Stream komplett neu kodiert werden muss. Selbst wenn sich nur ein einziger Buchstabe in einem Untertitel ändert. Je höher die Entropie ist, desto schlechter lassen sich Daten packen. Und je mehr Positionen in einer Datei geändert werden müssen und je weniger Redundanz es gibt, was bei einem Video nahezu die gesamte Datei betrifft, desto grösser werden auch die Patches. Bei einem Video kann ein Patch also fast so gross werden, wie das Video selbst. Mit dem Patch-System können wir aber immerhin gezielt einzelne Videos der Video-Pakete ersetzen. Wenn also nur ein Video korrigiert werden muss, dann enthält das Update auch nur die Änderungen für dieses eine Video. Dadurch muss nicht das gesamte Spielinhalt-Paket (Volition Package) mit mehreren hundert MB neu ausgeliefert werden, in dem das betroffene Video enthalten ist.

Alle erzeugten Patch-Dateien werden samt Patch-DLL zu einem Wikipedia NSIS Installer verpackt und mit Wikipedia LZMA stark komprimiert. Somit erhält man sehr kompakte Updates bei denen nur die Differenz zwischen alter und neuer Version enthalten ist. Schlussendlich sorgt das Patch-System dafür, das die WCSD Installation bei den Spielern nach dem Update exakt der WCSD Referenz-Installation auf dem Entwickler-PC entspricht, inklusive Datum und Uhrzeit der einzelnen Dateien. Darum haben die aktualisierten Dateien nach einem WCSD Update auch nicht das jeweils aktuelle Datum, sondern exakt das Datum der Dateien vom Entwickler-PC.
Nachteile der Patches und zukünftige Service Packs

Patches haben natürlich den Nachteil, das sie immer nur auf eine spezifische Version installiert werden können. Hat man z.B. Version 1.0.4 und will auf 1.0.9 aktualisieren, muss man der Reihe nach 5 Patches installieren. Darum wird es zukünftig zwischendurch Wikipedia Service Packs geben, wenn eine gewisse Anzahl Einzel-Updates veröffentlicht wurde. Die Service Packs haben die gleiche Funktion wie die Basis-Updates; also WCSD direkt auf die neueste Version zu aktualisieren. Im Gegensatz zu den Basis-Updates (bisher Sammel-Updates genannt) kann ein Service Pack aber auf jede beliebige WCSD Version installiert werden, egal ob z.B. 1.0.0 oder 1.0.5 vorhanden ist.

Die nächste Version 1.1.0 ist wieder ein grösseres Update und das ist die ideale Gelegenheit, erstmalig ein Service Pack (SP1) zu veröffentlichen. Nach einem Service Pack kann wiederum mit Einzel-Updates aktualisiert werden, bis zum nächsten Service Pack. Die Basis-Updates wird es ebenfalls weiterhin geben, um direkt eine frische Installation auf den neuesten Stand bringen zu können, unabhängig von den Service Packs.

Bei Veröffentlichung eines neuen Service Packs werden alle zuvor veröffentlichten Einzel-Updates und Basis-Updates obsolet und dementsprechend ins Update-Archiv verschoben. Ein Service Pack stellt also eine neue Update-Basis dar, auf der die nachfolgenden Updates aufbauen. Dementsprechend kann ein Service Pack auch für die Reparatur genutzt werden, z.B. wenn bei Updates etwas schiefgelaufen sein sollte. In dem Fall einfach das letzte SP installieren und dann mit den nachfolgenden Updates aktualisieren.

Die Service Packs werden deutlich grösser sein als Einzel-Updates und auch grösser als Basis-Updates. In unserem Fall hält sich das aber noch in Grenzen; das geplante SP1 wird voraussichtlich knapp 10 MB gross. Je nach zukünftigen Änderungen oder Korrekturen, kann ein Service Pack aber auch mehrere hundert MB gross werden. Das wäre dann der Fall, wenn wir an den Video-Untertiteln Korrekturen vornehmen müssten.
Tools: Setup ZIP Check & UnZip / DBST / Pilot Manager / VPT ...und andere
HowTo's: Joystick: Schub und Ruder (Twist) definieren ...und andere
Projekte: Deutsch-Mod / WCS+

"Det jeht nich', da is' keen Platz!"

Benutzeravatar
Luke
Developer
Developer
Germany
Beiträge: 3067
Registriert: Do 14. Aug 2014, 15:18
Wohnort: Sourcecode
Team-Rang: Entwickler
Fachgebiet: Implementierung
Spezialisierung: Programmierung

Re: Warum es bei uns keine aktualisierten Installationspakete gibt - und: zukünftige Service Packs

Beitrag von Luke » Mi 5. Jul 2017, 14:41

Änderungen bei den Updates

Mit Erscheinen des ersten Service Packs gab es bei uns 3 verschiedene Arten von Updates: Basis-Updates, Einzel-Updates, Service Packs. Dies sorgte vereinzelt für Verwirrung da manche Spieler verunsichert waren, welche Updates sie denn nun in welcher Reihenfolge installieren sollten. Darum wird das jetzt auf 2 Arten beschränkt: die Service Packs und die Einzel-Updates. Die Basis-Updates wird es dagegen nicht mehr geben.

Die Basis-Updates wurden geschaffen, um bei einer neuen Installation von WCSD 1.0.0 direkt auf den neuesten Stand aktualisieren zu können, ohne mehrere Einzel-Updates installieren zu müssen.

Um das Fehlen der Basis-Updates auszugleichen, werden Service Packs jetzt schneller erscheinen, also evtl. schon nach 3-4 Einzel-Updates. Sofern es noch ein weiteres Service Pack geben wird.

Um das Ganze weiter zu vereinfachen, befinden sich bei uns im Download Bereich schon seit längerem alle veralteten Updates im Ordner "Archiv". Updates in diesem Ordner können also getrost ignoriert werden.
Tools: Setup ZIP Check & UnZip / DBST / Pilot Manager / VPT ...und andere
HowTo's: Joystick: Schub und Ruder (Twist) definieren ...und andere
Projekte: Deutsch-Mod / WCS+

"Det jeht nich', da is' keen Platz!"