Posi Bugs

07/03/2014 22:22 Sedrika#1
.
07/03/2014 22:57 Wanetrain#2
Netzwerk, Packet Buffer, allgemein Packete, wie die Position übertragen wird (Wo, Wann) usw.

Viel Spaß, arbeits aufwand ist verdammt hoch und kostet dich mehr erfahrung als du denk ich hast.
07/03/2014 23:19 Sedrika#3
Gefunden habe ich auch bisher nichts. Etwas verringern ging.
07/03/2014 23:23 Wanetrain#4
Quote:
Originally Posted by Sedrika View Post
Gefunden habe ich auch bisher nichts. Etwas verringern ging.
Ja es liegt an dem komplette System kann man sagen, einerseits gehen Packet verloren, anderer seits sind sie teils Fehlerhaft, also im sinne von werten, dann werden die vom Client nicht all zu schnell gesendet (WASD) usw, da ist jede menge Arbeit hinter.

Man sollte sich eher um die Server konzentrieren damit dort alles perfekt läuft bevor man an sowas geht.
07/03/2014 23:43 Sedrika#5
Die Server laufen bereits stabil und da kümmern wir uns auch drum, nur sind die posi bugs ein dorn im Auge auf dauer.
07/04/2014 06:35 xTwiLightx#6
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)
07/04/2014 07:38 Sedrika#7
Unser Tick liegt bei über 900, könnte das sein. Wenn ja weiß ich dagegen anzugehen.
07/04/2014 07:45 xTwiLightx#8
Quote:
Originally Posted by Sedrika View Post
Unser Tick liegt bei über 900, könnte das sein. Wenn ja weiß ich dagegen anzugehen.
Neuz FPS auf 900 hoch :D

EDIT: Könnte das Clientside ne Bedeutung haben?
Code:
#ifndef __VM_0820
#ifndef __MEM_TRACE
#ifdef MASSIVE
	#ifdef __VM_0819
	MemPooler<CClientSockE>*	CClientSockE::m_pPool	= new MemPooler<CClientSockE>( 1024, "CClientSockE" );
	#else	// __VM_0819
	MemPooler<CClientSockE>*	CClientSockE::m_pPool	= new MemPooler<CClientSockE>( 1024 );
	#endif	// __VM_0819
#else	// MASSIVE
	#ifdef __VM_0819
	MemPooler<CClientSockE>*	CClientSockE::m_pPool	= new MemPooler<CClientSockE>( 4, "CClientSockE" );
	#else	// __VM_0819
	MemPooler<CClientSockE>*	CClientSockE::m_pPool	= new MemPooler<CClientSockE>( 4 );
	#endif	// __VM_0819
#endif	// MASSIVE
#endif	// __MEM_TRACE
#endif	// __VM_0820
07/04/2014 07:51 Sedrika#9
Haha, das wäre zu viel für einige.
Ein altes Mitglied meinte mal, je höher der Tick desto besser und schaltete high res timer ein, ich schalte das später ab.
07/04/2014 18:12 Wanetrain#10
Beide liegen Falsch..

TwiLight das ist der MemPooler, totaler nutzloser und nicht Aktiver rotz, was den Memory der klasse messen tuten tut wo es eingebaut wurde, nur für Developer da um zu sehen wie schnell dein neues "System" ist. :)

Grundlegend hat es nichts mit dem Server zutun in sachen Frame's, auch nicht direkt mit denen vom Client, sondern eher mit dem Netzwerk wie gesagt, schaut euch an wie die Packete verarbeitet werden, total komisch und sowieso Snapshots, dazu brauch ich ja nichts mehr sagen wa?

Die Neuz ampfängt pro Sekunde 62 Packete (Frame Rate) und nicht mehr, mach das ganze Single Threaded dann kannst du soviel empfangen wie der PC schafft in der Sekunde (CPU), was allgemein die ganze Leistung in der Verbindung, was aber bei weitem nicht die lösung des Problems ist.

Die Framerate der Neuz zu ändern ohne Erfahrung würde ich abraten, darüber sind sämtliche Animationen, SFX und co gesteuert darum ist sie auch auf 62 gebunden. (Noch ein Thread ordentlich gemacht und die sache ist geregelt.)
07/04/2014 22:34 xTwiLightx#11
Quote:
Originally Posted by Wanetrain View Post
Beide liegen Falsch..

TwiLight das ist der MemPooler, totaler nutzloser und nicht Aktiver rotz, was den Memory der klasse messen tuten tut wo es eingebaut wurde, nur für Developer da um zu sehen wie schnell dein neues "System" ist. :)

Grundlegend hat es nichts mit dem Server zutun in sachen Frame's, auch nicht direkt mit denen vom Client, sondern eher mit dem Netzwerk wie gesagt, schaut euch an wie die Packete verarbeitet werden, total komisch und sowieso Snapshots, dazu brauch ich ja nichts mehr sagen wa?

Die Neuz ampfängt pro Sekunde 62 Packete (Frame Rate) und nicht mehr, mach das ganze Single Threaded dann kannst du soviel empfangen wie der PC schafft in der Sekunde (CPU), was allgemein die ganze Leistung in der Verbindung, was aber bei weitem nicht die lösung des Problems ist.

Die Framerate der Neuz zu ändern ohne Erfahrung würde ich abraten, darüber sind sämtliche Animationen, SFX und co gesteuert darum ist sie auch auf 62 gebunden. (Noch ein Thread ordentlich gemacht und die sache ist geregelt.)
Das mit den Frames der Neuz erhöhen war auch nicht unbedingt mein Ernst. ;P