Wie Server mit Client kommunizieren lassen?
Hey, ich habe ein kleines Spiel in Pygame gebaut in welchem es darum geht Flaggen zu erraten. Nun will ich ein 1vs1 Modus implementieren. Dafür brauche ich ja nen Server.
Ist es dabei Schlauer eine API zu benutzen um zwischen den beiden Parteien eine Kommunikation herzustellen oder etwas wie Sockets?
3 Antworten
Die Entscheidung über die Struktur hängt vor allem von dem Konzept hinter diesem Spielmodus ab.
- Wenn die Partien zwischen zufälligen Spielern, die sich nicht gegenseitig kennen, ausgetragen werden sollen, brauchst du einen zentralen Server. Der könnte entweder das komplette Spiel leiten oder zumindest das Finden von Paaren arrangieren (Clients verbinden sich mit zentralem Server > Paarbildung > Clients bekommen jeweils Verbindungsdaten des ihm zugewiesenen Partners für P2P).
- Für private Partien genügt eine P2P-Verbindung / eine Verbindung, bei der einer der beiden Spieler den Host (Serverrolle) stellt. Die Verbindungsdaten müssen sich beide Spieler privat austauschen.
Für die konkrete Implementation kannst du Sockets verwenden (etwas Komplexeres benötigst du sicherlich nicht) oder du schaust dir eine der zahlreichen Bibliotheken an, die bereits für Multiplayerspiele mit Pygame entwickelt wurden (z.B. pygnetic, PodSixNet).
Meiner Meinung nach ist es sinnvoller Sockets zu verwenden. Sockets sind einfacher zu implementieren und bieten mehr Kontrolle über die Kommunikation zwischen den beiden Parteien. Wenn du eine API verwendest, müsstest du dir zuerst überlegen, wie die API implementiert werden soll. Du musst auch entscheiden, welche Funktionen die API bereitstellen soll.
Ich würde es mit sockets machen im Gegensatz zu einer API auf http Basis, wenn ich dich jetzt richtig verstanden habe. Bei einer API musst du ständig pollen während du eine Socketverbindung offenhalten kannst.