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

Schorsch

Supermoderator

  • »Schorsch« ist der Autor dieses Themas

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

1

09.10.2011, 20:28

Animation und Netzwerk

Hey,
ich mache mir zur Zeit einige Gedanken darüber, wie ich Animationen in Netzwerkfähigen Spielen am besten umsetzen sollte. Bei meinem Ansatz wird die Spiellogik komplett vom Server übernommen. Die Clients senden ihren Input in Form von Befehlen an den Server, welcher diese dann validiert und gegebenenfalls umsetzt. Benötigte Daten wie Animation etc gehen dann an die Clients. Mir geht es jetzt um Animationen im Client. Zum Beispiel Laufanimationen. Ich hatte überlegt, dass der Server unter Umständen Events sendet, wie zum Beispiel Charakter1 beginnt Laufanimation und Charakter1 beendet Laufanimation. Andernfalls könnte auch gesendet werden, in welcher Animation sich welcher Charakter befindet und wie lange er diese Animation schon ausführt. Es gibt mit Sicherheit noch viele andere Ansätze. Mir geht es jetzt um eure Erfahrung. Womit seid ihr gut gefahren. Was hat gut funktioniert und was nicht?
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

09.10.2011, 23:06

Da es wohl keinen Einfluss auf das Spielgeschehen hat, würde ich sowas komplett nur am Client regeln.

Schorsch

Supermoderator

  • »Schorsch« ist der Autor dieses Themas

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

10.10.2011, 00:15

Wie würdet ihr dass denn in so ein Konzept einbetten? Meine Spieler sind ja im Client einfach nur Objekte, die zwischendurch ein Positionsupdate vom Server bekommen. Woher weiß der Spieler denn dann was er grad macht? Vom Ablauf wäre es bei mir (Beispiel laufen):
Taste für Vorwärts wird gedrückt.
Event wird an den Server gesendet.
Server validiert diese Eingabe und führt Aktion an dem jeweiligen Objekt aus.
Server sendet Objektposition an alle Clients.

Das bedeutet, der Server weiß, dass sich das Objekt nun bewegt. Es wird ja irgendeine Funktion aufgerufen dafür. Die Clients wissen dies aber noch nicht.
Wenn der Server den Clients davon nichts sagt, wissen diese davon auch nichts. Für den eigenen Spieler könnte ich es natürlich im Client lösen. Das Problem wären dann aber die anderen Spieler, die von einem anderen Client gesteuert werden. Diese sollen ja auch animiert dargestellt werden.
Da müsste der Server also was von sich geben. Jetzt stellt sich mir die Frage, ob mein Ansatz vielleicht etwas bescheiden ist und ich einen anderen Weg verfolgen sollte. Hat jemand Erfahrung mit sowas? Habe zwar auch schon kleinere Sachen mit Netzwerk zum laufen gebracht, hatte aber bis jetzt nie größere Projekte oder etwas in dem Stil.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

10.10.2011, 00:47

Du wirst doch Clientseitig irgendeine for von Prediction/Interpolation haben. Die Info ob der Spieler gerade läuft oder nicht, hast du dort also notwendigerweise sowieso schon...

Schorsch

Supermoderator

  • »Schorsch« ist der Autor dieses Themas

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

10.10.2011, 01:52

Da sagst du was. Soweit habe ich noch gar nicht gedacht. Ich werde mein Konzept mal dahingehend weiterentwickeln. Dann habe ich dieses Problem gleich mitgelöst. Danke;)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

7

10.10.2011, 03:51

Zumindest soweit ich den Quellcode verstehe, wird bei Quake 2 übrigens der Animationsframe etc. übertragen (also so ähnlich wie du es vor hattest).

Powerpaule

Treue Seele

Beiträge: 162

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

8

10.10.2011, 18:55

Bei Empires die Neuzeit wird de facto JEDER Mausklick + Tasteneingabe mit Zeitstempel übertragen, so dass daraus entsprechend alles berechnet werden kann.... also an alle Spieler ; )

Werbeanzeige