Könnte an zu hoher Frame/Tick Rate liegen (Serverside).
Normal sind hier 65 Frames ("Updates") pro 15ms - für ein solches MMO eigentlich zulässig genug.
Wenn der Server nun wesentlich mehr hat (sagen wir 900+ pro 1ms), dann ist der Server meistens schneller als der Client, sprich der Client hängt hinterher.
Das Resultat ist nun, dass der Server denkt, der Client sei erst 5 Meter gelaufen, obwohl dieser schon 15 hinter sich hat.
Das Resultat: Der Server schickt den Client auf die letzte ihn bekannte Position (was die 5 Meter sein werden).
Das selbe wird dann auch mit den Mobs der Fall sein. Der Server (also ein Mob) wird vom Client angegriffen - dieser reagiert auch ganz normal drauf. Läuft der Client nun weg, weil der Mob vielleicht zu stark ist, so ist auch alles OK. Stimmt nun die Synchronisation nicht, so können zwei Dinge passieren:
- Der Client wird wie oben einfach zurückgesetzt
- Der Mob greift den Client an, weil dieser für sich ja noch in der Reichweite ist - nur nicht für den Client
Da müsstest du entweder die Serverside Frame/Tick Rate auf 65 frames/15ms setzen, oder die Client-/Serversynchronisation optimieren (der Client pingt den Server häufiger an, oder ähnliches).
EDIT: Gerade mal den Code durchstöbert und sowas gefunden:
[Only registered and activated users can see links. Click Here To Register...]
... wobei das offenbar eher mit der Onlinezeit des Benutzers zu tun hat. :D
Code:
void LogPerformance( DWORD dwCurTick )
im Worldserver - da könntest du deine Suche beginnen (Serverseitig)