Netzwerk-Techink bei RTS spielen

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

 

Macintosh

Betreff: Netzwerk-Techink bei RTS spielen

BeitragDi, Dez 07, 2010 23:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey.
Ich wollte mal fragen, wie das bei rts-spielen mit dem netzwerk funktioniert?
Was muss alles gesendet/empfangen werden?
Ich stelle mir das irgend wie total schwer/kompliziert vor, was es sicherlich auch ist.
Es gab hier mal einen thread indem es um RPG-Netzwerk ging... aber das ist ja bei RTS total anders.
Gibt es da irgend was gutes was man lesen kann, oder hat von euch jmand vieleicht sogar erfahrung, oder Wissen?

Interessiert mich wirklich sehr.

Danke

ZaP

BeitragDi, Dez 07, 2010 23:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich handhabe das so, dass es erstmal eine Client-Server Topologie gibt, und die Clients grundsätzlich Anfragen an den Server stellen. Der Server beantwortet die entsprechend und "steuert" so die Clients. Beispiel wäre etwa: Der Clientspieler möchte seine Einheit irgendwo hinschicken. Also übermittelt er dem Host die entsprechende Nachricht und die Koordinaten, die der Host dann validiert (innerhalb der Kartenbegrenzung, usw. usw.) und schickt dann allen Clients die Nachricht, dass die Einheit mit der ID xyz nach da und dort geschickt wird.
Die Clients sagen also nur, was sie möchten, und der Server sagt, was getan wird.
Starfare: Worklog, Website (download)

Tennisball

BeitragDi, Dez 07, 2010 23:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich hab da noch nie was gelesen oder so, aber ich denke es ist so:

Die Clients senden was bestimmtes an den Server, wenn sie z.B. eine Einheit bewegen oder erstellen wollen. Der Server verändert dann die Koordinaten der Einheit bzw. erstellt sie und sendet die Daten aller Einheiten/Gebäude (x, y, z positionen, whatever) an alle Clients.

Man sieht auch, manchmal reagieren bei RTS-Spielen im Multiplayer die Einheiten nicht sofort, wenn man ihnen Befehle gibt.
Deswegen denke ich halt, dass erst von jedem Client die Daten und Befehle aller seiner Einheiten an den Server gesendet werden und dann bekommt jeder Client alles zurück.

mfg,
Tennisball

Edit: War wohl mal wieder jemand schneller.. Wink

BtbN

BeitragMi, Dez 08, 2010 0:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Client kann ja trotzdem schonmal anfangen, die Einheiten dorthin zu schicken, wo er sie erwartet. So sperrt man exploits aus, und hat trotzdem ein flüssiges spielgeschehen.

Dottakopf

BeitragMi, Dez 08, 2010 8:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ganz wichtig bei allen netzwerkspielen ist das es frameunabhänging programiert wurde.
Und das Spiel bei jedem wirklich gleich schnell abläuft. Siehe dazu in der Forensuche

Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

ZaP

BeitragMi, Dez 08, 2010 9:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Sehr gute Idee, danke BtbN Smile
Starfare: Worklog, Website (download)

Firstdeathmaker

BeitragMi, Dez 08, 2010 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, normalerweise wird auch viel interpoliert. D.h. der Client setzt die Befehle schonmal um, schaut aber, dass wenn der Server seine Antwort schickt, er die schonmal bewegte Position langsam auf die richtige vom Server fadet. Beispiel:

Nur X-Achse einer Bewegung, lineare approximation:



Zeit : Aktion

00 : Client: An Server:Laufe los...
01 : Client: Position: 0 + 1 = 1
02 : Client: Position: 1 + 1 = 2
03 : Client: Position: 2 + 1 = 3 Server: an Client: Ok, du bist jetzt auf Position 2 mit Speed = 1
04 : Client: Position: 3 + 1 = 4 | 2 + 1 = 3 -> (4+3)/2 = 3,5
05 : Client: Position: 3,5 + 1 = 4,5 | 3 + 1 = 4 -> (4,5 + 4)/2 = 4,25

usw. Nach einigen Zeitschritten hat der Client die Serverposition erreicht. Dadurch verhindert man, dass die vom Client errechnete Position bei einem Update vom Server "springt".

Es gibt sehr viele solcher Tricks, damit das Spiel "flüssig" erscheint. Oft muss man auch viel rumprobieren, bis man was gutes rausgefunden hat.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group