Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 02:40

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Patcher Software (Illumina Design)

Discussion on Patcher Software (Illumina Design) within the Metin2 Private Server forum part of the Metin2 category.

Reply
 
Old   #1


 
elite*gold: 1810
Join Date: Jan 2012
Posts: 2,180
Received Thanks: 1,617
Patcher Software (Illumina Design)

Ich dachte mir, es muss mal ein neuer Patcher her - mit dem Design.



Wie findet ihr den Aufbau bisher? Habt ihr ggf. noch Verbesserungsvorschläge oder Wünsche?
Ich verwende ausschließlich Elemente, welche im Obigen verlinkten Release einsehbar sind.

Chronologisch von links oben nach rechts unten besetzte Buttons: Homepage, Forum, Registrieren, Config, Client starten.


Patcher System:
- md5 / file size checkup
- optional: ignore md5 hashes of single files, empty file creator
- control strings are nameable
- internal system settings can be modified (ini)
MaxChri is offline  
Thanks
6 Users
Old 08/20/2016, 17:02   #2

 
EasyFarm's Avatar
 
elite*gold: 281
Join Date: May 2011
Posts: 1,547
Received Thanks: 942
Bockt
EasyFarm is offline  
Thanks
1 User
Old 08/20/2016, 17:13   #3
 
ChaosTimes's Avatar
 
elite*gold: 849
Join Date: Jun 2013
Posts: 213
Received Thanks: 56
Sieht schick aus!
ChaosTimes is offline  
Thanks
1 User
Old 08/21/2016, 14:41   #4
 
jubox123's Avatar
 
elite*gold: 56
Join Date: Sep 2011
Posts: 777
Received Thanks: 365
1. In welcher Sprache ist er geschrieben ?
2. Wird der Source releast ?
3. Was macht den Patcher besonders ?

Quote:
Originally Posted by MaxChri View Post
Wie findet ihr den Aufbau bisher? Habt ihr ggf. noch Verbesserungsvorschläge oder Wünsche?
Ich denke mal, dass jeder sein eigenes Design benutzten möchte mit seinen eigenen Aufbau daher ist das eigentlich egal.
jubox123 is offline  
Thanks
1 User
Old 08/21/2016, 18:19   #5


 
elite*gold: 1810
Join Date: Jan 2012
Posts: 2,180
Received Thanks: 1,617
Quote:
Originally Posted by jubox123 View Post
1. In welcher Sprache ist er geschrieben ?
2. Wird der Source releast ?
3. Was macht den Patcher besonders ?


Ich denke mal, dass jeder sein eigenes Design benutzten möchte mit seinen eigenen Aufbau daher ist das eigentlich egal.
1. Die Basis ist AutoIt, benutze aber eigene Systeme drauf.
2. Wird ein Closed Source mit Freeware Lizenz sein.
3. Die System Features stehen im Groben im Release.

Daher wollte ich gerne wissen, ob der Aufbau so i.O ist.

Sieht inzwischen so aus:
MaxChri is offline  
Old 08/21/2016, 18:38   #6
 
jubox123's Avatar
 
elite*gold: 56
Join Date: Sep 2011
Posts: 777
Received Thanks: 365
Quote:
Originally Posted by MaxChri View Post
1. Die Basis ist AutoIt, benutze aber eigene Systeme drauf.
2. Wird ein Closed Source mit Freeware Lizenz sein.
3. Die System Features stehen im Groben im Release.

Daher wollte ich gerne wissen, ob der Aufbau so i.O ist.

Sieht inzwischen so aus:
1. In AutoIt einen Patcher zu schreiben ist finde ich einfach verschwendete Zeit, dazu gibt es den von musicinstructor.
2. Ohne Source wird man damit dann noch weniger anfangen können.
3. Das sind eigentlich Features die Standard sind oder halt in ein paar Minuten erledigt sind.

Der Aufbau ist aber gar nicht mal so schlecht
jubox123 is offline  
Thanks
1 User
Old 08/21/2016, 22:08   #7


 
elite*gold: 1810
Join Date: Jan 2012
Posts: 2,180
Received Thanks: 1,617
Quote:
Originally Posted by jubox123 View Post
1. In AutoIt einen Patcher zu schreiben ist finde ich einfach verschwendete Zeit, dazu gibt es den von musicinstructor.
2. Ohne Source wird man damit dann noch weniger anfangen können.
3. Das sind eigentlich Features die Standard sind oder halt in ein paar Minuten erledigt sind.

Der Aufbau ist aber gar nicht mal so schlecht
Wieso ist AutoIt Zeitverschwendung xD? Damit kann ich mehr anfangen,
als mit irgendwelchen objektorientieren F# Sprachen, wo man dann die
Buttons aus einer Liste wählt und sie in das GUI zieht (als ob ich retarded wäre).
Wie gesagt, ich benutze selbst entwickelte Control Systeme und eine game engine,
die wahrscheinlich besser ist, als Metin3.

Und ich frage mich, wofür man einen Source für den Patcher braucht.
Alle benötigten Optionen + Extras kann man in einer simplen
Textdatei vornehmen, ohne den Source zu studieren.
MaxChri is offline  
Old 08/22/2016, 00:10   #8
 
King Sora's Avatar
 
elite*gold: 6394
Join Date: Nov 2008
Posts: 1,225
Received Thanks: 4,766
Ahoi!

Ich selbst habe schon mit dem Gedanken gespielt einen Patcher für mein Illumina Design anzufertigen. Was ich auch gemacht habe. Allerdings war ich bisher noch zu blöd um die Serialization der Patchlist hinzubekommen. Ok, zu dumm ist vielleicht nicht ganz richtig... Ich war bisher zu faul dazu.


Dein Patcher sieht ganz cool aus!
Meine Wünsche wären Multipatching und wenn du dich der Aufgabe gewachsen fühlst, dann würde ich mir Diff-Patching auch noch wünschen.

Ich danke dir vielmals, dass du meinen Thread verlinkt hast, sowas ist auch nicht selbstverständlich!!

Lg. Sora

King Sora is offline  
Thanks
7 Users
Old 08/22/2016, 00:49   #9
 
jubox123's Avatar
 
elite*gold: 56
Join Date: Sep 2011
Posts: 777
Received Thanks: 365
Quote:
Originally Posted by MaxChri View Post
Wieso ist AutoIt Zeitverschwendung xD? Damit kann ich mehr anfangen,
als mit irgendwelchen objektorientieren F# Sprachen, wo man dann die
Buttons aus einer Liste wählt und sie in das GUI zieht (als ob ich retarded wäre).
Daran sieht man, dass du überhaupt keine Ahnung hast oder dich damit nicht richtig befasst hast.
Sora hat gezeigt wie es mit C# geht.

Quote:
Originally Posted by King Sora View Post
Ahoi!

Ich selbst habe schon mit dem Gedanken gespielt einen Patcher für mein Illumina Design anzufertigen. Was ich auch gemacht habe. Allerdings war ich bisher noch zu blöd um die Serialization der Patchlist hinzubekommen. Ok, zu dumm ist vielleicht nicht ganz richtig... Ich war bisher zu faul dazu.


Dein Patcher sieht ganz cool aus!
Meine Wünsche wären Multipatching und wenn du dich der Aufgabe gewachsen fühlst, dann würde ich mir Diff-Patching auch noch wünschen.

Ich danke dir vielmals, dass du meinen Thread verlinkt hast, sowas ist auch nicht selbstverständlich!!

Lg. Sora

Respekt, sowas war bestimmt nicht gerade einfach, spiele auch mit dem Gedanken mich ans Diff-Patching ran zu wagen.
Wäre nett wenn du vllt. den Aufbau und den Ablauf beschreibst.

Lg. Raiin
jubox123 is offline  
Thanks
1 User
Old 08/22/2016, 20:53   #10


 
elite*gold: 1810
Join Date: Jan 2012
Posts: 2,180
Received Thanks: 1,617
Quote:
Originally Posted by King Sora View Post
Ahoi!

Ich selbst habe schon mit dem Gedanken gespielt einen Patcher für mein Illumina Design anzufertigen. Was ich auch gemacht habe. Allerdings war ich bisher noch zu blöd um die Serialization der Patchlist hinzubekommen. Ok, zu dumm ist vielleicht nicht ganz richtig... Ich war bisher zu faul dazu.


Dein Patcher sieht ganz cool aus!
Meine Wünsche wären Multipatching und wenn du dich der Aufgabe gewachsen fühlst, dann würde ich mir Diff-Patching auch noch wünschen.

Ich danke dir vielmals, dass du meinen Thread verlinkt hast, sowas ist auch nicht selbstverständlich!!

Lg. Sora

Hey

vielen Dank für deine Vorschläge. Ich werde einige Tests durchführen und analysieren,
inwiefern ich eine Verbesserung der sonst benötigten Patch-Zeit erzielen kann.

Quote:
Originally Posted by jubox123 View Post
Daran sieht man, dass du überhaupt keine Ahnung hast oder dich damit nicht richtig befasst hast.
Sora hat gezeigt wie es mit C# geht.
Mit Visual C# habe ich mich ausreichend befasst. Einige Lücken bzgl.
zur Syntax lassen mich öfters zum Nachlesen verleiten. Aber ansonsten
ganz nette und einfach zu verstehende Sprache.
MaxChri is offline  
Old 08/25/2016, 18:59   #11
 
King Sora's Avatar
 
elite*gold: 6394
Join Date: Nov 2008
Posts: 1,225
Received Thanks: 4,766
Quote:
Originally Posted by jubox123 View Post
[...]
Respekt, sowas war bestimmt nicht gerade einfach, spiele auch mit dem Gedanken mich ans Diff-Patching ran zu wagen.
Wäre nett wenn du vllt. den Aufbau und den Ablauf beschreibst.

Lg. Raiin
Hoi!

Nachdem ich mir ein geeignetes Konzept ausgedacht habe, war die größte Schwierigkeit eigentlich überwunden. Das (richtige) Programmieren war dann halt die Detailarbeit.

Das Prinzip beim Diff-Patching ist wie folgt:

Ich habe ein Objekt, welches das zu aktualisierende File beschreibt, sprich alle Informationen wie Name, Größe, Hash etc. (Ja der Hash muss kein MD5 hash sein, sondern darf auch ein komplett anderer Hash sein, wie bsp. SHA1 o.Ä., die Hashfunktion kann man dank eines geeigneten Interfaces bei meinem Patcher selbst bestimmen oder sogar komplett selbst programmieren. Man muss im Patcher und in der Patchlist nur jeweils die selbe Hashfunktion benutzen, sollte aber klar sein.)

Jedenfalls sieht so das Objekt bzw. in meinem Fall die Struktur des zu aktualisierenden Files aus:


Auffallend hierbei ist das DiffPatch Array. Das DiffPatch Objekt sieht aus wie folgt:


So, in diesem DiffPatch Objekt sind 2. Member sehr wichtig, nämlich "_targetPatchFileHash" und "_sourcePath". Mit dem Member "targetPatchFileHash" spezifiziere ich den Hash der Datei, mit der dieser Diff Patch kompatibel ist. Mit dem Member "_sourcePath" spezifiziere ich den Downloadpfad des DiffPatches. Somit habe ich nun Quasie eine Verkettung: "Die Datei mit Hash XY ist mit Diff XY kompatibel."

Da in der Upadtefile Struktur das nun ein Array ist, kann man beliebig viele Verkettungen angeben, schließlich kann man niemals wissen wie weit die letzte Aktualisierung zurück liegt.

Mit dieser Liste in der Updatefile Struktur, kann der Patcher nun schauen ob es für das aktuelle File im Client einen DiffPatch gibt, falls ja, dann lade den Patch herunter und wende ihn an. Falls nicht, lade die komplette aktualisierte Datei herunter und ersetze die alte mit der neuen Datei.



Hoffentlich habe ich deine Frage damit beantwortet...
Falls du noch etwas wissen möchtest, darfst du gerne fragen!

Lg. Sora

P.S.: Ja, mein Code ist zu 100% dokumentiert... (I hate this!)
King Sora is offline  
Thanks
2 Users
Old 08/25/2016, 20:22   #12
 
Yiv's Avatar
 
elite*gold: 47
Join Date: Feb 2012
Posts: 2,282
Received Thanks: 2,579
Du hast ein Problem bei Dif-Patching: Wenn du eine Datei verschlüsselst und sich ein Byte ändert (uncrypted), ändert sich die komplette Datei, daher ist Dif-Patching hier sinnlos.

MfG
Yiv is offline  
Thanks
1 User
Old 08/26/2016, 14:06   #13


 
elite*gold: 1810
Join Date: Jan 2012
Posts: 2,180
Received Thanks: 1,617
90% sind fertig.

Habe jetzt die Patch Geschwindigkeit durch mehrere Cores (Multi-Patching) erhöht.
Habe noch gedacht, dass ich die Download Geschwindigkeit und verbleibende Zeit irgendwo anzeige. Habt ihr eventuell kreative Ideen, wie und wo ?

Btw. multi language wird wahrscheinlich auch noch drin sein (msgbox etc.).
MaxChri is offline  
Old 08/26/2016, 19:24   #14
 
King Sora's Avatar
 
elite*gold: 6394
Join Date: Nov 2008
Posts: 1,225
Received Thanks: 4,766
Quote:
Originally Posted by Yiv View Post
Du hast ein Problem bei Dif-Patching: Wenn du eine Datei verschlüsselst und sich ein Byte ändert (uncrypted), ändert sich die komplette Datei, daher ist Dif-Patching hier sinnlos.

MfG
Hoihoi

Also ich habe damals Tests mit einem 2012 DE Client und einem 2012 P-Server Client durchgeführt, und jeweils den einen mit dem anderen überpatcht. Da sind wie gesagt diese 90% Zeitersparnis zusammengekommen.

Aber selbst wenn die Sache mit dem Verschlüsseln bei neueren Clients so ist, dank der Eventbasierten Programmierung des Patchers hat man genügend Optionen um den Patchvorgang zu optimieren.

Eine Lösung des Problems wäre, wenn man als Admin einen Diff-Patch der nicht verschlüsselten Datei erstellt. Der Patcher zieht sich dann den Diff-Patch und entschlüsselt die lokale Datei bevor dieser angewandt wird und verschlüsselt sie wieder nachdem er angewandt wurde. Das Funktioniert natürlich nur, wenn man die benötigte Ver und Entschlüsselungsroutine hat. (Egal in welcher Sprache, vorzugsweise C++ da man C# dekompilieren kann. Man kann nämlich in C# alles aufrufen, solange man eine geeignete API hat.)

Lg. Sora
King Sora is offline  
Thanks
1 User
Old 08/26/2016, 20:45   #15
 
Yiv's Avatar
 
elite*gold: 47
Join Date: Feb 2012
Posts: 2,282
Received Thanks: 2,579
Quote:
Originally Posted by King Sora View Post
Hoihoi

Also ich habe damals Tests mit einem 2012 DE Client und einem 2012 P-Server Client durchgeführt, und jeweils den einen mit dem anderen überpatcht. Da sind wie gesagt diese 90% Zeitersparnis zusammengekommen.

Aber selbst wenn die Sache mit dem Verschlüsseln bei neueren Clients so ist, dank der Eventbasierten Programmierung des Patchers hat man genügend Optionen um den Patchvorgang zu optimieren.

Eine Lösung des Problems wäre, wenn man als Admin einen Diff-Patch der nicht verschlüsselten Datei erstellt. Der Patcher zieht sich dann den Diff-Patch und entschlüsselt die lokale Datei bevor dieser angewandt wird und verschlüsselt sie wieder nachdem er angewandt wurde. Das Funktioniert natürlich nur, wenn man die benötigte Ver und Entschlüsselungsroutine hat. (Egal in welcher Sprache, vorzugsweise C++ da man C# dekompilieren kann. Man kann nämlich in C# alles aufrufen, solange man eine geeignete API hat.)

Lg. Sora
Nun, die alte Standard-Verschlüsselung hat aber auch lediglich die Index-File und nicht die Data-File verschlüsselt. Aktuell verbreitete Verschlüsselungen haben keine separate Index-File mehr und verschlüsseln das gesamte Archiv, daher funktioniert das Diff-Patching hier nicht mehr.
Mit der alten Standard-Verschlüsselung hingegen ist dein Diff-Patcher natürlich einwandfrei funktionsfähig :P

Zu deiner alternativen Lösung musst du dann jedoch aufpassen und halte ich auch nicht für besonders ideal, da im Endeffekt die Datei 1. unverschlüsselt auf dem Server liegt (bzw. die Diff-File, kommt nun auf den Patch an, ob man das will) und 2. muss sich dann der Patcher gegen diverse "Angriffe" schützen, damit man damit nicht ganz simpel den Client decrypten kann.

MfG
Yiv is offline  
Reply


Similar Threads Similar Threads
[Release] Patcher Design für DE Patcher
09/14/2020 - Metin2 PServer Designs, Websites & Scripts - 24 Replies
Abend, habe dieses Design, wie dort angekündigt, für den DE-Patcher (Offi-Patcher, etc.) gecoded. Screen vom Patcher (bisschen anders, musste sein) http://i.epvpimg.com/OcNCh.png Was alles im Anhang ist: Die benötigten geslicten Bilder
[Release]Altes Solaria2 Patcher Design & Board Design
10/19/2015 - Metin2 PServer Guides & Strategies - 13 Replies
Hey Leute. Ich release heute noch einbischen Solaria2-Stuff, den ich von Dark bekommen habe. Also es ist ein Patcher-Design, welches gecoded werden müsste & dazu noch das Board-Design, welches bereits fertig ist. Aber wichtig: Das Board-Design muss als Paket hochgeladen/installiert werden. Erstellt wurde es von KingCLou. So ich wünsche euch noch Viel Spaß damit, Downloads im Anhang. Patcherdesign-Screen: http://i.imgur.com/N43rYA2.jpg und Board-Design: http://i.imgur.com/BP3ByTV.png...
[B] Patcher+design, client design, website design+script PSC
11/18/2012 - Metin2 Trading - 0 Replies
*deleted*



All times are GMT +2. The time now is 02:40.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.