Benutzer:Fkrauthan/Automatische Spiel-Updates

Aus Spieleprogrammierer-Wiki
Wechseln zu: Navigation, Suche

Bitte beachte, dass dieser Artikel noch unvollständig ist! Hilf mit, ihn fertigzustellen.
Näheres dazu findest du ggf. auf der Diskussionsseite. Wenn du der Meinung bist, dass der Artikel vollständig ist, kannst du diesen Hinweis entfernen.

Dieser Artikel muss noch verbessert werden! Bitte hilf uns dabei!
Näheres dazu findest du auf der Diskussionsseite. Wenn die dort beschriebenen Mängel behoben sind, kannst du diesen Hinweis entfernen.


In diesem Artikel wird ein simples Updatesystem vorgestellt, mithilfe welchem jeder sein Spiel um eine Autoupdate Funktion erweitern kann.


Inhaltsverzeichnis

Einleitung

Jeder kennt dieses nervige System von früher. Du lädst ein Spiel runter und suchst dann erst mal Stundenlang im Internet um alle Patches zusammen zu bekommen. Da aber vorallem auch Hobby Projekte sich recht schnell und oft ändern wäre es doch gut ein simples Updatesystem zu haben.

Benötigte Libs

Für die Netzwerkkomunikation und den Download der Dateien wird libcurl verwendet. Um MD5 hashes zu erzeugen kann man libmd5-rfc verwenden. Außerdem braucht man für das Tool das die Patches vorbereitet und auch für den Patcher selber eine möglichkeit ein Verzeichnis rekursiv durch zugehen. Dafür wird der Platformunabhängigkeits halber boost-filesystem verwendet. Das ermöglicht das Updatesystem so zu schreiben, dass es sowohl unter Windows, Linux und MacOS funktioniert.

Funktionsweise

Mit Hilfe des Admintools erzeugt man für alle Dateien seines Spiels eine MD5 Hashsumme. Diese wird in einer großen Textdatei gespeichert. Diese Datei mitsamt der komplette "Spielinstallation" muss dann auf einem öffentlich zugänglichen HTTP oder FTP Server liegen (Hier bietet sich auch Dropbox an). Der Client läd dann beim Starten diese Prüfsummendatei herunter. Sollte die sich mit seiner Aktuellen lokalen unterscheiden geht er wie das Admintool vor und erstellt eine Liste mit allen Dateien und ihren Prüfsummen. Sollte er nun in der Liste Dateien haben die nicht in der Serverliste stehen löscht er die (Veraltete dateien) neue Dateien oder Dateien wo sich die Prüfsumme unterscheidet läd er neu vom Server runter.

Das Updaterinterface

Untenstehend findet man die Klassendefinition unseres Updaters welches wir sowohl für den Patcher als auch für das Admintool brauchen.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge