Mehrere Packets?

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Mehrere Packets?

    Hi,
    da ich gerade versuche zu lernen wie man mit der 39Dll umgeht und auch schon viele Tests durchgemacht habe,
    bin ich auf ein Problem gestoßen:
    Wenn der Spieler sich bewegt, wird es bei dem anderen Spieler mit einem Delay angezeigt. Sprich ich bewege mich und ca 1.5-3 sekunden später bewege ich mich erst im anderen clienten. Benutze ich den Chat wird das Delay noch größer.
    Gäbe es eine Möglichkeit mehrere Packets gleichzeitig zu senden damit dies nicht passiert?
    z.B in einem Kanal-System?

    Client sendet Bewegung [Kanal1]
    Client sendet Chat [Kanal2]
    (beides passiert gleichzeitig)

    Server wartet auf Client...
    Server bekommt von Kanal1 und Kanal2 die Packets und bearbeitet diese.
  • So macht man es ja auch, falls ich dich jetzt richtig verstanden habe. Hast du dir denn schon 39dll Tutorials angeguckt? Man Sendet Nachrichten mit einer vorgehenden Nachrichten-ID, mit welcher dann der Empfänger erkennen kann, um welche Art Nachricht es sich handelt. Also Zb:

    GML-Quellcode

    1. clearbuffer()
    2. writebyte(1)
    3. writeshort(x)
    4. writeshort(y)
    5. sendmessage(global.tcp)




    Dann wird beim Empfänger mit Hilfe eines Switches diese Nachricht erkannt:

    GML-Quellcode

    1. while (1)
    2. {
    3. msize=receivemessage(tcp);
    4. if msize=0 { script_execute(logout)}
    5. }
    6. if (msize <=0)
    7. break;
    8. mid = readbyte();
    9. switch (mid) {
    10. case 1: //Users coords
    11. xx=readshort()
    12. yy=readshort()
    13. break;
    14. case 2: //Chat
    15. script_execute(chat) break;
    16. }}
    Alles anzeigen


    Edit: " [gml] " hat so seine Formatierungsmacken...
  • Genauso mach ich es auch trotzdem erscheinen Delays.
    Jedoch habe ich feststellen müssen, dass die Delays nur bei den Spielern da sind, die schon im Spiel vorher sind.
    Sprich ich connecte neu und der bereits vorhandene spieler hat dann delays, jedoch ich selber nicht.