Update System

  • Update System

    Hallo zusammen!

    Ich möchte für ein aktuelles Projekt Updates ermöglichen. Und zwar soll sich der Spieler von der Website verschiedene Objekte für das Spiel downloaden können.
    Zum Beispiel würde eine Waffe aus mehreren Dateien bestehen (mehrere Grafiken, Sounds und Informationen). Nun sollen sich all diese Dinge in einem einzigen Archiv befinden, das für den Spieler allerdings unzugänglich ist. Das Spiel allein soll sich aus dieser Datei alle Grafiken, Sounds und Infos ziehen.

    Ich grüble seit Tagen, wie das umsetzbar ist, aber ich finde keine Lösung und hoffe, dass ihr mir helfen könnt!

    Danke schonmal!
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Ich würde da ein Archiv in der Art von Rar, Zip, 7z oder ähnlichem vorschlagen. Da kann man komprimieren und mit einem Passwort verschlüsseln. Und das Spiel kann dann die Dateien temporär entpacken, alles einlesen und dann die temporären Dateien löschen.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • Hmm klingt logisch.. Ich werde mich damit mal beschäftigen. Aber ist der Zeitaufwand beim Entpacken nicht ziemlich hoch, wenn man schon mehrere Objekte geladen hat?
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Wenn man die entpackten Files jedes Mal wieder löscht, muss man sie beim Neustart des Spiels wieder laden. Aber das spielt erstmal keine große Rolle. Wichtig ist, dass das System funktioniert. Danke für den Vorschlag!
    Hast du evtl. auch noch eine Lösung, wie ich mit dem GM ein passwortgeschütztes Archiv öffne?

    Edit: Hat sich erledigt. Danke, WA!
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von mauge ()

  • Original von Hakku
    Oha,

    Ist das nicht eine perfekte Verschlüsselungsmethode? Es geht ja darum das der Spieler
    die Dateien weder öffnen noch bearbeiten kann, und das kann er dann nicht mehr. Oder
    gibt es Sicherheitslücken?

    Gurß Hakku,


    Da temporäre Dateien entstehen ließen sich diese mit etwas Aufwand abfangen. Aber da der GM nur aus Dateien Ressourcen laden kann muss man das wohl oder übel in Kauf nehmen.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • Für alle, die es interessiert: Hier ist die Lösung..
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • ah cool nach genau dem hab ich gesucht =)

    edit:

    nur, kann man da auch ne URL zu nem webspace eingeben dass er dann von dort die datei downloadet und dann erst entpackt?

    wenn ja (was warscheinlich is =]) bitte melden!
    Alle Rechtschreibfehler sind Copyright (c) by Agent3004.

    Scheisen sollte man mit der maus können!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Agent3004 ()

  • Ja, das ist möglich, erfordert aber etwas Arbeit. Woher soll allerdings das Spiel "wissen", wie das zugehörige Update heißt? Das würde voraussetzen, dass deine Updates immer den gleichen Namen tragen?!
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • richtig!

    das update soll einfach die schon bestehende datei überschreiben (evt. in dem ich eine extra updater.exe erstell)... aber es sollte erst in einer html oder txt lesen was die neuste version ist und diese versionsnummer dann mit der version vergleichen die auf dem PC is...

    edit:

    und WIE ist es möglich?

    edit2:

    also es soll halt so sein:


    das programm kontrolliert ob in der datei:

    gmtuq.www4free.de/version.html

    die variable "ver" höher ist als "0.7.7" also z.B. "0.7.8" oder "1.2.8" oder irgentwie so..

    wenn nein is alles ok, dann kommt die meldung "Sie haben bereits die neuste version!"

    wenn die variable "var" höher als "0.7.7" ist dann soll das programm die datei "TUQ.exe" downloaden (gmtuq.www4free.de/TUQ.exe) [die gibts noch net die exe] und die alte überschreiben und danach melden "Update erfolgreich beendet."

    wenn es irgenteinen verbingungsfehler gibt sollte angezeigt werden: "Verbingung zum Uploadserver konnte nicht hergestellt werden, bitte versuchen sie es später erneut."


    ps: die URL's sind nur beispiele, die existieren zwar, werden aber in der script vermutlich adnere sein...

    edit: rechtschreibfehler entfernt (ich weiß net obs alle waren aber ich hoffs)

    edit: andere fehler im text entfernt

    edit:

    ps: ich werd euich natürlich in die Credits aufnehmen wenn ihr mir helft =D
    Alle Rechtschreibfehler sind Copyright (c) by Agent3004.

    Scheisen sollte man mit der maus können!

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von Agent3004 ()

  • wär schön wenn du mir davon auszüge geben könntest =D

    edit: es wär noch besser wenn das Programm dann net die exe sondern ne .zip datei [in der die exe drin ist] (oder 'n anderes format, hauptsache komprimiert) downloadet, dann entpackt, die alte exe überschreibt und danach das archiv löscht... also evt. beim beenden dess spiels das archiv löschen, oder nach dem entpacken,...
    Alle Rechtschreibfehler sind Copyright (c) by Agent3004.

    Scheisen sollte man mit der maus können!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Agent3004 ()

  • Mit einer Dll kann man aber definitiv nicht die Exe selber ersetzen, denn es kann kein Programm ersetzt werden, das gerade läuft. D.h. es müsste vor dem Starten des Spieles ein anderes Programm gestartet werden, das auf Updates prüft und bei Bedarf patcht.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • richtig, ich will das dann so machen dass da ne datei "Updater.exe" das mit dem updaten übernimmt...

    und es wär cool wenn das programm ne .zip (oder 'n anderes komprimiertes format) downloadet, das entpackt und dadurch die exe vom spiel überschreibt und dann die .zip wieder löscht...

    ps: ich hab 'n neuen webspace also auch neue links:

    die zip:
    gmtuq.gm.ohost.de/TUQ.zip

    die txt in der die aktuellste versionsnummer steht:
    gmtuq.gm.ohost.de/Ver.txt

    achja und nochwas:

    das spiel selbst erstellt, beim schließen eine datei namens Version.txt in der die versionsnummer steht, damit der updater das - wenn er fertig is - mit der txt aus dem internet vergleichen kann...

    (wenn man die txt verändert, ises egal, die wird bei jedem mal wenn man das spiel spielt erneuert =D.)

    edit:

    kann man da dann evt. auch gesplittete archive downloaden, enpacken und danach wieder löschen? dann könnt ich halt auf meinen webspace gesplittete archive uploaden und es gäb keine größen-probleme (mit der maximalen uload größe pro datei)
    Alle Rechtschreibfehler sind Copyright (c) by Agent3004.

    Scheisen sollte man mit der maus können!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Agent3004 ()

  • Patch Creator is sinnlos da GM die Exen wie WA einmal sagte immer wieder neu verschlüsselt da kommt kein Gewinn von Speicherplatz bei raus.

    Hier ne Vorgehensweise:

    Einfach ne txt vom Server runterladen wo nur die aktuelle Version drinsteht und auslesen.
    Die mit der installierten Vergleichen und wenn höher dann die neuste Version runterladen.
    Die befindet sich in einem 7zip Archiv was man dann runterlädt. Dann noch schnell auf 7zip.org gegangen und den Commandline entpacker geladen, diesen mit dem Spiel dazu geben.
    Dann wenn es ne neue Version gibt per Spielexe ne .bat Datei erstellen die mit dem 7zip Programm das Archiv entpackt (.bat erstellen -> ausführen -> spiel schließen, da sonst exe offen ist und nicht überschrieben werden kann).
    In der .bat steht dann auch noch das nach entpacken das Archiv gelöscht wird.
    Zudem wird danach das Spiel wieder gestartet und dann halt wird die .bat gelöscht. (Nach öffnen des spiels schließt sich die .bat und das spiel löscht die .bat)


    Mag zwar jetzt umständlich klingen aber es ist ne Möglichkeit, wers nicht kapiert soll gefälligst selber mal seine weiche maße die sich Gehirn nennt anstrengen.
    Face in the wind, we're riding the storm
    We'll stay our course whatever will come
    ~~ Stay (Running) Wild ~~
  • so wollt ich das ja auch machen nur weiß ich net wie ich das mach... ps: ich wollts mit ner .zip datei machen und net mit ner .7z datei =D

    edit: so ich hab jetzt endlich nen zuverlässigen webspace:
    (interessiert euch vermutlich net weil die .zip datei mit nem PW versehen is aber egal ich sags trotzdem...)

    die txt mit den version-infos:

    gmtuq.liveline.de/Ver.txt

    die .zip mit dem spiel drin:

    gmtuq.liveline.de/TUQ.zip
    Alle Rechtschreibfehler sind Copyright (c) by Agent3004.

    Scheisen sollte man mit der maus können!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Agent3004 ()

  • Original von Defmaster

    Hier ne Vorgehensweise:

    Einfach ne txt vom Server runterladen wo nur die aktuelle Version drinsteht und auslesen.
    Die mit der installierten Vergleichen und wenn höher dann die neuste Version runterladen.


    So einfach ist das mit dem runterladen im GM nicht.
    Ich hab aber noch ne alternative zu der 39dll:

    Einfach die exe runterladen, im Spielordner speichern oder in die Spieldatei inkludieren.

    games.was-das.de/gm/updater.exe


    dann die Funktion check_update() erstellen:

    GML-Quellcode

    1. // argument0 : Version des Spiels
    2. // argument1 : txt-Versionsinfo-URL
    3. // argument2 : Update-URL
    4. // argument3 : Lokaler Dateiname des Updates
    5. // argument4 : auf Update warten (true/false)
    6. // argument5 : Programm (EXE, BAT, COM, oder PIF), das nach dem Herunterladen ausgeführt werden soll [optional]
    7. execute_program('updater.exe',string(argument0)+' '+string(argument1)+' '+string(argument2)+' '+string(argument3)+' '+string(argument4)+' '+string(argument5),argument4);


    und ein beispiel zum update-check:

    GML-Quellcode

    1. check_update('0.0.7','http://gmtuq.liveline.de/Ver.txt','http://username:password@meineoderdeinedomain.de/updates/aktuell.7z','update.7z',true,'starte_mich.bat');


    der Updater versteht das HTTP, HTTPS und FTP-Protokoll. Bei FTP zb server.de , bei einer Passwortgeschützen HTTP-Anfrage einfach (wie im Beispiel) username:password@ vor die Domain Schreiben.
    Argument1 wird temporär heruntergeladen, ausgelesen und mit Argument0 verglichen. Gibts ein Unterschied, wird Argument2 heruntergeladen und als Argument3 gespeichert. Wenn Argument4 true ist, wartet das Spiel, bis die Datei heruntergeladen ist und eventuell Argument5 zuende ausgeführt ist. Mit dem kannst du dann eine BAT aufrufen, die das Archiv entpackt oder irgendein exe-Programm.

    Vielleicht bringts dir was.
  • Hast du den code Programmiert?

    edit:
    Lauter unwichtiges zeug aus dem post entfernt =D

    edit:

    bei dem befehl "check_update" kommt bei mir 'n fehler

    edit:

    ich habs jetzt so dass ne exe gedownloadet wird... geht das auch?
    Alle Rechtschreibfehler sind Copyright (c) by Agent3004.

    Scheisen sollte man mit der maus können!

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von Agent3004 ()

  • Original von Agent3004
    Hast du den code Programmiert?

    ja, das programm hab ich geschrieben


    bei dem befehl "check_update" kommt bei mir 'n fehler

    also als gml-anfänger solltest du in der lage sein, den skript in dein spiel richtig zu integrieren. sonst lass es doch einfach mit den updates.


    ich habs jetzt so dass ne exe gedownloadet wird... geht das auch?


    ?( diese frage kannst du dir selbst beantworten