Hallo,
ich habe mich dazu entschlossen ein Spiel nachzuprogrammieren das recht Simpel ist, aber auch sehr Spass macht.
Das Spiel von dem ich rede nennt sich
Curve Fever und es ist ein Multiplayer Spiel das ähnlich aufgebaut ist wie Snake, nur das man einen Strich hinter sich her zieht der nicht weg geht, aber einige Lücken drin hat wo man durchfahren kann. Das Ziel ist als letzter "Wurm" zu überleben.
Das Spiel an sich zu entwickeln ist kein Problem. Das habe ich schon erledigt, allerdings wollte ich das Netzwerkzeugs am schluss machen, da ich es noch nie gemacht habe, also habe ich einfach mal das Spiel gemacht und dann bemerkt dass das alles nicht so wirklich läuft wie ich das wollte da ich Performanceprobleme hatte. Ich habe mich nun dazu entschlossen den Server und den Client zu trennen und den Server für mehrere Räume zu optimieren und nicht nur für eine aktive Spielsitzung.
Was ich mir gedacht habe:
Client-Anwendung:
- eine Lobby in der man den Raum auswählen kann in dem man spielen will oder auch Räume erstellen kann die z.B. mit einem Passwort verschlossen sind.
-
Form-Thread: das Spiel welches nur Zeichnet und nur die Bewegung seit dem letzten bekannten Punkt den man vom Server kennt berechnet (Wird später jedoch von den Originalen Serverdaten ersetzt).
-
Eigener Thread: Client Verbindung zum Server. Synchronisiert Spieldaten wie Position, Richtung, uws. aller Spieler und Items.
Server-Anwendung:
- Verwaltung von Räumen
- Verwaltung von Verbindungen
-
Pro Raum ein Thread: Berechnung der nächsten Positionen mit delta timing und die aktuellen Spieldaten den Spielern verschicken.
Wäre dies so theoretisch möglich?
Ich habe schon ein wenig mit TidTCPClient und TidTCPServer rumgespielt jedoch verstehe ich es nicht wirklich.
Ich kann einen Client erstellen der Connecten, Disconnecten und einen UnicodeString verschicken kann (wäre jedoch nicht so optimal für ein spiel oder?) und einen Server der Verbindungen und Trennungen wahrnimmt und UnicodeStrings empfangen kann im Execute Event. Jedoch habe ich beim Server keine Ahnung von wem die Nachricht kommt, da ich das irgendwie nirgends sehe und ich kann den Clients irgendwie auch keine Nachricht verschicken...
Wie gesagt, ich habe bisher die
Indy Komponenten benutzt da ich viel gutes über sie gehört habe, jedoch finde ich nicht wirklich viel über eine einfache Server/Client verbindung mit den Komponenten auf Google.
Ich habe bisher noch nicht viel erfahrung mit
TCP/
IP und wäre dankbar wenn mir jemand helfen könnte
MfG