Multiplayer Game x)

  • VB.NET

SSL ist deaktiviert! Aktivieren Sie SSL für diese Sitzung, um eine sichere Verbindung herzustellen.

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    Multiplayer Game x)

    Hey Leute xD
    Hab mal ne frage ;)
    Hab mir gestern aus lw kleinen Multiplayer Spiel geschrieben
    läuft auch alles wunderbar nur habe ich Probleme mit der Verbindung
    naja habe es momentan mit Tcp ([VB.NET] Multiserver (TCP))
    Gelöst aber iwie ist es zu langsam wie ich finde , also mann kann Gegner abknallen aber lagt halt bissel
    hatte mir schon überlegt es iwie mit UDP zu machen doch davon hab ich noch weniger Ahnung xD
    sollte dann möglichst so sein das ich den Game Server bei mir hoste und dann freunde drauf join können ohne das es großartig lagt xD
    Bitte um Tipps und eventuell links von Möglichkeiten das Problem zu lösen xD

    Lg Toshii x)
    Erklär mal das "laggen".
    Denn wenn du auf localhost spielst...nunja..hast du praktisch unendliche Geschwindigkeit.

    Ansonsten musst du etwas am Client/Server-Verhalten beim Senden verändern.
    UDP wird dir bei einem bescheidenen Verhalten im Senden/Empfangen nichts bringen, da es ansich langsam ist.

    Also: erklär das laggen und zeig mal, wie du sendest, wann du sendest und wie du empfängst und das auswertest.
    Fragen zur Programmierung? Das Forum!
    Hast du grad Lambda gesagt? User.Any( u => u.Username.Equals(this.Username) ) ? User.Single( u => u.Username.Equals(this.Username)).Execute( e => e.Signature.Edit(SignatureEdit.NonStatic | SignatureEdit.WIP) ) : throw new UserNotFoundException();
    Okay. Du hast meine Fragen nicht verstanden.

    Erklär das laggen: Wie äußert sich das laggen? Was passiert während des "laggens"?
    Zeig mal wie/wann du sendest und wie du empfängst und das auswertest:
    Wie verschickst du die Pakete? (Protokoll wäre hilfreich)
    Machst du penetrations-senden an den Server, oder nur bei Veränderungen? Wie schnell kann der Server auf die Veränderungen reagieren und die weiterschicken?
    Wie lässt du empfangen?
    Und..Wie wertest du anschließend das gesendete aus?
    Verbindest du dich per localhost, per WLAN oder LAN?
    Fragen zur Programmierung? Das Forum!
    Hast du grad Lambda gesagt? User.Any( u => u.Username.Equals(this.Username) ) ? User.Single( u => u.Username.Equals(this.Username)).Execute( e => e.Signature.Edit(SignatureEdit.NonStatic | SignatureEdit.WIP) ) : throw new UserNotFoundException();
    das laggen ist kontinuierlich , bzs das Game ruckelt ...

    Senden/Empfangen wie beim link
    Der String der gesendet wird schaut Beispielweise so aus:
    "state;230,203;180;0.39;2;80;50;120;-1"

    Client -> Server -> All Clients (Server berechnet Schon mal nix und gibt einfach nur weiter)

    Gibt es nicht etwas schnelleres als tcp? XD

    PS:Inet verbindung kann nicht zu langsam sein , hoste öfters für freunde Minecraft Server und das läuft wunderbar xD
    Du antwortest nicht auf meine Fragen.
    "Wie äußer sich das".."Das Game ruckelt"..ja das is normal. Aber WIE.

    "Machst du penetrationssenden?" .. okay..keine Antwort.
    "Wie empfängst du die Daten"...keine Antwort.
    "Wie verwertest du die Daten"..keine Antwort.
    "Wie verbindest du dich"..keine Antwort.

    So kann man dir nicht helfen.
    Außerdem: was soll das ganze werden? Wie ist der Multiplayer aufgebaut? Wie funktioniert dieser, bzw. wie sollte dieser funktionieren?
    Wenn du etwas direkter auf die Fragen eingehen würdest, könnte dir deutlich schneller geholfen werden.
    Fragen zur Programmierung? Das Forum!
    Hast du grad Lambda gesagt? User.Any( u => u.Username.Equals(this.Username) ) ? User.Single( u => u.Username.Equals(this.Username)).Execute( e => e.Signature.Edit(SignatureEdit.NonStatic | SignatureEdit.WIP) ) : throw new UserNotFoundException();
    "Wie äußer sich das".."Das Game ruckelt" -> Mann sieht halt die anderen player sich nicht flüssig bewegen

    "Machst du penetrationssenden?" -> was das?
    "Wie empfängst du die Daten" ->

    VB.NET-Quellcode

    1. Private Sub Listen()
    2. While client.Connected
    3. Try
    4. Me.Invoke(New DAddItem(AddressOf AddItem), streamr.ReadLine)
    5. Catch
    6. MessageBox.Show("Verbindung zum Server nicht möglich!")
    7. Application.Exit()
    8. End Try
    9. End While
    10. End Sub
    ?? xD



    "Wie verwertest du die Daten" -> Wird gesplittet und verarbeitet?
    "Wie verbindest du dich" .>

    VB.NET-Quellcode

    1. client.Connect("IP", 8000)
    oder wie soll ich das vestehen?XD


    PS: String erst in bin binäre Daten umwanden? ich Versuchs mal , schon mal danke ^^ ;)
    Gott nein, Klar dass das laggt.
    Never ever mach Me.Invoke(New DAddItem(AddressOf AddItem), streamr.ReadLine()).
    Mach das in einem Hintergrundthread und lass im Paint-Event die Sachen nurnoch darstellen.
    Zu dem wie verwerten:
    Ich mein eig. wie du die Daten speicherst, wie du mit den Daten umgehst, wie diese weiterverwendet werden etc.

    Verbindung: Hab ich schon oben gefragt: localhost, LAN, WLAN?

    Penetrationssenden:

    Quellcode

    1. do loop
    2. streamWriter.WriteLine("penetration")
    3. while (true)
    Fragen zur Programmierung? Das Forum!
    Hast du grad Lambda gesagt? User.Any( u => u.Username.Equals(this.Username) ) ? User.Single( u => u.Username.Equals(this.Username)).Execute( e => e.Signature.Edit(SignatureEdit.NonStatic | SignatureEdit.WIP) ) : throw new UserNotFoundException();
    Nein, nicht erst in binäre Daten umwandeln ...
    Aber anstatt so was:

    VB.NET-Quellcode

    1. Dim posStr = x & ";" & y
    2. streamw.WriteLine(posStr)

    So was:

    VB.NET-Quellcode

    1. ' BinaryWriter vom NetworkStream erstellen
    2. binaryw.Write(x)
    3. binaryw.Write(y)
    Dann kannst du's am anderen Ende wieder mit einem BinaryReader und seinen Read-Funktionen auslesen.
    Das spart einiges an Platz.
    <p>hi @tanoshiisuta,</p>

    <p>ist zwar schon ein par Jahre her der Beitrag, aber ich sitze an einem &auml;hnlichen Spiel und komme beim Thema Multiplayer einfach nicht weiter, k&ouml;nntest du mir, wenn es machbar w&auml;re, den source code von deinem spiel schicken dass ich mir das mal anschauen kann und es bei mir auch umsetzen kann? :P</p>

    <p>&nbsp;</p>

    <p>W&auml;re mega nett von dir danke :)</p>
    Viel Erfolg,
    -MaxeStudios
    Hey Totengräber,

    wenn man mal schaut, dann sieht man das der User schon als "Gast" geführt wird. Also sein Account ist nicht mehr aktiv.
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Thema aus oben genanntem Grund geschlossen.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Fragen per PN, denn dafür ist das Forum da :!: