xG00BERx

The casting has been broken on free servers forever, has anyone noticed the different speed in casting on free server vs RealUO? Or perhaps even attempted to emulate the real servers?

I know that Demise has recently made pushes to replicate the casting speeds better and I believe theyve done better than any server I've played yet.
 
Could we get some tests? Even casting Heal 2/6 on both EA and stock ServUO?

Even few second tweaks could make it way better.
 
You need a way to time it, from cast time to target time, preferably in milliseconds. You then need to take into account latency for lag.
 
how about using whatever macro tool you have, do a spell, with getting the systime for example with easyuo, then see how long it takes to cast, get the systime and then subtract the first systime from the later one and you got the cast time
 
I used EasyUO. But like I said, its nearly impossible to account for lag on an EA server, and comparing it to a test server with virtually no lag. Also, some spells may have longer cast times than others in a particular circle, such as blade spirits. MOst spells would need to be tested individually.
 
I used EasyUO. But like I said, its nearly impossible to account for lag on an EA server, and comparing it to a test server with virtually no lag. Also, some spells may have longer cast times than others in a particular circle, such as blade spirits. MOst spells would need to be tested individually.
It's a big project, but trying to replicate it more so would definitely be worth it. If every spell needs recorded maybe we could create a list and do some trials? If ping to RealUO vs private server is an issue you could always just login to a server not locally hosted aka Heritage where my ping is quite similar to RealUO as opposed to a local server with 0 ping
 
There an Easyuoscript, the Average value is pretty accurate, only testet locally though since I didnt feel like going on a live shard to test its accuracy there, but I testet it by comparing it from the actual delay values of the spell, its in an ~10 ms range.

Not sure what other tools run on OSI though


oh and you can easily add the other spells / skill like the chiv ones if you like, atm there is magery and necro.
Also full list of values can be seen on the var list, atm only incognito is skipped since you cant recast it directly
 

Attachments

  • Delayfinder.txt
    1.7 KB · Views: 10
So I'm running a stopwatch built into the code, basically starts right as the spell begins casting, and stops at the end of the sequence. The Timer priority for the spell timer is 50 milliseconds, so basically, the spell can be up to 50ms late, or 1/20th of a second. At timer priority set to every tick (no delay in tick checks), its hitting from on time to +4 ms, which would be virtually unnoticeable. 50ms would be pretty unnoticeable, as well.

Which brings us to EA. After running 100 circle 1 spells, the average cast time is 1.012 seconds. The problem is, some of the spells show (EasyUO program) as a .9 second cast time. Unfortunately, the highest resolution time EasyUO shows is tenths of a second, so that .9 could easily be .99, or just .90. Thats a big difference. Now, with EA, I'm seeing .9 to 1.1 second cast time, so that could be 1.1 second, or 2 seconds difference. None the less, I am almost certainly convinced EA slightly lowers the cast time (which would explain the .9 second cast time, even with 74+ ping), maybe to make up time for their own timer resolution.
 
The real UO has a better scan cycle of there program then Servuo does. There code is built more like a PLC program. it has to scan though before the trigger the cycle

Also if there is 100 warnings that is known to be errors in plc program it will take longer for the scan cycle to finish when the code we have scans though to trigger 100 warnings can add another 100ms to your scan and trigger of the spell. so to get it right on the money that will never happen. being ms or mirco second off the spell is not bad.

Also you got to count in the latency over the internet your char has for that trigger of spell.
Example

Char A super fast awesome internet casts spell in 9+ seconds or less.

Char B okay internet not the best casts same spell but his delay is based on his latency so that cast takes 9 1/2 seconds. that is 1/2 second longer to cast so now.

You can test RealUO all day you might get same numbers but change you net speeds i bet those type of cast times change.
Post automatically merged:

One other Note prime example of servuo being slow with scan times.

I have the latest github version on a really fast pc. it takes it 5 seconds to load due to the fact it has to scan though and trigger all those spawners being created on startup.

Now i went though and disabled all the stuff starting up with server. My scan time dropped and my server loads in 0.3
Post automatically merged:

 
The real UO has a better scan cycle of there program then Servuo does. There code is built more like a PLC program. it has to scan though before the trigger the cycle

Also if there is 100 warnings that is known to be errors in plc program it will take longer for the scan cycle to finish when the code we have scans though to trigger 100 warnings can add another 100ms to your scan and trigger of the spell. so to get it right on the money that will never happen. being ms or mirco second off the spell is not bad.

Uhm what?

Also you got to count in the latency over the internet your char has for that trigger of spell.
Example

Char A super fast awesome internet casts spell in 9+ seconds or less.

Char B okay internet not the best casts same spell but his delay is based on his latency so that cast takes 9 1/2 seconds. that is 1/2 second longer to cast so now.

You can test RealUO all day you might get same numbers but change you net speeds i bet those type of cast times change.

Yes thats why even the easyuo script I did has a variable that is used to subtract from the delay it had. You would set it to your average ping to the server.
Thats the best you can do there. Also Easyuo itself isnt 100% accurate either, it was just the easiest and fastest solution while being not too unaccurate either, thats why you would average the values you got.

One other Note prime example of servuo being slow with scan times.

I have the latest github version on a really fast pc. it takes it 5 seconds to load due to the fact it has to scan though and trigger all those spawners being created on startup.

Now i went though and disabled all the stuff starting up with server. My scan time dropped and my server loads in 0.3

Well that has nothing to do with the topic, but trimming things that start with the servers obviously reduce the start up time, the most time consuming feature that is active on boot is the honesty system. Still this is unreleated to the topic
 
The discrepancy I'm seeing on EA is that once in a while, the spell delay is 1/10 of a second faster than what it should be. But, like I said, its only measuing in 1/10 seconds, so it could very well be 1/100 too fast, or even 1/1000 too fast. Because, I'm still convinced EA is using a small randomizer. Now, if the spell delay was always at or above the proper length, I'd blame it on latency.
 
Let me explain it better remote connections aka clients to the server is going to be different no matter how much we try. but if we can get a couple ms close that is good.

trust me i work for a company and program robots we talk about how the different speeds are sent depending how we are connected. so we have to adjust for that.
 
The discrepancy I'm seeing on EA is that once in a while, the spell delay is 1/10 of a second faster than what it should be. But, like I said, its only measuing in 1/10 seconds, so it could very well be 1/100 too fast, or even 1/1000 too fast. Because, I'm still convinced EA is using a small randomizer. Now, if the spell delay was always at or above the proper length, I'd blame it on latency.

Many games back in the day used some sort of spell batching do combat ping delays between casting.
It is theoretically possible that UO uses that kind of spell batching and batches spells into groups. So for instance say a batch window is every 20ms. If a whole bunch of people casted a spell within the next batch window (say for example 20ms). It would hold all those spells until that batch window passes and then process all those spell cast requests.

This is similar to how WOW handles spell requests. They don't just fire off the spell cast when the packet is received. Back in the day WOW's spell batching was much wider, but nowadays its very small.
 
Isn't Adrenalin 4 a proof of server handles the packets as they arrive. If I remember correctly, didn't they added Packet #2, #21 and #22 to battle this issue by adding a bottleneck and at the same time do an implementation (packet #22) for a client/server sync for desynced clients. (Then opening paperdoll or where it the radar, the character gets sent to the correct coordinates accordingly to the server.) The sync issue got more frequent then people started to get faster modems and ADSL.
 
Last edited:
Back