Client/Server Echtzeit per UDP - Architekturproblem



  • rapso schrieb:

    das läuft schon immer so, dass nur die serverdaten als die verlässlichen gelten. wenn also ein client einen lag hat und abgeschossen wird obwohl er in wirklichkeit 'bei sich' rumläuft, dann ist der client halt tod. das lässt sich nicht ändern, das war schon bei doom1 so 😉
    bei diesen spielen wird ja auch nicht udp benutzt um tcp nachzubilden, das sind dann die fehlertolleranten protokolle (wie schon mehrfach erwähnt, z.b. position, richtungsvector, timestamp). dort ist es dir egal, ob du nen packetloss hast, das wirkt sich nur zum nachteil für den einen spieler aus, der eine schlechte verbindung hat, alle anderen können spielen.

    rapso->greets();

    Wenn dem tatsächlich so ist, funktioniert das Internet wohl zuverlässiger als ich dachte.
    Dann werde ich erst mal ein redundantes System aufbauen und ggf. später erweitern.

    THX,
    Coax



  • zogg einfach mal doom auf einem sehr langsamen rechner gegen einen fixen. Ich hab miterlebt wie jemand bei mir schon tod war und auf dem nachbarrechner das neue frame noch nicht dargestellt wurde in dem er tod ist 🙂

    du kannst dich auch auf nen server mit nem ping von 500ms verbinden, da wirst du auch miterleben dass du relativ oft gekillt wirst, nicht weil die anderen so gut zielen, sondern weil du für den server für 500ms eine konstante bewegung durchläufst und dann natürlich getroffen wirst.

    rapso->greets();



  • Mhhh...
    Spontan habe ich nur Q3A im Kopf, und dort zischen nach einem Lag auf einmal alle wie wild im Zeitraffer durch die Gegend, oder es gibt einen deconnect. Bei schlechter Verbindung im allgemeinen gibts massives Player-Bouncing.

    Ich kenne nur leider die ganz grobe Arbeitsweise des Q3-Servers...

    rapso schrieb:

    du kannst dich auch auf nen server mit nem ping von 500ms verbinden, da wirst du auch miterleben dass du relativ oft gekillt wirst, nicht weil die anderen so gut zielen, sondern weil du für den server für 500ms eine konstante bewegung durchläufst und dann natürlich getroffen wirst.

    Ich sterb' wohl eher, weil ich so schlecht bin 🙄

    Aber ich denke du hast da Recht...bin schon wahnsinnig oft durch solche "seltsamen" Verhältnisse gestorben. Jetzt muss ich nur noch dazu kommen, den Kram in diesem Leben umzusetzen. Böse knappe Zeit.

    Coax



  • CCOAX schrieb:

    Ich sterb' wohl eher, weil ich so schlecht bin 🙄

    *chrrrr* Is' klar, Meister der Railgun und Trickjump-Guru!! 😃



  • Sgt. Nukem schrieb:

    CCOAX schrieb:

    Ich sterb' wohl eher, weil ich so schlecht bin 🙄

    *chrrrr* Is' klar, Meister der Railgun und Trickjump-Guru!! 😃

    du hast "verführer all unserer (ex)freundinen vergessen" *hehe*

    rapso->greets();



  • rapso schrieb:

    Sgt. Nukem schrieb:

    CCOAX schrieb:

    Ich sterb' wohl eher, weil ich so schlecht bin 🙄

    *chrrrr* Is' klar, Meister der Railgun und Trickjump-Guru!! 😃

    du hast "verführer all unserer (ex)freundinen vergessen" *hehe*

    Kennst Du den Kerl auch?!?! 😕

    😃 👍



  • rapso schrieb:

    Sgt. Nukem schrieb:

    CCOAX schrieb:

    Ich sterb' wohl eher, weil ich so schlecht bin 🙄

    *chrrrr* Is' klar, Meister der Railgun und Trickjump-Guru!! 😃

    du hast "verführer all unserer (ex)freundinen vergessen" *hehe*

    rapso->greets();

    😉 Und du hast vergessen, auch die zukünftigen Freundinnen zu erwähnen...



  • um wieviel langsamer ist TCP gegenüber UDP?

    Ich habe ein ähnliches problem (Client-Syncronisierung)
    habe aber mein Spiel auf TCP aufgebaut...

    Wie funktioniert das mit dem Timestamp in den Paketen?



  • Rodney schrieb:

    um wieviel langsamer ist TCP gegenüber UDP?

    Ich habe ein ähnliches problem (Client-Syncronisierung)
    habe aber mein Spiel auf TCP aufgebaut...

    Wie funktioniert das mit dem Timestamp in den Paketen?

    😕



  • Kann man nicht so genau sagen.
    Und kommt auf den Anwendungsfall an.
    Ein Schachspiel z.B. würde ich der Einfachheit halber nur auf TCP aufbauen.



  • Vor allem hätte UDP da keine Vorteile.



  • nman schrieb:

    Vor allem hätte UDP da keine Vorteile.

    Doch natürlich.
    Durch die geringe Paketgrösse und das "verbindungslose" kommen die Päckchen schneller an (falls sie ankommen).

    Was Du wahrscheinlich (richtigerweise) meinst, ist, daß man bei einem rundenbasierten Spiel wie Schach da jetzt nicht sooo drauf achten muß, und der Nutzen eher gering ist... 😉 🕶



  • Sgt. Nukem schrieb:

    Doch natürlich.
    Durch die geringe Paketgrösse und das "verbindungslose" kommen die Päckchen schneller an (falls sie ankommen).

    Was Du wahrscheinlich (richtigerweise) meinst, ist, daß man bei einem rundenbasierten Spiel wie Schach da jetzt nicht sooo drauf achten muß, und der Nutzen eher gering ist... 😉 🕶

    Naja, dass bei Schach die Latenz sch...egal ist, ist natürlich klar; aber UDP hätte hier den Nachteil dass man erst aufwändig eine Möglichkeit implementieren müsste, festzustellen, ob Pakete vollständig angekommen sind, da es doch verdammt unpraktisch wäre, wenn was verlorenginge. (Wow, so viele Beistriche in einem Satz...)

    Und Schachzüge brauchen ja nicht größer sein als "MV A:3 B:3" oä... 😉



  • Exakt.

    Nichtdestotrotz hat UDP den Geschwindigkeitsvorteil... :p


Anmelden zum Antworten