рдкрд╣рд▓рд╛ рдЧреЗрдо рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдПрдХ рдРрд╕реЗ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЛрдЪрд╛ рднреА рдирд╣реАрдВ рдерд╛ред рдпрд╣ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЪ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╣реИред рд╣рдорд╛рд░реЗ рдкреИрдЪрд░ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреА рд╣реИ:
- рдПрдХрддрд╛ рдЦреЗрд▓ рдХрд╛ рд╕рдорд░реНрдерди
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд┐рддреНрд░рддрд╛
- рдЧреЗрдорд┐рдВрдЧ рд╕рдорд╛рдЪрд╛рд░ рдкреНрд░рджрд░реНрд╢рди
- рд╣рдорд╛рд░реЗ рд╕реНрдЯреВрдбрд┐рдпреЛ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рд╕рднреА рдЦреЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдореБрдЦреА рдкреНрд░рддрд┐рднрд╛
- рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓рдЪреАрд▓рд╛рдкрди
- рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг: рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рдкреИрдЪ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреИрдЪрд░ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВред
рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдПрдХ рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдпрд╛ рддреЛ рдореИрдВ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рднрдЯрдХ рдЧрдпрд╛, рдпрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреА рдереА рд╡рд╣ рдереА рдпреВрдирд┐рдЯреА рдПрд╕реЗрдЯ рд╕реНрдЯреЛрд░ рд╕реЗ
рдПрдо 2 рдПрдЪ рдкреИрдЪрд░ ред
рд╣рдордиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдХрдИ рджрд┐рди рдмрд┐рддрд╛рдП, рдФрд░ рд▓рдЧрднрдЧ рдПрдХ рдорд╣реАрдиреЗ (рдкрд╣рд▓реА рдмрд╛рд░ рдФрд░ рдЖрдЦрд┐рд░реА рдЕрд╕рдлрд▓рддрд╛ рддрдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдПрдХ рдмрдврд╝рд┐рдпрд╛ рджрд┐рди, рдкреИрдЪ рдиреЗ рдПрдХ рдкреИрдЪ рдмрдирд╛рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред рдореБрдХрджрдореЗ рдкрд░ рдХрдИ рдШрдВрдЯреЗ рдмрд┐рддрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдкрддрд╛ рдЪрд▓рд╛ред
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕
рдкреИрдЪ рдиреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
bsdiff & bspatch рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП bsdiff рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
рдЕрдзрд┐рдХрддрдо (17 * n, 9 * n + m) + O (1) рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реБрдЖ рдХрд┐ рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдорд╢реАрди рдкрд░ рдХреЗрд╡рд▓ 4 рдЬреАрдмреА рд░реИрдо рдереЗ, рдФрд░ рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 600 рдПрдордмреА рд╕реЗ рдЕрдзрд┐рдХ рдереАред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, bsdiff рдиреЗ рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ (рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдкреИрдЪ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓рд╛ рд╕рдордп 30+ рдорд┐рдирдЯ рдХрд╛ рдерд╛)ред
рдлрд┐рд░ рдореИрдВрдиреЗ рдЕрднреА рднреА рдмрд╛рдЗрдХ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо
рдЕрдм рдмрдбрд╝реА рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ Google рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдерд╛ред рджреЛ рдпреЛрдЧреНрдп рдЙрдореНрдореАрджрд╡рд╛рд░ рдереЗред рдпрд╣
rsync рд╣реИ рдФрд░ bsdiff рд╕реЗ рдкреНрд░рддреНрдпрдп рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИред
рдЪреВрдВрдХрд┐ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ, рдореИрдВ рдкрд╣рд▓реЗ рдкрд░ рдмрд╕ рдЧрдпрд╛ред
рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред рд╣рдо рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдорд╛рди рдЖрдХрд╛рд░ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рддреЛрдбрд╝рддреЗ рд╣реИрдВ (рдмрд╛рдж рдореЗрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реЗ рдЪрдВрдХреНрд╕)ред
рдкреНрд░рддреНрдпреЗрдХ рдЪрдВрдХ рдХреЗ рд▓рд┐рдП, рд╣рдо рджреЛ рд╣реИрд╢ рдХреЛ рдорд╛рдирддреЗ рд╣реИрдВ: рдордЬрдмреВрдд рдФрд░ рдХрдордЬреЛрд░ред рдордЬрдмреВрдд рд╣реИрд╢ рдирд┐рдпрдорд┐рдд MD5 рд╣реИред рдХрдордЬреЛрд░ рд╣реИрд╢ рдПрдХ
рд░рд┐рдВрдЧ рд╣реИрд╢ рд╣реИ ред рдЗрд╕рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ n рд╕реЗ n + S-1 рдХреЗ рдЖрд░ рд╣реИрд╢ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИ, рддреЛ n + 1 рд╕реЗ n + S рддрдХ рдХреЗ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдХреНрд░рдо рдХреА рдЧрдгрдирд╛ R, рдмрд╛рдЗрдЯ n рдФрд░ рдмрд╛рдЗрдЯ n + S рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗ рдмрд┐рдирд╛ред рдЗрд╕ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдЕрдВрджрд░ред
рдЙрд╕реА рддрд░рд╣, рдЖрдкрдХреЛ рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ, рд╣рдореЗрдВ рд╣реИрд╢рдб рдЪрдВрдХреНрд╕ рдХреЗ рджреЛ рдЕрдиреБрдХреНрд░рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдЪрд╛рд╣рд┐рдПред
рдЕрдЧрд▓рд╛, рд╣рдо рд╕рдорд╛рди рдЪрдВрдХреНрд╕ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХрдордЬреЛрд░ рд╣реИрд╢ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣реИрд╢ рдореИрдЪ, рддреЛ рдордЬрдмреВрдд рд╣реИрд╢ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдХреБрдВрдЬреА рджреЛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ - рддреЗрдЬ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ред рдлрд╛рд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд┐рд▓реНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдерд╛рдпреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдЦрдВрдбреВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдкреИрдЪ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╣реИрдВред
рдкреИрдЪ рдмрдирд╛рдПрдБ
рд╣рдорд╛рд░реЗ рдЦреЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИ рдЬрд╣рд╛рдВ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдорддреМрд░ рдкрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ: 1, 2, 3, рдЖрджрд┐ред

рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рдлрд╛рдЗрд▓реЗрдВ рдмрджрд▓ рдЧрдИ рд╣реИрдВ, рд╣рдЯрд╛ рджреА рдЧрдИ рд╣реИрдВ, рдЬреЛрдбрд╝ рджреА рдЧрдИ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ
string[] files1 = Directory.GetFiles(folder1, "*.*", SearchOption.AllDirectories); string[] files2 = Directory.GetFiles(folder2, "*.*", SearchOption.AllDirectories);
рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд░рдЦреЗрдВред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИ, рддреЛ md5 рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрджрд┐ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдирдП рдФрд░ рдкреБрд░рд╛рдиреЗ md5 рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдкреИрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рд╣реИрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдпрд╣ рдбреЗрдЯрд╛
SharpZipLib рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдзрд┐рдХрддрдо рд╕рдВрдкреАрдбрд╝рди рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдЕрдВрдд рдореЗрдВ, рд╣рдо рдЗрд╕рдореЗрдВ рдлрд╝рд╛рдЗрд▓
рдкреИрдЪ_рдЗрдиреНрдлреЛ.рдиреЗрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬреЛ
рдЪрдВрдХ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдЙрдирдХреЗ рд╣реИрд╢ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреАред
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
1024 R star-draft_Data\level1 M settings.xml 5e54da0d0c1dfca2bbc623979b7bceef 7a64fb8bc102b9d6bc0862ca63cdbb8d A star-draft_Data\level0 a3d14f5ed8d05164d59025cc910226ea M star-draft_Data\resources.assets 02466b9218cbf482d562570d8c0c90c8 20f1f88b5036a168bdd26fe7f4f9dadd M patcher\version.txt c81e728d9d4c2f636f067f89cc14862c c4ca4238a0b923820dcc509a6f75849b
*
рдЖрд░ - рд╣рдЯрд╛рдпрд╛, рдП - рдЬреЛрдбрд╝рд╛, рдПрдо - рд╕рдВрд╢реЛрдзрд┐рддрдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╛ рддреЛ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкреИрдЪ рд╣реИред
рдЕрдм рдЗрд╕ рдкреИрдЪ рдХреЛ рдХрд┐рд╕реА рднреА рд╡реЗрдм рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдбреНрд░реЙрдкрдмреЙрдХреНрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред
рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓
ред \ Patcher \ version.txt рдЧреЗрдо рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЧреЗрдо рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдкреИрдЪ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдкреИрдЪ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдкреИрдЪ рдмрд┐рд▓реНрдбрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЧрд▓рдд рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдлрд╝реЛрд▓реНрдбрд░ рдирд╛рдо рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред
patcher
рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ
рдЦреЗрд▓ рдФрд░ рдкреНрд░рдХрд╛рд╢рдХ рдХреЗ рд▓реЛрдЧреЛ рдХреЛ рдмрд╛рдИрдВ рдУрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рджрд╛рдИрдВ рдУрд░ рд╕рдорд╛рдЪрд╛рд░
рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░,
рдкреИрдЪрд░ рдкрде рдХреЗ рд╕рд╛рде рд╕реЗрдЯрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рддрд╛ рд╣реИ
ред/patcher/configuration.xml рдФрд░ рд╡реИрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рдлрд╝рд╛рдЗрд▓:
<?xml version="1.0"?> <root> <game_name>TestGame</game_name> <game_exe>Test.exe</game_exe> <game_url>http://coolgame.com</game_url> <check_version_url>http://coolgame.com/version.txt</check_version_url> <patches_directory>http://coolgame.com/patches/</patches_directory> <news_url>http://coolgame.com/news_for_patcher.html</news_url> <publisher_url>http://coolpublisher.com</publisher_url> </root>
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ,
рдкреИрдЪрд░ ./patcher/version.txt рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЗрд╕рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдЧрд╛ред рдлрд┐рд░ рд╡рд╣ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреЗрдо рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрджреНрдпрддрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ:
for (int i = current_version; i < last_version; i++) { DownloadPatch(URL + string.Format("{0}_{1}", i, i+1)); ApplyDownloadedPatch(); }
рдкреИрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдкреИрдЪ_рдЗрдирдлреЛ.рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЪрдХреНрд░ рдореЗрдВ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВред
рдЕрдЧрд░ рдлрд╛рдЗрд▓ рдбрд┐рд▓реАрдЯ рдХрд░рдиреА рд╣реИ, рддреЛ рдЙрд╕реЗ рдбрд┐рд▓реАрдЯ рдХрд░ рджреЗрдВред рдпрджрд┐ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдЕрдирдкреИрдХ рдХрд░реЗрдВред рдпрджрд┐ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдкреИрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдпрджрд┐ рд╣реИрд╢ рдореИрдЪ (рддрд╛рдХрд┐ рдЗрд╕реЗ рдЦрд░рд╛рдм рди рдХрд░реЗрдВ)ред
рдЕрдВрдд рдореЗрдВ, рдирдП md5 рд╣реИрд╢ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред
рдореИрдВрдиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рдкреИрдЪрд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдкрд╡рд╛рдж рдореЗрдВ рдПрдХ рдкрд╛рда рд╡рд┐рд╡рд░рдг рдФрд░ рд╕рдорд╛рдзрд╛рди рд╡рд┐рдХрд▓реНрдк рдереЗред
рд╕рд╛рде рд╣реА, .NET рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреИрдЪ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░реВрд╕реА рдФрд░ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдВрдХрдбрд╝реЗ
рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рддреБрд░рдВрдд рд╣рдорд╛рд░реЗ рдЧреЗрдо рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ Unity3D рдкрд░ рдбрд╛рд▓ рджрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ bsdiff рдиреЗ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред
рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рдВрд╕реНрдХрд░рдг 1 -
1669 рдПрдордмреАрдХреНрд▓рд╛рдЗрдВрдЯ рд╕рдВрд╕реНрдХрд░рдг 2 -
1692 рдПрдордмреА (рд╣рдордиреЗ рдмрдирд╛рд╡рдЯ рдХреЗ рдПрдХ рдкреИрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбрд▓ рдЬреЛрдбрд╝рд╛)1 рдХреЗ рдЪрдВрдХ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдкреИрдЪ рдХрд╛ рдЖрдХрд╛рд░ рдФрд░ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЧреНрд░рд╣ рд╕рдВрдкреАрдбрд╝рди
11.8 рдПрдордмреА рд╣реИ , рдЬреЛ рдХрд┐ bsdiff рдХреЗ рд╕рд╛рде рдкреИрдЪ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рдорд╛рди рд╣реИ
рдореЗрд░реА рдорд╢реАрди рдкрд░ рдПрдХ рдкреИрдЪ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдордп рдПрдХ рдорд┐рдирдЯ рд╕реЗ рднреА рдХрдо рд╣реИ, рдФрд░ рдЖрд╡реЗрджрди рдореЗрдВ рд▓рдЧрднрдЧ 10 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред
рд╕реНрд░реЛрдд:
https://github.com/Agasper/GamePatcher