Initiate Mage
- Joined
- Dec 11, 2014
- Messages
- 4
- Reaction score
- 9
Hello Ragezoners!
I've been seen that some MapleStory servers doesn't have a Patcher to do the updates and they send the whole WZ file to their players download.
Why whole file update isn't a good option for MapleStory
Why do we don't have many patchers?
Features
Structures
Screenshots
I have a old version of this patcher working but with a bit different structure and a bad code (just did for let the concept working)
I'll update this thread when some new will be added.
Doubts? Questions? Suggestions? Leave a comment
Thanks for:
Snow - MapleLib
haha01haha - HaRepacker for testing & MapleLib understanding
This patcher is being developed in C#
I've been seen that some MapleStory servers doesn't have a Patcher to do the updates and they send the whole WZ file to their players download.
Why whole file update isn't a good option for MapleStory
Let's think a bit:
If you wanna change/add a string on String.wz? Just edit with a WZ editor (HaRepacker for example) and send to your players. It's 5 MB or something about that. Not too much, anyone can download without problems.
But if you wanna add a mob or a map? Or a mob AND a map? This becomes a huge update. In v83 for example, the Map.wz is about 620MB and the Mob.wz is about 470MB. Download all of this for just a few monsters/maps?
That's why I'm making a good Patcher for any server that works fine and is easy to use/configure. And will be open source.
If you wanna change/add a string on String.wz? Just edit with a WZ editor (HaRepacker for example) and send to your players. It's 5 MB or something about that. Not too much, anyone can download without problems.
But if you wanna add a mob or a map? Or a mob AND a map? This becomes a huge update. In v83 for example, the Map.wz is about 620MB and the Mob.wz is about 470MB. Download all of this for just a few monsters/maps?
That's why I'm making a good Patcher for any server that works fine and is easy to use/configure. And will be open source.
Why do we don't have many patchers?
Suppose that you want add a lot of Mobs and Maps ou your server.
You can get a existing patcher, generate the update file and put on your host (or wherever it need to be), and your players will receive the update as well, fine, no problems.
After 1 month, you want add more Mobs and Maps. Then, you do the same thing, generate the update file and the players will receive, no problems.
After this update, new players wants to play on your server but something happens!:
They get the Mobs/Maps only from the current update, they don't get the mobs/maps from the others updates because the patcher only does one update file. That's a big problem!
But you have a patcher that store the old updates and concats with the new update, so, all the updates (old and new) are 1 file too, but the new players can receive the updates. Amazing!
But...if you create many updates, with many monsters, maps, items, whatever, this files becomes huge, now, it's a 40MB update file. The players must download 40MB every time they wanna play just for updates check
But it's not problem anymore with this Patcher!
Guys....I SHOW YOU....
THE........ *looking for a cool name*
YEKUN PATCHER!
*WOOOOOOOOOOOOO* *YEEEEEEEEAAAAH* *WOHOOOOOOO* *AMAZING NAME*
*SO CREATIVE* *BEST NAME OF MY LIFE* *POWERFUL CREATIVITY* *FANTASTIC* *NICE NAME, UP* *53X*
Just kidding, It's only MapleStory Patcher.
You can get a existing patcher, generate the update file and put on your host (or wherever it need to be), and your players will receive the update as well, fine, no problems.
After 1 month, you want add more Mobs and Maps. Then, you do the same thing, generate the update file and the players will receive, no problems.
After this update, new players wants to play on your server but something happens!:
They get the Mobs/Maps only from the current update, they don't get the mobs/maps from the others updates because the patcher only does one update file. That's a big problem!
But you have a patcher that store the old updates and concats with the new update, so, all the updates (old and new) are 1 file too, but the new players can receive the updates. Amazing!
But...if you create many updates, with many monsters, maps, items, whatever, this files becomes huge, now, it's a 40MB update file. The players must download 40MB every time they wanna play just for updates check
But it's not problem anymore with this Patcher!
Guys....I SHOW YOU....
THE........ *looking for a cool name*
YEKUN PATCHER!
*WOOOOOOOOOOOOO* *YEEEEEEEEAAAAH* *WOHOOOOOOO* *AMAZING NAME*
*SO CREATIVE* *BEST NAME OF MY LIFE* *POWERFUL CREATIVITY* *FANTASTIC* *NICE NAME, UP* *53X*
Just kidding, It's only MapleStory Patcher.
Features
Well, the ideia for this patcher is to create updates without be large to read and patch, that's why it has:
Intelligent update finder
The patcher doesn't need to analyze the whole update file every time, only when a update is needed.
Intelligent patching system
The patch system is smart enought to know that, if a parent property doesn't exists it must and will be created with the right property type.
Organized update files
The update files are good organized supporting comments and ignoring extra spaces.
Lexer-based
The analyze system have a custom lexer that will identify the updates and possible errors.
Intelligent update finder
The patcher doesn't need to analyze the whole update file every time, only when a update is needed.
Intelligent patching system
The patch system is smart enought to know that, if a parent property doesn't exists it must and will be created with the right property type.
Organized update files
The update files are good organized supporting comments and ignoring extra spaces.
Lexer-based
The analyze system have a custom lexer that will identify the updates and possible errors.
Structures
Let's see the structure of update files
update.yekun
This is the main update file. This file holds the information about all updates
Confusing? Let me explain
@ - token for identifying a update for a file
String.wz - the file name
408A9B95E3EC2CEC846619AC9 - the file hash
FirstStringUpdate.yekun - the file that have information about the update
So, let understand
When the player opens the patcher, it'll check if there's a update available comparing the hash (don't worry about it, I have a trick). If the hash isn't the same, then, it need a update. Then the patcher will read the information about the update (FirstStringUpdate.yekun, for example). Let's see:
FirstStringUpdate.yekun
This is the update file. It holds all the information of update
# - identifier for a update section
Mob.img - the section to be updated
+ - means "add if not exists/change the value"
!,$ = identifiers for property types (! = sub property, $ = string property)
So, the first update is just for changing a mob name.You can see that the file is well organized and supports comments. So you can commend you update file for informations. (why? I don't know, but it's amazing).
If you want to remove a wz property? Like, you want remove the snail mob, for example.Just change the '+' token to '-' (minus)
Don't worry about tokens yet, when the patcher got finished, I'll support and a file with all informations about structures, tokens, tutorials very explained will be available for download.
But you can realize that is easy to add/change/remove properties.
About images, you'll be able to manipulate image properties (like item images) converting the image to base64 string. About the songs, I'm working on a solution for it.
update.yekun
This is the main update file. This file holds the information about all updates
PHP:
@'String.wz' = '408A9B95E3EC2CEC846619AC9':'FirstStringUpdate.yekun'
@'String.wz' = '54605FEDC560DBE63369013FB':'AnotherStringUpdate.yekun'
@'Mob.wz' = '98GHE89EG8935634GL0AEY5LK':'Mob_update0.yekun'
Confusing? Let me explain
@ - token for identifying a update for a file
String.wz - the file name
408A9B95E3EC2CEC846619AC9 - the file hash
FirstStringUpdate.yekun - the file that have information about the update
So, let understand
When the player opens the patcher, it'll check if there's a update available comparing the hash (don't worry about it, I have a trick). If the hash isn't the same, then, it need a update. Then the patcher will read the information about the update (FirstStringUpdate.yekun, for example). Let's see:
FirstStringUpdate.yekun
This is the update file. It holds all the information of update
PHP:
#'Mob.img'
{
+"!100100/$name" = "Amazing Snail"; //change the snail name
}
# - identifier for a update section
Mob.img - the section to be updated
+ - means "add if not exists/change the value"
!,$ = identifiers for property types (! = sub property, $ = string property)
So, the first update is just for changing a mob name.You can see that the file is well organized and supports comments. So you can commend you update file for informations. (why? I don't know, but it's amazing).
If you want to remove a wz property? Like, you want remove the snail mob, for example.Just change the '+' token to '-' (minus)
PHP:
#'Mob.img'
{
-"100100/name"; //beginners gonna hate
//don't need to specity the type when deleting
}
Don't worry about tokens yet, when the patcher got finished, I'll support and a file with all informations about structures, tokens, tutorials very explained will be available for download.
But you can realize that is easy to add/change/remove properties.
About images, you'll be able to manipulate image properties (like item images) converting the image to base64 string. About the songs, I'm working on a solution for it.
Screenshots
Okay, time to see some images. Don't worry about the design, I'm not designer, just googled the maplestory bg and logo and organized. (but I did the button/progressbar/dialog)
First concept:
*all the possible errors will be included on a separated file too to help you*
here's a gif showing how the dialog appears to the user:
First concept:
*all the possible errors will be included on a separated file too to help you*
here's a gif showing how the dialog appears to the user:
I have a old version of this patcher working but with a bit different structure and a bad code (just did for let the concept working)
I'll update this thread when some new will be added.
Doubts? Questions? Suggestions? Leave a comment
Thanks for:
Snow - MapleLib
haha01haha - HaRepacker for testing & MapleLib understanding
This patcher is being developed in C#
Attachments
You must be registered for see attachments list
Last edited: