All times are UTC - 5 hours [ DST ]


Post new topic Reply to topic  [ 50 posts ] 
Go to page 1, 2, 3, 4  Next
Author Message
 Post subject: PvP, the way it was in June 1998...?
PostPosted: Mon Jul 13, 2009 5:43 am 
Offline
wobble llama
wobble llama
User avatar
User Rep: Unsung
 Profile

Joined: Fri Dec 19, 2008 4:32 am
Posts: 512
Location: Ultima Universe
I introduce to you UoDemo+ Publish 11, an Ultima Online Gold Demo Patch that enables PvP.

This has been on my hard disk for far too long and I want it out there.

As you all know by now, I've been spending a lot of (too much?) time inside this demo.
I analyzed the script parsing engine, created a decompiler for it.
I discovered lots of unused functions like writing back DYNAMIC0 and made patches to enable them.
DYNAMIC0 is what you can call the world state, it includes all player(s), shopkeepers and their inventories in one file. (The file even contains the accounts of OSI people who worked on the demo...)

I also discovered the demo contained many socket functions, that gave me the idea, does the demo supports multiple clients connecting to it? The demo is really more than just some demo guys, it's contains code from the real OSI servers from June 1998, there is no doubt about that. And yes, it supports multiple clients!

I discovered that the demo supports by default:
- bind/listen socket code (yes the demo is capable of listening to a port, the code just never gets called)
- accepting incomming connections (bind/listen is never enough, you need to accept connections too)
- a linked list to store multiple incoming sockets (connecting players that is)
- select API operations on the linked list (is data available/can data be sent/is error?)
- sending data to a socket

The demo is (read:was) missing:
- calls to the functions listed above
- WSAStartup (to initalize socket operations)
(WSAStartup is available and unused, but that's from the client side, not the server side)
- receive data from a socket

By analyzing the socket classes and by carefully modding the demo I was able to make it all work. I brought the unused pieces together and added the missing code like WSAStartup and receiving data from sockets.

There a currently a few limitations, these are:
- you can only connect to it with a patched uodemo to act as a pure client
(that is due to the many protocol changes OSI made, nothing I can do about that)
- the demo creates new accounts based on the "user's gameplay encryption key"
http://kec.cz/tartaros/steamengine/uplo ... cket00.htm
NOTE: the last two fields are not available in the demo, the packet length is 0x64 instead 0x68.
- when logging in, the demo uses your IP number as the account ID
(this is incompatible with the create account approach)
This means you have to create a new character every time you close the patched client
(I will patch the demo someday to modify this behaviour)
- Character names have to be UNIQUE! (as it was on OSI back then?)
- if you are running the demo in a Virtual Machine set the VM's priority class to Normal (for both active/inactive)
- Never connect to 127.0.0.1, the internal client of the uodemo uses that socket address, even though it's a linked list in memory, for your information, the socket handle is 0xBEEF (OSI humor?)

Now, the server starts listening on the port defined in the uogolddemo directory in the DAT file. By default this is port 10016. If you want to change that port you will need to extract all files from the DAT file and modify the server.txt file. If you set the port value to 0 the server function will be disabled. WSAStartup will always be called because that was really required to make my patch possible.

About the patched client: I named this beast UoDmClnt, you have to place the EXE somewhere :-). I don't care where. You have to create a file called UoDmClnt.cfg and place it in your UO game directory. The contents are "DemoServer=IP,PORT". For example "DemoServer=192.168.1.15,10016". This client is basically a patched uodemo.exe that disables the server code and connects to the IP address configured in UoDmClnt.cfg.

I hope some of you guys have the time to experiment with it, it would be interesting to have some of the UOSA timings verified or deverified. Just remember: it's June 1998, all patch notes after that are not in the demo this includes pre-casting and meditation.

Oh yeah, Razor and UOAM won't work :-).

The downloads are here:
UoDemo+: http://uodemo.joinuo.com/index.php?title=Uodemo%2B
UoDmClnt: http://uodemo.joinuo.com/index.php?title=UoDmClnt

EDIT: updated the links

_________________
+ORC: If you give a man a crack he'll be hungry again tomorrow, but if you teach him how to crack, he'll never be hungry again.
chumbucket: I don't collect pixels.

Never trust the client. It's in the hands of the enemy : UO Demo internals @ JoinUO


Last edited by Batlin on Sun Mar 28, 2010 5:12 pm, edited 1 time in total.

Top
 
These Support SecondAge
Links open a new window.
UOSA Donors & Subscribers do not receive these ads.

 Post subject: Re: PvP, the way it was in June 1998...?
PostPosted: Mon Jul 13, 2009 10:18 am 
Offline
User Rep: Unsung
 Profile

Joined: Tue Oct 14, 2008 6:59 pm
Posts: 281
Wow. Very extensive and impressive work you've done.
There are lots of interesting things hidden in the code for the UODemo. I remember a looong time ago on a Sphere shard called Athlore that a guy by the name of Incognito used certain aspects of the demo's code to develop a God client that worked on Sphere shards. He could do everything from change his characters name/skills/appearance to being able to walk through walls and be totally invincible. I don't think he EVER shared it with anyone.


Top
 

 Post subject: Re: PvP, the way it was in June 1998...?
PostPosted: Mon Jul 13, 2009 10:38 am 
Offline
UOSA Subscriber!
UOSA Subscriber!
User avatar
User Rep: Fair
 Profile

Joined: Sat Jul 19, 2008 9:15 am
Posts: 4368
Just woke up, been hearing rumors about something like this upcoming... This is truly amazing, probably the most breakthrough work this shard will ever see on one matter. I can only imagine the time and dedication it took!

_________________
Image

[22:26] <ian> why am i making 3750 empty kegs
[22:27] <ian> 1125000 for 3750 empty kegs
----------------------------------------
[10:44] <ian> a good cat is a dead cat


Top
 

 Post subject: Re: PvP, the way it was in June 1998...?
PostPosted: Mon Jul 13, 2009 11:07 am 
Offline
UOSA Subscriber!
UOSA Subscriber!
User avatar
User Rep: Fair
 Profile

Joined: Sat Jul 19, 2008 9:15 am
Posts: 4368
"You need UO Gold to play the demo" this is the T2A install... Any ideas, other than reinstalling?

You should really hop in IRC at some point tonight or even ventrilo Baitlin, we'll all give it a go, but I'm sure we could use some direction.

_________________
Image

[22:26] <ian> why am i making 3750 empty kegs
[22:27] <ian> 1125000 for 3750 empty kegs
----------------------------------------
[10:44] <ian> a good cat is a dead cat


Top
 

 Post subject: Re: PvP, the way it was in June 1998...?
PostPosted: Mon Jul 13, 2009 11:27 am 
Offline
wobble llama
wobble llama
User avatar
User Rep: Unsung
 Profile

Joined: Fri Dec 19, 2008 4:32 am
Posts: 512
Location: Ultima Universe
Quote:
There are lots of interesting things hidden in the code for the UODemo.

Most definitly, I'm 99% sure the demo server supports the OSI GOD client. Many so-called GOD packets are supported and handled by the packet handler.


Quote:
Any ideas, other than reinstalling?

Yes. Do you have an old CD of Windows 95/98/2000/XP?
Then install Microsoft Virtual PC 2005 or 2007 and run a virtual windows.
or try Virtualbox http://www.virtualbox.org/


Quote:
You should really hop in IRC at some point tonight or even ventrilo >>>Batlin<<<, we'll all give it a go, but I'm sure we could use some direction.

Sure, but my tonight is 4-5 hours earlier than your tonight, I think. But I'll be there as soon as I get home from work to help you out.

_________________
+ORC: If you give a man a crack he'll be hungry again tomorrow, but if you teach him how to crack, he'll never be hungry again.
chumbucket: I don't collect pixels.

Never trust the client. It's in the hands of the enemy : UO Demo internals @ JoinUO


Top
 

 Post subject: Re: PvP, the way it was in June 1998...?
PostPosted: Mon Jul 13, 2009 5:09 pm 
Offline
UOSA Subscriber!
UOSA Subscriber!
User avatar
User Rep: Fair
 Profile

Joined: Sat Jul 19, 2008 9:15 am
Posts: 4368
This is truly amazing, thank you Batlin for helping me out and making sure I got it running. I'll see if I can get some port forwarding open tonight and set up a somewhat permanent server for a week or two for the demo, otherwise would be neat if someone did this... extremely cool.

_________________
Image

[22:26] <ian> why am i making 3750 empty kegs
[22:27] <ian> 1125000 for 3750 empty kegs
----------------------------------------
[10:44] <ian> a good cat is a dead cat


Top
 

 Post subject: Re: PvP, the way it was in June 1998...?
PostPosted: Wed Jul 15, 2009 3:23 pm 
Offline
User Rep: Unsung
 Profile

Joined: Mon Oct 13, 2008 4:58 pm
Posts: 638
very interesting work here. i think this will shed some light on alot of game play mechanics that no other free shard developers have been able to replicate.


Top
 

 Post subject: Re: PvP, the way it was in June 1998...?
PostPosted: Mon Jul 27, 2009 9:09 pm 
Offline
User Rep: Unsung
 ICQ  Profile

Joined: Sun Jun 21, 2009 6:26 pm
Posts: 18
Location: New York City,Usa
This client probably works with uoextreme..In June 98 alot of the noto killas on osi Atlantic Shard were using uoextreme..This is really intense!.Good Luck..Hope to see it soon..


Top
 

 Post subject: Re: PvP, the way it was in June 1998...?
PostPosted: Tue Aug 04, 2009 8:43 pm 
Offline
UOSA Donor!!
UOSA Donor!!
User avatar
User Rep: Good
Good
 Profile

Joined: Tue May 05, 2009 10:03 am
Posts: 2262
Location: out selling permits
Tried to get this to work but it just gets stuck at connecting; downloaded both files, can't help but think i'm missing something else. Any advice batlin?

_________________
Image
"I consider most of you NPC's that inhabit the single player game that I am here to enjoy." - MatronDeWinter


Top
 

 Post subject: Re: PvP, the way it was in June 1998...?
PostPosted: Tue Aug 04, 2009 8:47 pm 
Offline
UOSA Subscriber!
UOSA Subscriber!
User avatar
User Rep: Fair
 Profile

Joined: Sat Jul 19, 2008 9:15 am
Posts: 4368
hiicha wrote:
Tried to get this to work but it just gets stuck at connecting; downloaded both files, can't help but think i'm missing something else. Any advice batlin?


Did you run UoDemo+ first and then UoDmClnt? Message me in IRC and I'll help set you up.

_________________
Image

[22:26] <ian> why am i making 3750 empty kegs
[22:27] <ian> 1125000 for 3750 empty kegs
----------------------------------------
[10:44] <ian> a good cat is a dead cat


Top
 

 Post subject: Re: PvP, the way it was in June 1998...?
PostPosted: Thu Aug 13, 2009 9:32 am 
Offline
User Rep: Unsung
 Profile

Joined: Thu Aug 13, 2009 9:13 am
Posts: 2
This is very exciting! Is there anyway to maintain world state in between client instances?

I've had the UOdemo along with a T2A install backed up on an external harddrive for many years. At the time when I played there existed a tailoring imbalance which allowed for quick cash, so I worked for a whole day to accumulate around
10k gold and buy a boat, but just about when I broke 10k the client crashed and I lost the world state.

Is the rest of the game world populated if you manage to get out of Occlo?


Top
 

 Post subject: Re: PvP, the way it was in June 1998...?
PostPosted: Thu Aug 13, 2009 9:52 am 
Offline
wobble llama
wobble llama
User avatar
User Rep: Unsung
 Profile

Joined: Fri Dec 19, 2008 4:32 am
Posts: 512
Location: Ultima Universe
Quote:
This is very exciting! Is there anyway to maintain world state in between client instances?
There is. Start the "uodemo+" with an environment variable "SET SAVEDYNAMIC0=YES". The world state is only "saved" when you exit the demo, it's not saved regullary but this could be implemented.

Quote:
At the time when I played there existed a tailoring imbalance which allowed for quick cash, so I worked for a whole day to accumulate around.
Do you remember the method?

Quote:
Is the rest of the game world populated if you manage to get out of Occlo?
Boats are broken and without hacking the game state (or implementing a teleport script) and overwrite some of the server data files (inside uodemo.dat) you cannot get out of the world without making the demo crash. I managed to get out and let me tell you : there is NOTHING but the same graphics you can see with InsideUO. You can't even mine or lumberjack because the data file for the resources only include Occlo.

_________________
+ORC: If you give a man a crack he'll be hungry again tomorrow, but if you teach him how to crack, he'll never be hungry again.
chumbucket: I don't collect pixels.

Never trust the client. It's in the hands of the enemy : UO Demo internals @ JoinUO


Top
 

 Post subject: Re: PvP, the way it was in June 1998...?
PostPosted: Thu Aug 13, 2009 9:56 am 
Offline
User Rep: Unsung
 Profile

Joined: Thu Aug 13, 2009 9:13 am
Posts: 2
Very interesting! Thank you.

Quote:
Do you remember the method?

Nope, it was quite a long time ago! Sorry.


Top
 

 Post subject: Re: PvP, the way it was in June 1998...?
PostPosted: Fri Aug 14, 2009 12:27 pm 
Offline
User avatar
User Rep: Unsung
 ICQ  Profile

Joined: Thu Sep 04, 2008 2:24 am
Posts: 201
I truley hope some people put some work into this. I have enjoyed playing on UOSA for quite some time but as the combat has changed it is no longer realistic and i've lost interest to the point of ready to leave this shard.

_________________
Mr.Brown wrote:
peace out bro hopefully you can play again..you taught me t2a pvp!


Nevermore wrote:
Besides just by playing the shard, vets will have plenty of things that most people who haven't been around as long don't.


Top
 

 Post subject: Re: PvP, the way it was in June 1998...?
PostPosted: Wed Aug 19, 2009 2:26 pm 
Offline
User Rep: Unsung
 ICQ  Profile

Joined: Wed Aug 19, 2009 2:09 pm
Posts: 1
Managed to make godclient login until character creation, at this place, client trying to create character, but handles there, character not created on server.

This is becouse character creation packet have 0x68 bytes length.
In other case, when trying to login with ip different from 127.0.0.1, never see already existing characters, server don't send any.
But they exist in dynamic0.mul.
When logging with 127.0.0.1 ip, can see Avatar, and created character with other client. But cannot login with it.

p.s. If anybody need godclient, icq or pm me.
To run godclient, you need ren client patched till 2.0.6c, the godclient is version 2.0.8n.
I have 2 clients, original, and noncrypted, to able to login i used noncrypted with EditServer property in uo.cfg.
If any knowledge about godclient needed, i can help, coded runuo to support most client functions including worldeditor, and some packets included in packetguide.


Top
 

Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 50 posts ]  Go to page 1, 2, 3, 4  Next

All times are UTC - 5 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 12 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Support Second Age: These links Open in a New Window

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group  
Extended by Karma MOD © 2007—2012 m157y