{C++}OpenGl Multiplayer



  • Ich habe jetzt schon ein bischen mit OpenGl herum gespielt und wollte wissen ob es möglich ist einen Multiplayer zu schreiben bzw. welche Methode eurer Meinung nach am besten geeignet ist Daten wie Position des Spielers( Würfel ) zu übermitteln?

    ➡ Es soll erstmals nicht über einen Server laufen sondern über meinen eigenen Laptop.



  • Scchon mal kleine Netzwerkprogramme gescchrieben? Das solltest du auf jeden Fall davor tun ...



  • Ich hab schon mal ein WinSock Programm geschrieben das einen string an ein anderes Programm sendet aber ich bin mir nicht sicher ob das dafür geeignet ist.



  • Du weißt, dass ein Server auch nur ein x-beliebiger Rechner oder einfach nur ein Programm sein kann?. Auch dein Smartphone kann ein Server sein. Ein Server bezeichnet einmal ein Programm welches Dienste anbietet und einen Rechner der solche Programme zu hauf laufen lässt. Dann gibt es noch Hardware, die für den dauerhaften und redundanten Betrieb ausgelegt sind. Ein Rechner der mit solcher Hardware ausgestattet ist wird auch oft Server genannt, obwohl er vielleicht noch nicht mal Serverprogramme am laufen hat(aber in der Regel macht dass dann ja Sinn).

    Wenn Du ein Programm mit Netzwerkkommunikation schreibst dann kannst du es auch lokal auf deinem Rechner testen und mehrere Instanzen laufen und kommunizieren lassen. Da kannst ja deiner Netzwerkkarte unterschiedlich IPs gleichzeitig geben. Und trotzdem wird es dann auch auf verteilten Rechnern laufen.

    Du musst dir halt einen Schnittstelle und ein Protokoll für dein Spiel ausdenken und dann schickst du die Daten per TCP oder UDP auf die Reise.

    So wie sich deine Frage anhört, hast du noch jede Menge Grundlagenwissen nach zu holen und ich denke das wird schon noch einige Monate/Jahre dauern bis du da wirklich ein Spiel mit Netzwerkkommunikation realisieren kannst.



  • Wo/Wie kann ich das Grundwissen am besten lernen?
    -(Video)Tutorials
    -Artikel
    -Funktionen
    -etc.

    ( Wäre gut wenn es einfach erklärt ist um so die Jahre auf Monate zu reduzieren 😃 )



  • Wenn du ein WinSock Programm schon mal geschrieben hast, hast du alles was du brauchst. Bau eine UDP Verbindung auf, beachte dass Pakete verloren gehen oder out-of-order ankommen können, denk dir ein Protokoll aus und leg los. 😉


  • Mod

    cppfan schrieb:

    Ich hab schon mal ein WinSock Programm geschrieben das einen string an ein anderes Programm sendet aber ich bin mir nicht sicher ob das dafür geeignet ist.

    mach es genau so, nur uebermittel positionsdaten (float) statt strings. das reicht vollkommen fuer den anfang.



  • Eine andere Möglichkeit ist die Eingaben, die die Position beeinflussen, mit Zeitstempel zu übertragen.
    Daraus kann dann dein Programm rekonstruieren, wie sich die verschiedenen Spieler bewegt haben. Das hat den Zusatznutzen, dass der Code zum Bewegen ja schon da ist oder sowieso benötigt wird, kein Netzwerkverkehr verbraucht wird wenn jemand nichts tut, und die Übertragung auf Tippgeschwindigkeit begrenzt ist, was nicht sonderlich viel ist. Du musst natürlich irgendwie darauf achten, dass alle Bewegungen korrekt übertragen und Framerate-unabhängig ausgewertet werden, sonst läuft das Spiel nicht synchron.
    Dazu noch TCP statt UDP und du brauchst dich um Paketverlust und Reihenfolge nicht zu kümmern.



  • Das funktioniert leider nicht, wenn da mal ein Paket verloren geht und die Leute nicht gerade einen 10er Ping haben gibt das totale Lags und Sprünge im Spiel.


Log in to reply