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

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

11

03.03.2013, 13:13

In keinem Spiel der Welt außer Pong ist die Frametime jedes mal gleich. Wenn Du es so genau brauchst, bitteschön. Ich halte das für ausgemachten Unfug, weil diese Info ohnehin niemandem etwas nützt.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

daG

Treue Seele

Beiträge: 130

Wohnort: Hamburg

  • Private Nachricht senden

12

03.03.2013, 16:08

Für die reine FPS-berechnung reicht die Genauigkeit völlig, da sind wir uns sicher einig. Ich persönlich berechne aber auch immer die Zeit die benötigt wird pro Frame und gebe dann jede Sekunde den durchschnittlichen Wert aus. Die FPS berechne ich dann gleich mit.

Aber wieso denkst du, dass die Stopwatch Klasse overkill ist? Oder meinst du nur auf die FPS bezogen?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

13

03.03.2013, 16:11

Ich meine, dass das für eine FPS-Anzeige völlig überflüssig ist. Wozu extra eine Stopwatch erzeugen und mitschleppen, wenn die Genauigkeit von DateTime mehr als ausreichend ist.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

daG

Treue Seele

Beiträge: 130

Wohnort: Hamburg

  • Private Nachricht senden

14

03.03.2013, 16:15

Ja, da magst du recht haben. Aber hast du denn Informationen darüber wie "teuer" eine Stopwatch wirklich ist? Ich benutze die nämlich relativ häufig...

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

15

03.03.2013, 16:33

Zitat

Ja, da magst du recht haben. Aber hast du denn Informationen darüber wie "teuer" eine Stopwatch wirklich ist? Ich benutze die nämlich relativ häufig...

So gut wie gar nicht teuer.
Bzw. genau so teuer wie "DateTime.Now".

Wenn man wirklich die Frames in einer Sekunde zählt, dann reicht Datetime wirklich.
Ich würde jetzt zwar sagen, weshalb man trotzdem nur etwas nehmen sollte was nur ausreichend ist, aber das ist wohl Ansichstsache.

Wenn man es aber genau machen will und die vergangene Zeit zwischen den Frames misst, dann ist "DateTime.Now" wirklich nicht mehr ausreichend. Unabhänig davon das es auf einigen Betriebssystem vielleicht doch etwas genauer ist.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

16

03.03.2013, 16:43

Ich würde gern überhaupt mal ein System sehen, wo DateTime.Now.Ticks so schlecht aufgelöst ist, wie im Netz überall steht. Finden konnte ich nämlich bisher keins.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

17

03.03.2013, 17:15

Zitat

Ich würde gern überhaupt mal ein System sehen, wo DateTime.Now.Ticks so schlecht aufgelöst ist, wie im Netz überall steht. Finden konnte ich nämlich bisher keins.

Naja soviele Meldungen wie ich schon im Internet gelesen habe, wird es nicht erfunden sein.
Microsoft gibt das Problem selber an. (Siehe selbst: http://msdn.microsoft.com/de-de/library/…tetime.now.aspx)
Ich kann aus eigener Erfahrung sagen, dass ich früher selber mal ein Problem damit hatte. Ich habe mir vor ewiger Zeit selber mal eine eigene "QueryPerformanceCounter"-Klasse geschrieben, als ich von Stopwatch noch nichts wusste.

Außerdem habe ich selber gerade nachgemessen und kam auf 15,5ms auf meinen Windows Vista Rechner.
Das Programm ist im Anhang, der Quellcode hier:

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void Main(string[] Args)
{
    DateTime LastValue = DateTime.Now;
    Stopwatch Watch = new Stopwatch();
    Watch.Reset();
    Watch.Start();
    do
    {
        DateTime NewValue = DateTime.Now;
        if (NewValue != LastValue)
        {
            Console.WriteLine(Watch.Elapsed.TotalMilliseconds.ToString() + "ms");
            Watch.Reset();
            Watch.Start();
            LastValue = NewValue;
        }
    }
    while (true);
}
»Spiele Programmierer« hat folgende Datei angehängt:

daG

Treue Seele

Beiträge: 130

Wohnort: Hamburg

  • Private Nachricht senden

18

03.03.2013, 17:27

Bei mir kommt (unter Windows 7) 4,8 - 4,9ms raus.

Gibt es einen bestimmten Grund warum du Variablen am Anfang groß, also in PascalCase schreibst? :rolleyes:

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »daG« (03.03.2013, 17:33)


Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

19

03.03.2013, 17:30

0,9ms unter Windows 8

daG

Treue Seele

Beiträge: 130

Wohnort: Hamburg

  • Private Nachricht senden

20

03.03.2013, 18:04

0,0005ms unter Linux mit Mono 2.10.8.1, falls es jemanden interessiert :whistling:

Werbeanzeige