As some of the players are aware the staff of Renaissance take great care in our research and patching and do our best to avoid arbitrary changes. In order to allow our players to help us research and bring back the correct look and feel of the UOR era we have setup a semi permanent UO Demo Server. The UO Demo was released on the T2A CD with client version 1.26 in 1998. Players were able to install the demo and begin in Occlo to get an idea of what Ultima Online was like. Using some tools developed by the guys over at Joinuo we have successfully setup a public populated demo server for our players. This server can be accessed from your standard UOR client and razor with only a simple address change as seen below. uodemo.uorenaissance.com port 2593 Feel free to log in, make a character and help with making UO Renaissance the best UOR server. This server is an exact replica of an OSI server from sometime around October 1998. By reviewing this server and comparing functionality found there to patch notes from Oct 1998 to the UOR era we can determine the exact mechanics of various aspects of the UO world. UO Relevant Patch Archive Note: If you want to run some specific tests, let me know and I will generate as many of the supplies as I can, along with setting your skills.
are we going to be looking at success rates with skills and crafting and all that good stuff? I'd be down to make a thief there and document whatever (or however we can help)
I have been working on a small project that might interest other people. It was created to get a better overview on script files inside UODEMO. http://www.uot2a.com/download/UO_DEMO_SCRIPTS.ZIP -Grim
If you are intrested you can download this and run it on your own computer. (it is a 15 GB VMware file) http://www.runuo.com/community/threads/uodemo-uodemo-godclient.563889/ -Grim
Nice, I'll check that, looks like a a lot of work behind I've been doing some research about the UO Demo history and how it lead to server emulation, it is awesome how it all started decompiling the binaries and doing reverse engineering. I also found a timeline of emulation that gave me an idea of how many projects and ppl were involved to reach what we have now, simply amazing! I'm sorry for the offtopic but will try to have a working uodemo to test things, sometimes I wonder if some action or mechanic is correct and I don't have a valid reference to compare.
If i'm not mistaken, there was Batlin (reverse engineering), Bicchus, Derrick (uosecondage.com) and Garret that worked on the UODEMO+ project from begining. I have spent a lot time trying to dig out T2A information from it, this might be interesting for you. Here is some more help on the topic UODEMO, it is all the scripts decompiled. https://github.com/Grimoric/UODEMO/tree/master/scripts.uosl [download] Bonus: This is the script files linked with HTML. http://www.uot2a.com/download/UO_DEMO_SCRIPTS.ZIP -Grim
@Grimoric, how does one further "decode" some of the code, particularly in the scripts? Like "Q5RD" and "0x01"?
It is a hard work, every function except for the builtin ones did have names like that from the beginning. If we look at the script called POISON we can see that it have inheret the POISONBASE script and that script have inheret SPELSKIL. Poison have a call for the function you took as a example. trigger message("castspell") { obj user = Q4BB(this, args); if(!isValid(user)) { return(0x00); } Q5RD(user, this); Q4WO(user, this); return(0x00); } ...and if we follow the inheret we find the script in SPELSKIL file. function void Q5RD(obj Q68S, obj Q5UY) { if(!Q507(Q68S)) // "se below" it is a check if the player has a target script attached already. { attachScript(Q68S, "targeting"); // if not attach one. } setObjVar(Q68S, "targetingForObj", Q5UY); // sets the object of the spell casted. return(); } function int Q507(obj Q68S) { return(hasScript(Q68S, "targeting")); // does the script exists on the player. } --- All function that have grey color default is builtin function and have no source code. like the attachScript, doDamage or getLocation as examples. The names was given in the decompiled code, we only have the names. About 0x00 and so on. Everything is using hex values to calculate things or reference to the images inside uo. (uofiddler to see them). and sometimes a 0x00/0x01 is boolean check in scripts. The only way is to look at the code and learn how they did stuff. It is a lot different comparing to RunUO and C#.
OK thanks - I did notice the 0x00 and 0x01 seemed to be used in True/False type ways. Makes sense. For the scripts like "Q4BB", that's disappointing. I was hoping there would be some easy trick there to translate into a more readable format But you're right, some things might be able to be figured out by knowing about how something works and tracing back through what's called to make it happen.