AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi lan::client frag spielerposition ab
Thema durchsuchen
Ansicht
Themen-Optionen

lan::client frag spielerposition ab

Ein Thema von chaoslion · begonnen am 1. Dez 2006 · letzter Beitrag vom 1. Dez 2006
Antwort Antwort
chaoslion

Registriert seit: 1. Mär 2006
52 Beiträge
 
#1

lan::client frag spielerposition ab

  Alt 1. Dez 2006, 15:50
Hallo!

Ist es Ratsam, dass der Client bei jedem Durchlauf(mainloop) die Positionen der anderen
Spieler vom Server holt oder tut dies das Netzwerk sehr belasten?
Wie könnte man es sonst regel, wie machen es die FPS Spiele wie Quake??

mfG
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#2

Re: lan::client frag spielerposition ab

  Alt 1. Dez 2006, 16:19
Solche Spiele benutzen Interpolation (wenn das so hieß, ich bin mir da gar nicht mehr sicher, bitte korrigieren wenn falsch!). Du sendest also bei jedem Durchgang nicht komplett alle Spieler-Daten sondern bloß einen gewissen Grundteil (bei Bewegungen Richtung und Geschwindigkeit) und überträgst bloß alle paar Sekunden alle Daten. Aus den Werten für Geschwindigkeit und Richtung musst du allerdings für jeden Client die Berechnung des Spielers selber simulieren, du hast dadurch ja nicht die korrekten Daten.

Ich hoffe das hilft dir ein bisschen...


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: lan::client frag spielerposition ab

  Alt 1. Dez 2006, 16:47
Die meisten machen das mit Vektoren, das heists du kriegst nur die Richtung und die geschwindigkeit der Bewegung und du als Client setzt das um. Natürlich musst du dann ab und an noch die genaue Position wieder nachbessern.
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#4

Re: lan::client frag spielerposition ab

  Alt 1. Dez 2006, 18:42
Ja, das war ein Spaß, als Blizzard mal "aus Versehen" in einem Patch von World of Warcraft die Interpolation abgestellt hatte und alles nur noch wie wild durch die Gegend zuckte

Im Prinzip kann man schon alle Positionswerte übertragen, weil sich sowieso die Richtung etc. sehr schnell ändert. Wenn du das alles überträgst, kann der Client selbst versuchen, die zukünftige Position eines Spielers vorherzusehen und die Animation in die entsprechende Richtung einzuleiten. Das macht sich manchmal dadurch bemerkbar, dass bei schlechten Latenzen jemand erst in eine bestimmte Richtung rennt, dann aber in einer anderen Richtung "geportet" wird. Auch musst du einen Kompromiss finden zwischen "der Server hat immer recht" und "der Client weiß selbst am besten, wie er sich wann wohin bewegt", denn zuweit in die eine Richtung, und der Spieler verliert die Kontrolle über sich selbst, zuweit in die andere Richtung, und man kann prima cheaten (indem man die eigene Position/Richtung vor dem Senden modifiziert).

Wenn es dir speziell um die Frage mit der Mainloop geht:
Kommt ein wenig auf die Framerate an. Mehr als etwa 30 Aktualisierungen pro Sekunde sind eigentlich im Normalfall unnötig. Außerdem kannst du nicht in der Mainloop auf die Information warten (stell dir vor, du hast 100ms Latenz, dann wäre deine Mainloop aber langsam ). Du musst sie also entweder in einem zweiten Thread abfragen oder halt mehr oder weniger asynchron übertragen (also in einem Frame anfordern und eben das nächste mal, wenn Positionen reinkommen, diese verarbeiten).
Du kannst ja auch mal in den Quellcode von Quake2 reinschauen, da gibt es sogar einen Delphi-Port von
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz