RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Looking for someone good with Java that wants to help with a project

Bittiez

Sorceror
I'm working on a program to automatically update files for uo, for example:
Server says its version is 2, client says its version is 1
client downloads files from server and replaces the ones in their uo directory with them

This is going to be for hues and map files so players won't need to download them on their own, just run this program and it will be kept up to date.

I have all of this done, it works very well, however I'm looking for someone to help me make it more "user friendly".

I'm fairly new to Java, and my problem is the script runs through the entire script before updating the gui, I need to find someone who is good enough and willing to make this so the gui is updating while the program is checking with the server and downloading files(Big files right now just make the program appear to be frozen until the download is done, then it updates the gui)

So if your interested in this let me know, I don't really want to release the source code to the public quite yet, I want to get a good looking and running version first, so shoot me a pm or reply here and we will go from there

This is a screenshot of the program so far:
Untitled.png
 

Bittiez

Sorceror
Update:

I resolved the single thread issue, it now seems to run very smoothly, I'm not searching for input on what features people would like to see if they were to use this?

Capabilities:
Updating any files and file types directly to the UO directory

Possible future features:
Let uses choose what files type to allow to download(for user security).

Current features:
Users choose where their uo directory is(Or if they feel unsafe, they can choose any directory and move the files themselves afterwords)
Connects to any website and downloads files just the same as the user would manually.
Setting server version and what files to download couldn't be simpler

Untitled.png

So, please give me input on what else to implement!
 

Safera

Page
I really like this auto-updater idea.
Of course, I'd have to try it out to give you any more ideas into it, but it's a great idea for any server owner without an auto-updater!
 

Bittiez

Sorceror
I've actually made a lot of progress on this, but no one here seemed interested.
As of now, it can launch razor or assistuo after updating is complete, users can choose what file types to allow to be downloaded, now it checks the servers files against the clients files and only downloads files that are not the same. Also trying to add multiple languages, but I have no translators yet haha.
 

Safera

Page
As far as making it easier for the end user...maybe allow this to be the initial "installer" too. Allow it to create a shortcut on the desktop, if selected, that can change icons if there is an update or something?

maybe like the attached pic?

As far as being helpful for the shard owner:

  • Allowing them to allow/disallow certain options, like razor/assistuo, even show up as options for the end user
  • Force update?
  • Allow them to change icons to match their own shard names, if wanted.
That's about all I can think of atm. Do you have demo somewhere to try?
 

Attachments

  • updater.gif
    updater.gif
    3.8 KB · Views: 21
  • updater.gif
    updater.gif
    3.8 KB · Views: 20

Bittiez

Sorceror
The shard can allow/dissallow razor or AUO, and the user has the options of choosing which one to use(if the shard allows). I refuse to put in a force update option, I don't want shard owners to have to much power. The icon thing would not be possible, sadly, at least not for me. If you want to try it, pm me some way to contact you(Skype, Msn, Google Chat, email)
 

Vorspire

Knight
This is very interesting, and a long time coming as there aren't any decent patch tools left out there.
This looks like it has a lot of potential, but I think the reason for the lack of interest is mainly because it's written in Java - you'd be lucky to find someone proficient in both C# and Java around these forums, most people are still just learning or don't have experience, or they're off writing MineCraft mods :p

I have no experience with Java, but if it's like any other OOP language, it can probably be learned in a short time for someone who has background with other OOP languages.

I have a question though, do you use a patching algorithm in order to send only the differences in the data, or do you transfer the entire file?
The reason I ask is because of bandwidth usage, any shard with custom artwork (for example) would have to allow for downloads of 200mb+
 

Vorspire

Knight
Yes, I guessed you'd have used MD5 or SHA-1 checksums to detect changes, I asked if you use an algorithm to transfer patches for files, then apply them when downloaded, or does it download the entire file and replace the original?

A lot of people have bandwidth limitations these days, or can't get professional hosting, if you get 10 players using Kiru to download just the Art files alone it will cost you 2GB+/- worth of bandwidth.
The bandwidth limitation is the main reason why people have moved away from game file customisation, which will also potentially be a reason for people to ignore Kiru, which would be a great shame IMO.

Hat's off though, what you have is solid, works, does the job people expect it to do, other than implementing some sort of patching algorithm to only transfer different data, I can't really suggest anything else to make it any better, so keep up the good work and I hope it becomes popular :)
 

Bittiez

Sorceror
Yeah it just downloads the file and replaces, and to be honest, if they can't get a host with unlimited bandwidth, they aren't looking far enough haha, I pay 15$ for 6 months with unlimited bandwidth and 25gb of storage space with great reliability and speed with namecheap, and I also have a pretty good vps for my server with directspace for 15$ a month, so if they are worried about bandwidth, then they probably don't have a very big player base either =/
 

Vorspire

Knight
The other reason why patching differences is preferred, is because hosting and supplying the game files for separate download is illegal, however, supplying a portion of data (custom art that has no copyright for example) for use in 'patching' files is fine.

If you're doing a community project and you want it to be successful, you should really consider catering for everyone, not just the pro's - especially since the UO community numbers are so low these days. :)
A shard with 20 players is just as important as one with 100 IMO.
A shard that wants to be as legitimate as a free-shard can be, might not want to host and redistribute copyright material.

I haven't heard of NameCheap before, but after dealing with web-hosts and dedicated hosts on and off for over 10 years, I can certainly say 'you get what you pay for', though $2.50/month is about average and still cheaper than GoDaddy.
Be careful with hosts that offer 'unlimited' plans, it's just a buzz-word they throw at you to make it sound enticing, if you ever hit their hidden soft-cap, whether it be 20, 50, 100 or 1000 GB, you will know about it, because they will start charging per GB extra you use over that soft-cap. 'Unlimited' just means it's not capped at a given maximum, and they can determine 'fair usage'. Imagine if you ran a service with 10 TB/month throughput, they might deem that as 'unfair usage' and start charging extra.
My current host costs $6/month and I have 50 GB worth of monthly transfer, I wouldn't trade that up for a cheaper host with 'unlimited' bandwidth offers TBH.

I'm surprised you're using a VPS for your shard, last time I set up on a VPS, RunUO was as useful as a sack of reclaimed bricks, but that's probably down to the fact that the machine catered for 3 other VPS clients and again, $15/month sounds way too cheap to be good.

Of course, I don't know the companies you're using, but you do, so if you're happy then that's what really matters.
 

Bittiez

Sorceror
If you're worried about providing files separate from the game, then you should stay away from non-ea shards because most of them provide copies of uo(Which is *probably* not any less legal than providing game files) and most of them also provide files or zip files containing custom client files. If you can find a shard that doesn't require you to download any custom files, then props to you, but that shard is probably quite boring(I could be wrong). And this is catering to everyone, there is no one that cannot use this unless they choose not to(Actually, this program won't currently work on linux or mac, so I guess I'm not catering to them currently).
If you have a shard with 20 players, I'm assuming you can manage to afford 3$ a month, or run a free web server on the machine your running the shard on.
And I have no idea how to patch differences(This is my third attempt at programming java), if I did know how to patch differences I would gladly do so!
If you can make a better program then feel free to do so, I'm doing this as a convenience because I never liked downloading files from the shard I was playing when they update files.
And I don't see how this program downloading the entire file with the program is such an inconvenience compared to downloading the same files you would have to download manually.

And I will never use GoDaddy again, those ignorant morons supported SOPA.
Namecheap is a great company, maybe they are cheap and I just don't know it, but in my experience of hosting with many different hosts for the past 10 years aswel has told me that a good cheap host can be a just as good as an expensive one, most of them are not but namecheap seems to be an exception(So far) and the VPS I'm using isn't all that great, but its lag free so far(But I wouldn't use them on an official shard myself, I'm using them while we are developing the shard and it works amazing for that).
 

Vorspire

Knight
It's no worry, I'm just against it because it's breaking the law, regardless of whether Mythic care or not and when running a shard of potentially hundreds of players, professional presentation is paramount.

The client executable along with any files distributed with the game, are collectively known as the 'software' and are all bound by the same copyright laws.

If custom files are required in order to make a shard not-'boring', then the quality of the scripted content that is provided is probably due for review.

ConnectUO, if you've heard of it, supported difference patching, the source code is available for reference if you feel like learning difference patching.

Difference patching can be achieved by having shard owners use a patch file generator that is capable of processing two files and producing a file containing the table of differences between the two.
The two files are compared byte-by-byte, the resulting difference file is only as large as required to make the changes.
The shard owner uploads the difference file and then you have your client download and patch the differences.
This is pretty much how every automatic update application works as standard, so it's worth doing.
http://en.wikipedia.org/wiki/Data_differencing

There's no need for the "if you can do it better, then do so" bit, I'm sorry if you took any offence from my previous posts as none was intended, but I do actually have a similar application in the works, but probably won't do any more work on it for a while yet. Since you were asking for feedback, I gave it, you do with it what you wish and good luck with the app :)
 

Bittiez

Sorceror
As I already said, I would love to do differencing, but I don't know how. There is a lot more too it than just comparing the files byte by byte, for example if you make a patch file you would need a copy of the new and old files, well if the player has different files then the old files the server make the patch from, the patch wouldn't work correctly =\ and I told you to make a better one Because I would have loved to just download one already made, but no one ever did so I finally stopped being lazy and made my own, I have no emotional investment if this is successful for other people or not, I'm releasing this for convenience for people that want to use something more player friendly and convenient then "hey download these files and put em in ur uo dir". But anyways if you can figure out how to do differencing when the files to be patched may be something totally different than the files the patch was made from then I would gladly implement it, that would be a lot better than downloading 500mb+ files but I can't think of any way to do that
 

Vorspire

Knight
I haven't went as far as to write a differencing algorithm myself, so in admission I don't fully know how to implement it myself, like you say, you don't know what the source files are going to be, so it would have to be dealt with in a special way.

What we already know is that the game files are in a static format that's predictable, the entries have their own ID's, etc. So it would probably mean we can build difference files without needing the two input files to compare.

For example, lets say art tile for ID 1234 is custom, we'd create a difference file with one instruction for the custom patch application tool, the file would simply contain the ID that is supposed to be modified and the raw data needed to make the modification.
When the patch application tool applies the patch, it will read the instruction from the difference file and apply it to the art file, only editing the data for ID 1234.

At least then, it won't matter what version of files the player has vs what the shard supports, the patch would be universal.
Compensation would have to be made for the clients at and after 7.0.9, when the UOP format was introduced.
The only down-side I see is that it would also have to know the format/structure of the individual game files.

Maybe it's more work than it's worth, I guess full file downloads aren't that bad, I just prefer to comply with standards because I'm anal like that :p
 

Bittiez

Sorceror
Yeah could possibly work, the only problem I see is they still might have parts of the file that are not the same as our file, but then again like you said you would have to do this for each type of file.. Hmm I don't know if it is worth it or not =/
 

Vorspire

Knight
It's probably more work than it's worth now that I think about it, since not even the new OpenUO has full write support for the game files (which would have made it much easier IMO)

Guess this is a case of 'don't fix what isn't broken' and Kiru certainly isn't broken!
 

Bittiez

Sorceror
Well for now I think that will not be a planned feature, but I will keep it in the back of my head for the future, there may be some other easy way of doing it that isn't coming to mind right now =/
 

Arrrr

Wanderer
Well for now I think that will not be a planned feature, but I will keep it in the back of my head for the future, there may be some other easy way of doing it that isn't coming to mind right now =/
How is the state of this project? I have experience with java and i'd like to help you. Maybe even venturing into the differencing part.
 
Top