Laufen einer Spielfigur mit Server abgleichen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Lopt
User
Beiträge: 9
Registriert: Freitag 11. März 2011, 09:36

Dienstag 31. Juli 2012, 18:42

Hallo!

Da ich momentan am verzweifeln bin, frag ich hier um rat.
Es geht um ein Spiel, bei der ich gerade die Spielfigur bewegen will. An sich klappt das ohne Probleme, ich kann mit WASD die Figur steuern. Nun baue ich das aber gleich mit "Multiplayer", es gibt einen Server an denen die Spieler ihre Informationen schicken.

Der Client, die GUI also, berechnet alle paar millisekunden ein neues Frame, zu diesem Zeitpunkt wird auch die neue Position der Spielfigur berechnet und die Spielfigur an die neue Position gesetzt. Das klappt an sich - ich kann sie clientseitig frei rumbewegen.
Nun möchte ich diese Information aber mit dem Server teilen, das diese die weiterverbreiten kann, und vom Server korrigieren lassen - falls der Client betrügt.
Das bereitet mir immense Schwierigkeiten...

Folgendes Probier ich gerade:
Sobald zwischen zwei Frames eine Richtungsänderung ist, wird diese Information inklusive der Zeit zur letzten Bewegungsänderung zum Server geschickt. Der Server gleicht das mit seiner Zeit ab (+ ein wenig differenz wegen lag), nimmt dann zumeist die Clientseitige differenz und berechnet Serverseitig die Koordinaten, die dadurch dann an den Client geschickt werden, und dort die Spielfigur auf diese Koordinaten gesetzt wird.
Die Lösung funktioniert auch noch nicht vollständig, aber es ist erstmal ein Ansatz.

Ich wollte anfragen, welche Möglichkeiten gibt es? Wie kann man das noch lösen? (Wie machen es bekannte Spiele, z.B. Ego Shooter, da ist das ja verdammt flüssig?)
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Dienstag 31. Juli 2012, 18:49

Lopt hat geschrieben:Ich wollte anfragen, welche Möglichkeiten gibt es? Wie kann man das noch lösen? (Wie machen es bekannte Spiele, z.B. Ego Shooter, da ist das ja verdammt flüssig?)
Zu dem Thema las ich vor geraumer Zeit mal einen Blogpost von Armin Ronacher: immersedcode.org
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Donnerstag 2. August 2012, 08:57

Armins Blogpost gibt die passenden Startinfos.
(Ich fand ihn super :-) )


Da ich sowas auch schonmal gemacht habe, aber für single player,
brauchte ich keine Lag Compensation.

Generell gibts einige gute Bücher speziell zur Hit Detection und Client-Server-Network Entwicklung.
Die solltest du dir alle ansehen falls das was richtiges werden soll.

Kleine Warnung vorweg: bis es richtig gut funktioniert brauchts RICHTIG viel arbeit ;)
Antworten