Register for your free account! | Forgot your password?

Go Back   elitepvpers › Popular Games › Metin2 › Metin2 Private Server
You last visited: Today at 06:54

  • 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   #16

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,765
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

Ich weiss zwar nicht, wie du deine Diff-Dateien aufgebaut hast, aber gehen wir einfach mal davon aus, dass du Position und neuen Wert jeweils Hexadezimal in einer einfachen UTF-8 Textdatei speicherst.

In diesem Fall benötigt die 1.000.000ste Position (F4240 - 5 Zeichen) 5 Byte Speicher, folgend von einem Trennzeichen (1 Byte) und dem neuen Byte Wert zu der Position (bis zu 3 Zeichen / 3 Byte). Hinzu kommt ein Newline, welches 2 Byte Speicher benötigt.
So der Aufbau einer simplen Diff-File.

Zusammengefasst brauchst du für diesen einen geänderten Byte in deiner Diff-File 11 Byte Speicher, welche ja auch durch die Weiten des Internets vom Patchserver auf den Client wandern müssen.

Vorausgesetzt es ändert sich in einem Patch nur ein einziges Byte in der Datei (was natürlich nie der Fall sein wird), muss man natürlich nur 11 Byte statt die ganze Datei übertragen, allerdings werden sich in der Praxis wohl eher 50% aller Bytes ändern (was lange nicht heisst, dass in diesem Patch die Hälfte geändert wurde) oder bei einem verschlüsseltem Client sogar ~99%.
Die Frage, ob das Übertragen einer Diff-File in diesem Fall schneller gehen würde, als die komplette Datei zu übertragen, brauchen wir uns hier sicherlich nicht mehr stellen.


Kannst du uns evtl. mal zeigen, wie du deine Diff-Files aufgebaut hast? Ich habe mich auch schon daran versucht, eine möglichst Speichersparende Diff-File im Byte- statt Textformat zu erstellen, allerdings habe ich bisher keine Möglichkeit gefunden, genug Speicher zu sparen, um ein Diff-Patching sinnvoll zu machen.
rollback is offline  
Thanks
2 Users
Old   #17
 
DasSchwarzeT's Avatar
 
elite*gold: 399
Join Date: Sep 2011
Posts: 5,323
Received Thanks: 3,937
Quote:
Originally Posted by -deleted- View Post
Ich weiss zwar nicht, wie du deine Diff-Dateien aufgebaut hast, aber gehen wir einfach mal davon aus, dass du Position und neuen Wert jeweils Hexadezimal in einer einfachen UTF-8 Textdatei speicherst.

In diesem Fall benötigt die 1.000.000ste Position (F4240 - 5 Zeichen) 5 Byte Speicher, folgend von einem Trennzeichen (1 Byte) und dem neuen Byte Wert zu der Position (bis zu 3 Zeichen / 3 Byte). Hinzu kommt ein Newline, welches 2 Byte Speicher benötigt.
So der Aufbau einer simplen Diff-File.

Zusammengefasst brauchst du für diesen einen geänderten Byte in deiner Diff-File 11 Byte Speicher, welche ja auch durch die Weiten des Internets vom Patchserver auf den Client wandern müssen.

Vorausgesetzt es ändert sich in einem Patch nur ein einziges Byte in der Datei (was natürlich nie der Fall sein wird), muss man natürlich nur 11 Byte statt die ganze Datei übertragen, allerdings werden sich in der Praxis wohl eher 50% aller Bytes ändern (was lange nicht heisst, dass in diesem Patch die Hälfte geändert wurde) oder bei einem verschlüsseltem Client sogar ~99%.
Die Frage, ob das Übertragen einer Diff-File in diesem Fall schneller gehen würde, als die komplette Datei zu übertragen, brauchen wir uns hier sicherlich nicht mehr stellen.


Kannst du uns evtl. mal zeigen, wie du deine Diff-Files aufgebaut hast? Ich habe mich auch schon daran versucht, eine möglichst Speichersparende Diff-File im Byte- statt Textformat zu erstellen, allerdings habe ich bisher keine Möglichkeit gefunden, genug Speicher zu sparen, um ein Diff-Patching sinnvoll zu machen.
Du hast vergessen ihn zu zitieren.
DasSchwarzeT is offline  
Thanks
1 User
Old   #18
 
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
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
Du kannst die Diff Datei genau so verschlüsseln wie jede andere Datei, aufpassen musst du nur, dass der Patcher sie wieder entschlüsseln und somit wieder anwenden kann

Gegen diverse Angriffe muss sich der Client auch schützen. Außerdem, dadurch, dass bei meinem Diff-Patching System die Datei NICHT komplett in den RAM gelesen werden muss, sehe ich auch kein richtiges Problem dabei.

Quote:
Originally Posted by Monsieur -deleted- View Post
Ich weiss zwar nicht, wie du deine Diff-Dateien aufgebaut hast, aber gehen wir einfach mal davon aus, dass du Position und neuen Wert jeweils Hexadezimal in einer einfachen UTF-8 Textdatei speicherst.

In diesem Fall benötigt die 1.000.000ste Position (F4240 - 5 Zeichen) 5 Byte Speicher, folgend von einem Trennzeichen (1 Byte) und dem neuen Byte Wert zu der Position (bis zu 3 Zeichen / 3 Byte). Hinzu kommt ein Newline, welches 2 Byte Speicher benötigt.
So der Aufbau einer simplen Diff-File.

Zusammengefasst brauchst du für diesen einen geänderten Byte in deiner Diff-File 11 Byte Speicher, welche ja auch durch die Weiten des Internets vom Patchserver auf den Client wandern müssen.

Vorausgesetzt es ändert sich in einem Patch nur ein einziges Byte in der Datei (was natürlich nie der Fall sein wird), muss man natürlich nur 11 Byte statt die ganze Datei übertragen, allerdings werden sich in der Praxis wohl eher 50% aller Bytes ändern (was lange nicht heisst, dass in diesem Patch die Hälfte geändert wurde) oder bei einem verschlüsseltem Client sogar ~99%.
Die Frage, ob das Übertragen einer Diff-File in diesem Fall schneller gehen würde, als die komplette Datei zu übertragen, brauchen wir uns hier sicherlich nicht mehr stellen.


Kannst du uns evtl. mal zeigen, wie du deine Diff-Files aufgebaut hast? Ich habe mich auch schon daran versucht, eine möglichst Speichersparende Diff-File im Byte- statt Textformat zu erstellen, allerdings habe ich bisher keine Möglichkeit gefunden, genug Speicher zu sparen, um ein Diff-Patching sinnvoll zu machen.
Mein Diff-Format ist binär.
Ich habe euch mal ein Video gemacht:

Zuerst mache ich einen Diff-Patch mit .DOC Files, danach einen Diff-Patch mit .EPK Files (einmal uncrypted und einmal crypted) und anschließend einen Diff-Patch mit unterschiedlichen Files, wobei das neue File 5.4GB hat (um zu zeigen, dass anders als bsp. bsdiff4 mein System mit Blöcken Funktioniert und man nicht die gesammte Datei im RAM haben muss).

Wie genau mein Diff-System Funktioniert, werde ich euch eventuell erklären wenn ich Lust habe.. (Das Video hat schon genug Zeit gebraucht)

Änderungen:
Zone.epk unbekannte Änderungen, jedoch im Bereich von 1000KB
BGM.epk eine neue Datei hinzugefügt - Yiv hat das persönlich gemacht
*.doc Datei einen neuen Satz hinzugefügt

Ergebnisse:
Zone.epk (uncrypted): DiffPatch Größe: 5000KB = 94,47% Größenersparnis
BGM.epk (uncrypted): DiffPatch Größe: 4KB = 99,95% Größenersparnis
BGM.epk (crypted): DiffPatch Größe: 8970KB = 0% Größenersparnis
*.doc Datei: DiffPatch Größe: 3KB = 86% Größenersparnis
Genauere Angaben wie die Dateigröße der neuen und alten Datei etc. seht ihr sowieso im Video.

Lg. Sora

P.S.: Das Signature File im Video wird nicht gebraucht, es ist nur eine Hilfestellung fürs Programm und sollte evt. ein Hint für diejendigen sein, die sich für die Fuktionsweise interessieren
King Sora is offline  
Old   #19
 
Lord Daemon's Avatar
 
elite*gold: 40
Join Date: Mar 2011
Posts: 835
Received Thanks: 1,911
Quote:
Originally Posted by King Sora View Post
Du kannst die Diff Datei genau so verschlüsseln wie jede andere Datei, aufpassen musst du nur, dass der Patcher sie wieder entschlüsseln und somit wieder anwenden kann

Gegen diverse Angriffe muss sich der Client auch schützen. Außerdem, dadurch, dass bei meinem Diff-Patching System die Datei NICHT komplett in den RAM gelesen werden muss, sehe ich auch kein richtiges Problem dabei.



Mein Diff-Format ist binär.
Ich habe euch mal ein Video gemacht:


Zuerst mache ich einen Diff-Patch mit .DOC Files, danach einen Diff-Patch mit .EPK Files (einmal uncrypted und einmal crypted) und anschließend einen Diff-Patch mit unterschiedlichen Files, wobei das neue File 5.4GB hat (um zu zeigen, dass anders als bsp. bsdiff4 mein System mit Blöcken Funktioniert und man nicht die gesammte Datei im RAM haben muss).

Wie genau mein Diff-System Funktioniert, werde ich euch eventuell erklären wenn ich Lust habe.. (Das Video hat schon genug Zeit gebraucht)

Änderungen:
Zone.epk unbekannte Änderungen, jedoch im Bereich von 1000KB
BGM.epk eine neue Datei hinzugefügt - Yiv hat das persönlich gemacht
*.doc Datei einen neuen Satz hinzugefügt

Ergebnisse:
Zone.epk (uncrypted): DiffPatch Größe: 5000KB = 94,47% Größenersparnis
BGM.epk (uncrypted): DiffPatch Größe: 4KB = 99,95% Größenersparnis
BGM.epk (crypted): DiffPatch Größe: 8970KB = 0% Größenersparnis
*.doc Datei: DiffPatch Größe: 3KB = 86% Größenersparnis
Genauere Angaben wie die Dateigröße der neuen und alten Datei etc. seht ihr sowieso im Video.

Lg. Sora

P.S.: Das Signature File im Video wird nicht gebraucht, es ist nur eine Hilfestellung fürs Programm und sollte evt. ein Hint für diejendigen sein, die sich für die Fuktionsweise interessieren
Schöne Hintergrundmusik > TrackID pls? :3
Lord Daemon is offline  
Old   #20
 
King Sora's Avatar
 
elite*gold: 6394
Join Date: Nov 2008
Posts: 1,225
Received Thanks: 4,766
Quote:
Originally Posted by .Arcusa View Post
Schöne Hintergrundmusik > TrackID pls? :3
1: Final Fantasy X - Brass de Chocobo
()

2: Kingdom Hearts II - Dance To The Death
()

3: Final Fantasy X - Start
()
King Sora is offline  
Thanks
1 User
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 06:56.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

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