AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Frame und Zeit-Regelung für Spiele
Thema durchsuchen
Ansicht
Themen-Optionen

Frame und Zeit-Regelung für Spiele

Ein Thema von Homunkulus · begonnen am 6. Aug 2008 · letzter Beitrag vom 6. Aug 2008
Antwort Antwort
Homunkulus

Registriert seit: 31. Jan 2008
6 Beiträge
 
#1

Frame und Zeit-Regelung für Spiele

  Alt 6. Aug 2008, 06:56
Hallo Allerseits,

Ich bin gerade dabei mich in dem Bereich 3d-Programmierung weiterzubilden.
Nachdem ich anfangs einfach mit Timern gearbeitet habe bin ich jetzt aufgrund gewachsener Erfahrung auf die Methode mit Framecountern und TimeBased Movement umgestiegen.
(Kurz erklärt: Den Computer in einer Endlosschleife so viele Frames generieren zu lassen wie er kann und dann abhängig von der Zeit die diese Frames zur Generierung benötigen die Objekte zu bewegen-->somit bekommt man eine zeitabhängige Geschwindigkeit und keine Frameabhängige)
Dazu hätte ich jetzt eine Frage: Die höchste Zeitauflösung bekommt man unter Windows mit "QueryPerformanceCounter".
Die ist ja auch wirklich mehr als genug, im Bereich von Mikrosekunden und so, aber selbst auf der Microsoft-Website wird gesagt das diese Abfrage abhängig vom (Hardware-)System sein kann und auf manchen Systemen gar nicht unterstützt wird (gibts z.B auf Windows Versionen vor NT gar nicht).

Wenn nun aber die ganze Ablauf-Geschwindigkeit eines Spiels darauf basiert ist müssen sich durch diese Ungenauigkeiten doch auch Probleme in Spielen auf Windows (oder Linux -> da die Zeitmessung dort auch in Mikrosekunden mit gettimeofDay erfolgt) ergeben.
Wenn zum Beispiel mein System besonders ungenaue Werte liefert müssten 3d-Shooter doch unterschiedlich schnell laufen.
Oder wenn mein System solche Anfragen erst gar nicht unterstützt dürften Spiele eigentlich gar nicht laufen

Gibt es da eine besonders professionelle Lösung von der ich nichts weiß und die allen von Profis genutzt wird?
  Mit Zitat antworten Zitat
OregonGhost

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

Re: Frame und Zeit-Regelung für Spiele

  Alt 6. Aug 2008, 10:24
Die Ungenauigkeiten sollten nicht allzu groß sein. Achte vor allem darauf, dass du die Abfrage immer vom selben Kern aus ausführst. Wenn dir das nicht reicht, empfehle ich folgenden Artikel:
http://www.gamedev.net/reference/pro...atures/timing/
Der geht relativ ausführlich auf die Möglichkeiten ein, und auch die Links dazu sind nicht zu verachten. Im Endeffekt macht es nichts, wenn das Spiel nach einiger Zeit eine kleine Abweichung hat, denn der Spieler wird sie sowieso nicht bemerken.
Spielst du im Netzwerk, musst du hin und wieder eine Synchronisation durchführen, damit diese Drift-Bewegungen, wenn sie vorhanden sind, ausgeglichen werden. Das geht natürlich immer nur näherungsweise, aber damit fährt man am Ende ganz gut.

Auf aktuellen Systemen (damit meine ich die, die so in Gebrauch sind) hast du eigentlich auch immer den PerformanceCounter zur Verfügung und er sollte auch recht genau sein. Nicht unbedingt die angegebenen Nanosekunden, aber genau genug, um eine Größenordnung von mehreren Millisekunden, wie du sie in Spielen hast, exakt abzumessen.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Homunkulus

Registriert seit: 31. Jan 2008
6 Beiträge
 
#3

Re: Frame und Zeit-Regelung für Spiele

  Alt 6. Aug 2008, 21:34
Danke für die ausfuhrliche Antwort, ich hab das Problem anscheinend etwas überschätzt.
Der Link hat mir sehr weitergeholfen.
Nur eine Kleine Frage: was meinst du mit "immer Abfrage vom selben Kern" ausführen?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Frame und Zeit-Regelung für Spiele

  Alt 6. Aug 2008, 21:39
Auf Multicore-Prozessoren hat jeder kern seinen eigenen Performanccounter, sprich, die Werze sind nicht synchron. Wenn Windows deinen Prozess/Thread jetzt zwischen den kernen hin und herschiebt entstehen Ungenauigkeiten, die z.B. zu Rucklern führen können.
  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 10:05 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