Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

25.09.2009, 15:32

2D Netzwerkspiel Spielerbewegung

Hallo,

ich möchte kein Thema entfachen wo es heißt man sollte mit dem und dem Anfangen und sich nicht an Netzwerk-Themen oder sonstiges versuchen ;)

Ich hab mit der Clanlib nun inzwischen ein Client-Server-System programmiert.

Bei Clanlib funktioniert das ganz gut über Event-System etc.

Aufjedenfall betritt man nach dem Login jetzt die Spielewelt. Nun sollen dort aber auch andere Spieler angezeigt werden. (Kein Problem hab ich)

Nun hab ich allerdings ein Problem, unszwar wenn sich die Spieler jetzt bewegen (Was ja in einem Spiel mal vorkommen kann) dann verändern sie ihre Position und, nun bei meiner Spielversion passiert das ganze etwas abgehackt heißt, Der Spieler ist noch an Position A dann würd er sich wahrscheinlich bewegt haben und ist danach an Position B aber der Weg dazwischen wird bei mir nicht angezeigt..

Und ich überlege jetzt die ganze Zeit wie ich das realisieren soll..
Also es sollen sich mehere Spieler ja parallel bewegen und sehen können ohne gravierende Unterschiede.

Ich hoffe ihr habt mein Problem annährend verstanden ? ..

Gruß,
xenus

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

2

25.09.2009, 15:35

Interpolieren ;) Du übermittelst nicht absolute Positionen, sondern Richtungsvektor und Bewegungsgeschwindigkeit. Beim Client gehst du dann davon aus, dass diese Bewegung "endlos" stattfindest und zeichnest damit.

Allerdings sollte man trotzdem hie und da auch nochmal absolute Positionen zur Absicherung übertragen.

3

25.09.2009, 18:53

Zusätzlich kannst du ja noch die "wirkliche" Position mitschicken und deine Interpolierte Richtung danach ausrichten.

D.h. Du berechnest die vortlaufende Position (wie es Das Gurke beschrieben hat) ausgehend von der neuen "wirklichen Position".

Um jetzt das Springen zu vermeiden, interpolierst du eine Laufrichtung ausgehend von der Position der Figur zu dem Punkt den du ausgehend von dir "wirklichen" Position berechnet hast.

Hier mal eine kleine Grafik dazu:

(Link)

Stazer

Alter Hase

Beiträge: 468

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

4

25.09.2009, 21:10

-

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Stazer« (12.11.2012, 17:28)


killmichnich

unregistriert

5

26.09.2009, 09:14

aber kann ich nicht einfach die absolute position schicken und dann sagen er soll in die richtung "gehen", also auch mit richtung und geschwindigkeit, dass das ganze halt flüssig läuft?

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

6

26.09.2009, 10:07

Nicht ganz. Wenn z.B. ein Paket zu spät ankommt und die Figur im Client schon weiter gelaufen ist, die Position im Paket aber eine andere ist bekommst du Sprünge in die Bewegung.

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

7

26.09.2009, 12:33

Interpolieren musst du in jedem Fall... entweder linear, bilinear, oder du verwendest splines. Wobei ersteres die einfachste Methode ist. Dafür aber auch die unschönste!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

8

27.09.2009, 12:27

Ok also die Technik an sich hab ich verstanden .. aber wie ich das umsetzen soll noch nicht ^^

Also ich hab Richtungsvektoren und eine Geschwindigkeit anhand der der Charakter bewegt wird so..

Wie genau funktioniert die Interpolation ?

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

10

27.09.2009, 12:36

Ja danach hab ich schon gesucht bei google aber so richtig durchblicken tu ich da noch nicht ^^

Also dient dies dazu einen Graphen zu berechnen der die Bewegungspunkte dann ausgibt ?

/edit:
Derzeit überlege ich ob ich überhaupt Richtungsvektoren benötige oder ob nicht 2 Positionsvektoren reichen ..

Weil bei linear seh ich oft die Form

Ergebnis = Wertpaar1 + Faktor*(Wertpaar2 - Wertpaar1)

Werbeanzeige