Question about how UO works...

Want to discuss changes to the UOX3 source code? Got a code-snippet you'd like to post? Anything related to coding/programming goes here!
Post Reply
arfon
UOX3 Neophyte
Posts: 35
Joined: Tue Sep 06, 2005 9:36 pm
Location: Texas
Has thanked: 0
Been thanked: 0

Question about how UO works...

Post by arfon »

Q1) Where do you guys go to learn how the UO client/server works? Is there an online site that has the packet structures and the steps the Client/server goes through to make and play a character?

Q2) once a character is in game, I assume that the client remembers everything as an object and when clicked on, passes the the following information: 1) A click happened and 2) which object was clicked on.
giwo
Developer
Posts: 1780
Joined: Fri Jun 18, 2004 4:17 pm
Location: California
Has thanked: 0
Been thanked: 0

Post by giwo »

Well you are definately on the right forum for how UO works...

Not everything is known about UO packet structure, but the emulation community strives to mimic the packets sent by OSI servers as best we can. Basically we use PacketGuides to go over what is already commonly known about the packet structure, and packet logging on actual UO servers for what isn't common knowledge.

Here is a link to packet guides, posted in a sticky on this forum
viewtopic.php?t=196

As for question 2, yes, that is generally what happens. Basically it works in this way.

1) Client comes in range
2) Objects nearby are sent to the client, serial numbers are used to make each object individual
3) Client clicks on an object
4) Server receives a packet informing it of the click containing the serial number of the item clicked on.

Note that single-clicking was disabled by the AoS features (as it now uses tooltips) thus that functions a bit differently.
Scott
Sydius
UOX3 Apprentice
Posts: 171
Joined: Thu Mar 25, 2004 3:22 am
Has thanked: 0
Been thanked: 0

Post by Sydius »

Using a packet-sniffer definitely goes a long way, as long as you remember that, on the official servers, they encrypt the packets. If you are just getting started, you may want to use one on the connection to an emulated server, since they are not encrypted, just to get a sense of when and in what order the packets are sent.

It certainly does not hurt to rummage through the source of open-source emulators, either, though the packet-handling portion of many are either decentralized (and harder to find) or fairly complex. It would certainly give you some ideas about what to look out for, though, as most of the older emulators have withstood many vulnerabilities caused by things nobody thought would/could happen (even the official servers).
giwo
Developer
Posts: 1780
Joined: Fri Jun 18, 2004 4:17 pm
Location: California
Has thanked: 0
Been thanked: 0

Post by giwo »

There are a couple of packet sniffers out there that should work on OSI's servers (able to decrypt the packets).

http://www.runuo.com/forum/archive/index.php/t-17020

http://uo.elitecoder.net/phpBB/viewtopi ... ight=uolog


Just make sure you have the client keys to match the client version you use.
Scott
Post Reply