PvP, the way it was in June 1998...?

News and Announcements
User avatar
Batlin
wobble llama
wobble llama
Posts: 512
Joined: Fri Dec 19, 2008 4:32 am
Location: Ultima Universe

PvP, the way it was in June 1998...?

Post by Batlin »

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
Last edited by Batlin on Sun Mar 28, 2010 5:12 pm, edited 1 time in total.
+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

Cutpurse
Posts: 281
Joined: Tue Oct 14, 2008 6:59 pm

Re: PvP, the way it was in June 1998...?

Post by Cutpurse »

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.

User avatar
Hemperor
UOSA Subscriber!
UOSA Subscriber!
Posts: 4368
Joined: Sat Jul 19, 2008 9:15 am

Re: PvP, the way it was in June 1998...?

Post by Hemperor »

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

User avatar
Hemperor
UOSA Subscriber!
UOSA Subscriber!
Posts: 4368
Joined: Sat Jul 19, 2008 9:15 am

Re: PvP, the way it was in June 1998...?

Post by Hemperor »

"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

User avatar
Batlin
wobble llama
wobble llama
Posts: 512
Joined: Fri Dec 19, 2008 4:32 am
Location: Ultima Universe

Re: PvP, the way it was in June 1998...?

Post by Batlin »

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.

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/

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

User avatar
Hemperor
UOSA Subscriber!
UOSA Subscriber!
Posts: 4368
Joined: Sat Jul 19, 2008 9:15 am

Re: PvP, the way it was in June 1998...?

Post by Hemperor »

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

ClowN
Posts: 638
Joined: Mon Oct 13, 2008 4:58 pm

Re: PvP, the way it was in June 1998...?

Post by ClowN »

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.

maceone
Posts: 18
Joined: Sun Jun 21, 2009 6:26 pm
Location: New York City,Usa
Contact:

Re: PvP, the way it was in June 1998...?

Post by maceone »

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..

Hicha
UOSA Donor!!
UOSA Donor!!
Posts: 2264
Joined: Tue May 05, 2009 10:03 am
Location: out selling permits

Re: PvP, the way it was in June 1998...?

Post by Hicha »

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

User avatar
Hemperor
UOSA Subscriber!
UOSA Subscriber!
Posts: 4368
Joined: Sat Jul 19, 2008 9:15 am

Re: PvP, the way it was in June 1998...?

Post by Hemperor »

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

joshosopher
Posts: 2
Joined: Thu Aug 13, 2009 9:13 am

Re: PvP, the way it was in June 1998...?

Post by joshosopher »

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?

User avatar
Batlin
wobble llama
wobble llama
Posts: 512
Joined: Fri Dec 19, 2008 4:32 am
Location: Ultima Universe

Re: PvP, the way it was in June 1998...?

Post by Batlin »

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.
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?
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

joshosopher
Posts: 2
Joined: Thu Aug 13, 2009 9:13 am

Re: PvP, the way it was in June 1998...?

Post by joshosopher »

Very interesting! Thank you.
Do you remember the method?
Nope, it was quite a long time ago! Sorry.

User avatar
niqeo
Posts: 201
Joined: Thu Sep 04, 2008 2:24 am
Contact:

Re: PvP, the way it was in June 1998...?

Post by niqeo »

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.

Garret
Posts: 1
Joined: Wed Aug 19, 2009 2:09 pm
Contact:

Re: PvP, the way it was in June 1998...?

Post by Garret »

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.

Post Reply