Worldserver framerate / posi bug

01/21/2015 19:04 Terrat#1
Hallo,
da die Posi bugs nerven wollte ich mal gucken wo die Framerate ist (wo die schleife ist) um diese danach mit clock (time) abzupassen auf 60 Frames (derzeit 900-1000).
01/21/2015 19:26 Wanetrain#2
Quote:
Originally Posted by Dreamsläps View Post
Hallo,
da die Posi bugs nerven wollte ich mal gucken wo die Framerate ist (wo die schleife ist) um diese danach mit clock (time) abzupassen auf 60 Frames (derzeit 900-1000).
Du denkst also die Posi Bugs kommen von der Framerate..okay.

Sie auf 60 zu "Binden" ist völlig schwachsinnig, genau wie es im Client ist, das sollte dir bewusst sein, da du damit rein GARNICHT's änderst.. ._.
01/21/2015 19:40 Terrat#3
Quote:
Originally Posted by Wanetrain View Post
Du denkst also die Posi Bugs kommen von der Framerate..okay.

Sie auf 60 zu "Binden" ist völlig schwachsinnig, genau wie es im Client ist, das sollte dir bewusst sein, da du damit rein GARNICHT's änderst.. ._.
Warum ?
Dachte eig. bis jetzt dass es daran liegt das der Worldserver einfach schneller ist :D
01/21/2015 19:42 xTwiLightx#4
Ist dann eher ein Problem des Clients, der mit der viel höheren Menge an Packets nicht klarkommt.

Im übrigen ist die Frame/Tickrate eher Sache der CPU des Servers.
01/21/2015 19:44 MrDemian#5
Hat dann aber nichts mit den Frames zutun.

Ich persönlich programmiere nicht, aber würde es auf Ping und Abfragen von Client zu Worldserver zurückführen, da der Sachverhalt ja gegeben ist das der Client (A) von Server (B) ein "gedropptes" Item aufnehmen will wobei aber B sagt "Moment das liegt an einer anderen Position das Item.

Gruß, Demian
01/21/2015 20:13 WurstbrotQT#6
Du kannst versuchen den Abstand der Notify calls von 200ms zu erhoehen und die OnSnapshot zu optimieren (Bspw. anstelle von macros nen enum in der MsgHdr.h benutzen damit der switch vom Compiler optimiert werden kann)

Falls das noch jemand verfolgt, hab mal nen kleines Programm geschrieben was die Arbeit des konvertierens uebernimmt.

Code:
using System;
using System.IO;
using System.Text.RegularExpressions;

namespace ConvertSnapshot
{
    class Program
    {
        static void Main(string[] args)
        {
            using(StreamWriter sw = File.CreateText("Snapshot.new.txt") )
            using(StreamReader sr = File.OpenText("Snapshot.txt"))
            {
                sw.WriteLine("enum Snapshot {");

                string line;
                Regex regEx = new Regex(@"\s+");
                char[] seperator = { ' ' };
                while((line = sr.ReadLine()) != null)
                {
                    line = line.Trim();
                    if( line.IndexOf("#define") == 0 )
                    {
                        // remove #define and any trailing whitespace
                        line = line.Substring(7).TrimStart();

                        // isolate the define
                        string[] components = regEx.Replace(line, " ").Split(seperator);

                        line = components[0] + ",";
                    }
                    if (!String.IsNullOrWhiteSpace(line))
                        sw.WriteLine(line);
                }

                sw.WriteLine("};");
            }
        }
    }
}
Einfach alle Snapshot defines in ne Snapshot.txt kopieren und dann aus der Snapshot.new.txt in die MsgHdr.h kopieren (noch das letzte Komma entfernen, war mir jetzt zu doof das mit zu beruecksichtigen)

Weitere Anmerkung: Mit Pakettypen in form eines enums koennte man die MessageMap der exen theoretisch in ein Array konvertieren (was wiederrum THEORETISCH die Zugriffszeit verringert)

Weiterer Nachtrag: Ein weiteres Ding was mit Performancetechnisch einfaellt ist die Debug Info die scheinbar jeder mit reincompiled, ohne kriegt man sogar mit vs03 relativ kleine exen hin (siehe [Only registered and activated users can see links. Click Here To Register...])