![]() |
Überarbeitung Netzwerkspiel
Hi,
Ich habe zusammen mit ein paar Freunden ein Netzwerk Spiel geschrieben, was jetzt aber so verbuggt ist, dass wir es gerne noch einmal komplett neu entwickeln wollen. Knackpunkt ist hier jetzt erstmal die Kommunikation von Server und Clients. Bisher läuft das ganze so ab, das es einen Spielcounter gibt, anhand dessen Client und Server abgleichen können, ob es veränderungen gab. Anfangs ist dieser Spielcounter 0 und bei jedem Zug, den ein Spieler ausführt wird er um eins erhöht. Jeder Client fragt nun kontinuirlich nach ob es etwas neues gibt. Dazu schickt er seinen Spielcounter an den Server, dieser gleicht ihn mit dem aktuellen ab und schickt entweder zurück, dass es nichts neues gibt, oder aber die Veränderungen und den neuen Spielcounter. Soweit das grundlegende Konzept, was auch funktioniert. Da wir das ganze bei der Neu entwicklung natürlich besser machen wollen, stellt sich hier die Frage, wie kann man den Overhead möglichst gering halten kann. 90% der Zeit wird nur sinnlos der Spielcounter geschickt und es kommt die Antwort das sich nichts getan hat. Es gibt bei dem Spiel halt sehr viel Freilauf, indem einfach nichts passiert (Vergleichbar mit Schach), trotzdem soll aber jeder Client so schnell wie möglich über Veränderungen informiert werden. Es fehlt halt irgendwie die Möglichkeit vom Server aus Nachrichten an die Clients zu schicken. Überlegt hatten wir jetzt schon, ob jeder Client auch einen ServerSocket aufmachen soll, damit der Server dann aktiv die Kommunikation anstoßen kann. Allerdings muss dann auf Client Seite auch eine Portfreigabe gegeben sein, was nicht so schön ist. Ausserdem muss der Server dann jede Menge Sockets und dementsprechend viele Ports verwalten. Auch sehr unschön. Bisher hatten wir das ganze mit TClientsocket und TServerSocket gelöst. Hier haben wir dann per SendText die Informationen übermittelt. Habt ihr vielleicht Tipps wie sich soetwas am effizientesten Lösen lässt? Ich bin mir sicher das diese Problemstellung öfters schon aufgetreten ist, ich konnte aber leider nichts passend finden. Sry dafür. vielen dank aber auf jeden Fall schonmal :) mfg Antigo |
Re: Überarbeitung Netzwerkspiel
niemand einen tipp? *push*
|
Re: Überarbeitung Netzwerkspiel
Hallo,
mal ne frage vorweg: Wieso sendet der Server nicht einfach an die Clients wenn sich was geändert hat? So fragen die clients nicht ständig den Server ob sich was geändert hat |
Re: Überarbeitung Netzwerkspiel
Zitat:
|
Re: Überarbeitung Netzwerkspiel
Zitat:
Zitat:
Wie machen andere Netzwerkspiele das ganze denn? PS: Danke für die Antworten ;) |
Re: Überarbeitung Netzwerkspiel
Hallo,
der ServerSocket kann so z. B. senden:
Delphi-Quellcode:
ServerSocket.Socket.Connections[Client].SendText(Text);
|
Re: Überarbeitung Netzwerkspiel
@Helmi, das geht tatsächlich, habs grad getestet :shock:
wenn wir das vorher gewusst hätten hätten wir uns eine Menge Arbeit sparen können... naja egal ^^ Gibt es zu dem ganzen ActiveConnections Kram ein vernünftiges Tutorial? Das ist mir noch nicht ganz geheuer. |
Re: Überarbeitung Netzwerkspiel
Zitat:
|
Re: Überarbeitung Netzwerkspiel
So unwahrscheinlich ist das aber nicht.
wenn du auf ner Lan bist wo ettliche leutchen Zocken. da ist so viel raffic im netz da geht das udp zeug andauernd verloren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz