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.
Question about how UO works...
-
giwo
- Developer
- Posts: 1780
- Joined: Fri Jun 18, 2004 4:17 pm
- Location: California
- Has thanked: 0
- Been thanked: 0
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.
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
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).
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
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.
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