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!

Working on UO Auto Patcher

Things to look forward to in BETA 2

(NOTE: BETA 1 CLIENT will NOT work with BETA 2 products, In future client will be backwards compatible)

CHANGES
-Patching Alogirthm improvements to better recognize binary inserts/removes
-Small patch protocol changes so that future versions will be backwards compatable with older clients
-Players will beable to optionally ALWAYS connect to specific server on the uo patch client with out always getting prompted to configure or select a server (a config shortcut will be added to start menu during install, enabling users to get back to configuration)
-Patch server will now contain the setting for whether the client should be decrypted (the setting the patch server provides will override whatever is set on the client)
-Whenever "Play Third Party Servers" is clicked on the UOPatch client a list of registered servers will be displayed instead of automatically connecting to a specific patch server


NEW FEATURES
-Server Admins will beable to use links on their web pages to have players easily connect to their servers by using uopatch:// with one click (ex. <a href=uopatch://patch.uoserver.com>)
-Server Admins will beable to register their servers at www.uopatch.com or using patch builder to appear in a list displayed on the uopatch client (Similar to UOG) (even if you dont have a patch server you can still register your shard)
-The server list will be broken out into different networks such as rp, pvp and then sub networked by player defined game networks (for example if you run 2 shards or more you can group them together under one network)
-Admins will beable to register 2 patch servers per registered game server (when two are defined players are randomly connected to one of the two)
-Through donations admins will be able advertise their shard through a timed HTML banner at the top of the patch client
-Server Admins will beable to use a shared password to protect their servers so that only users with the shared password can connect, this allows people who want to register their shards but also keep them private

Please leave feedback about new features, and any other features you may want to see

Thank You

Chris The Avatar
 
L

Loverboy

Guest
Great work it looks tops!!!

I have a few question/suggestions

1. do clients need UOrice installed

2 Is there a way for a remote admin to initiate the autopatcher eg thruogh the runUO server.(I am currently world biulding and can only freeze the statics when the shard owner is online as well)

3 Does the autopatcher make the first patch from the files in the Datapath.cs and can we specify the changed files eg art.muls may be the same as the client.

4 Can there be scheduled patching so once a week the patches are compared and updated.

5 Does the client replace the EA files when runing UOgateway (users will be pissed if thay go to an osi clone and have our custom map)

and

6 What is the load on the bandwidth, if there are 10 ppl downloading patches and 10 ppl playing will the ppl playing experince lag.

I am very interested in this.


NB console based compression rar has always been free and can do the same as winrar though switches, the windows inerface is not.

cheers loverboy :)
 
Loverboy said:
Great work it looks tops!!!

I have a few question/suggestions

1. do clients need UOrice installed

2 Is there a way for a remote admin to initiate the autopatcher eg thruogh the runUO server.(I am currently world biulding and can only freeze the statics when the shard owner is online as well)

3 Does the autopatcher make the first patch from the files in the Datapath.cs and can we specify the changed files eg art.muls may be the same as the client.

4 Can there be scheduled patching so once a week the patches are compared and updated.

5 Does the client replace the EA files when runing UOgateway (users will be pissed if thay go to an osi clone and have our custom map)

and

6 What is the load on the bandwidth, if there are 10 ppl downloading patches and 10 ppl playing will the ppl playing experince lag.

I am very interested in this.


NB console based compression rar has always been free and can do the same as winrar though switches, the windows inerface is not.

cheers loverboy :)

1. UORice is packaged with the patch client... So nothing else needs to be installed other than the patch client.

2. I dont think you could use the autopatcher to do this... It needs the files after they were changed and before they were changed to create a patch file. A patch file is like the difference between the two files.

3. You specify the path of where the new files and old files during the patch building process (see patch builder documentation). The patch builder knows what changes have been made if any to the files, there is no need to specify... You need an original version of the files your patching and a new version of the files to compare.


4. I suppose that would be fairly easy to do I can try to work that into this next version.

5. Review the client documentation for details.... The client backs up the original UO files during patching and whenever the user launches UO Gateway via UOPatch client the original UO files are restored (by just starting uo like playing ea).

6. I cant answer this question for you, you will just need to do some testing, this depends on your connection speed, and how big your patches are.

Thanks for the tip on RAR

Thanks for the questions

I hope this helps


Chris The Avatar
 

Phantom

Knight
Chris

Just a suggestion you really should find a way to launch the client like Razor and UO Gateway does.

Instead of making a "patched" client file. It would how can I put this, allow the majority of the community to accept it, instead of the minority :)

If you do that, I myself would suggest it as an alternative patching method to UO Gateway.
 
Phantom said:
Chris

Just a suggestion you really should find a way to launch the client like Razor and UO Gateway does.

Instead of making a "patched" client file. It would how can I put this, allow the majority of the community to accept it, instead of the minority :)

If you do that, I myself would suggest it as an alternative patching method to UO Gateway.

Honestly Phantom thats a great idea but I do not understand the client encryption well enough to write something to decrypt it... Most players out there dont even realize what happens behind the scene, all they care about is that it does patch the client for both two and 3d, it acctually creating seperate files is not really that big of a deal. The only thing I dont like about UORice is it doesnt get rid of the annoying intro on newer clients.

If there is a library out their that can handle client decryption or someone can provide some info on how to decrypt client encryption please point me to it so I can integrate it.


Thanks

Chris The Avatar
 

Ravatar

Knight
ChrisTheAvatar said:
Honestly Phantom thats a great idea but I do not understand the client encryption well enough to write something to decrypt it... Most players out there dont even realize what happens behind the scene, all they care about is that it does patch the client for both two and 3d, it acctually creating seperate files is not really that big of a deal. The only thing I dont like about UORice is it doesnt get rid of the annoying intro on newer clients.

If there is a library out their that can do this or someone can provide some info to me please point me to it so I can integrate it.


Thanks

Chris The Avatar

You can wrap uog.dll, which performs the launch/encryption patching of a client. It comes with UOGateway installs, and I'm sure if you ask MrFixit he will allow you to distribute it with your program. This should do the trick though...

Code:
using System;
using System.Runtime.InteropServices;

namespace MyApp
{
	public class UOGateway
	{
		// clientType: 0 = UO2D, 1 = UO3D
		public static int LaunchClient( int clientType, bool patchCrypt )
		{
			int result = Launch( clientType );

			if ( patchCrypt && Patch() == 0 ) 
				return 0;
	
			Resume();
			return result;		
		}
	
		[DllImport("uog.dll", EntryPoint="UOG_Client_Launch")]
		private static extern int Launch(int clientType);

		[DllImport("uog.dll", EntryPoint="UOG_Client_Resume")]
		private static extern int Resume();

		[DllImport("uog.dll", EntryPoint="UOG_Client_Patch")]
		private static extern int Patch();
	}
}
 
Ravatar said:
You can wrap uog.dll, which performs the launch/encryption patching of a client. It comes with UOGateway installs, and I'm sure if you ask MrFixit he will allow you to distribute it with your program. This should do the trick though...

Code:
using System;
using System.Runtime.InteropServices;

namespace MyApp
{
	public class UOGateway
	{
		// clientType: 0 = UO2D, 1 = UO3D
		public static int LaunchClient( int clientType, bool patchCrypt )
		{
			int result = Launch( clientType );

			if ( patchCrypt && Patch() == 0 ) 
				return 0;
	
			Resume();
			return result;		
		}
	
		[DllImport("uog.dll", EntryPoint="UOG_Client_Launch")]
		private static extern int Launch(int clientType);

		[DllImport("uog.dll", EntryPoint="UOG_Client_Resume")]
		private static extern int Resume();

		[DllImport("uog.dll", EntryPoint="UOG_Client_Patch")]
		private static extern int Patch();
	}
}

well how can I get in touch with mr fixit then?

Thanks

Chris The Avatar
 
BETA 2 Status Update.

I am currently making good progress on BETA 2 of uopatch, and am hoping to have the release in 3 - 4 weeks. I am finishing up the registration peice on the website now...

Note: that the website may be down for the next couple days do to an electrical storm that went through Pittsburgh last night, our T router got fried but I have contacted our ISP and they will be out tomorrow to replace it. Please be paitent in the mean time :)

Thanks


Chris The Avatar
 
UOPatch.com Still not up yet

UOPatch.com is still not up yet. Sorry about the wait, err ISP's.... Hopefully tomorrow. Otherwise I will post the files elsewhere for people to get to.

Thanks


Chris The Avatar
 
Site backup and running

The site is finally backup and running. I will have pre server registration for BETA 2 up and running in about a week on the website I will post once it is up.

Thanks

Chris The Avatar
 
Bug Fix For Patch Builder

A bug related to patch builder was recently reported. The bug would cause patch builder’s patch thread to crash, to the user it would appear as though patching halted in the middle (In the status box it would say something to the effect of “Done Comparing... Difference Image To Large Going to Add File...”).

This occurred when building a patch against a old/previous version of certain files. During comparison of the old and new version of the file, the patch building module would detect that the difference data it was building between the two files would be larger than the actual file itself, so it is supposed to normally add the file to the patch instead of the difference. However do to a file seeking calculation error the patch thread would crash, thus halting patching.

I have released a fix for the BETA 1 Patch Builder since we are still a few weeks away from BETA 2. Please bring any new problems with the 0.1.5 release of patch builder to my attention using the bug submission tool.

You can get the fix at www.uopatch.com

Thank You
 
Found Another Bug and Other news

Well while I have been finishing up the new patching alogirthm changes I ran into another rather bad bug in 1.0 patch builder... The good news is I have it fixed in 2.0. Actually I will issue another release for beta 1 in the next day or two.

I apologize for the bugs but I guess that’s why its called BETA! :)

The bug is once again related when comparing two files to each other. This bug can cause patch information in the generated patch file to be overwritten by information being written to the file later in the process. This one is due to a last minute change I made to the patch format and just put a file seek in the wrong place! Doh...

Other News:

Server registration will also be up this Saturday on the website (www.uopatch.com), so you can pre-register your shards for BETA 2 and beyond if you would like to be listed. Remember, You do NOT need to run a UOPatch Server to list with uopatch.com!

The new patching algorithm is better in most cases than the one used in 1.0. The algorithm attempts to recognize when a block of bytes has been added or changed or deleted, this is not perfect yet and is still being worked on but is definitely an improvement. The new algorithm is slower though, especially for low memory systems... Depending on the changes you make to your files, you may see decreases in patch file size from 10 - 25%. In rare cases I have observed a small increase or files staying the same size as the 1.0 algorithm.

Other minor good news is that I will be making BETA 2 backwards compatible with BETA 1, I know that I said they wouldn’t be but I decided to put in just a little bit more effort to do this…

I am looking forward to bringing BETA 2 to the community

Thanks for your patience! :)


Chris The Avatar
 

Marak

Sorceror
Great little proggy :D cant wait to have a play with this one(lol and now i have to explain to the lead admin why we paid for that fast site with the heap of bandwidth when we prob wont need it anymore *sigh*)
 

ssalter

Account Terminated
Thank you very much for all this hard work, Chris. This is landmark stuff.

I'm wondering if the files that can be included in the patches are configurable in regards to older systems still using verdata.mul or a different client? That would be a bonus.
 
ssalter said:
Thank you very much for all this hard work, Chris. This is landmark stuff.

I'm wondering if the files that can be included in the patches are configurable in regards to older systems still using verdata.mul or a different client? That would be a bonus.


Happy to provide the system to you :) Thank you for using it...


In regards to your questions, The patch system does not care about what files are acctually patched in regards to UO... You can patch anything, however remember not everyone has a verdata.mul so that means you would have to do an add on this file.... put the verdata in the "new" patch folder (used for comparison) and NO verdata.mul in your "old/previous" patch folder. This tells patch builder you want to add that file in its entirety to the patch instead of trying to generate changes between the two files. Also you would have to patch the users client to an older version as well to support verdata.mul...

Thanks

I hope this answers your questions...
 
O

Oliver

Guest
have you considered using some premade binary diff/patch programs? like xdelta or JojoDiff (I use this one in my little updater app :) )
 
Bug fix 0.1.6 released

Oliver said:
have you considered using some premade binary diff/patch programs? like xdelta or JojoDiff (I use this one in my little updater app :) )

I have thought about it, if they offer free redis. libraries it might not be a bad idea, however, There are four reasons why I chose not to.

1. I always hate waiting/depending on third parties to make bug fixes.
2. By writing it myself I also have the flexability to output the changes in a custom format that I see best fit.
3. I do not have to worry about liscensing or costs of redistributing a third party library or program. Or worse having players download another program!!
4. I find it educational and enjoyable to write :)

BTW

I have released a bug fix (0.1.6) for the issue that I posted on Wednesday. The fix should now allow multiple files being “compared and changed” to exist with in the same patch file with out overlapping each other. Again this was due to a file seeking issue…

You can get it at www.uopatch.com


Thanks


Chris The Avatar
 
Registration Up For BETA 2

Server Registration is now up for BETA 2, you can pre-register to have your server listed with UOPatch.com and take full advantage of the UOPatch client BETA 2 when it is released. By registering your server players will be able to find your server with ease. The server registration will support servers with and without patch servers. So even if you are not running a UOPatch server you can still list with us allowing players to easily find your server.

Thanks



Chris The Avatar
 

floppydisc

Sorceror
Chris, I would recommend that you specialize the patch algorithm to mul files. A specialized patching algorithm works in any case better than a generic patching algorithm. Most mul files have the same structure or are at least documented. If you need any help, please let me know. (Also let me know which programming language you use to write the program - maybe I already have what you could be looking for.)
 
Top