![]() |
Syncrone "Spieloberfläche" über Netzwerk
Hallo,
ich möchte ein Programm schreiben, wo jeder wenn er das Programm öffnet das gleiche sieht. Es soll quasi ein "Spiel" gestartet werden. Auf dem Spielfeld dieses Spiels sollen sich Punkte bewegen. Wenn jetzt jemand das Programm startet und das gestartete Spiel auswählt, soll er jeweils das gleiche sehen, also die gleichen Positionen der Punkte usw. wie alle anderen die dieses Spiel anschauen. Das ganze habe ich mir so gedacht: 1. Wenn man das Programm startet, wird eine Liste aller Spiele geladen. 2. Wenn man ein Spiel auswählt, wird man selbst in eine Liste der Teilnehmer auf einem Webspace eingetragen und diese Liste aller Teilnehmer geladen, die alle 10 Sekunden oder so aktualisiert wird. 3. Ein Teilnehmer ist immer Server und soll die Bewegungen der Punkte berechnen und den Status an andere Teilnehmer schicken. 4. Wird der Server aus irgendeinem Grund disconnected, wird der Serverstatus auf einen der anderen Teilnehmer übertragen. Aber wie schaffe ich es jetzt, das die Daten von einem Server an einem Client über das Internet geschickt werden, sodass alle Teilnehmer die absolut identische Positionen der Punkte vorfinden? Also was brauch ich dafür?(TIdTCPServer und TIdTCPClient?) Und wie muss das Ganze dann aussehen? Wie erreiche ich Clients die hinter Proxyservern sitzen, bzw. wie kann ich die Teilnehmer(Clients) auf meinem Webspace registrieren, also welche Informationen brauche ich um diese dann auch zu erreichen? (IP des Proxys?) Danke schonmal für Tipps :angel: |
Re: Syncrone "Spieloberfläche" über Internet
Also für das gleiche Spielfeld nutzt man idR. die Tatsache, dass Zufallszalen aus dem Rechner keine Zufallszahlen sind. Es wird nur der RandomSeed verteilt und dann können alle Clients sich die Karte selbst berechnen.
Bei der Liste der Spiele wirst Du nicht um einen zentralen Server herumkommen (am billigsten wäre einer der bei Dir zuhause läuft und per dyndns bekannt wird). Allgemein Netzwerkkommunikation geht über sockets, da soltest Du hier genug Themen zu finden. Clients hinter Proxyservern erreichst Du nach dem gleichen Prinzip, wie die VoIP Programme vorgehen (stand in einer der letzten c'ts was dazu drin). Dazu brauchst Du aber auche einen frei erreichbaren festen Server. |
Re: Syncrone "Spieloberfläche" über Netzwerk
Ich denke ich werde es vllt doch erstmal über das lokale Netzwerk realisieren.
Das ganze sollte dann dezentral funktionieren. Also sollte jeder Client die Daten für jedes Spiel besitzen, sodass jeder das Spiel selbst berechnet, aber trotzdem bei jedem das Selbe zu sehen ist. Also muss ich: -Das Netzwerk nach Clients scannen(Wie?) -Ein neu erstelltes Spiel an alle Clients senden damit alle die gleichen Daten haben Fragen: Wie scanne ich nach allen Clients? Welche Komponenten soll ich verwenden? TIdTCPServer/-Client? |
Re: Syncrone "Spieloberfläche" über Netzwerk
Netzwerk nach Clients scannen: Geht mit einem
![]() |
Re: Syncrone "Spieloberfläche" über Netzwerk
Wenn die Server aus den Clients ausgewählt werden, bedenke, dass es langsame Inet-Verbindungen und so gibt die dann alles verzögern (-> doofe Ping).. vllt vorher bissl gewichten?
|
Re: Syncrone "Spieloberfläche" über Internet
Zitat:
Edit: Hab schon: Einfach "RandSeed" auf eine Zahl setzen :) |
Re: Syncrone "Spieloberfläche" über Netzwerk
Grünau. Und wenn alle den gleichen RandSeed haben und alle die einzelnen Komponenten der Map in der gleichen Reihenfolge berechnen (was ja per se passiert, da alle den selben Code zur Berechnung nutzen), kommt bei allen das selbe raus.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 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