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

03.09.2015, 15:16

MO oder MMO - Wie oft würdet ihr ein GameState Update zum Client schicken

Hallo liebe SpieleProgrammierer.de Community,

Wie oft würdet ihr GameState Updates vom Server zum Client schicken?
Also z.B. wenn ein Spieler sich bewegt, also die Position geändert wird usw.
Reichen da alle 200ms, oder sollten es mind. 10 Updates pro Sekunde sein?
Dass eine AI die Spieler Position vorausrechnen muss, ist hier in diesem Thread irrelevant.
Aber wie viele Updates sollten mind. pro Sekunde übertragen werden, damit ein Game nicht ruckelt?
Indie Game-Dev Programmierer beim 2D MMORPG Pentaquin | Pentaquin Foren Vorstellung

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

2

03.09.2015, 15:27

WorldOfWarcraft und Konsorten updaten nur jede halbe oder gar ganze Sekunde, soweit ich weiß. Der Rest wird durch wirklich clevere Client Prediction versteckt oder durch Ereignisse wie z.b. "Charakter springt" abgedeckt.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

3

03.09.2015, 15:28

Hallo liebe SpieleProgrammierer.de Community,

Wie oft würdet ihr GameState Updates vom Server zum Client schicken?
Also z.B. wenn ein Spieler sich bewegt, also die Position geändert wird usw.
Reichen da alle 200ms, oder sollten es mind. 10 Updates pro Sekunde sein?
Dass eine AI die Spieler Position vorausrechnen muss, ist hier in diesem Thread irrelevant.
Aber wie viele Updates sollten mind. pro Sekunde übertragen werden, damit ein Game nicht ruckelt?

Ich hab zwar keine Erfahrung im Entwickeln von MMOs, aber denkbar wäre eine Mischung aus "wenige Updates + Clientside Prediction". Sprich: Sobald sich ein Objekt (aus Sicht des Servers) bewegt würde der Server den entsprechenden Clients mitteilen in welche Richtung es sich bewegt. Dann können die Clients die Bewegung zunächst für sich berechnen; der Server kann dann immer mal Updates schicken im Stile "Objekt A müsste jetzt bei <X,Y,Z> sein"; oder auch wenn das Objekt seine Richtung ändern oder gar stehenbleibt.

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

4

03.09.2015, 16:22

Gucken was wie oft und wann geupdated werden muss vor allem.
Ein "spring" Befehl eines Spielers sollte sofort weitergereicht werden.
An welcher Position sich die Sonne gerade befindet reicht vielleicht alle 10 Sekunden...

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

5

03.09.2015, 17:54

Gucken was wie oft und wann geupdated werden muss vor allem.
Ein "spring" Befehl eines Spielers sollte sofort weitergereicht werden.
An welcher Position sich die Sonne gerade befindet reicht vielleicht alle 10 Sekunden...


Gibt auch genug MMOs in denen Sachen wie ein Sprung gar nicht erst gesendet werden, jüngstes Beispiel ist SkyForge. Die senden einfach nur das wichtigste.
WIP Website: kevinheese.de

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

6

03.09.2015, 18:03

Kommt drauf an denke ich was man priorisiert haben will.
Ich denke bei einem MMO könnte es Sinn machen bestimmte Aktionen zu priorisieren. Die mit geringer Prio werden dann nicht mehr gesendet wenn die Netzwerklast gerade hoch ist.
Aber so gar nicht? Dann sieht man andere durch die Luft laggen?

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

7

03.09.2015, 18:36

Es werden einfach nur die Koordinaten übergeben und ggf. interpoliert, ein Sprung(Leertaste) wird ignoriert. Aber ich hab das Spiel nicht lange genug gespielt um mir das genauer anzusehen.
WIP Website: kevinheese.de

Task-Manager

Alter Hase

Beiträge: 1 087

Wohnort: am PC

Beruf: Student

  • Private Nachricht senden

8

05.09.2015, 00:11

ich kenne das auch nur so, dass wenn ein Ereignis eintritt, dass auch direkt gesendet/empfangen wird.
Das wichtige ist dann nur die Priorisierung (Koordinaten z.B. ganz hoch, Chat ganz niedrig). Am besten einfach auf verschiedene Stacks ablegen.

Für eine grobe Idee ganz du dir mal angucken, wie das in Minecraft gemacht wird^^ (ich weiß der code ist zum Teil echt grottig, aber ich habe mich mal vor paar Jahren da am Netzwerk Teil für ein eigenes kleines privates Projekt orientiert, weil ich keine Lust hatte mir ein eigenes Protokoll aus zu denken und es hat echt gut funktioniert :D )
falls ichs i-wo vergessen hab:

mfg
Task-Manager

Rechtschreibfehler sind mein Eigentum und gewollt!

Werbeanzeige